diff -Nru geos-3.1.0/aclocal.m4 geos-3.2.2/aclocal.m4 --- geos-3.1.0/aclocal.m4 2009-03-11 19:13:18.000000000 +0000 +++ geos-3.2.2/aclocal.m4 2010-04-18 16:08:05.000000000 +0100 @@ -1,7 +1,7 @@ -# generated automatically by aclocal 1.9.5 -*- Autoconf -*- +# generated automatically by aclocal 1.11 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005 Free Software Foundation, Inc. +# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file 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. @@ -11,6167 +11,15 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.64],, +[m4_warning([this file was generated for autoconf 2.64. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) -# serial 47 AC_PROG_LIBTOOL - - -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ----------------------------------------------------------- -# If this macro is not defined by Autoconf, define it here. -m4_ifdef([AC_PROVIDE_IFELSE], - [], - [m4_define([AC_PROVIDE_IFELSE], - [m4_ifdef([AC_PROVIDE_$1], - [$2], [$3])])]) - - -# AC_PROG_LIBTOOL -# --------------- -AC_DEFUN([AC_PROG_LIBTOOL], -[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl -dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX -dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. - AC_PROVIDE_IFELSE([AC_PROG_CXX], - [AC_LIBTOOL_CXX], - [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX - ])]) -dnl And a similar setup for Fortran 77 support - AC_PROVIDE_IFELSE([AC_PROG_F77], - [AC_LIBTOOL_F77], - [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 -])]) - -dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. -dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run -dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. - AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [ifdef([AC_PROG_GCJ], - [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([A][M_PROG_GCJ], - [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([LT_AC_PROG_GCJ], - [define([LT_AC_PROG_GCJ], - defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) -])])# AC_PROG_LIBTOOL - - -# _AC_PROG_LIBTOOL -# ---------------- -AC_DEFUN([_AC_PROG_LIBTOOL], -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl -AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl -AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Prevent multiple expansion -define([AC_PROG_LIBTOOL], []) -])# _AC_PROG_LIBTOOL - - -# AC_LIBTOOL_SETUP -# ---------------- -AC_DEFUN([AC_LIBTOOL_SETUP], -[AC_PREREQ(2.50)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl - -AC_REQUIRE([AC_PROG_LN_S])dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([AC_EXEEXT])dnl -dnl - -AC_LIBTOOL_SYS_MAX_CMD_LEN -AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -AC_LIBTOOL_OBJDIR - -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -_LT_AC_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e 1s/^X//' -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] - -# Same as above, but do not quote variable references. -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" - -AC_CHECK_TOOL(AR, ar, false) -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_CHECK_TOOL(STRIP, strip, :) - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -enable_win32_dll=yes, enable_win32_dll=no) - -AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -AC_ARG_WITH([pic], - [AC_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) -test -z "$pic_mode" && pic_mode=default - -# Use C for the default configuration in the libtool script -tagname= -AC_LIBTOOL_LANG_C_CONFIG -_LT_AC_TAGCONFIG -])# AC_LIBTOOL_SETUP - - -# _LT_AC_SYS_COMPILER -# ------------------- -AC_DEFUN([_LT_AC_SYS_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -AC_DEFUN([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -]) - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -AC_DEFUN([_LT_COMPILER_BOILERPLATE], -[ac_outfile=conftest.$ac_objext -printf "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -AC_DEFUN([_LT_LINKER_BOILERPLATE], -[ac_outfile=conftest.$ac_objext -printf "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* -])# _LT_LINKER_BOILERPLATE - - -# _LT_AC_SYS_LIBPATH_AIX -# ---------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], -[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_AC_SYS_LIBPATH_AIX - - -# _LT_AC_SHELL_INIT(ARG) -# ---------------------- -AC_DEFUN([_LT_AC_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_AC_SHELL_INIT - - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -[_LT_AC_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat </dev/null 2>&1 && unset CDPATH - -if test -z "$ECHO"; then -if test "X${echo_test_string+set}" != Xset; then -# find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -])])# _LT_AC_PROG_ECHO_BACKSLASH - - -# _LT_AC_LOCK -# ----------- -AC_DEFUN([_LT_AC_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; - ]) -esac - -need_locks="$enable_libtool_lock" - -])# _LT_AC_LOCK - - -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_REQUIRE([LT_AC_PROG_SED]) -AC_CACHE_CHECK([$1], [$2], - [$2=no - ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $rm conftest* -]) - -if test x"[$]$2" = xyes; then - ifelse([$5], , :, [$5]) -else - ifelse([$6], , :, [$6]) -fi -])# AC_LIBTOOL_COMPILER_OPTION - - -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ------------------------------------------------------------ -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - ifelse([$4], , :, [$4]) -else - ifelse([$5], , :, [$5]) -fi -])# AC_LIBTOOL_LINKER_OPTION - - -# AC_LIBTOOL_SYS_MAX_CMD_LEN -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -[# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for *BSD - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - *) - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -])# AC_LIBTOOL_SYS_MAX_CMD_LEN - - -# _LT_AC_CHECK_DLFCN -# -------------------- -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS(dlfcn.h)dnl -])# _LT_AC_CHECK_DLFCN - - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - - -# AC_LIBTOOL_DLOPEN_SELF -# ------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -])# AC_LIBTOOL_DLOPEN_SELF - - -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -# --------------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* -]) -])# AC_LIBTOOL_PROG_CC_C_O - - -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -# ----------------------------------------- -# Check to see if we can do hard links to lock some files if needed -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -[AC_REQUIRE([_LT_AC_LOCK])dnl - -hard_links="nottested" -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS - - -# AC_LIBTOOL_OBJDIR -# ----------------- -AC_DEFUN([AC_LIBTOOL_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -])# AC_LIBTOOL_OBJDIR - - -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -# ---------------------------------------------- -# Check hardcoding attributes. -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_AC_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existant directories. - if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_AC_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_AC_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH - - -# AC_LIBTOOL_SYS_LIB_STRIP -# ------------------------ -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -[striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) -fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -])# AC_LIBTOOL_SYS_LIB_STRIP - - -# AC_LIBTOOL_SYS_DYNAMIC_LINKER -# ----------------------------- -# PORTME Fill in your ld.so characteristics -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -[AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# _LT_AC_TAGCONFIG -# ---------------- -AC_DEFUN([_LT_AC_TAGCONFIG], -[AC_ARG_WITH([tags], - [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], - [include additional configurations @<:@automatic@:>@])], - [tagnames="$withval"]) - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - AC_MSG_WARN([output file `$ofile' does not exist]) - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) - else - AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) - fi - fi - - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` - - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in - "") ;; - *) AC_MSG_ERROR([invalid tag name: $tagname]) - ;; - esac - - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - AC_MSG_ERROR([tag name \"$tagname\" already exists]) - fi - - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_LIBTOOL_LANG_CXX_CONFIG - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - AC_LIBTOOL_LANG_F77_CONFIG - else - tagname="" - fi - ;; - - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - AC_LIBTOOL_LANG_GCJ_CONFIG - else - tagname="" - fi - ;; - - RC) - AC_LIBTOOL_LANG_RC_CONFIG - ;; - - *) - AC_MSG_ERROR([Unsupported tag name: $tagname]) - ;; - esac - - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - AC_MSG_ERROR([unable to update list of available tagged configurations.]) - fi -fi -])# _LT_AC_TAGCONFIG - - -# AC_LIBTOOL_DLOPEN -# ----------------- -# enable checks for dlopen support -AC_DEFUN([AC_LIBTOOL_DLOPEN], - [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_DLOPEN - - -# AC_LIBTOOL_WIN32_DLL -# -------------------- -# declare package support for building win32 dll's -AC_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_WIN32_DLL - - -# AC_ENABLE_SHARED([DEFAULT]) -# --------------------------- -# implement the --enable-shared flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([shared], - [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]AC_ENABLE_SHARED_DEFAULT) -])# AC_ENABLE_SHARED - - -# AC_DISABLE_SHARED -# ----------------- -#- set the default shared flag to --disable-shared -AC_DEFUN([AC_DISABLE_SHARED], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no) -])# AC_DISABLE_SHARED - - -# AC_ENABLE_STATIC([DEFAULT]) -# --------------------------- -# implement the --enable-static flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([static], - [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]AC_ENABLE_STATIC_DEFAULT) -])# AC_ENABLE_STATIC - - -# AC_DISABLE_STATIC -# ----------------- -# set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no) -])# AC_DISABLE_STATIC - - -# AC_ENABLE_FAST_INSTALL([DEFAULT]) -# --------------------------------- -# implement the --enable-fast-install flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_FAST_INSTALL], -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([fast-install], - [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) -])# AC_ENABLE_FAST_INSTALL - - -# AC_DISABLE_FAST_INSTALL -# ----------------------- -# set the default to --disable-fast-install -AC_DEFUN([AC_DISABLE_FAST_INSTALL], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no) -])# AC_DISABLE_FAST_INSTALL - - -# AC_LIBTOOL_PICMODE([MODE]) -# -------------------------- -# implement the --with-pic flag -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -AC_DEFUN([AC_LIBTOOL_PICMODE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -pic_mode=ifelse($#,1,$1,default) -])# AC_LIBTOOL_PICMODE - - -# AC_PROG_EGREP -# ------------- -# This is predefined starting with Autoconf 2.54, so this conditional -# definition can be removed once we require Autoconf 2.54 or later. -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -])]) - - -# AC_PATH_TOOL_PREFIX -# ------------------- -# find a file program which can recognise shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="ifelse([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -])# AC_PATH_TOOL_PREFIX - - -# AC_PATH_MAGIC -# ------------- -# find a file program which can recognise a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# AC_PATH_MAGIC - - -# AC_PROG_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH([gnu-ld], - [AC_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no]) -AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown -])# AC_DEPLIBS_CHECK_METHOD - - -# AC_PROG_NM -# ---------- -# find the pathname to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi - done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi]) -NM="$lt_cv_path_NM" -])# AC_PROG_NM - - -# AC_CHECK_LIBM -# ------------- -# check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -])# AC_CHECK_LIBM - - -# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl convenience library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_CONVENIENCE - - -# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl installable library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided and an installed libltdl is not found, it is -# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, lt_dlinit, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_INSTALLABLE - - -# AC_LIBTOOL_CXX -# -------------- -# enable support for C++ libraries -AC_DEFUN([AC_LIBTOOL_CXX], -[AC_REQUIRE([_LT_AC_LANG_CXX]) -])# AC_LIBTOOL_CXX - - -# _LT_AC_LANG_CXX -# --------------- -AC_DEFUN([_LT_AC_LANG_CXX], -[AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([_LT_AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) -])# _LT_AC_LANG_CXX - -# _LT_AC_PROG_CXXCPP -# --------------- -AC_DEFUN([_LT_AC_PROG_CXXCPP], -[ -AC_REQUIRE([AC_PROG_CXX]) -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -fi -])# _LT_AC_PROG_CXXCPP - -# AC_LIBTOOL_F77 -# -------------- -# enable support for Fortran 77 libraries -AC_DEFUN([AC_LIBTOOL_F77], -[AC_REQUIRE([_LT_AC_LANG_F77]) -])# AC_LIBTOOL_F77 - - -# _LT_AC_LANG_F77 -# --------------- -AC_DEFUN([_LT_AC_LANG_F77], -[AC_REQUIRE([AC_PROG_F77]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) -])# _LT_AC_LANG_F77 - - -# AC_LIBTOOL_GCJ -# -------------- -# enable support for GCJ libraries -AC_DEFUN([AC_LIBTOOL_GCJ], -[AC_REQUIRE([_LT_AC_LANG_GCJ]) -])# AC_LIBTOOL_GCJ - - -# _LT_AC_LANG_GCJ -# --------------- -AC_DEFUN([_LT_AC_LANG_GCJ], -[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], - [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], - [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], - [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) -])# _LT_AC_LANG_GCJ - - -# AC_LIBTOOL_RC -# -------------- -# enable support for Windows resource files -AC_DEFUN([AC_LIBTOOL_RC], -[AC_REQUIRE([LT_AC_PROG_RC]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) -])# AC_LIBTOOL_RC - - -# AC_LIBTOOL_LANG_C_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) -AC_DEFUN([_LT_AC_LANG_C_CONFIG], -[lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' - -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) - - -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -# Report which librarie types wil actually be built -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_C_CONFIG - - -# AC_LIBTOOL_LANG_CXX_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) -AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], -[AC_LANG_PUSH(C++) -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([_LT_AC_PROG_CXXCPP]) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Dependencies to place before and after the object being linked: -_LT_AC_TAGVAR(predep_objects, $1)= -_LT_AC_TAGVAR(postdep_objects, $1)= -_LT_AC_TAGVAR(predeps, $1)= -_LT_AC_TAGVAR(postdeps, $1)= -_LT_AC_TAGVAR(compiler_lib_search_path, $1)= - -# Source file extension for C++ test sources. -ac_ext=cc - -# Object file extension for compiled C++ test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) - -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -else - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -fi - -if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - AC_PROG_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - -else - GXX=no - with_gnu_ld=no - wlarc= -fi - -# PORTME: fill in a description of your system's C++ link characteristics -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -_LT_AC_TAGVAR(ld_shlibs, $1)=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes ; then - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - freebsd-elf*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - freebsd* | kfreebsd*-gnu | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - ;; - gnu*) - ;; - hpux9*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - linux*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc*) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC*) - # Portland Group C++ compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' - ;; - cxx*) - # Compaq C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - openbsd2*) - # C++ shared libraries are fairly broken - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd='echo' - ;; - osf3*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ - $rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. We must also pass each convience library through - # to the system linker between allextract/defaultextract. - # The C++ compiler will combine linker options so we - # cannot just pass the convience library names through - # without $wl. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; -esac -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$GXX" -_LT_AC_TAGVAR(LD, $1)="$LD" - -AC_LIBTOOL_POSTDEP_PREDEP($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -])# AC_LIBTOOL_LANG_CXX_CONFIG - -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------ -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" -ifelse([$1], [], -[#! $SHELL - -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e 1s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# The names of the tagged configurations supported by this script. -available_tags= - -# ### BEGIN LIBTOOL CONFIG], -[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) - -# Is the compiler the GNU C compiler? -with_gcc=$_LT_AC_TAGVAR(GCC, $1) - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_[]_LT_AC_TAGVAR(LD, $1) - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) - -# Commands used to build and install a shared archive. -archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) -archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) -module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" - -# Set to yes if exported symbols are required. -always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) - -# The commands to list exported symbols. -export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) - -# Symbols that must always be exported. -include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) - -ifelse([$1],[], -[# ### END LIBTOOL CONFIG], -[# ### END LIBTOOL TAG CONFIG: $tagname]) - -__EOF__ - -ifelse([$1],[], [ - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -]) -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi -])# AC_LIBTOOL_CONFIG - - -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl - -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI - - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([AC_PROG_NM]) -AC_REQUIRE([AC_OBJEXT]) -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -linux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDGIRSTW]]' - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris* | sysv5*) - symcode='[[BDRT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - - cat <> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[[]] = -{ -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - - -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -# --------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) - ifelse([$1],[CXX],[ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | kfreebsd*-gnu | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - icpc* | ecpc*) - # Intel C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC*) - # Portland Group C++ compiler. - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - newsos6) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - linux*) - case $cc_basename in - icc* | ecc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - ccc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - unicos*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then - AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), - [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" - ;; -esac -]) - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -ifelse([$1],[CXX],[ - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -],[ - runpath_var= - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)= - _LT_AC_TAGVAR(archive_expsym_cmds, $1)= - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown - _LT_AC_TAGVAR(hardcode_automatic, $1)=no - _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_AC_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - _LT_CC_BASENAME([$compiler]) - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - ;; - pgf77* | pgf90* ) # Portland Group f77 and f90 compilers - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - tmp_addflag=' -fpic -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sunos4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - # see comment about different semantics on the GNU ld section - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - bsdi[[45]]*) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi - ;; - - dgux*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu | dragonfly*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - wlarc='' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine linker options so we - # cannot just pass the convience library names through - # without $wl, iff we do not link with $LD. - # Luckily, gcc supports the same syntax we need for Sun Studio. - # Supported since Solaris 2.6 (maybe 2.5.1?) - case $wlarc in - '') - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; - *) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; - esac ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_AC_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) - then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac -])# AC_LIBTOOL_PROG_LD_SHLIBS - - -# _LT_AC_FILE_LTDLL_C -# ------------------- -# Be careful that the start marker always follows a newline. -AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include -# #undef WIN32_LEAN_AND_MEAN -# #include -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ -])# _LT_AC_FILE_LTDLL_C - - -# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -# --------------------------------- -AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) - - -# old names -AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) - -# This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL]) - -AC_DEFUN([LT_AC_PROG_GCJ], -[AC_CHECK_TOOL(GCJ, gcj, no) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS) -]) - -AC_DEFUN([LT_AC_PROG_RC], -[AC_CHECK_TOOL(RC, windres, no) -]) - -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -# LT_AC_PROG_SED -# -------------- -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -AC_DEFUN([LT_AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_MSG_RESULT([$SED]) -]) - -# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -6181,14 +29,31 @@ # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. -AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.11' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.11], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- -# Call AM_AUTOMAKE_VERSION so it can be traced. -# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], - [AM_AUTOMAKE_VERSION([1.9.5])]) +[AM_AUTOMAKE_VERSION([1.11])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- @@ -6245,14 +110,14 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file 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. -# serial 7 +# serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- @@ -6261,8 +126,11 @@ [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE]) -AC_SUBST([$1_FALSE]) +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' @@ -6276,15 +144,14 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file 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. -# serial 8 +# serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, @@ -6312,6 +179,7 @@ ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) @@ -6340,6 +208,16 @@ if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -6357,7 +235,17 @@ done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -6367,18 +255,23 @@ break fi ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -6429,61 +322,74 @@ AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. -#serial 3 +#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done done -done +} ])# _AM_OUTPUT_DEPENDENCY_COMMANDS @@ -6514,14 +420,14 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file 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. -# serial 12 +# serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. @@ -6538,16 +444,20 @@ # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.58])dnl +[AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi fi # test whether we have cygpath @@ -6567,6 +477,9 @@ AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl @@ -6582,8 +495,8 @@ AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) -AM_PROG_INSTALL_SH -AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. @@ -6591,19 +504,36 @@ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -]) -]) + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. @@ -6615,18 +545,19 @@ # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. +_am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in - $1 | $1:* ) + $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done -echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -6637,7 +568,14 @@ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -install_sh=${install_sh-"$am_aux_dir/install-sh"} +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. @@ -6663,13 +601,13 @@ # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file 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. -# serial 3 +# serial 4 # AM_MAKE_INCLUDE() # ----------------- @@ -6678,7 +616,7 @@ [am_make=${MAKE-make} cat > confinc << 'END' am__doit: - @echo done + @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. @@ -6688,24 +626,24 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) @@ -6715,14 +653,14 @@ # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. -# serial 4 +# serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ @@ -6738,7 +676,15 @@ # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " @@ -6748,7 +694,7 @@ fi ]) -# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -6756,70 +702,33 @@ # AM_PROG_MKDIR_P # --------------- -# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. -# -# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -# created by `make install' are always world readable, even if the -# installer happens to have an overly restrictive umask (e.g. 077). -# This was a mistake. There are at least two reasons why we must not -# use `-m 0755': -# - it causes special bits like SGID to be ignored, -# - it may be too restrictive (some setups expect 775 directories). -# -# Do not use -m 0755 and let people choose whatever they expect by -# setting umask. -# -# We cannot accept any implementation of `mkdir' that recognizes `-p'. -# Some implementations (such as Solaris 8's) are not thread-safe: if a -# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' -# concurrently, both version can detect that a/ is missing, but only -# one can create it and the other will error out. Consequently we -# restrict ourselves to GNU make (using the --version option ensures -# this.) +# Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], -[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi -fi -AC_SUBST([mkdir_p])]) +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file 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. -# serial 3 +# serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- @@ -6836,7 +745,7 @@ # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], -[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- @@ -6846,14 +755,14 @@ # Check to make sure that the build environment is sane. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. -# serial 4 +# serial 5 # AM_SANITY_CHECK # --------------- @@ -6862,16 +771,29 @@ # Just in case sleep 1 echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` + set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ @@ -6921,9 +843,28 @@ if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) +# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# +# This file 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. + +# serial 2 + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. @@ -7022,5 +963,10 @@ m4_include([macros/ac_pkg_swig.m4]) m4_include([macros/ac_python_devel.m4]) +m4_include([macros/libtool.m4]) +m4_include([macros/ltoptions.m4]) +m4_include([macros/ltsugar.m4]) +m4_include([macros/ltversion.m4]) +m4_include([macros/lt~obsolete.m4]) m4_include([macros/python.m4]) m4_include([macros/ruby.m4]) diff -Nru geos-3.1.0/autogen.bat geos-3.2.2/autogen.bat --- geos-3.1.0/autogen.bat 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/autogen.bat 2010-03-29 18:50:45.000000000 +0100 @@ -0,0 +1,17 @@ +@ECHO OFF +REM $Id: autogen.bat 2966 2010-03-29 17:50:45Z mloskot $ +REM +REM This script generates headers for use with Visual C++ only +REM +REM Usage: +REM .\autogen.bat +REM nmake -f makefile.vc +REM +REM NOTE: DO NOT include this script in GEOS sources distribution +REM + +set GEOS_HEADERS=source\headers\geos + +COPY %GEOS_HEADERS%\version.h.vc %GEOS_HEADERS%\version.h +COPY %GEOS_HEADERS%\platform.h.vc %GEOS_HEADERS%\platform.h +COPY capi\geos_c.h.in capi\geos_c.h diff -Nru geos-3.1.0/build/Makefile.am geos-3.2.2/build/Makefile.am --- geos-3.1.0/build/Makefile.am 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/build/Makefile.am 2009-12-04 17:05:53.000000000 +0000 @@ -7,7 +7,8 @@ # SUBDIRS = \ msvc80 \ - msvc90 + msvc90 \ + msvc10 EXTRA_DIST = README diff -Nru geos-3.1.0/build/Makefile.in geos-3.2.2/build/Makefile.in --- geos-3.1.0/build/Makefile.in 2009-03-11 19:13:28.000000000 +0000 +++ geos-3.2.2/build/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,22 +52,52 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -92,21 +125,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -115,20 +144,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -149,6 +186,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -160,19 +198,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -184,36 +216,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -224,7 +269,8 @@ # SUBDIRS = \ msvc80 \ - msvc90 + msvc90 \ + msvc10 EXTRA_DIST = README all: all-recursive @@ -234,14 +280,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -259,6 +305,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo @@ -266,10 +313,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -294,15 +337,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -329,16 +371,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -346,14 +388,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -365,81 +407,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -469,6 +531,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -479,8 +542,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -488,18 +550,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -518,22 +600,25 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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 \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-info-am + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc10/geos_c_dll/geos_c_dll.vcxproj geos-3.2.2/build/msvc10/geos_c_dll/geos_c_dll.vcxproj --- geos-3.1.0/build/msvc10/geos_c_dll/geos_c_dll.vcxproj 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_c_dll/geos_c_dll.vcxproj 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,124 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} + geos_c_dll + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + Unicode + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + geosd_c + geos_c + + + + Disabled + ..\..\..\capi;..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;GEOS_DLL_EXPORT;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + EditAndContinue + + + $(OutDir)geosd_c.dll + true + Windows + false + + + $(TargetDir)geosd_c_i.lib + MachineX86 + + + + + ..\..\..\capi;..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;GEOS_DLL_EXPORT;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + $(OutDir)geos_c.dll + true + Windows + true + true + false + + + $(TargetDir)geos_c_i.lib + MachineX86 + + + + + + + + + + + + Document + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + %(RelativeDir)%(FileName);%(Outputs) + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + %(RelativeDir)%(FileName);%(Outputs) + + + + + + + {108e75a3-0a92-489a-b1a9-8f071d40a108} + + + + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_c_dll/geos_c_dll.vcxproj.filters geos-3.2.2/build/msvc10/geos_c_dll/geos_c_dll.vcxproj.filters --- geos-3.1.0/build/msvc10/geos_c_dll/geos_c_dll.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_c_dll/geos_c_dll.vcxproj.filters 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,32 @@ + + + + + {47d503a4-fab9-4542-8636-05dd97a4f79a} + + + + + capi + + + capi + + + + + capi + + + + + capi + + + + + + capi + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_c_dll/Makefile.am geos-3.2.2/build/msvc10/geos_c_dll/Makefile.am --- geos-3.1.0/build/msvc10/geos_c_dll/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_c_dll/Makefile.am 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,10 @@ +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_c_dll.vcxproj \ + geos_c_dll.vcxproj.filters diff -Nru geos-3.1.0/build/msvc10/geos_c_dll/Makefile.in geos-3.2.2/build/msvc10/geos_c_dll/Makefile.in --- geos-3.1.0/build/msvc10/geos_c_dll/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_c_dll/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -0,0 +1,421 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = build/msvc10/geos_c_dll +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_c_dll.vcxproj \ + geos_c_dll.vcxproj.filters + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc10/geos_c_dll/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc10/geos_c_dll/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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 -Nru geos-3.1.0/build/msvc10/geos_lib/geos_lib.vcxproj geos-3.2.2/build/msvc10/geos_lib/geos_lib.vcxproj --- geos-3.1.0/build/msvc10/geos_lib/geos_lib.vcxproj 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_lib/geos_lib.vcxproj 2009-12-09 11:10:54.000000000 +0000 @@ -0,0 +1,809 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {108E75A3-0A92-489A-B1A9-8F071D40A108} + geos_lib + Win32Proj + + + + StaticLibrary + Unicode + true + + + StaticLibrary + Unicode + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\$(ProjectName)\ + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + geosd + geos + + + + Disabled + ..\..\..\capi;..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;%(PreprocessorDefinitions) + false + true + EnableFastChecks + MultiThreadedDebugDLL + false + + + + + Level4 + EditAndContinue + false + + + $(OutDir)geosd.lib + + + copy ..\..\..\source\headers\geos\platform.h.vc ..\..\..\source\headers\geos\platform.h + + + Copying ..\..\..\source\headers\geos\platform.h.vc to ..\..\..\source\headers\geos\platform.h + + + + + ..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level4 + + + + + $(OutDir)geos.lib + + + Copying ..\..\..\source\headers\geos\platform.h.vc to ..\..\..\source\headers\geos\platform.h + copy ..\..\..\source\headers\geos\platform.h.vc ..\..\..\source\headers\geos\platform.h + + + + + + + Document + Copying %(Identity) to %(FileName) + copy "%(RootDir)%(Directory)%(Identity)" "%(RootDir)%(Directory)%(FileName)" + + %(RootDir)%(Directory)%(FileName);%(Outputs) + Copying %(Identity) to %(FileName) + copy "%(RootDir)%(Directory)%(Identity)" "%(RootDir)%(Directory)%(FileName)" + + %(RootDir)%(Directory)%(FileName);%(Outputs) + + + Document + Copying %(Identity) to %(FileName) + copy "%(RootDir)%(Directory)%(Identity)" "%(RootDir)%(Directory)%(FileName)" + + %(RootDir)%(Directory)%(FileName);%(Outputs) + Copying %(Identity) to %(FileName) + copy "%(RootDir)%(Directory)%(Identity)" "%(RootDir)%(Directory)%(FileName)" + + %(RootDir)%(Directory)%(FileName);%(Outputs) + + + + + + + + + + + + + + + + + + + + + + + Document + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + %(RelativeDir)%(FileName);%(Outputs) + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + copy "%(FullPath)" "%(RelativeDir)%(FileName)" + %(RelativeDir)%(FileName);%(Outputs) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + + + + + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + $(IntDir)%(FileName)2.obj + $(IntDir)%(FileName)2.xdc + $(IntDir)%(FileName)2.obj + $(IntDir)%(FileName)2.xdc + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + $(IntDir)%(FileName)3.obj + $(IntDir)%(FileName)3.xdc + $(IntDir)%(FileName)3.obj + $(IntDir)%(FileName)3.xdc + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + $(IntDir)%(FileName)1.obj + $(IntDir)%(FileName)1.xdc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_lib/geos_lib.vcxproj.filters geos-3.2.2/build/msvc10/geos_lib/geos_lib.vcxproj.filters --- geos-3.1.0/build/msvc10/geos_lib/geos_lib.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_lib/geos_lib.vcxproj.filters 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,2039 @@ + + + + + {892cd9ec-c633-433c-b096-56a40efd8933} + + + {271a6312-9ec5-4459-a9de-9e2d9b18c2e5} + + + {026e8310-ce23-45c5-9ab0-06a18c4c5668} + + + {b12e5a12-10e9-4f49-b777-fba598a5a792} + + + {d4e37a89-edc8-4d7c-8420-1e183503be5c} + + + {06f7884e-dd61-454f-bf90-3846f5622d52} + + + {9627ea1e-e4df-433a-af2e-a86dce2dfc64} + + + {d6d1868a-66aa-4015-bcd7-58f790a17f4a} + + + {bf24dd8e-ac6a-4b2b-b15d-55f92b64ea50} + + + {75285089-bcd4-450c-9f3d-2f884e938734} + + + {a1d4aff3-38ce-4ce6-b908-399a05c81dbb} + + + {8e9703b9-8a09-44b3-9c18-5597e7ddfaa1} + + + {0230b650-4e07-4b4e-9417-a0cb09c9dbb3} + + + {a94ec6cf-1d97-4160-a5cc-9fc357ff7c3f} + + + {0382eba9-961e-4bfc-8b5b-519c6fb6839a} + + + {53dd1098-c07b-4845-82a4-3613c46b6237} + + + {a3fcf7f4-922e-4848-a9e9-61d59841fbea} + + + {badc0a25-8a9e-4b76-927e-48669cac1b1e} + + + {c8611179-2b6d-4f08-ab7b-e80a69c5a66b} + + + {e3a7a832-1ac1-46aa-a754-644856794677} + + + {02e13b2d-b829-4f3a-99d7-be08230c9b38} + + + {951e664d-eca1-4531-99a6-9f7f5a73adc2} + + + {2c25f2ef-f54f-4974-9a55-b41a791b7aa3} + + + {7754a98a-155e-4ab5-bf84-8b45561fb719} + + + {c6144a7b-de47-43a3-b180-8afadc6c33c0} + + + {18f116d4-d929-4333-b4b3-a1d2050e348f} + + + {90741ced-c629-4a4b-8ef7-cb085b5b1802} + + + {5db0eec1-2999-40a4-b221-ce25cd5a0351} + + + {09d6877b-a063-4591-b6eb-1fbf3d17015f} + + + {3f8d0fcc-ee0f-43a6-96e7-3660f1b79594} + + + {02879ff3-78e0-4575-8a08-add91eceb06b} + + + {a012a7f2-b43f-49e0-96ea-6f8af8d3042b} + + + {5e3e1096-4a09-4bb2-aed3-bf82cc907456} + + + {67db5963-ff82-4190-8359-a29a75e1c33e} + + + {44a3116c-e6b1-441b-b9fb-810b8c3ca808} + + + {c270e676-8fd2-479e-aa1d-b61491a427ab} + + + {36c82615-d71f-499a-99cf-2cc2e0193985} + + + {57586459-6d98-49f3-b785-1ca0e89a6484} + + + {d64e2a2d-d16c-4660-ab7d-8d4fdcb2a286} + + + {ff247c36-f0a9-4f4e-84bc-94132acc63f0} + + + {3fa365ea-4c7a-4abc-ad7f-c4369e47b47d} + + + {88a29336-b2f9-438e-a9fd-38abb5509ff9} + + + {04ae10c0-4f55-4668-8e38-9e58c0df459f} + + + {8a10b212-c06e-446b-bf5a-dcda17219449} + + + {81a3f9bf-acbe-4dd7-b838-8e1e243ae1ef} + + + {9722d6df-68c2-4dd8-8d5d-40f1a3c363e1} + + + {04ffd530-da41-438f-b09f-6afc1447106b} + + + {e33152c0-51ba-43ef-994f-80f8f1bcd244} + + + {5fca6e05-495f-4418-bc8f-8eefb8f1354b} + + + {a1346a94-38d2-4985-a318-c4bc70b852d2} + + + {000d08cc-3c99-4784-b0e2-7b95b8a76614} + + + {fbc928ca-45d1-4a7a-beba-da367ef75e7a} + + + {e831dd8b-b452-41ae-902b-5a77dd39e50e} + + + {698cce4a-4b5e-4bca-a8d6-cb8954e95614} + + + {3c3fad49-f4e3-4880-8287-1c054da9a1db} + + + {e56308f3-b1b8-4975-a7b0-5c583f59fe36} + + + {230d7c48-e321-4a31-882b-17b26c543637} + + + {ee9f6559-13bc-4306-baab-efda66909a5f} + + + {5253d7f9-b557-4262-9427-680de4c86bc1} + + + {ae7292d3-08db-45cd-ac7a-84993bdfe92a} + + + {e8e268f0-ba94-49d6-ac43-37ef5584c9b2} + + + {4e00f29f-569a-4753-b5c5-d13c4e181357} + + + {3ad28caa-20cd-44ed-96f7-a762940afd38} + + + {84af89f8-66b0-418b-bd74-b313eb4944c1} + + + {7f3ac688-0b4e-416f-8e60-02fe8b854266} + + + {2998752f-ef9c-481f-b9a4-3a6725a59a4e} + + + {44cfe5ed-df30-4c29-bd08-219f5652ddb4} + + + {92dcc3bb-0ba7-4367-aa49-ce22531670fc} + + + {b1d7dfda-6571-4e64-8aba-22f6dbb00df4} + + + {8a779838-f821-4292-a4ee-55b74bf77892} + + + {d61975a4-683b-421b-9a8c-715e4c0abcd1} + + + {45ca024c-109f-444d-8767-cc9cb94ba523} + + + {5672af04-548b-4660-9525-0a8207fa1c02} + + + + + capi + + + src + + + src\headers\geos\algorithm + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding\snapround + + + src\headers\geos\noding\snapround + + + src\headers\geos\operation\overlay + + + src + + + + + + capi + + + capi + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm\distance + + + src\algorithm\distance + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm\locate + + + src\algorithm\locate + + + src\algorithm\locate + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\algorithm + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph\index + + + src\geomgraph\index + + + src\geomgraph\index + + + src\geomgraph\index + + + src\geomgraph\index + + + src\geomgraph\index + + + src\geomgraph\index + + + src\geomgraph\index + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geomgraph + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom\prep + + + src\geom + + + src\geom\util + + + src\geom\util + + + src\geom\util + + + src\geom\util + + + src\geom\util + + + src\geom\util + + + src\index\bintree + + + src\index\bintree + + + src\index\bintree + + + src\index\bintree + + + src\index\bintree + + + src\index\bintree + + + src\index\chain + + + src\index\chain + + + src\index\chain + + + src\index\chain + + + src\index\intervalrtree + + + src\index\intervalrtree + + + src\index\intervalrtree + + + src\index\intervalrtree + + + src\index\quadtree + + + src\index\quadtree + + + src\index\quadtree + + + src\index\quadtree + + + src\index\quadtree + + + src\index\quadtree + + + src\index\quadtree + + + src\index\strtree + + + src\index\strtree + + + src\index\strtree + + + src\index\strtree + + + src\index\strtree + + + src\index\strtree + + + src\index\sweepline + + + src\index\sweepline + + + src\index\sweepline + + + src + + + src\io + + + src\io + + + src\io + + + src\io + + + src\io + + + src\io + + + src\io + + + src\io + + + src\io + + + src\io + + + src\io + + + src\linearref + + + src\linearref + + + src\linearref + + + src\linearref + + + src\linearref + + + src\linearref + + + src\linearref + + + src\linearref + + + src\linearref + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding + + + src\noding\snapround + + + src\noding\snapround + + + src\noding\snapround + + + src\noding\snapround + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\distance + + + src\operation\distance + + + src\operation\distance + + + src\operation\distance + + + src\operation + + + src\operation + + + src\operation\linemerge + + + src\operation\linemerge + + + src\operation\linemerge + + + src\operation\linemerge + + + src\operation\linemerge + + + src\operation\linemerge + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay + + + src\operation\overlay\snap + + + src\operation\overlay\snap + + + src\operation\overlay\snap + + + src\operation\overlay\snap + + + src\operation\overlay\validate + + + src\operation\overlay\validate + + + src\operation\overlay\validate + + + src\operation\polygonize + + + src\operation\polygonize + + + src\operation\polygonize + + + src\operation\polygonize + + + src\operation\polygonize + + + src\operation\predicate + + + src\operation\predicate + + + src\operation\predicate + + + src\operation\relate + + + src\operation\relate + + + src\operation\relate + + + src\operation\relate + + + src\operation\relate + + + src\operation\relate + + + src\operation\relate + + + src\operation\relate + + + src\operation\union + + + src\operation\valid + + + src\operation\valid + + + src\operation\valid + + + src\operation\valid + + + src\operation\valid + + + src\operation\valid + + + src\operation\valid + + + src\operation\valid + + + src\operation\valid + + + src\planargraph\algorithm + + + src\planargraph + + + src\planargraph + + + src\planargraph + + + src\planargraph + + + src\planargraph + + + src\planargraph + + + src\planargraph + + + src\precision + + + src\precision + + + src\precision + + + src\precision + + + src\precision + + + src\simplify + + + src\simplify + + + src\simplify + + + src\simplify + + + src\simplify + + + src\simplify + + + src\simplify + + + src\simplify + + + src\util + + + src\util + + + src\util + + + src\util + + + + + capi + + + src\headers + + + src\headers + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm\locate + + + src\headers\geos\algorithm\locate + + + src\headers\geos\algorithm\locate + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos\algorithm + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph\index + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos\geomgraph + + + src\headers\geos + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom\prep + + + src\headers\geos\geom + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos\geom\util + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\index\bintree + + + src\headers\geos\index\bintree + + + src\headers\geos\index\bintree + + + src\headers\geos\index\bintree + + + src\headers\geos\index\bintree + + + src\headers\geos\index\bintree + + + src\headers\geos\index\chain + + + src\headers\geos\index\chain + + + src\headers\geos\index\chain + + + src\headers\geos\index\chain + + + src\headers\geos\index\intervalrtree + + + src\headers\geos\index\intervalrtree + + + src\headers\geos\index\intervalrtree + + + src\headers\geos\index\intervalrtree + + + src\headers\geos\index + + + src\headers\geos\index\quadtree + + + src\headers\geos\index\quadtree + + + src\headers\geos\index\quadtree + + + src\headers\geos\index\quadtree + + + src\headers\geos\index\quadtree + + + src\headers\geos\index\quadtree + + + src\headers\geos\index\quadtree + + + src\headers\geos\index + + + src\headers\geos\index\strtree + + + src\headers\geos\index\strtree + + + src\headers\geos\index\strtree + + + src\headers\geos\index\strtree + + + src\headers\geos\index\strtree + + + src\headers\geos\index\strtree + + + src\headers\geos\index\strtree + + + src\headers\geos\index\sweepline + + + src\headers\geos\index\sweepline + + + src\headers\geos\index\sweepline + + + src\headers\geos\index\sweepline + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\io + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos\linearref + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding + + + src\headers\geos\noding\snapround + + + src\headers\geos\noding\snapround + + + src\headers\geos\noding\snapround + + + src\headers\geos\noding\snapround + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\operation\buffer + + + src\headers\geos\operation\buffer + + + src\headers\geos\operation\buffer + + + src\headers\geos\operation\buffer + + + src\headers\geos\operation\buffer + + + src\headers\geos\operation\buffer + + + src\headers\geos\operation\buffer + + + src\headers\geos\operation\distance + + + src\headers\geos\operation\distance + + + src\headers\geos\operation\distance + + + src\headers\geos\operation\distance + + + src\headers\geos\operation + + + src\headers\geos\operation + + + src\headers\geos\operation + + + src\headers\geos\operation\linemerge + + + src\headers\geos\operation\linemerge + + + src\headers\geos\operation\linemerge + + + src\headers\geos\operation\linemerge + + + src\headers\geos\operation\linemerge + + + src\headers\geos\operation\linemerge + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\overlay + + + src\headers\geos\operation\polygonize + + + src\headers\geos\operation\polygonize + + + src\headers\geos\operation\polygonize + + + src\headers\geos\operation\polygonize + + + src\headers\geos\operation\polygonize + + + src\headers\geos\operation\predicate + + + src\headers\geos\operation\predicate + + + src\headers\geos\operation\predicate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\relate + + + src\headers\geos\operation\union + + + src\headers\geos\operation\valid + + + src\headers\geos\operation\valid + + + src\headers\geos\operation\valid + + + src\headers\geos\operation\valid + + + src\headers\geos\operation\valid + + + src\headers\geos\operation\valid + + + src\headers\geos\operation\valid + + + src\headers\geos\operation\valid + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\planargraph\algorithm + + + src\headers\geos\planargraph + + + src\headers\geos\planargraph + + + src\headers\geos\planargraph + + + src\headers\geos\planargraph + + + src\headers\geos\planargraph + + + src\headers\geos\planargraph + + + src\headers\geos\planargraph + + + src\headers\geos\planargraph + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\precision + + + src\headers\geos\precision + + + src\headers\geos\precision + + + src\headers\geos\precision + + + src\headers\geos\precision + + + src\headers\geos + + + src\headers\geos\simplify + + + src\headers\geos\simplify + + + src\headers\geos\simplify + + + src\headers\geos\simplify + + + src\headers\geos\simplify + + + src\headers\geos\simplify + + + src\headers\geos\simplify + + + src\headers\geos\simplify + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos\util + + + src\headers\geos + + + src\operation\buffer + + + src\operation\buffer + + + src\operation\valid + + + + + capi + + + src\headers\geos + + + src\headers\geos + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_lib/Makefile.am geos-3.2.2/build/msvc10/geos_lib/Makefile.am --- geos-3.1.0/build/msvc10/geos_lib/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_lib/Makefile.am 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,10 @@ +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_lib.vcxproj \ + geos_lib.vcxproj.filters diff -Nru geos-3.1.0/build/msvc10/geos_lib/Makefile.in geos-3.2.2/build/msvc10/geos_lib/Makefile.in --- geos-3.1.0/build/msvc10/geos_lib/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_lib/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -0,0 +1,421 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = build/msvc10/geos_lib +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_lib.vcxproj \ + geos_lib.vcxproj.filters + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc10/geos_lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc10/geos_lib/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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 -Nru geos-3.1.0/build/msvc10/geos.sln geos-3.2.2/build/msvc10/geos.sln --- geos-3.1.0/build/msvc10/geos.sln 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos.sln 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,54 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8584EE81-D4E9-4EC7-ABF2-389E5F9D0107}" + ProjectSection(SolutionItems) = preProject + ..\..\AUTHORS = ..\..\AUTHORS + ..\..\COPYING = ..\..\COPYING + ..\..\INSTALL = ..\..\INSTALL + Makefile.am = Makefile.am + ..\..\makefile.vc = ..\..\makefile.vc + ..\..\NEWS = ..\..\NEWS + ..\..\nmake.opt = ..\..\nmake.opt + ..\..\README = ..\..\README + ..\..\TODO = ..\..\TODO + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_lib", "geos_lib\geos_lib.vcxproj", "{108E75A3-0A92-489A-B1A9-8F071D40A108}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_unit", "geos_unit\geos_unit.vcxproj", "{30461863-CCA4-4A8F-8BEE-1AB57060D5C2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_c_dll", "geos_c_dll\geos_c_dll.vcxproj", "{CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}" + ProjectSection(ProjectDependencies) = postProject + {108E75A3-0A92-489A-B1A9-8F071D40A108} = {108E75A3-0A92-489A-B1A9-8F071D40A108} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_xmltester", "geos_xmltester\geos_xmltester.vcxproj", "{304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {108E75A3-0A92-489A-B1A9-8F071D40A108}.Debug|Win32.ActiveCfg = Debug|Win32 + {108E75A3-0A92-489A-B1A9-8F071D40A108}.Debug|Win32.Build.0 = Debug|Win32 + {108E75A3-0A92-489A-B1A9-8F071D40A108}.Release|Win32.ActiveCfg = Release|Win32 + {108E75A3-0A92-489A-B1A9-8F071D40A108}.Release|Win32.Build.0 = Release|Win32 + {30461863-CCA4-4A8F-8BEE-1AB57060D5C2}.Debug|Win32.ActiveCfg = Debug|Win32 + {30461863-CCA4-4A8F-8BEE-1AB57060D5C2}.Debug|Win32.Build.0 = Debug|Win32 + {30461863-CCA4-4A8F-8BEE-1AB57060D5C2}.Release|Win32.ActiveCfg = Release|Win32 + {30461863-CCA4-4A8F-8BEE-1AB57060D5C2}.Release|Win32.Build.0 = Release|Win32 + {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}.Debug|Win32.ActiveCfg = Debug|Win32 + {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}.Debug|Win32.Build.0 = Debug|Win32 + {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}.Release|Win32.ActiveCfg = Release|Win32 + {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}.Release|Win32.Build.0 = Release|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Debug|Win32.ActiveCfg = Debug|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Debug|Win32.Build.0 = Debug|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Release|Win32.ActiveCfg = Release|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff -Nru geos-3.1.0/build/msvc10/geos_unit/geos_unit.vcxproj geos-3.2.2/build/msvc10/geos_unit/geos_unit.vcxproj --- geos-3.1.0/build/msvc10/geos_unit/geos_unit.vcxproj 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_unit/geos_unit.vcxproj 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,205 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {30461863-CCA4-4A8F-8BEE-1AB57060D5C2} + geos_unit + Win32Proj + + + + Application + Unicode + true + + + Application + Unicode + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(ProjectName)d + $(ProjectName) + + + + Disabled + .\;..\..\..\tests\unit;..\..\..\tests\unit\tut;..\..\..\capi;..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + EditAndContinue + + + $(OutDir)$(ProjectName)d.exe + %(AdditionalLibraryDirectories) + true + Console + false + + + MachineX86 + + + Running regression tests using $(TargetPath) + $(TargetPath) + + + + + .\;..\..\..\tests\unit;..\..\..\tests\unit\tut;..\..\..\capi;..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + true + Console + true + true + false + + + MachineX86 + + + Running regression tests using $(TargetPath) + $(TargetPath) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + + + + + + + + + + + true + true + + + + true + true + + + + + + + + + + {cdbc2fb8-2995-49de-b80b-b7be0e4c1115} + + + {108e75a3-0a92-489a-b1a9-8f071d40a108} + + + + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_unit/geos_unit.vcxproj.filters geos-3.2.2/build/msvc10/geos_unit/geos_unit.vcxproj.filters --- geos-3.1.0/build/msvc10/geos_unit/geos_unit.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_unit/geos_unit.vcxproj.filters 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,308 @@ + + + + + {222010d5-1aa7-4e24-8afc-c14250e85f74} + + + {989e20af-2ffe-4e82-9426-1a445dcd6a1a} + + + {35b7d410-9e05-47e0-9747-8eac7981d8ef} + + + {add69806-2db5-47c5-ac1f-ebd4b87d2825} + + + {0f01cdf0-08f7-4b4c-b663-a188d4010234} + + + {3287416d-f787-4beb-8fbe-03f3cb10414f} + + + {2273eb17-cf70-423b-b8c2-024d2230068d} + + + {9589db96-b4d5-4d07-92e6-0f2221d61353} + + + {f4052f73-b188-46ee-b926-9de1914617ec} + + + {19b54ceb-b86b-42e0-bef4-27287e4f9728} + + + {6864826b-d14c-44d1-83bb-12ca95f1440e} + + + {04e55bdb-1e78-45b4-aa06-dee87c5a4fc3} + + + {94a88967-adeb-4d45-9334-d525f9675e31} + + + {41d3ede7-d57c-4def-9f85-20810a581f5e} + + + {221d0e0e-570a-44b0-8d06-b8cc9e5a008d} + + + {0b073556-d26b-4de4-9d37-fba2a8dec8b4} + + + {5db1aa3a-9b90-4ad2-8f98-7feb2123de86} + + + {0eb18ed8-af8a-438f-8d0a-fba68a056244} + + + {16497488-a77f-4b50-8509-2d4c1fdba962} + + + {b169fb05-7496-4dd3-a192-3bd5e253febf} + + + {e526c82c-3568-4b30-99a9-78a24bf094dd} + + + {f859f244-63f4-484b-b798-dd28cee7fead} + + + {a966db6e-ce87-4b4b-9869-affe2066dd80} + + + {e912606a-8313-408c-9e9e-e464c260770a} + + + + + tut + + + tut + + + tut + + + tut + + + tut + + + tut + + + tut + + + tut + + + tut + + + + + + algorithm\CGAlgorithms + + + algorithm\CGAlgorithms + + + algorithm\CGAlgorithms + + + algorithm + + + algorithm\distance + + + algorithm + + + algorithm + + + algorithm + + + capi + + + capi + + + capi + + + capi + + + capi + + + capi + + + capi + + + capi + + + capi + + + capi + + + capi + + + capi + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom\Geometry + + + geom\Geometry + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom + + + geom\prep + + + geom + + + + index\quadtree + + + io + + + io + + + linearref + + + noding + + + noding + + + noding + + + noding + + + operation\buffer + + + operation\distance + + + operation + + + operation\overlay\snap + + + operation\overlay\snap + + + operation\overlay\validate + + + operation\overlay\validate + + + operation\overlay\validate + + + operation\union + + + operation\valid + + + operation\valid + + + operation\valid + + + precision + + + simplify + + + simplify + + + util + + + + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_unit/Makefile.am geos-3.2.2/build/msvc10/geos_unit/Makefile.am --- geos-3.1.0/build/msvc10/geos_unit/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_unit/Makefile.am 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,10 @@ +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_unit.vcxproj \ + geos_unit.vcxproj.filters diff -Nru geos-3.1.0/build/msvc10/geos_unit/Makefile.in geos-3.2.2/build/msvc10/geos_unit/Makefile.in --- geos-3.1.0/build/msvc10/geos_unit/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_unit/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -0,0 +1,421 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = build/msvc10/geos_unit +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_unit.vcxproj \ + geos_unit.vcxproj.filters + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc10/geos_unit/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc10/geos_unit/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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 -Nru geos-3.1.0/build/msvc10/geos_xmltester/geos_xmltester.vcxproj geos-3.2.2/build/msvc10/geos_xmltester/geos_xmltester.vcxproj --- geos-3.1.0/build/msvc10/geos_xmltester/geos_xmltester.vcxproj 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_xmltester/geos_xmltester.vcxproj 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,193 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2} + geos_xmltester + Win32Proj + + + + Application + Unicode + true + + + Application + Unicode + + + + + + + + + + + + + <_ProjectFileVersion>10.0.21006.1 + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + $(ProjectName)d + + + + Disabled + .\;..\..\..\tests\unit;..\..\..\tests\unit\tut;..\..\..\capi;..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level4 + EditAndContinue + + + $(OutDir)$(ProjectName)d.exe + %(AdditionalLibraryDirectories) + true + Console + false + + + MachineX86 + + + + + + + + + .\;..\..\..\tests\unit;..\..\..\tests\unit\tut;..\..\..\capi;..\..\..\source\headers;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + true + Console + true + true + false + + + MachineX86 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {cdbc2fb8-2995-49de-b80b-b7be0e4c1115} + + + {108e75a3-0a92-489a-b1a9-8f071d40a108} + + + + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_xmltester/geos_xmltester.vcxproj.filters geos-3.2.2/build/msvc10/geos_xmltester/geos_xmltester.vcxproj.filters --- geos-3.1.0/build/msvc10/geos_xmltester/geos_xmltester.vcxproj.filters 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_xmltester/geos_xmltester.vcxproj.filters 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,236 @@ + + + + + {dd73be22-3771-4970-9594-13ed83d06e07} + + + {247e6980-9eec-425b-bb7c-66455dcb9e72} + + + {839a83ba-82e6-430d-9d3b-dd8e5b4b4346} + + + {f5877278-a720-4a84-b472-174062edb5a1} + + + {74ed1c08-5f9a-46e4-a52f-93e3e2d3aa41} + + + {6cb8aec5-ad0b-4cbe-9229-906824ae585c} + + + + + + + tinyxml + + + tinyxml + + + tinyxml + + + tinyxml + + + + + + + + tinyxml + + + tinyxml + + + + + + + + + tests + + + tests + + + tests + + + tests + + + tests + + + tests + + + tests + + + tests + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests\general + + + tests + + + tests + + + tests + + + tests + + + tests + + + tests + + + tests\stmlf + + + tests\stmlf + + + tests\safe + + + tests\safe + + + tests + + + tests + + + tests\robust + + + tests\robust + + + tests + + + tests + + + tests + + + tests + + + tests + + + tests + + + \ No newline at end of file diff -Nru geos-3.1.0/build/msvc10/geos_xmltester/Makefile.am geos-3.2.2/build/msvc10/geos_xmltester/Makefile.am --- geos-3.1.0/build/msvc10/geos_xmltester/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_xmltester/Makefile.am 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,10 @@ +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_xmltester.vcxproj \ + geos_xmltester.vcxproj.filters diff -Nru geos-3.1.0/build/msvc10/geos_xmltester/Makefile.in geos-3.2.2/build/msvc10/geos_xmltester/Makefile.in --- geos-3.1.0/build/msvc10/geos_xmltester/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/geos_xmltester/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -0,0 +1,421 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = build/msvc10/geos_xmltester +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_xmltester.vcxproj \ + geos_xmltester.vcxproj.filters + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc10/geos_xmltester/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc10/geos_xmltester/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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 -Nru geos-3.1.0/build/msvc10/Makefile.am geos-3.2.2/build/msvc10/Makefile.am --- geos-3.1.0/build/msvc10/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/Makefile.am 2009-12-08 21:39:08.000000000 +0000 @@ -0,0 +1,16 @@ +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +SUBDIRS = \ + geos_c_dll \ + geos_lib \ + geos_unit \ + geos_xmltester + +EXTRA_DIST = \ + README \ + geos.sln diff -Nru geos-3.1.0/build/msvc10/Makefile.in geos-3.2.2/build/msvc10/Makefile.in --- geos-3.1.0/build/msvc10/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -0,0 +1,629 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = build/msvc10 +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +SUBDIRS = \ + geos_c_dll \ + geos_lib \ + geos_unit \ + geos_xmltester + +EXTRA_DIST = \ + README \ + geos.sln + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc10/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc10/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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 -Nru geos-3.1.0/build/msvc10/README geos-3.2.2/build/msvc10/README --- geos-3.1.0/build/msvc10/README 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc10/README 2009-12-04 17:05:53.000000000 +0000 @@ -0,0 +1,36 @@ +$Id$ +------------------------------------------------------------------------------- +Visual C++ 2010 project for GEOS +Author: Mateusz Loskot (mateusz@loskot.net) +------------------------------------------------------------------------------- + +This directory consists of solution and project files for +Visual C++ 2010 (all editions). + +The solution includes following projects: +geos.sln - main solution file +geos_lib - builds GEOS C and C++ API as static library +geos_c_dll - builds GEOS C API library as DLL, links to geos_lib project +geos_unit - GEOS Unit Test Suite project, unit tests run as post-build event + +Usage: +1. Open geos.sln in Visual C++ 2010 IDE +2. Run Build -> Build solution +3. After all, you should see output binaries in 'build\msvc10\debug' or + 'build\msvc10\release', depending on selected build configuration + +Output binaries: +1. Debug - file names are d.ext, where 'd' indicates debug compilation + +- geosd.lib - static library +- geosd_c.dll - DLL +- geosd_c_i.lib - import library for DLL +- geos_unitd.exe - unit test runner + +2. Release + +- geos.lib - static library +- geos_c.dll - DLL +- geos_c_i.lib - import library for DLL +- geos_unit.exe - unit test runner + diff -Nru geos-3.1.0/build/msvc80/geos_c_dll/geos_c_dll.vcproj geos-3.2.2/build/msvc80/geos_c_dll/geos_c_dll.vcproj --- geos-3.1.0/build/msvc80/geos_c_dll/geos_c_dll.vcproj 2009-03-10 16:17:54.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos_c_dll/geos_c_dll.vcproj 2009-12-05 21:20:16.000000000 +0000 @@ -1,7 +1,7 @@ @@ -204,8 +204,8 @@ > diff -Nru geos-3.1.0/build/msvc80/geos_c_dll/Makefile.in geos-3.2.2/build/msvc80/geos_c_dll/Makefile.in --- geos-3.1.0/build/msvc80/geos_c_dll/Makefile.in 2009-03-11 19:13:29.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos_c_dll/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -223,14 +237,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_c_dll/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc80/geos_c_dll/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_c_dll/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc80/geos_c_dll/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -248,16 +262,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -266,29 +277,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -316,6 +330,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -326,7 +341,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -334,18 +349,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -364,17 +399,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc80/geos_lib/geos_lib.vcproj geos-3.2.2/build/msvc80/geos_lib/geos_lib.vcproj --- geos-3.1.0/build/msvc80/geos_lib/geos_lib.vcproj 2009-03-10 16:17:54.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos_lib/geos_lib.vcproj 2009-12-09 11:05:31.000000000 +0000 @@ -1,7 +1,7 @@ + + + + + + + + + + @@ -244,24 +269,18 @@ - - - - - - + + + + + + @@ -662,18 +681,6 @@ > - - - - - - @@ -911,6 +918,10 @@ Name="noding" > + + @@ -951,6 +962,10 @@ > + + @@ -1170,10 +1185,22 @@ > + + + + + + @@ -1186,6 +1213,10 @@ > + + @@ -1230,10 +1261,6 @@ > - - @@ -1246,10 +1273,6 @@ > - - @@ -1258,10 +1281,6 @@ > - - @@ -1269,6 +1288,42 @@ RelativePath="..\..\..\source\operation\overlay\PolygonBuilder.cpp" > + + + + + + + + + + + + + + + + + + + + + + @@ -1457,14 +1520,6 @@ > - - - - @@ -1477,18 +1532,10 @@ > - - - - @@ -1496,10 +1543,6 @@ RelativePath="..\..\..\source\util\Profiler.cpp" > - - + + @@ -1532,6 +1579,10 @@ > + + @@ -1548,6 +1599,10 @@ > + + @@ -1699,6 +1754,18 @@ Name="algorithm" > + + + + + + @@ -1794,6 +1861,22 @@ > + + + + + + + + + + @@ -2203,6 +2290,14 @@ Name="noding" > + + + + @@ -2251,6 +2346,10 @@ > + + @@ -2291,6 +2390,10 @@ > + + @@ -2327,10 +2430,6 @@ Name="operation" > - - @@ -2659,6 +2758,10 @@ > + + @@ -2971,6 +3074,46 @@ > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru geos-3.1.0/build/msvc80/geos_lib/Makefile.in geos-3.2.2/build/msvc80/geos_lib/Makefile.in --- geos-3.1.0/build/msvc80/geos_lib/Makefile.in 2009-03-11 19:13:29.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos_lib/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -223,14 +237,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_lib/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc80/geos_lib/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc80/geos_lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -248,16 +262,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -266,29 +277,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -316,6 +330,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -326,7 +341,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -334,18 +349,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -364,17 +399,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc80/geos_python/Makefile.in geos-3.2.2/build/msvc80/geos_python/Makefile.in --- geos-3.1.0/build/msvc80/geos_python/Makefile.in 2009-03-11 19:13:29.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos_python/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -223,14 +237,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_python/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc80/geos_python/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_python/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc80/geos_python/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -248,16 +262,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -266,29 +277,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -316,6 +330,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -326,7 +341,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -334,18 +349,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -364,17 +399,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc80/geos_ruby/Makefile.in geos-3.2.2/build/msvc80/geos_ruby/Makefile.in --- geos-3.1.0/build/msvc80/geos_ruby/Makefile.in 2009-03-11 19:13:29.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos_ruby/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -223,14 +237,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_ruby/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc80/geos_ruby/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_ruby/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc80/geos_ruby/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -248,16 +262,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -266,29 +277,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -316,6 +330,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -326,7 +341,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -334,18 +349,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -364,17 +399,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc80/geos.sln geos-3.2.2/build/msvc80/geos.sln --- geos-3.1.0/build/msvc80/geos.sln 2009-03-10 16:17:54.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos.sln 2009-12-05 21:28:58.000000000 +0000 @@ -22,17 +22,14 @@ ..\..\INSTALL = ..\..\INSTALL ..\..\makefile.vc = ..\..\makefile.vc ..\..\NEWS = ..\..\NEWS + ..\..\nmake.opt = ..\..\nmake.opt ..\..\README = ..\..\README ..\..\TODO = ..\..\TODO EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_ruby", "geos_ruby\geos_ruby.vcproj", "{4DFAA153-687F-494C-8670-6E85CC6C2BA8}" - ProjectSection(ProjectDependencies) = postProject - {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} = {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_python", "geos_python\geos_python.vcproj", "{DCDE3502-BEA2-4F60-B45A-2B279CD47994}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_xmltester", "geos_xmltester\geos_xmltester.vcproj", "{304618A3-CCA4-4A2F-3BEE-1AB57060F5C2}" ProjectSection(ProjectDependencies) = postProject + {108E75A3-0A92-489A-B1A9-8F071D40A108} = {108E75A3-0A92-489A-B1A9-8F071D40A108} {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} = {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} EndProjectSection EndProject @@ -54,14 +51,10 @@ {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}.Debug|Win32.Build.0 = Debug|Win32 {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}.Release|Win32.ActiveCfg = Release|Win32 {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115}.Release|Win32.Build.0 = Release|Win32 - {4DFAA153-687F-494C-8670-6E85CC6C2BA8}.Debug|Win32.ActiveCfg = Debug|Win32 - {4DFAA153-687F-494C-8670-6E85CC6C2BA8}.Debug|Win32.Build.0 = Debug|Win32 - {4DFAA153-687F-494C-8670-6E85CC6C2BA8}.Release|Win32.ActiveCfg = Release|Win32 - {4DFAA153-687F-494C-8670-6E85CC6C2BA8}.Release|Win32.Build.0 = Release|Win32 - {DCDE3502-BEA2-4F60-B45A-2B279CD47994}.Debug|Win32.ActiveCfg = Debug|Win32 - {DCDE3502-BEA2-4F60-B45A-2B279CD47994}.Debug|Win32.Build.0 = Debug|Win32 - {DCDE3502-BEA2-4F60-B45A-2B279CD47994}.Release|Win32.ActiveCfg = Release|Win32 - {DCDE3502-BEA2-4F60-B45A-2B279CD47994}.Release|Win32.Build.0 = Release|Win32 + {304618A3-CCA4-4A2F-3BEE-1AB57060F5C2}.Debug|Win32.ActiveCfg = Debug|Win32 + {304618A3-CCA4-4A2F-3BEE-1AB57060F5C2}.Debug|Win32.Build.0 = Debug|Win32 + {304618A3-CCA4-4A2F-3BEE-1AB57060F5C2}.Release|Win32.ActiveCfg = Release|Win32 + {304618A3-CCA4-4A2F-3BEE-1AB57060F5C2}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff -Nru geos-3.1.0/build/msvc80/geos_unit/geos_unit.vcproj geos-3.2.2/build/msvc80/geos_unit/geos_unit.vcproj --- geos-3.1.0/build/msvc80/geos_unit/geos_unit.vcproj 2009-03-10 16:17:54.000000000 +0000 +++ geos-3.2.2/build/msvc80/geos_unit/geos_unit.vcproj 2009-12-05 20:23:15.000000000 +0000 @@ -1,7 +1,7 @@ + + + + + + + + + + + + + + + + + + @@ -340,6 +376,14 @@ RelativePath="..\..\..\tests\unit\algorithm\PointLocatorTest.cpp" > + + + + @@ -356,6 +400,14 @@ > + + + + - - + + + + + + + + + + + + + + + + + + + + + @@ -421,14 +513,6 @@ Name="precision" > - - - - @@ -437,48 +521,48 @@ Name="capi" > + + - - - + + + + + + + + - - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru geos-3.1.0/build/msvc80/geos_xmltester/Makefile.am geos-3.2.2/build/msvc80/geos_xmltester/Makefile.am --- geos-3.1.0/build/msvc80/geos_xmltester/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc80/geos_xmltester/Makefile.am 2009-12-05 21:28:58.000000000 +0000 @@ -0,0 +1,9 @@ +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_xmltester.vcproj diff -Nru geos-3.1.0/build/msvc80/geos_xmltester/Makefile.in geos-3.2.2/build/msvc80/geos_xmltester/Makefile.in --- geos-3.1.0/build/msvc80/geos_xmltester/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc80/geos_xmltester/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -0,0 +1,420 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = build/msvc80/geos_xmltester +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_xmltester.vcproj + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/geos_xmltester/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc80/geos_xmltester/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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 -Nru geos-3.1.0/build/msvc80/Makefile.am geos-3.2.2/build/msvc80/Makefile.am --- geos-3.1.0/build/msvc80/Makefile.am 2009-03-10 16:17:54.000000000 +0000 +++ geos-3.2.2/build/msvc80/Makefile.am 2009-12-05 21:28:58.000000000 +0000 @@ -10,7 +10,8 @@ geos_lib \ geos_python \ geos_ruby \ - geos_unit + geos_unit \ + geos_xmltester EXTRA_DIST = \ README \ diff -Nru geos-3.1.0/build/msvc80/Makefile.in geos-3.2.2/build/msvc80/Makefile.in --- geos-3.1.0/build/msvc80/Makefile.in 2009-03-11 19:13:28.000000000 +0000 +++ geos-3.2.2/build/msvc80/Makefile.in 2010-04-18 16:08:07.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,22 +52,52 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -92,21 +125,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -115,20 +144,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -149,6 +186,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -160,19 +198,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -184,36 +216,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -227,7 +272,8 @@ geos_lib \ geos_python \ geos_ruby \ - geos_unit + geos_unit \ + geos_xmltester EXTRA_DIST = \ README \ @@ -241,14 +287,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc80/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc80/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc80/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -266,6 +312,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo @@ -273,10 +320,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -301,15 +344,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -336,16 +378,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -353,14 +395,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -372,81 +414,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -476,6 +538,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -486,8 +549,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -495,18 +557,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -525,22 +607,25 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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 \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-info-am + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc90/geos_c_dll/geos_c_dll.vcproj geos-3.2.2/build/msvc90/geos_c_dll/geos_c_dll.vcproj --- geos-3.1.0/build/msvc90/geos_c_dll/geos_c_dll.vcproj 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/build/msvc90/geos_c_dll/geos_c_dll.vcproj 2009-12-01 13:05:29.000000000 +0000 @@ -42,13 +42,13 @@ Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="..\..\..\capi;..\..\..\source\headers" - PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI" + PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;_SCL_SECURE_NO_DEPRECATE;WIN32_LEAN_AND_MEAN;NOMINMAX;NOGDI;GEOS_DLL_EXPORT" MinimalRebuild="true" BasicRuntimeChecks="3" RuntimeLibrary="3" UsePrecompiledHeader="0" - WarningLevel="3" - Detect64BitPortabilityProblems="true" + WarningLevel="4" + Detect64BitPortabilityProblems="false" DebugInformationFormat="4" /> + + + + + + + + + + + + @@ -265,6 +290,18 @@ + + + + + + - - - - - - @@ -912,6 +937,10 @@ Name="noding" > + + @@ -952,6 +981,10 @@ > + + @@ -1171,10 +1204,22 @@ > + + + + + + @@ -1187,6 +1232,10 @@ > + + @@ -1231,10 +1280,6 @@ > - - @@ -1247,10 +1292,6 @@ > - - @@ -1259,10 +1300,6 @@ > - - @@ -1270,6 +1307,42 @@ RelativePath="..\..\..\source\operation\overlay\PolygonBuilder.cpp" > + + + + + + + + + + + + + + + + + + + + + + @@ -1458,14 +1539,6 @@ > - - - - @@ -1478,18 +1551,10 @@ > - - - - @@ -1497,10 +1562,6 @@ RelativePath="..\..\..\source\util\Profiler.cpp" > - - + + @@ -1533,6 +1598,10 @@ > + + @@ -1549,6 +1618,10 @@ > + + @@ -1700,6 +1773,18 @@ Name="algorithm" > + + + + + + @@ -1795,6 +1880,22 @@ > + + + + + + + + + + @@ -2204,6 +2309,14 @@ Name="noding" > + + + + @@ -2252,6 +2365,10 @@ > + + @@ -2292,6 +2409,10 @@ > + + @@ -2328,10 +2449,6 @@ Name="operation" > - - @@ -2660,6 +2777,10 @@ > + + @@ -2972,6 +3093,46 @@ > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru geos-3.1.0/build/msvc90/geos_lib/Makefile.in geos-3.2.2/build/msvc90/geos_lib/Makefile.in --- geos-3.1.0/build/msvc90/geos_lib/Makefile.in 2009-03-11 19:13:30.000000000 +0000 +++ geos-3.2.2/build/msvc90/geos_lib/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -223,14 +237,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/geos_lib/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc90/geos_lib/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/geos_lib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc90/geos_lib/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -248,16 +262,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -266,29 +277,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -316,6 +330,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -326,7 +341,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -334,18 +349,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -364,17 +399,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc90/geos_python/Makefile.in geos-3.2.2/build/msvc90/geos_python/Makefile.in --- geos-3.1.0/build/msvc90/geos_python/Makefile.in 2009-03-11 19:13:31.000000000 +0000 +++ geos-3.2.2/build/msvc90/geos_python/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -223,14 +237,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/geos_python/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc90/geos_python/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/geos_python/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc90/geos_python/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -248,16 +262,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -266,29 +277,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -316,6 +330,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -326,7 +341,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -334,18 +349,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -364,17 +399,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc90/geos_ruby/Makefile.in geos-3.2.2/build/msvc90/geos_ruby/Makefile.in --- geos-3.1.0/build/msvc90/geos_ruby/Makefile.in 2009-03-11 19:13:31.000000000 +0000 +++ geos-3.2.2/build/msvc90/geos_ruby/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -223,14 +237,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/geos_ruby/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc90/geos_ruby/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/geos_ruby/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc90/geos_ruby/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -248,16 +262,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -266,29 +277,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -316,6 +330,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -326,7 +341,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -334,18 +349,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -364,17 +399,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/build/msvc90/geos.sln geos-3.2.2/build/msvc90/geos.sln --- geos-3.1.0/build/msvc90/geos.sln 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/build/msvc90/geos.sln 2009-10-28 12:09:06.000000000 +0000 @@ -4,12 +4,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8584EE81-D4E9-4EC7-ABF2-389E5F9D0107}" ProjectSection(SolutionItems) = preProject ..\..\AUTHORS = ..\..\AUTHORS - ..\..\ChangeLog = ..\..\ChangeLog ..\..\COPYING = ..\..\COPYING ..\..\INSTALL = ..\..\INSTALL Makefile.am = Makefile.am ..\..\makefile.vc = ..\..\makefile.vc ..\..\NEWS = ..\..\NEWS + ..\..\nmake.opt = ..\..\nmake.opt ..\..\README = ..\..\README ..\..\TODO = ..\..\TODO EndProjectSection @@ -36,6 +36,12 @@ {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} = {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geos_xmltester", "geos_xmltester\geos_xmltester.vcproj", "{304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}" + ProjectSection(ProjectDependencies) = postProject + {108E75A3-0A92-489A-B1A9-8F071D40A108} = {108E75A3-0A92-489A-B1A9-8F071D40A108} + {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} = {CDBC2FB8-2995-49DE-B80B-B7BE0E4C1115} + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -62,6 +68,10 @@ {DCDE3502-BEA2-4F60-B45A-2B279CD47994}.Debug|Win32.Build.0 = Debug|Win32 {DCDE3502-BEA2-4F60-B45A-2B279CD47994}.Release|Win32.ActiveCfg = Release|Win32 {DCDE3502-BEA2-4F60-B45A-2B279CD47994}.Release|Win32.Build.0 = Release|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Debug|Win32.ActiveCfg = Debug|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Debug|Win32.Build.0 = Debug|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Release|Win32.ActiveCfg = Release|Win32 + {304618A3-CCA4-4A2F-8BEE-1AB57060D5C2}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff -Nru geos-3.1.0/build/msvc90/geos_unit/geos_unit.vcproj geos-3.2.2/build/msvc90/geos_unit/geos_unit.vcproj --- geos-3.1.0/build/msvc90/geos_unit/geos_unit.vcproj 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/build/msvc90/geos_unit/geos_unit.vcproj 2009-12-03 20:01:33.000000000 +0000 @@ -41,14 +41,14 @@ @@ -180,15 +180,39 @@ Name="tut" > + + + + + + + + + + + + @@ -292,15 +316,19 @@ Name="noding" > + + @@ -339,6 +367,14 @@ RelativePath="..\..\..\tests\unit\algorithm\PointLocatorTest.cpp" > + + + + @@ -355,6 +391,14 @@ > + + + + + + + + + + + + + + + + + + + + + + + + @@ -420,14 +504,6 @@ Name="precision" > - - - - @@ -446,12 +522,44 @@ Name="VCCLCompilerTool" /> + + + + + + + + + + + + + + + @@ -466,6 +574,18 @@ Name="VCCLCompilerTool" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru geos-3.1.0/build/msvc90/geos_xmltester/Makefile.am geos-3.2.2/build/msvc90/geos_xmltester/Makefile.am --- geos-3.1.0/build/msvc90/geos_xmltester/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc90/geos_xmltester/Makefile.am 2009-11-26 16:32:40.000000000 +0000 @@ -0,0 +1,9 @@ +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_xmltester.vcproj diff -Nru geos-3.1.0/build/msvc90/geos_xmltester/Makefile.in geos-3.2.2/build/msvc90/geos_xmltester/Makefile.in --- geos-3.1.0/build/msvc90/geos_xmltester/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/build/msvc90/geos_xmltester/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -0,0 +1,420 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = build/msvc90/geos_xmltester +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# +# NOTE: Make sure that 'source' appears first. +# 'capi' and 'doc' surely rely on availability of libgeos +# which is built under 'source' and it seems that automake +# is not able to detect required build order but blindly +# relies on the order items in SUBDIRS appear. +# +EXTRA_DIST = \ + geos_xmltester.vcproj + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/geos_xmltester/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc90/geos_xmltester/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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 -Nru geos-3.1.0/build/msvc90/Makefile.am geos-3.2.2/build/msvc90/Makefile.am --- geos-3.1.0/build/msvc90/Makefile.am 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/build/msvc90/Makefile.am 2009-11-26 16:32:40.000000000 +0000 @@ -10,7 +10,8 @@ geos_lib \ geos_python \ geos_ruby \ - geos_unit + geos_unit \ + geos_xmltester EXTRA_DIST = \ README \ diff -Nru geos-3.1.0/build/msvc90/Makefile.in geos-3.2.2/build/msvc90/Makefile.in --- geos-3.1.0/build/msvc90/Makefile.in 2009-03-11 19:13:30.000000000 +0000 +++ geos-3.2.2/build/msvc90/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,22 +52,52 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -92,21 +125,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -115,20 +144,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -149,6 +186,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -160,19 +198,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -184,36 +216,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -227,7 +272,8 @@ geos_lib \ geos_python \ geos_ruby \ - geos_unit + geos_unit \ + geos_xmltester EXTRA_DIST = \ README \ @@ -241,14 +287,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu build/msvc90/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/msvc90/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/msvc90/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -266,6 +312,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo @@ -273,10 +320,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -301,15 +344,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -336,16 +378,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -353,14 +395,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -372,81 +414,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -476,6 +538,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -486,8 +549,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -495,18 +557,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -525,22 +607,25 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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 \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-info-am + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/build/README geos-3.2.2/build/README --- geos-3.1.0/build/README 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/build/README 2009-12-05 20:21:47.000000000 +0000 @@ -1,4 +1,12 @@ -$Id: README 2137 2008-07-25 21:00:09Z mloskot $ +$Id: README 2799 2009-12-05 20:21:47Z mloskot $ This directory is dedicated for custom, contributed and non-official -building systems for GEOS. \ No newline at end of file +building systems for GEOS. + +Visual Studio solutions: + +* msvc80 - 80 suffix denotes Visual C++ 8.0 from Visual Studio 2005 +* msvc90 - 90 suffix denotes Visual C++ 9.0 from Visual Studio 2008 +* msvc10 - 10 suffix denotes Visual C++ 10.0 from Visual Studio 2010 + +Created and maintained by Mateusz Loskot \ No newline at end of file diff -Nru geos-3.1.0/capi/geos_c.cpp geos-3.2.2/capi/geos_c.cpp --- geos-3.1.0/capi/geos_c.cpp 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/capi/geos_c.cpp 2010-04-17 22:55:53.000000000 +0100 @@ -1,6 +1,6 @@ /************************************************************************ * - * $Id: geos_c.cpp 2251 2009-01-20 01:01:24Z pramsey $ + * $Id: geos_c.cpp 2975 2010-04-17 21:55:53Z strk $ * * C-Wrapper for GEOS library * @@ -16,6 +16,7 @@ ***********************************************************************/ #include +#include #include #include #include @@ -23,11 +24,17 @@ #include #include #include +#include + +#ifdef _MSC_VER +#pragma warning(disable : 4099) +#endif // Some extra magic to make type declarations in geos_c.h work - for cross-checking of types in header. #define GEOSGeometry geos::geom::Geometry #define GEOSPreparedGeometry geos::geom::prep::PreparedGeometry #define GEOSCoordSequence geos::geom::CoordinateSequence +#define GEOSSTRtree geos::index::strtree::STRtree #define GEOSWKTReader_t geos::io::WKTReader #define GEOSWKTWriter_t geos::io::WKTWriter #define GEOSWKBReader_t geos::io::WKBReader @@ -40,11 +47,15 @@ /// #undef VERBOSE_EXCEPTIONS +#include + +/* #if defined(_MSC_VER) # define GEOS_DLL __declspec(dllexport) #else # define GEOS_DLL #endif +*/ // import the most frequently used definitions globally using geos::geom::Geometry; @@ -59,11 +70,12 @@ using geos::io::WKBWriter; using geos::io::CLocalizer; +using geos::index::strtree::STRtree; + using geos::operation::overlay::OverlayOp; using geos::operation::overlay::overlayOp; using geos::operation::geounion::CascadedPolygonUnion; - typedef std::auto_ptr GeomAutoPtr; //## GLOBALS ################################################ @@ -73,18 +85,40 @@ extern "C" { +GEOSMessageHandler +GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf); +GEOSMessageHandler +GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf); + void initGEOS (GEOSMessageHandler nf, GEOSMessageHandler ef) { - handle = initGEOS_r( nf, ef ); + if ( ! handle ) + { + handle = initGEOS_r( nf, ef ); + } + else + { + GEOSContext_setNoticeHandler_r(handle, nf); + GEOSContext_setErrorHandler_r(handle, ef); + } } void finishGEOS () { - finishGEOS_r( handle ); + if (handle != NULL) { + finishGEOS_r( handle ); + handle = NULL; + } } +void +GEOSFree (void* buffer) +{ + GEOSFree_r( handle, buffer ); +} + /**************************************************************** ** relate()-related functions ** return 0 = false, 1 = true, 2 = error occured @@ -195,6 +229,18 @@ } int +GEOSHausdorffDistance(const Geometry *g1, const Geometry *g2, double *dist) +{ + return GEOSHausdorffDistance_r( handle, g1, g2, dist ); +} + +int +GEOSHausdorffDistanceDensify(const Geometry *g1, const Geometry *g2, double densifyFrac, double *dist) +{ + return GEOSHausdorffDistanceDensify_r( handle, g1, g2, densifyFrac, dist ); +} + +int GEOSArea(const Geometry *g, double *area) { return GEOSArea_r( handle, g, area ); @@ -305,6 +351,22 @@ } Geometry * +GEOSBufferWithStyle(const Geometry *g1, double width, int quadsegs, + int endCapStyle, int joinStyle, double mitreLimit) +{ + return GEOSBufferWithStyle_r( handle, g1, width, quadsegs, endCapStyle, + joinStyle, mitreLimit ); +} + +Geometry * +GEOSSingleSidedBuffer(const Geometry *g1, double width, int quadsegs, + int joinStyle, double mitreLimit, int leftSide) +{ + return GEOSSingleSidedBuffer_r( handle, g1, width, quadsegs, + joinStyle, mitreLimit, leftSide ); +} + +Geometry * GEOSConvexHull(const Geometry *g1) { return GEOSConvexHull_r( handle, g1 ); @@ -455,9 +517,15 @@ } int -GEOSGetSRID(const Geometry *g1) +GEOSGetSRID(const Geometry *g) { - return GEOSGetSRID_r( handle, g1 ); + return GEOSGetSRID_r( handle, g ); +} + +void +GEOSSetSRID(Geometry *g, int srid) +{ + return GEOSSetSRID_r( handle, g, srid ); } char @@ -704,14 +772,14 @@ } -/* The owner owns the result */ +/* The caller owns the result */ unsigned char* GEOSWKBWriter_write(WKBWriter *writer, const Geometry *geom, size_t *size) { return GEOSWKBWriter_write_r( handle, writer, geom, size ); } -/* The owner owns the result */ +/* The caller owns the result */ unsigned char* GEOSWKBWriter_writeHEX(WKBWriter *writer, const Geometry *geom, size_t *size) { @@ -795,4 +863,78 @@ return GEOSPreparedIntersects_r( handle, pg1, g2 ); } +STRtree * +GEOSSTRtree_create (size_t nodeCapacity) +{ + return GEOSSTRtree_create_r( handle, nodeCapacity ); +} + +void +GEOSSTRtree_insert (geos::index::strtree::STRtree *tree, + const geos::geom::Geometry *g, + void *item) +{ + GEOSSTRtree_insert_r( handle, tree, g, item ); +} + +void +GEOSSTRtree_query (geos::index::strtree::STRtree *tree, + const geos::geom::Geometry *g, + GEOSQueryCallback cb, + void *userdata) +{ + GEOSSTRtree_query_r( handle, tree, g, cb, userdata ); +} + +void +GEOSSTRtree_iterate(geos::index::strtree::STRtree *tree, + GEOSQueryCallback callback, + void *userdata) +{ + GEOSSTRtree_iterate_r( handle, tree, callback, userdata ); +} + +char +GEOSSTRtree_remove (geos::index::strtree::STRtree *tree, + const geos::geom::Geometry *g, + void *item) +{ + return GEOSSTRtree_remove_r( handle, tree, g, item ); +} + +void +GEOSSTRtree_destroy (geos::index::strtree::STRtree *tree) +{ + GEOSSTRtree_destroy_r( handle, tree ); +} + +double +GEOSProject (const geos::geom::Geometry *g, + const geos::geom::Geometry *p) +{ + return GEOSProject_r (handle, g, p); +} + +geos::geom::Geometry * +GEOSInterpolate (const geos::geom::Geometry *g, + double d) +{ + return GEOSInterpolate_r(handle, g, d); +} + +double +GEOSProjectNormalized (const geos::geom::Geometry *g, + const geos::geom::Geometry *p) +{ + return GEOSProjectNormalized_r (handle, g, p); +} + +geos::geom::Geometry * +GEOSInterpolateNormalized (const geos::geom::Geometry *g, + double d) +{ + return GEOSInterpolateNormalized_r(handle, g, d); +} + + } /* extern "C" */ diff -Nru geos-3.1.0/capi/geos_c.h geos-3.2.2/capi/geos_c.h --- geos-3.1.0/capi/geos_c.h 2009-03-11 19:14:32.000000000 +0000 +++ geos-3.2.2/capi/geos_c.h 2010-04-18 16:08:26.000000000 +0100 @@ -1,6 +1,6 @@ /************************************************************************ * - * $Id: geos_c.h.in 2251 2009-01-20 01:01:24Z pramsey $ + * $Id: geos_c.h.in 2975 2010-04-17 21:55:53Z strk $ * * C-Wrapper for GEOS library * @@ -21,9 +21,8 @@ * functions, and call finishGEOS() when done. * * - Currently you have to explicitly GEOSGeom_destroy() all - * GEOSGeom objects to avoid memory leaks, and to free() - * all returned char * (unless const). This might change - * before first release to ensure greater API stability. + * GEOSGeom objects to avoid memory leaks, and to GEOSFree() + * all returned char * (unless const). * ***********************************************************************/ @@ -32,6 +31,9 @@ #ifndef __cplusplus # include /* for size_t definition */ +#else +# include +using std::size_t; #endif #ifdef __cplusplus @@ -45,36 +47,37 @@ ***********************************************************************/ /* - * * Following 'ifdef' hack fixes problem with generating geos_c.h on Windows, - * * when building with Visual C++ compiler. - * */ + * Following 'ifdef' hack fixes problem with generating geos_c.h on Windows, + * when building with Visual C++ compiler. + * + */ #if defined(_MSC_VER) #include #define GEOS_CAPI_VERSION_MAJOR 1 -#define GEOS_CAPI_VERSION_MINOR 5 -#define GEOS_CAPI_VERSION_PATCH 0 -#define GEOS_CAPI_VERSION "3.1.0-CAPI-1.5.0" +#define GEOS_CAPI_VERSION_MINOR 6 +#define GEOS_CAPI_VERSION_PATCH 2 +#define GEOS_CAPI_VERSION "3.2.2-CAPI-1.6.2" #else #ifndef GEOS_VERSION_MAJOR #define GEOS_VERSION_MAJOR 3 #endif #ifndef GEOS_VERSION_MINOR -#define GEOS_VERSION_MINOR 1 +#define GEOS_VERSION_MINOR 2 #endif #ifndef GEOS_VERSION_PATCH -#define GEOS_VERSION_PATCH 0 +#define GEOS_VERSION_PATCH 2 #endif #ifndef GEOS_VERSION -#define GEOS_VERSION "3.1.0" +#define GEOS_VERSION "3.2.2" #endif #ifndef GEOS_JTS_PORT -#define GEOS_JTS_PORT "1.7.1" +#define GEOS_JTS_PORT "1.10.0" #endif #define GEOS_CAPI_VERSION_MAJOR 1 -#define GEOS_CAPI_VERSION_MINOR 5 -#define GEOS_CAPI_VERSION_PATCH 0 -#define GEOS_CAPI_VERSION "3.1.0-CAPI-1.5.0" +#define GEOS_CAPI_VERSION_MINOR 6 +#define GEOS_CAPI_VERSION_PATCH 2 +#define GEOS_CAPI_VERSION "3.2.2-CAPI-1.6.2" #endif #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR @@ -98,6 +101,7 @@ typedef struct GEOSGeom_t GEOSGeometry; typedef struct GEOSPrepGeom_t GEOSPreparedGeometry; typedef struct GEOSCoordSeq_t GEOSCoordSequence; +typedef struct GEOSSTRtree_t GEOSSTRtree; #endif /* Those are compatibility definitions for source compatibility @@ -130,17 +134,15 @@ typedef struct GEOSContextHandle_HS *GEOSContextHandle_t; +typedef void (*GEOSQueryCallback)(void *item, void *userdata); + /************************************************************************ * * Initialization, cleanup, version * ***********************************************************************/ -#if defined(_MSC_VER) -# define GEOS_DLL __declspec(dllexport) -#else -# define GEOS_DLL -#endif +#include extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function); @@ -318,6 +320,86 @@ /************************************************************************ * + * Linearref functions -- there are more, but these two are probably + * sufficient for most purposes + * + ***********************************************************************/ + +/* + * GEOSGeometry ownership is retained by caller + */ + + +extern double GEOS_DLL GEOSProject(const GEOSGeometry *g, + const GEOSGeometry* p); +extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle, + const GEOSGeometry *g, + const GEOSGeometry *p); + +extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry *g, + double d); +extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle, + const GEOSGeometry *g, + double d); + +extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry *g, + const GEOSGeometry* p); +extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle, + const GEOSGeometry *g, + const GEOSGeometry *p); + +extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(const GEOSGeometry *g, + double d); +extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r( + GEOSContextHandle_t handle, + const GEOSGeometry *g, + double d); + +/************************************************************************ + * + * Buffer related functions + * + ***********************************************************************/ + +enum GEOSBufCapStyles { + GEOSBUF_CAP_ROUND=1, + GEOSBUF_CAP_FLAT=2, + GEOSBUF_CAP_SQUARE=3 +}; + +enum GEOSBufJoinStyles { + GEOSBUF_JOIN_ROUND=1, + GEOSBUF_JOIN_MITRE=2, + GEOSBUF_JOIN_BEVEL=3 +}; + +/* These functions return NULL on exception. */ +extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g1, + double width, int quadsegs); +extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle, + const GEOSGeometry* g1, + double width, int quadsegs); + +/* These functions return NULL on exception. */ +extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(const GEOSGeometry* g1, + double width, int quadsegs, int endCapStyle, int joinStyle, + double mitreLimit); +extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle, + const GEOSGeometry* g1, double width, int quadsegs, int endCapStyle, + int joinStyle, double mitreLimit); + +/* These functions return NULL on exception. Only LINESTRINGs are accepted. */ +extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(const GEOSGeometry* g1, + double width, int quadsegs, int joinStyle, double mitreLimit, + int leftSide); +extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r( + GEOSContextHandle_t handle, + const GEOSGeometry* g1, double width, int quadsegs, + int joinStyle, double mitreLimit, int leftSide); + + +/************************************************************************ + * * Geometry Constructors. * GEOSCoordSequence* arguments will become ownership of the returned object. * All functions return NULL on exception. @@ -382,8 +464,6 @@ extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g1); extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2); -extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g1, - double width, int quadsegs); extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g1); extern GEOSGeometry GEOS_DLL *GEOSDifference(const GEOSGeometry* g1, const GEOSGeometry* g2); extern GEOSGeometry GEOS_DLL *GEOSSymDifference(const GEOSGeometry* g1, @@ -401,9 +481,6 @@ extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry* g1, const GEOSGeometry* g2); -extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle, - const GEOSGeometry* g1, - double width, int quadsegs); extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry* g1); extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle, @@ -513,7 +590,7 @@ ***********************************************************************/ /* - * Argument ownership is taken by prepared geometry + * GEOSGeometry ownership is retained by caller */ extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g); @@ -524,6 +601,9 @@ extern char GEOS_DLL GEOSPreparedCovers(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSPreparedIntersects(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); +/* + * GEOSGeometry ownership is retained by caller + */ extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r( GEOSContextHandle_t handle, const GEOSGeometry* g); @@ -546,6 +626,57 @@ /************************************************************************ * + * STRtree functions + * + ***********************************************************************/ + +/* + * GEOSGeometry ownership is retained by caller + */ + +extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity); +extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree, + const GEOSGeometry *g, + GEOSQueryCallback callback, + void *userdata); +extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree, + GEOSQueryCallback callback, + void *userdata); +extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree); + + +extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r( + GEOSContextHandle_t handle, + size_t nodeCapacity); +extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + const GEOSGeometry *g, + GEOSQueryCallback callback, + void *userdata); +extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + GEOSQueryCallback callback, + void *userdata); +extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree); + + +/************************************************************************ + * * Unary predicate - return 2 on exception, 1 on true, 0 on false * ***********************************************************************/ @@ -589,14 +720,13 @@ const GEOSGeometry* g1); /* Return 0 on exception */ -extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g1); - -extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID); - +extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g); extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle, - const GEOSGeometry* g1); + const GEOSGeometry* g); extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID); +extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle, + GEOSGeometry* g, int SRID); /* May be called on all geometries in GEOS 3.x, returns -1 on error and 1 * for non-multi geometries. Older GEOS versions only accept @@ -604,10 +734,10 @@ * when feeded simple geometries, so beware if you need compatibility with * old GEOS versions. */ -extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g1); +extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g); extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle, - const GEOSGeometry* g1); + const GEOSGeometry* g); /* * Return NULL on exception, Geometry must be a Collection. @@ -672,6 +802,7 @@ /* * Return 0 on exception (or empty geometry) + * See also GEOSCoordSeq_getDimensions */ extern int GEOS_DLL GEOSGeom_getDimensions(const GEOSGeometry* g); @@ -689,7 +820,10 @@ extern int GEOS_DLL GEOSLength(const GEOSGeometry* g1, double *length); extern int GEOS_DLL GEOSDistance(const GEOSGeometry* g1, const GEOSGeometry* g2, double *dist); - +extern int GEOS_DLL GEOSHausdorffDistance(const GEOSGeometry *g1, + const GEOSGeometry *g2, double *dist); +extern int GEOS_DLL GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, + const GEOSGeometry *g2, double densifyFrac, double *dist); extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry* g1, double *area); extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle, @@ -697,6 +831,14 @@ extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry* g1, const GEOSGeometry* g2, double *dist); +extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle, + const GEOSGeometry *g1, + const GEOSGeometry *g2, + double *dist); +extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, + const GEOSGeometry *g1, + const GEOSGeometry *g2, + double densifyFrac, double *dist); /************************************************************************ @@ -766,7 +908,7 @@ extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKBWriter* writer); -/* The owner owns the results for these two methods! */ +/* The caller owns the results for these two methods! */ extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size); extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size); @@ -820,6 +962,12 @@ GEOSWKBWriter* writer, const char writeSRID); +/* + * Free buffers returned by stuff like GEOSWKBWriter_write(), + * GEOSWKBWriter_writeHEX() and GEOSWKTWriter_write(). + */ +extern void GEOS_DLL GEOSFree( void *buffer ); +extern void GEOS_DLL GEOSFree_r( GEOSContextHandle_t handle, void *buffer ); #ifdef __cplusplus } // extern "C" diff -Nru geos-3.1.0/capi/geos_c.h.in geos-3.2.2/capi/geos_c.h.in --- geos-3.1.0/capi/geos_c.h.in 2009-03-10 16:20:31.000000000 +0000 +++ geos-3.2.2/capi/geos_c.h.in 2010-04-17 22:55:53.000000000 +0100 @@ -1,6 +1,6 @@ /************************************************************************ * - * $Id: geos_c.h.in 2251 2009-01-20 01:01:24Z pramsey $ + * $Id: geos_c.h.in 2975 2010-04-17 21:55:53Z strk $ * * C-Wrapper for GEOS library * @@ -21,9 +21,8 @@ * functions, and call finishGEOS() when done. * * - Currently you have to explicitly GEOSGeom_destroy() all - * GEOSGeom objects to avoid memory leaks, and to free() - * all returned char * (unless const). This might change - * before first release to ensure greater API stability. + * GEOSGeom objects to avoid memory leaks, and to GEOSFree() + * all returned char * (unless const). * ***********************************************************************/ @@ -32,6 +31,9 @@ #ifndef __cplusplus # include /* for size_t definition */ +#else +# include +using std::size_t; #endif #ifdef __cplusplus @@ -45,15 +47,16 @@ ***********************************************************************/ /* - * * Following 'ifdef' hack fixes problem with generating geos_c.h on Windows, - * * when building with Visual C++ compiler. - * */ + * Following 'ifdef' hack fixes problem with generating geos_c.h on Windows, + * when building with Visual C++ compiler. + * + */ #if defined(_MSC_VER) #include #define GEOS_CAPI_VERSION_MAJOR 1 -#define GEOS_CAPI_VERSION_MINOR 5 -#define GEOS_CAPI_VERSION_PATCH 0 -#define GEOS_CAPI_VERSION "3.1.0-CAPI-1.5.0" +#define GEOS_CAPI_VERSION_MINOR 6 +#define GEOS_CAPI_VERSION_PATCH 2 +#define GEOS_CAPI_VERSION "3.2.2-CAPI-1.6.2" #else #ifndef GEOS_VERSION_MAJOR #define GEOS_VERSION_MAJOR @VERSION_MAJOR@ @@ -98,6 +101,7 @@ typedef struct GEOSGeom_t GEOSGeometry; typedef struct GEOSPrepGeom_t GEOSPreparedGeometry; typedef struct GEOSCoordSeq_t GEOSCoordSequence; +typedef struct GEOSSTRtree_t GEOSSTRtree; #endif /* Those are compatibility definitions for source compatibility @@ -130,17 +134,15 @@ typedef struct GEOSContextHandle_HS *GEOSContextHandle_t; +typedef void (*GEOSQueryCallback)(void *item, void *userdata); + /************************************************************************ * * Initialization, cleanup, version * ***********************************************************************/ -#if defined(_MSC_VER) -# define GEOS_DLL __declspec(dllexport) -#else -# define GEOS_DLL -#endif +#include extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function); @@ -318,6 +320,86 @@ /************************************************************************ * + * Linearref functions -- there are more, but these two are probably + * sufficient for most purposes + * + ***********************************************************************/ + +/* + * GEOSGeometry ownership is retained by caller + */ + + +extern double GEOS_DLL GEOSProject(const GEOSGeometry *g, + const GEOSGeometry* p); +extern double GEOS_DLL GEOSProject_r(GEOSContextHandle_t handle, + const GEOSGeometry *g, + const GEOSGeometry *p); + +extern GEOSGeometry GEOS_DLL *GEOSInterpolate(const GEOSGeometry *g, + double d); +extern GEOSGeometry GEOS_DLL *GEOSInterpolate_r(GEOSContextHandle_t handle, + const GEOSGeometry *g, + double d); + +extern double GEOS_DLL GEOSProjectNormalized(const GEOSGeometry *g, + const GEOSGeometry* p); +extern double GEOS_DLL GEOSProjectNormalized_r(GEOSContextHandle_t handle, + const GEOSGeometry *g, + const GEOSGeometry *p); + +extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized(const GEOSGeometry *g, + double d); +extern GEOSGeometry GEOS_DLL *GEOSInterpolateNormalized_r( + GEOSContextHandle_t handle, + const GEOSGeometry *g, + double d); + +/************************************************************************ + * + * Buffer related functions + * + ***********************************************************************/ + +enum GEOSBufCapStyles { + GEOSBUF_CAP_ROUND=1, + GEOSBUF_CAP_FLAT=2, + GEOSBUF_CAP_SQUARE=3 +}; + +enum GEOSBufJoinStyles { + GEOSBUF_JOIN_ROUND=1, + GEOSBUF_JOIN_MITRE=2, + GEOSBUF_JOIN_BEVEL=3 +}; + +/* These functions return NULL on exception. */ +extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g1, + double width, int quadsegs); +extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle, + const GEOSGeometry* g1, + double width, int quadsegs); + +/* These functions return NULL on exception. */ +extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle(const GEOSGeometry* g1, + double width, int quadsegs, int endCapStyle, int joinStyle, + double mitreLimit); +extern GEOSGeometry GEOS_DLL *GEOSBufferWithStyle_r(GEOSContextHandle_t handle, + const GEOSGeometry* g1, double width, int quadsegs, int endCapStyle, + int joinStyle, double mitreLimit); + +/* These functions return NULL on exception. Only LINESTRINGs are accepted. */ +extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer(const GEOSGeometry* g1, + double width, int quadsegs, int joinStyle, double mitreLimit, + int leftSide); +extern GEOSGeometry GEOS_DLL *GEOSSingleSidedBuffer_r( + GEOSContextHandle_t handle, + const GEOSGeometry* g1, double width, int quadsegs, + int joinStyle, double mitreLimit, int leftSide); + + +/************************************************************************ + * * Geometry Constructors. * GEOSCoordSequence* arguments will become ownership of the returned object. * All functions return NULL on exception. @@ -382,8 +464,6 @@ extern GEOSGeometry GEOS_DLL *GEOSEnvelope(const GEOSGeometry* g1); extern GEOSGeometry GEOS_DLL *GEOSIntersection(const GEOSGeometry* g1, const GEOSGeometry* g2); -extern GEOSGeometry GEOS_DLL *GEOSBuffer(const GEOSGeometry* g1, - double width, int quadsegs); extern GEOSGeometry GEOS_DLL *GEOSConvexHull(const GEOSGeometry* g1); extern GEOSGeometry GEOS_DLL *GEOSDifference(const GEOSGeometry* g1, const GEOSGeometry* g2); extern GEOSGeometry GEOS_DLL *GEOSSymDifference(const GEOSGeometry* g1, @@ -401,9 +481,6 @@ extern GEOSGeometry GEOS_DLL *GEOSIntersection_r(GEOSContextHandle_t handle, const GEOSGeometry* g1, const GEOSGeometry* g2); -extern GEOSGeometry GEOS_DLL *GEOSBuffer_r(GEOSContextHandle_t handle, - const GEOSGeometry* g1, - double width, int quadsegs); extern GEOSGeometry GEOS_DLL *GEOSConvexHull_r(GEOSContextHandle_t handle, const GEOSGeometry* g1); extern GEOSGeometry GEOS_DLL *GEOSDifference_r(GEOSContextHandle_t handle, @@ -513,7 +590,7 @@ ***********************************************************************/ /* - * Argument ownership is taken by prepared geometry + * GEOSGeometry ownership is retained by caller */ extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare(const GEOSGeometry* g); @@ -524,6 +601,9 @@ extern char GEOS_DLL GEOSPreparedCovers(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); extern char GEOS_DLL GEOSPreparedIntersects(const GEOSPreparedGeometry* pg1, const GEOSGeometry* g2); +/* + * GEOSGeometry ownership is retained by caller + */ extern const GEOSPreparedGeometry GEOS_DLL *GEOSPrepare_r( GEOSContextHandle_t handle, const GEOSGeometry* g); @@ -546,6 +626,57 @@ /************************************************************************ * + * STRtree functions + * + ***********************************************************************/ + +/* + * GEOSGeometry ownership is retained by caller + */ + +extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create(size_t nodeCapacity); +extern void GEOS_DLL GEOSSTRtree_insert(GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_query(GEOSSTRtree *tree, + const GEOSGeometry *g, + GEOSQueryCallback callback, + void *userdata); +extern void GEOS_DLL GEOSSTRtree_iterate(GEOSSTRtree *tree, + GEOSQueryCallback callback, + void *userdata); +extern char GEOS_DLL GEOSSTRtree_remove(GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_destroy(GEOSSTRtree *tree); + + +extern GEOSSTRtree GEOS_DLL *GEOSSTRtree_create_r( + GEOSContextHandle_t handle, + size_t nodeCapacity); +extern void GEOS_DLL GEOSSTRtree_insert_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_query_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + const GEOSGeometry *g, + GEOSQueryCallback callback, + void *userdata); +extern void GEOS_DLL GEOSSTRtree_iterate_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + GEOSQueryCallback callback, + void *userdata); +extern char GEOS_DLL GEOSSTRtree_remove_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree, + const GEOSGeometry *g, + void *item); +extern void GEOS_DLL GEOSSTRtree_destroy_r(GEOSContextHandle_t handle, + GEOSSTRtree *tree); + + +/************************************************************************ + * * Unary predicate - return 2 on exception, 1 on true, 0 on false * ***********************************************************************/ @@ -589,14 +720,13 @@ const GEOSGeometry* g1); /* Return 0 on exception */ -extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g1); - -extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID); - +extern int GEOS_DLL GEOSGetSRID(const GEOSGeometry* g); extern int GEOS_DLL GEOSGetSRID_r(GEOSContextHandle_t handle, - const GEOSGeometry* g1); + const GEOSGeometry* g); extern void GEOS_DLL GEOSSetSRID(GEOSGeometry* g, int SRID); +extern void GEOS_DLL GEOSSetSRID_r(GEOSContextHandle_t handle, + GEOSGeometry* g, int SRID); /* May be called on all geometries in GEOS 3.x, returns -1 on error and 1 * for non-multi geometries. Older GEOS versions only accept @@ -604,10 +734,10 @@ * when feeded simple geometries, so beware if you need compatibility with * old GEOS versions. */ -extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g1); +extern int GEOS_DLL GEOSGetNumGeometries(const GEOSGeometry* g); extern int GEOS_DLL GEOSGetNumGeometries_r(GEOSContextHandle_t handle, - const GEOSGeometry* g1); + const GEOSGeometry* g); /* * Return NULL on exception, Geometry must be a Collection. @@ -672,6 +802,7 @@ /* * Return 0 on exception (or empty geometry) + * See also GEOSCoordSeq_getDimensions */ extern int GEOS_DLL GEOSGeom_getDimensions(const GEOSGeometry* g); @@ -689,7 +820,10 @@ extern int GEOS_DLL GEOSLength(const GEOSGeometry* g1, double *length); extern int GEOS_DLL GEOSDistance(const GEOSGeometry* g1, const GEOSGeometry* g2, double *dist); - +extern int GEOS_DLL GEOSHausdorffDistance(const GEOSGeometry *g1, + const GEOSGeometry *g2, double *dist); +extern int GEOS_DLL GEOSHausdorffDistanceDensify(const GEOSGeometry *g1, + const GEOSGeometry *g2, double densifyFrac, double *dist); extern int GEOS_DLL GEOSArea_r(GEOSContextHandle_t handle, const GEOSGeometry* g1, double *area); extern int GEOS_DLL GEOSLength_r(GEOSContextHandle_t handle, @@ -697,6 +831,14 @@ extern int GEOS_DLL GEOSDistance_r(GEOSContextHandle_t handle, const GEOSGeometry* g1, const GEOSGeometry* g2, double *dist); +extern int GEOS_DLL GEOSHausdorffDistance_r(GEOSContextHandle_t handle, + const GEOSGeometry *g1, + const GEOSGeometry *g2, + double *dist); +extern int GEOS_DLL GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t handle, + const GEOSGeometry *g1, + const GEOSGeometry *g2, + double densifyFrac, double *dist); /************************************************************************ @@ -766,7 +908,7 @@ extern void GEOS_DLL GEOSWKBWriter_destroy_r(GEOSContextHandle_t handle, GEOSWKBWriter* writer); -/* The owner owns the results for these two methods! */ +/* The caller owns the results for these two methods! */ extern unsigned char GEOS_DLL *GEOSWKBWriter_write(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size); extern unsigned char GEOS_DLL *GEOSWKBWriter_writeHEX(GEOSWKBWriter* writer, const GEOSGeometry* g, size_t *size); @@ -820,6 +962,12 @@ GEOSWKBWriter* writer, const char writeSRID); +/* + * Free buffers returned by stuff like GEOSWKBWriter_write(), + * GEOSWKBWriter_writeHEX() and GEOSWKTWriter_write(). + */ +extern void GEOS_DLL GEOSFree( void *buffer ); +extern void GEOS_DLL GEOSFree_r( GEOSContextHandle_t handle, void *buffer ); #ifdef __cplusplus } // extern "C" diff -Nru geos-3.1.0/capi/geos_ts_c.cpp geos-3.2.2/capi/geos_ts_c.cpp --- geos-3.1.0/capi/geos_ts_c.cpp 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/capi/geos_ts_c.cpp 2010-04-17 22:55:53.000000000 +0100 @@ -1,9 +1,10 @@ /************************************************************************ * - * $Id: geos_ts_c.cpp 2255 2009-01-24 01:33:09Z mloskot $ + * $Id: geos_ts_c.cpp 2975 2010-04-17 21:55:53Z strk $ * * C-Wrapper for GEOS library * + * Copyright (C) 2010 Sandro Santilli * Copyright (C) 2005-2006 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under @@ -31,11 +32,14 @@ #include #include #include +#include +#include +#include #include #include #include #include -#include +#include #include #include #include @@ -43,8 +47,14 @@ #include #include #include +#include +#include +#include +#include #include +#include #include +#include // for FINITE // This should go away #include @@ -57,11 +67,16 @@ #include #include +#ifdef _MSC_VER +#pragma warning(disable : 4099) +#endif + // Some extra magic to make type declarations in geos_c.h work - // for cross-checking of types in header. #define GEOSGeometry geos::geom::Geometry #define GEOSPreparedGeometry geos::geom::prep::PreparedGeometry #define GEOSCoordSequence geos::geom::CoordinateSequence +#define GEOSSTRtree geos::index::strtree::STRtree #define GEOSWKTReader_t geos::io::WKTReader #define GEOSWKTWriter_t geos::io::WKTWriter #define GEOSWKBReader_t geos::io::WKBReader @@ -75,11 +90,8 @@ /// #undef VERBOSE_EXCEPTIONS -#if defined(_MSC_VER) -# define GEOS_DLL __declspec(dllexport) -#else -# define GEOS_DLL -#endif +#include + // import the most frequently used definitions globally using geos::geom::Geometry; @@ -92,12 +104,13 @@ using geos::io::WKTWriter; using geos::io::WKBReader; using geos::io::WKBWriter; -using geos::io::CLocalizer; using geos::operation::overlay::OverlayOp; using geos::operation::overlay::overlayOp; using geos::operation::geounion::CascadedPolygonUnion; +using geos::algorithm::distance::DiscreteHausdorffDistance; + typedef std::auto_ptr GeomAutoPtr; typedef struct GEOSContextHandleInternal @@ -110,6 +123,19 @@ int initialized; } GEOSContextHandleInternal_t; +// CAPI_ItemVisitor is used internally by the CAPI STRtree +// wrappers. It's defined here just to keep it out of the +// extern "C" block. +class CAPI_ItemVisitor : public geos::index::ItemVisitor { + GEOSQueryCallback callback; + void *userdata; + public: + CAPI_ItemVisitor (GEOSQueryCallback cb, void *ud) + : ItemVisitor(), callback(cb), userdata(ud) {}; + void visitItem (void *item) { callback(item, userdata); }; +}; + + //## PROTOTYPES ############################################# extern "C" const char GEOS_DLL *GEOSjtsport(); @@ -117,17 +143,35 @@ extern "C" { +char* gstrdup_s(const char* str, const std::size_t size) +{ + char* out = static_cast(std::malloc(size + 1)); + if (0 != out) + { + // as no strlen call necessary, memcpy may be faster than strcpy + std::memcpy(out, str, size + 1); + } + + assert(0 != out); + return out; +} + +char* gstrdup(std::string const& str) +{ + return gstrdup_s(str.c_str(), str.size()); +} + + GEOSContextHandle_t initGEOS_r(GEOSMessageHandler nf, GEOSMessageHandler ef) { - GEOSContextHandleInternal_t *handle; - void *extHandle; - - extHandle = malloc(sizeof(GEOSContextHandleInternal_t)); + GEOSContextHandleInternal_t *handle = 0; + void *extHandle = 0; - if(extHandle != NULL) + extHandle = std::malloc(sizeof(GEOSContextHandleInternal_t)); + if (0 != extHandle) { - handle = (GEOSContextHandleInternal_t*)extHandle; + handle = static_cast(extHandle); handle->NOTICE_MESSAGE = nf; handle->ERROR_MESSAGE = ef; handle->geomFactory = GeometryFactory::getDefaultInstance(); @@ -136,22 +180,59 @@ handle->initialized = 1; } - return (GEOSContextHandle_t)extHandle; + return static_cast(extHandle); } -void -finishGEOS_r(GEOSContextHandle_t extHandle) +GEOSMessageHandler +GEOSContext_setNoticeHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf) { - //Fix up freeing handle w.r.t. malloc above + GEOSMessageHandler f; + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return NULL; + } + + f = handle->NOTICE_MESSAGE; + handle->NOTICE_MESSAGE = nf; - if( extHandle == NULL ) + return f; +} + +GEOSMessageHandler +GEOSContext_setErrorHandler_r(GEOSContextHandle_t extHandle, GEOSMessageHandler nf) +{ + GEOSMessageHandler f; + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return; + return NULL; } - free(extHandle); + + f = handle->ERROR_MESSAGE; + handle->ERROR_MESSAGE = nf; + + return f; +} + +void +finishGEOS_r(GEOSContextHandle_t extHandle) +{ + // Fix up freeing handle w.r.t. malloc above + std::free(extHandle); extHandle = NULL; } +void +GEOSFree_r (GEOSContextHandle_t extHandle, void* buffer) +{ + assert(0 != extHandle); + + std::free(buffer); +} + //----------------------------------------------------------- // relate()-related functions // return 0 = false, 1 = true, 2 = error occured @@ -160,175 +241,165 @@ char GEOSDisjoint_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( handle->initialized == 0 ) { return 2; } - try { - bool result; - result = g1->disjoint(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } + try + { + bool result = g1->disjoint(g2); + return result; + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + // TODO: mloskot is going to replace these double-catch block + // with a macro to remove redundant code in this and + // following functions. + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char GEOSTouches_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->touches(g2); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = g1->touches(g2); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char GEOSIntersects_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->intersects(g2); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = g1->intersects(g2); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char GEOSCrosses_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->crosses(g2); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = g1->crosses(g2); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char GEOSWithin_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->within(g2); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = g1->within(g2); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } // call g1->contains(g2) @@ -338,71 +409,65 @@ char GEOSContains_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->contains(g2); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = g1->contains(g2); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char GEOSOverlaps_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->overlaps(g2); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = g1->overlaps(g2); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } @@ -413,78 +478,76 @@ char GEOSRelatePattern_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, const char *pat) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - std::string s = pat; - result = g1->relate(g2,s); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + std::string s(pat); + bool result = g1->relate(g2, s); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char * GEOSRelate_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::geom::IntersectionMatrix; - try { + try + { + using geos::geom::IntersectionMatrix; + + IntersectionMatrix* im = g1->relate(g2); + if (0 == im) + { + return 0; + } + + char *result = gstrdup(im->toString()); - IntersectionMatrix *im = g1->relate(g2); - if (im == NULL) - return NULL; - - std::string s(im->toString()); - char *result = NULL; - result = (char*) std::malloc( s.length() + 1); - std::strcpy(result, s.c_str() ); - delete im; + delete im; + im = 0; - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } return NULL; } @@ -499,103 +562,103 @@ char GEOSisValid_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - using geos::operation::valid::IsValidOp; - using geos::operation::valid::TopologyValidationError; - IsValidOp ivo(g1); - bool result; - try { - result = ivo.isValid(); - if ( result == 0 ) - { - TopologyValidationError *err = ivo.getValidationError(); - if ( err ) { - std::string errmsg = err->toString(); - handle->NOTICE_MESSAGE("%s", errmsg.c_str()); - } - } - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + using geos::operation::valid::IsValidOp; + using geos::operation::valid::TopologyValidationError; + IsValidOp ivo(g1); + bool valid = ivo.isValid(); + if (!valid) + { + TopologyValidationError *err = ivo.getValidationError(); + if ( err ) + { + handle->NOTICE_MESSAGE("%s", err->toString().c_str()); + } + } + return valid; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char * GEOSisValidReason_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::operation::valid::IsValidOp; - using geos::operation::valid::TopologyValidationError; - IsValidOp ivo(g1); - try { - char *result = NULL; - char *validstr = "Valid Geometry"; - const std::size_t validstrlen = std::strlen(validstr) + 1; + try + { + using geos::operation::valid::IsValidOp; + using geos::operation::valid::TopologyValidationError; + + char* result = 0; + char const* const validstr = "Valid Geometry"; + + IsValidOp ivo(g1); bool isvalid = ivo.isValid(); if ( ! isvalid ) { TopologyValidationError *err = ivo.getValidationError(); - std::string errmsg = err->getMessage(); - std::string errloc = err->getCoordinate().toString(); - const std::size_t msglen = errmsg.length(); - const std::size_t loclen = errloc.length(); - result = (char*)std::malloc(msglen + loclen + 3); - sprintf(result, "%s [%s]", errmsg.c_str(), errloc.c_str()); - } - else { - result = (char*)std::malloc(validstrlen); - std::memcpy(result, validstr, validstrlen); + if (0 != err) + { + std::ostringstream ss; + ss.precision(15); + ss << err->getCoordinate(); + const std::string errloc = ss.str(); + std::string errmsg(err->getMessage()); + errmsg += "[" + errloc + "]"; + result = gstrdup(errmsg); + } + } + else + { + result = gstrdup(std::string(validstr)); } + return result; } - catch (const std::exception &e) { handle->ERROR_MESSAGE("%s", e.what()); - return NULL; } - catch (...) { handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; } + return 0; } //----------------------------------------------------------------- @@ -605,335 +668,389 @@ char GEOSEquals_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->equals(g2); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } + try + { + bool result = g1->equals(g2); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + return 2; } char GEOSEqualsExact_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double tolerance) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try { - bool result; - result = g1->equalsExact(g2, tolerance); - return result; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = g1->equalsExact(g2, tolerance); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } int GEOSDistance_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double *dist) { - GEOSContextHandleInternal_t *handle; + assert(0 != dist); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try { - *dist = g1->distance(g2); - return 1; - } + try + { + *dist = g1->distance(g2); + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; +} - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } +int +GEOSHausdorffDistance_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double *dist) +{ + assert(0 != dist); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + if ( 0 == extHandle ) + { + return 0; + } + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return 0; + } + + try + { + *dist = DiscreteHausdorffDistance::distance(*g1, *g2); + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } int -GEOSArea_r(GEOSContextHandle_t extHandle, const Geometry *g, double *area) +GEOSHausdorffDistanceDensify_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2, double densifyFrac, double *dist) { - GEOSContextHandleInternal_t *handle; + assert(0 != dist); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try { - *area = g->getArea(); - return 1; - } + try + { + *dist = DiscreteHausdorffDistance::distance(*g1, *g2, densifyFrac); + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; +} - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } +int +GEOSArea_r(GEOSContextHandle_t extHandle, const Geometry *g, double *area) +{ + assert(0 != area); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + if ( 0 == extHandle ) + { + return 0; + } + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return 0; + } + + try + { + *area = g->getArea(); + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } int GEOSLength_r(GEOSContextHandle_t extHandle, const Geometry *g, double *length) { - GEOSContextHandleInternal_t *handle; + assert(0 != length); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try { - *length = g->getLength(); - return 1; - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + try + { + *length = g->getLength(); + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } Geometry * GEOSGeomFromWKT_r(GEOSContextHandle_t extHandle, const char *wkt) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - CLocalizer clocale; - try - { - WKTReader r((GeometryFactory*)handle->geomFactory); - const std::string wktstring = std::string(wkt); - Geometry *g = r.read(wktstring); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + const std::string wktstring(wkt); + WKTReader r(static_cast(handle->geomFactory)); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + Geometry *g = r.read(wktstring); + return g; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } char * GEOSGeomToWKT_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - CLocalizer clocale; - try - { - std::string s = g1->toString(); - char *result; - result = (char*) std::malloc( s.length() + 1); - std::strcpy(result, s.c_str() ); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + char *result = gstrdup(g1->toString()); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + return NULL; } // Remember to free the result! unsigned char * GEOSGeomToWKB_buf_r(GEOSContextHandle_t extHandle, const Geometry *g, size_t *size) { - GEOSContextHandleInternal_t *handle; + assert(0 != size); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::io::WKBWriter; - try - { - int byteOrder = (int) handle->WKBByteOrder; - WKBWriter w(handle->WKBOutputDims, byteOrder); - std::ostringstream s(std::ios_base::binary); - w.write(*g, s); - std::string wkbstring = s.str(); - size_t len = wkbstring.length(); - - unsigned char *result; - result = (unsigned char*) std::malloc(len); - std::memcpy(result, wkbstring.c_str(), len); - *size = len; - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + using geos::io::WKBWriter; + try + { + int byteOrder = static_cast(handle->WKBByteOrder); + WKBWriter w(handle->WKBOutputDims, byteOrder); + std::ostringstream os(std::ios_base::binary); + w.write(*g, os); + std::string wkbstring(os.str()); + const std::size_t len = wkbstring.length(); + + unsigned char* result = 0; + result = static_cast(std::malloc(len)); + if (0 != result) + { + std::memcpy(result, wkbstring.c_str(), len); + *size = len; + } + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSGeomFromWKB_buf_r(GEOSContextHandle_t extHandle, const unsigned char *wkb, size_t size) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::io::WKBReader; - try - { - std::string wkbstring = std::string((const char*)wkb, size); // make it binary ! - WKBReader r(*(GeometryFactory*)handle->geomFactory); - std::istringstream s(std::ios_base::binary); - s.str(wkbstring); - - s.seekg(0, std::ios::beg); // rewind reader pointer - Geometry *g = r.read(s); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + using geos::io::WKBReader; + try + { + std::string wkbstring(reinterpret_cast(wkb), size); // make it binary ! + WKBReader r(*(static_cast(handle->geomFactory))); + std::istringstream is(std::ios_base::binary); + is.str(wkbstring); + is.seekg(0, std::ios::beg); // rewind reader pointer + Geometry *g = r.read(is); + return g; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } /* Read/write wkb hex values. Returned geometries are @@ -941,191 +1058,184 @@ unsigned char * GEOSGeomToHEX_buf_r(GEOSContextHandle_t extHandle, const Geometry *g, size_t *size) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::io::WKBWriter; - try - { - int byteOrder = (int) handle->WKBByteOrder; - WKBWriter w(handle->WKBOutputDims, byteOrder); - std::ostringstream s(std::ios_base::binary); - w.writeHEX(*g, s); - std::string hexstring = s.str(); - size_t len = hexstring.length(); - - char *result; - result = (char*) std::malloc(len); - std::memcpy(result, hexstring.c_str(), len); - *size = len; - return (unsigned char*) result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + using geos::io::WKBWriter; + try + { + int byteOrder = static_cast(handle->WKBByteOrder); + WKBWriter w(handle->WKBOutputDims, byteOrder); + std::ostringstream os(std::ios_base::binary); + w.writeHEX(*g, os); + std::string hexstring(os.str()); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } -} + char *result = gstrdup(hexstring); + if (0 != result) + { + *size = hexstring.length(); + } -Geometry * + return reinterpret_cast(result); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; +} + +Geometry * GEOSGeomFromHEX_buf_r(GEOSContextHandle_t extHandle, const unsigned char *hex, size_t size) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::io::WKBReader; - try - { - std::string hexstring = std::string((const char*)hex, size); - WKBReader r(*(GeometryFactory*)handle->geomFactory); - std::istringstream s(std::ios_base::binary); - s.str(hexstring); - - s.seekg(0, std::ios::beg); // rewind reader pointer - Geometry *g = r.readHEX(s); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + using geos::io::WKBReader; + try + { + std::string hexstring(reinterpret_cast(hex), size); + WKBReader r(*(static_cast(handle->geomFactory))); + std::istringstream is(std::ios_base::binary); + is.str(hexstring); + is.seekg(0, std::ios::beg); // rewind reader pointer - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + Geometry *g = r.readHEX(is); + return g; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } char GEOSisEmpty_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try - { - return g1->isEmpty(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + return g1->isEmpty(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char GEOSisSimple_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try - { - return g1->isSimple(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } + try + { + return g1->isSimple(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + return 2; + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 2; + } } char GEOSisRing_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try - { - const LineString *ls = dynamic_cast(g); - if ( ls ) { - return (ls->isRing()); - } else { - return 0; - } - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } + try + { + const LineString *ls = dynamic_cast(g); + if ( ls ) { + return (ls->isRing()); + } else { + return 0; + } + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + return 2; + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return 2; + } } @@ -1134,78 +1244,69 @@ char * GEOSGeomType_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - std::string s = g1->getGeometryType(); - - char *result; - result = (char*) std::malloc( s.length() + 1); - std::strcpy(result, s.c_str() ); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + std::string s = g1->getGeometryType(); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + char *result = gstrdup(s); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } // Return postgis geometry type index int GEOSGeomTypeId_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - try - { - return g1->getGeometryTypeId(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return -1; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return -1; - } + try + { + return g1->getGeometryTypeId(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return -1; } - - - //------------------------------------------------------------------- // GEOS functions that return geometries //------------------------------------------------------------------- @@ -1213,456 +1314,568 @@ Geometry * GEOSEnvelope_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - Geometry *g3 = g1->getEnvelope(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + Geometry *g3 = g1->getEnvelope(); + return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSIntersection_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - GeomAutoPtr g3 = BinaryOp(g1, g2, overlayOp(OverlayOp::opINTERSECTION)); - return g3.release(); - //Geometry *g3 = g1->intersection(g2); - //return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + GeomAutoPtr g3(BinaryOp(g1, g2, overlayOp(OverlayOp::opINTERSECTION))); + return g3.release(); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + // XXX: old version + //Geometry *g3 = g1->intersection(g2); + //return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSBuffer_r(GEOSContextHandle_t extHandle, const Geometry *g1, double width, int quadrantsegments) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - Geometry *g3 = g1->buffer(width, quadrantsegments); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + Geometry *g3 = g1->buffer(width, quadrantsegments); + return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * -GEOSConvexHull_r(GEOSContextHandle_t extHandle, const Geometry *g1) +GEOSBufferWithStyle_r(GEOSContextHandle_t extHandle, const Geometry *g1, double width, int quadsegs, int endCapStyle, int joinStyle, double mitreLimit) { - GEOSContextHandleInternal_t *handle; + using geos::operation::buffer::BufferParameters; + using geos::operation::buffer::BufferOp; + using geos::util::IllegalArgumentException; - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - Geometry *g3 = g1->convexHull(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + BufferParameters bp; + bp.setQuadrantSegments(quadsegs); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + if ( endCapStyle > BufferParameters::CAP_SQUARE ) + { + throw IllegalArgumentException("Invalid buffer endCap style"); + } + bp.setEndCapStyle( + static_cast(endCapStyle) + ); + + if ( joinStyle > BufferParameters::JOIN_BEVEL ) + { + throw IllegalArgumentException("Invalid buffer join style"); + } + bp.setJoinStyle( + static_cast(joinStyle) + ); + bp.setMitreLimit(mitreLimit); + BufferOp op(g1, bp); + Geometry *g3 = op.getResultGeometry(width); + return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * -GEOSDifference_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) +GEOSSingleSidedBuffer_r(GEOSContextHandle_t extHandle, const Geometry *g1, double width, int quadsegs, int joinStyle, double mitreLimit, int leftSide) { - GEOSContextHandleInternal_t *handle; + using geos::operation::buffer::BufferParameters; + using geos::operation::buffer::BufferBuilder; + using geos::operation::buffer::BufferOp; + using geos::util::IllegalArgumentException; - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - GeomAutoPtr g3 = BinaryOp(g1, g2, overlayOp(OverlayOp::opDIFFERENCE)); - return g3.release(); - //Geometry *g3 = g1->difference(g2); - //return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + BufferParameters bp; + bp.setEndCapStyle( BufferParameters::CAP_FLAT ); + bp.setQuadrantSegments(quadsegs); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + if ( joinStyle > BufferParameters::JOIN_BEVEL ) + { + throw IllegalArgumentException("Invalid buffer join style"); + } + bp.setJoinStyle( + static_cast(joinStyle) + ); + bp.setMitreLimit(mitreLimit); + + bool isLeftSide = leftSide == 0 ? false : true; + BufferBuilder bufBuilder (bp); + Geometry *g3 = bufBuilder.bufferLineSingleSided(g1, width, isLeftSide); + + return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * -GEOSBoundary_r(GEOSContextHandle_t extHandle, const Geometry *g1) +GEOSConvexHull_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - Geometry *g3 = g1->getBoundary(); - return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + Geometry *g3 = g1->convexHull(); + return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; +} - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } +Geometry * +GEOSDifference_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) +{ + if ( 0 == extHandle ) + { + return NULL; + } + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return NULL; + } + + try + { + GeomAutoPtr g3(BinaryOp(g1, g2, overlayOp(OverlayOp::opDIFFERENCE))); + return g3.release(); + + // XXX: old version + //Geometry *g3 = g1->difference(g2); + //return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * -GEOSSymDifference_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) +GEOSBoundary_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; + if ( 0 == extHandle ) + { + return NULL; + } + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return NULL; + } + + try + { + Geometry *g3 = g1->getBoundary(); + return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; +} - if( extHandle == NULL ) +Geometry * +GEOSSymDifference_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) +{ + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - GeomAutoPtr g3 = BinaryOp(g1, g2, overlayOp(OverlayOp::opSYMDIFFERENCE)); - return g3.release(); - //Geometry *g3 = g1->symDifference(g2); - //return g3; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + GeomAutoPtr g3 = BinaryOp(g1, g2, overlayOp(OverlayOp::opSYMDIFFERENCE)); + return g3.release(); + //Geometry *g3 = g1->symDifference(g2); + //return g3; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + return NULL; + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + return NULL; + } } Geometry * GEOSUnion_r(GEOSContextHandle_t extHandle, const Geometry *g1, const Geometry *g2) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - GeomAutoPtr g3 = BinaryOp(g1, g2, overlayOp(OverlayOp::opUNION)); - return g3.release(); - //Geometry *g3 = g1->Union(g2); - //return g3; - } - catch (const std::exception &e) - { + try + { + GeomAutoPtr g3 = BinaryOp(g1, g2, overlayOp(OverlayOp::opUNION)); + return g3.release(); + + // XXX: old version + //Geometry *g3 = g1->Union(g2); + //return g3; + } + catch (const std::exception &e) + { #if VERBOSE_EXCEPTIONS - std::ostringstream s; - s << "Exception on GEOSUnion with following inputs:" << std::endl; - s << "A: "<toString() << std::endl; - s << "B: "<toString() << std::endl; - handle->NOTICE_MESSAGE("%s", s.str().c_str()); + std::ostringstream s; + s << "Exception on GEOSUnion with following inputs:" << std::endl; + s << "A: "<toString() << std::endl; + s << "B: "<toString() << std::endl; + handle->NOTICE_MESSAGE("%s", s.str().c_str()); #endif // VERBOSE_EXCEPTIONS - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSUnionCascaded_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try{ - const geos::geom::MultiPolygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Invalid argument (must be a MultiPolygon)"); - return NULL; - } + try + { + const geos::geom::MultiPolygon *p = dynamic_cast(g1); + if ( ! p ) + { + handle->ERROR_MESSAGE("Invalid argument (must be a MultiPolygon)"); + return NULL; + } + using geos::operation::geounion::CascadedPolygonUnion; - return CascadedPolygonUnion::Union(p); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + return CascadedPolygonUnion::Union(p); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSPointOnSurface_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - Geometry *ret = g1->getInteriorPoint(); - if ( ! ret ) - { - const GeometryFactory *gf; - gf=handle->geomFactory; - // return an empty collection - return gf->createGeometryCollection(); - } - return ret; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + Geometry *ret = g1->getInteriorPoint(); + if ( ! ret ) + { + const GeometryFactory* gf = handle->geomFactory; + // return an empty collection + return gf->createGeometryCollection(); + } + return ret; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } - - - - //------------------------------------------------------------------- // memory management functions //------------------------------------------------------------------ - void GEOSGeom_destroy_r(GEOSContextHandle_t extHandle, Geometry *a) { - GEOSContextHandleInternal_t *handle; + GEOSContextHandleInternal_t *handle = 0; - try{ - delete a; - } - catch (const std::exception &e) - { - if( extHandle == NULL ) + // FIXME: mloskot: Does this try-catch around delete means that + // destructors in GEOS may throw? If it does, this is a serious + // violation of "never throw an exception from a destructor" principle + + try + { + delete a; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("%s", e.what()); - } - - catch (...) - { - if( extHandle == NULL ) + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } void -GEOSSetSRID(Geometry *g, int SRID) +GEOSSetSRID_r(GEOSContextHandle_t extHandle, Geometry *g, int srid) { - g->setSRID(SRID); + assert(0 != g); + + if ( 0 == extHandle ) + { + return; + } + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + g->setSRID(srid); } int -GEOSGetNumCoordinates_r(GEOSContextHandle_t extHandle, const Geometry *g1) +GEOSGetNumCoordinates_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - try{ - return static_cast(g1->getNumPoints()); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return -1; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return -1; - } + try + { + return static_cast(g->getNumPoints()); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return -1; } /* @@ -1670,74 +1883,74 @@ * Converts Geometry to normal form (or canonical form). */ int -GEOSNormalize_r(GEOSContextHandle_t extHandle, Geometry *g1) +GEOSNormalize_r(GEOSContextHandle_t extHandle, Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - try{ - g1->normalize(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return -1; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return -1; - } - return 0; + try + { + g->normalize(); + return 0; // SUCCESS + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return -1; } int GEOSGetNumInteriorRings_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - try{ - const Polygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Argument is not a Polygon"); - return -1; - } - return static_cast(p->getNumInteriorRing()); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return -1; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return -1; - } + try + { + const Polygon *p = dynamic_cast(g1); + if ( ! p ) + { + handle->ERROR_MESSAGE("Argument is not a Polygon"); + return -1; + } + return static_cast(p->getNumInteriorRing()); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return -1; } @@ -1745,77 +1958,75 @@ int GEOSGetNumGeometries_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - try{ - return static_cast(g1->getNumGeometries()); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return -1; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return -1; - } -} - - -/* + try + { + return static_cast(g1->getNumGeometries()); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return -1; +} + + +/* * Call only on GEOMETRYCOLLECTION or MULTI*. * Return a pointer to the internal Geometry. */ const Geometry * GEOSGetGeometryN_r(GEOSContextHandle_t extHandle, const Geometry *g1, int n) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::geom::GeometryCollection; - try{ - const GeometryCollection *gc = dynamic_cast(g1); - if ( ! gc ) - { - handle->ERROR_MESSAGE("Argument is not a GeometryCollection"); - return NULL; - } - return gc->getGeometryN(n); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + using geos::geom::GeometryCollection; + const GeometryCollection *gc = dynamic_cast(g1); + if ( ! gc ) + { + handle->ERROR_MESSAGE("Argument is not a GeometryCollection"); + return NULL; + } + return gc->getGeometryN(n); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } @@ -1826,39 +2037,38 @@ const Geometry * GEOSGetExteriorRing_r(GEOSContextHandle_t extHandle, const Geometry *g1) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try{ - const Polygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); - return NULL; - } - return p->getExteriorRing(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + const Polygon *p = dynamic_cast(g1); + if ( ! p ) + { + handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); + return NULL; + } + return p->getExteriorRing(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } /* @@ -1868,417 +2078,421 @@ const Geometry * GEOSGetInteriorRingN_r(GEOSContextHandle_t extHandle, const Geometry *g1, int n) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try{ - const Polygon *p = dynamic_cast(g1); - if ( ! p ) - { - handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); - return NULL; - } - return p->getInteriorRingN(n); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + const Polygon *p = dynamic_cast(g1); + if ( ! p ) + { + handle->ERROR_MESSAGE("Invalid argument (must be a Polygon)"); + return NULL; + } + return p->getInteriorRingN(n); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } - - Geometry * GEOSGetCentroid_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try{ - Geometry *ret = g->getCentroid(); - if ( ! ret ) - { - const GeometryFactory *gf; - gf=handle->geomFactory; - - return gf->createGeometryCollection(); - } - return ret; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + Geometry *ret = g->getCentroid(); + if (0 == ret) + { + const GeometryFactory *gf = handle->geomFactory; + return gf->createGeometryCollection(); + } + return ret; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSGeom_createCollection_r(GEOSContextHandle_t extHandle, int type, Geometry **geoms, unsigned int ngeoms) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } #ifdef GEOS_DEBUG - char buf[256]; - sprintf(buf, "PostGIS2GEOS_collection: requested type %d, ngeoms: %d", - type, ngeoms); - handle->NOTICE_MESSAGE("%s", buf);// TODO: Can handle->NOTICE_MESSAGE format that directly? + char buf[256]; + sprintf(buf, "PostGIS2GEOS_collection: requested type %d, ngeoms: %d", + type, ngeoms); + handle->NOTICE_MESSAGE("%s", buf);// TODO: Can handle->NOTICE_MESSAGE format that directly? #endif - try - { - Geometry *g; - const GeometryFactory *gf; - gf=handle->geomFactory; - std::vector *vgeoms = new std::vector(geoms, geoms+ngeoms); - - switch (type) - { - case GEOS_GEOMETRYCOLLECTION: - g = gf->createGeometryCollection(vgeoms); - break; - case GEOS_MULTIPOINT: - g = gf->createMultiPoint(vgeoms); - break; - case GEOS_MULTILINESTRING: - g = gf->createMultiLineString(vgeoms); - break; - case GEOS_MULTIPOLYGON: - g = gf->createMultiPolygon(vgeoms); - break; - default: - handle->ERROR_MESSAGE("Unsupported type request for PostGIS2GEOS_collection"); - g = NULL; - - } - if (g==NULL) return NULL; - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + const GeometryFactory* gf = handle->geomFactory; + std::vector* vgeoms = new std::vector(geoms, geoms + ngeoms); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + Geometry *g = 0; + switch (type) + { + case GEOS_GEOMETRYCOLLECTION: + g = gf->createGeometryCollection(vgeoms); + break; + case GEOS_MULTIPOINT: + g = gf->createMultiPoint(vgeoms); + break; + case GEOS_MULTILINESTRING: + g = gf->createMultiLineString(vgeoms); + break; + case GEOS_MULTIPOLYGON: + g = gf->createMultiPolygon(vgeoms); + break; + default: + handle->ERROR_MESSAGE("Unsupported type request for PostGIS2GEOS_collection"); + g = 0; + + } + + return g; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } Geometry * GEOSPolygonize_r(GEOSContextHandle_t extHandle, const Geometry * const * g, unsigned int ngeoms) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - using geos::operation::polygonize::Polygonizer; - unsigned int i; - Geometry *out = NULL; + Geometry *out = 0; + + try + { + // Polygonize + using geos::operation::polygonize::Polygonizer; + Polygonizer plgnzr; + for (std::size_t i = 0; i < ngeoms; ++i) + { + plgnzr.add(g[i]); + } - try{ - // Polygonize - Polygonizer plgnzr; - for (i=0; iNOTICE_MESSAGE("geometry vector added to polygonizer"); + handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); #endif - std::vector*polys = plgnzr.getPolygons(); + std::vector *polys = plgnzr.getPolygons(); + assert(0 != polys); #if GEOS_DEBUG - handle->NOTICE_MESSAGE("output polygons got"); + handle->NOTICE_MESSAGE("output polygons got"); #endif - // We need a vector of Geometry pointers, not - // Polygon pointers. - // STL vector doesn't allow transparent upcast of this - // nature, so we explicitly convert. - // (it's just a waste of processor and memory, btw) - std::vector *polyvec = - new std::vector(polys->size()); - for (i=0; isize(); i++) (*polyvec)[i] = (*polys)[i]; - delete polys; - - const GeometryFactory *gf; - gf=handle->geomFactory; - - out = gf->createGeometryCollection(polyvec); - // the above method takes ownership of the passed - // vector, so we must *not* delete it - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + // We need a vector of Geometry pointers, not Polygon pointers. + // STL vector doesn't allow transparent upcast of this + // nature, so we explicitly convert. + // (it's just a waste of processor and memory, btw) + // + // XXX mloskot: Why not to extent GeometryFactory to accept + // vector of polygons or extend Polygonizer to return list of Geometry* + // or add a wrapper which semantic is similar to: + // std::vector > + std::vector *polyvec = new std::vector(polys->size()); + + for (std::size_t i = 0; i < polys->size(); ++i) + { + (*polyvec)[i] = (*polys)[i]; + } + delete polys; + polys = 0; + + const GeometryFactory *gf = handle->geomFactory; + + // The below takes ownership of the passed vector, + // so we must *not* delete it + out = gf->createGeometryCollection(polyvec); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - return out; + return out; } Geometry * GEOSPolygonizer_getCutEdges_r(GEOSContextHandle_t extHandle, const Geometry * const * g, unsigned int ngeoms) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - using geos::operation::polygonize::Polygonizer; - unsigned int i; - Geometry *out = NULL; + Geometry *out = 0; + + try + { + // Polygonize + using geos::operation::polygonize::Polygonizer; + Polygonizer plgnzr; + for (std::size_t i = 0; i < ngeoms; ++i) + { + plgnzr.add(g[i]); + } - try{ - // Polygonize - Polygonizer plgnzr; - for (i=0; iNOTICE_MESSAGE("geometry vector added to polygonizer"); + handle->NOTICE_MESSAGE("geometry vector added to polygonizer"); #endif - std::vector*lines = plgnzr.getCutEdges(); + std::vector* lines = plgnzr.getCutEdges(); + assert(0 != lines); #if GEOS_DEBUG - handle->NOTICE_MESSAGE("output polygons got"); + handle->NOTICE_MESSAGE("output polygons got"); #endif - // We need a vector of Geometry pointers, not - // Polygon pointers. - // STL vector doesn't allow transparent upcast of this - // nature, so we explicitly convert. - // (it's just a waste of processor and memory, btw) - std::vector *linevec = - new std::vector(lines->size()); - for (i=0; isize(); i++) (*linevec)[i] = (*lines)[i]->clone(); - - const GeometryFactory *gf; - gf=handle->geomFactory; - - out = gf->createGeometryCollection(linevec); - // the above method takes ownership of the passed - // vector, so we must *not* delete it - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + // We need a vector of Geometry pointers, not Polygon pointers. + // STL vector doesn't allow transparent upcast of this + // nature, so we explicitly convert. + // (it's just a waste of processor and memory, btw) + // XXX mloskot: See comment for GEOSPolygonize_r + std::vector *linevec = new std::vector(lines->size()); + + for (std::size_t i = 0; i < lines->size(); ++i) + { + (*linevec)[i] = (*lines)[i]->clone(); + } + // FIXME mloskot: Who deallocates vector pointed by lines* ? + + const GeometryFactory *gf = handle->geomFactory; - return out; + // The below takes ownership of the passed vector, + // so we must *not* delete it + out = gf->createGeometryCollection(linevec); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return out; } Geometry * GEOSLineMerge_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - using geos::operation::linemerge::LineMerger; - unsigned int i; - Geometry *out = NULL; - - try{ - // LineMerge - LineMerger lmrgr; + Geometry *out = 0; - lmrgr.add(g); + try + { + using geos::operation::linemerge::LineMerger; + LineMerger lmrgr; + lmrgr.add(g); - std::vector*lines = lmrgr.getMergedLineStrings(); + std::vector* lines = lmrgr.getMergedLineStrings(); + assert(0 != lines); #if GEOS_DEBUG handle->NOTICE_MESSAGE("output lines got"); #endif - std::vector*geoms = - new std::vector(lines->size()); - for (i=0; isize(); i++) (*geoms)[i] = (*lines)[i]; - delete lines; - const GeometryFactory *gf; - gf=handle->geomFactory; - - out = gf->buildGeometry(geoms); - //out = gf->createGeometryCollection(geoms); + std::vector*geoms = new std::vector(lines->size()); + for (std::vector::size_type i = 0; i < lines->size(); ++i) + { + (*geoms)[i] = (*lines)[i]; } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + delete lines; + lines = 0; - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + const GeometryFactory *gf = handle->geomFactory; + out = gf->buildGeometry(geoms); + + // XXX: old version + //out = gf->createGeometryCollection(geoms); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - return out; + return out; } int -GEOSGetSRID_r(GEOSContextHandle_t extHandle, const Geometry *g1) +GEOSGetSRID_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try{ - return g1->getSRID(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + try + { + return g->getSRID(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } -const char * -GEOSversion() +const char* GEOSversion() { - //static string version = GEOS_CAPI_VERSION; - return GEOS_CAPI_VERSION; + return GEOS_CAPI_VERSION; } -const char * -GEOSjtsport() +const char* GEOSjtsport() { - //string version = jtsport(); - //char *res = strdup(version.c_str()); - //return res; - return GEOS_JTS_PORT; + return GEOS_JTS_PORT; } - char GEOSHasZ_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - if ( g->isEmpty() ) return false; - double az = g->getCoordinate()->z; - //handle->ERROR_MESSAGE("ZCoord: %g", az); - return static_cast(FINITE(az)); + if (g->isEmpty()) + { + return false; + } + assert(0 != g->getCoordinate()); + + double az = g->getCoordinate()->z; + //handle->ERROR_MESSAGE("ZCoord: %g", az); + + return static_cast(FINITE(az)); } int GEOS_getWKBOutputDims_r(GEOSContextHandle_t extHandle) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } @@ -2289,710 +2503,711 @@ int GEOS_setWKBOutputDims_r(GEOSContextHandle_t extHandle, int newdims) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - if ( newdims < 2 || newdims > 3 ) - handle->ERROR_MESSAGE("WKB output dimensions out of range 2..3"); - int olddims = handle->WKBOutputDims; - handle->WKBOutputDims = newdims; - return olddims; + if ( newdims < 2 || newdims > 3 ) + { + handle->ERROR_MESSAGE("WKB output dimensions out of range 2..3"); + } + + const int olddims = handle->WKBOutputDims; + handle->WKBOutputDims = newdims; + + return olddims; } int GEOS_getWKBByteOrder_r(GEOSContextHandle_t extHandle) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - return handle->WKBByteOrder; + return handle->WKBByteOrder; } int GEOS_setWKBByteOrder_r(GEOSContextHandle_t extHandle, int byteOrder) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return -1; } - int oldByteOrder = handle->WKBByteOrder; - handle->WKBByteOrder = byteOrder; - return oldByteOrder; + const int oldByteOrder = handle->WKBByteOrder; + handle->WKBByteOrder = byteOrder; + + return oldByteOrder; } CoordinateSequence * GEOSCoordSeq_create_r(GEOSContextHandle_t extHandle, unsigned int size, unsigned int dims) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try { - const GeometryFactory *gf; - gf=handle->geomFactory; - - return gf->getCoordinateSequenceFactory()->create(size, dims); - } - - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } -} - + try + { + const GeometryFactory *gf = handle->geomFactory; + return gf->getCoordinateSequenceFactory()->create(size, dims); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; +} + int -GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t extHandle, CoordinateSequence *s, unsigned int idx, unsigned int dim, double val) +GEOSCoordSeq_setOrdinate_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs, + unsigned int idx, unsigned int dim, double val) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + assert(0 != cs); + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try { - s->setOrdinate(static_cast(idx), - static_cast(dim), val); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + try + { + cs->setOrdinate(static_cast(idx), static_cast(dim), val); + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } int GEOSCoordSeq_setX_r(GEOSContextHandle_t extHandle, CoordinateSequence *s, unsigned int idx, double val) { - return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 0, val); + return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 0, val); } int GEOSCoordSeq_setY_r(GEOSContextHandle_t extHandle, CoordinateSequence *s, unsigned int idx, double val) { - return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 1, val); + return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 1, val); } int GEOSCoordSeq_setZ_r(GEOSContextHandle_t extHandle, CoordinateSequence *s, unsigned int idx, double val) { - return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 2, val); + return GEOSCoordSeq_setOrdinate_r(extHandle, s, idx, 2, val); } CoordinateSequence * -GEOSCoordSeq_clone_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s) +GEOSCoordSeq_clone_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs) { - GEOSContextHandleInternal_t *handle; + assert(0 != cs); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try { return s->clone(); } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + return cs->clone(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } int -GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int idx, unsigned int dim, double *val) +GEOSCoordSeq_getOrdinate_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs, + unsigned int idx, unsigned int dim, double *val) { - GEOSContextHandleInternal_t *handle; + assert(0 != cs); + assert(0 != val); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try { - double d = s->getOrdinate(static_cast(idx), - static_cast(dim)); - *val = d; - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } + try + { + double d = cs->getOrdinate(static_cast(idx), static_cast(dim)); + *val = d; - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } int GEOSCoordSeq_getX_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int idx, double *val) { - return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 0, val); + return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 0, val); } int GEOSCoordSeq_getY_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int idx, double *val) { - return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 1, val); + return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 1, val); } int GEOSCoordSeq_getZ_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int idx, double *val) { - return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 2, val); + return GEOSCoordSeq_getOrdinate_r(extHandle, s, idx, 2, val); } int -GEOSCoordSeq_getSize_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int *size) +GEOSCoordSeq_getSize_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs, unsigned int *size) { - GEOSContextHandleInternal_t *handle; + assert(0 != cs); + assert(0 != size); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try { - std::size_t sz = s->getSize(); - *size = static_cast(sz); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + try + { + const std::size_t sz = cs->getSize(); + *size = static_cast(sz); + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } int -GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t extHandle, const CoordinateSequence *s, unsigned int *dims) +GEOSCoordSeq_getDimensions_r(GEOSContextHandle_t extHandle, const CoordinateSequence *cs, unsigned int *dims) { - GEOSContextHandleInternal_t *handle; + assert(0 != cs); + assert(0 != dims); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 0; } - try { - std::size_t dim = s->getDimension(); - *dims = static_cast(dim); - return 1; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 0; - } + try + { + const std::size_t dim = cs->getDimension(); + *dims = static_cast(dim); - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + return 1; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } void GEOSCoordSeq_destroy_r(GEOSContextHandle_t extHandle, CoordinateSequence *s) { - GEOSContextHandleInternal_t *handle; - - try{ - delete s; - } + GEOSContextHandleInternal_t *handle = 0; - catch (const std::exception &e) - { - if( extHandle == NULL ) + try + { + delete s; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("%s", e.what()); - } - - catch (...) - { - if( extHandle == NULL ) + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } const CoordinateSequence * GEOSGeom_getCoordSeq_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - using geos::geom::Point; - try - { - const LineString *ls = dynamic_cast(g); - if ( ls ) - { - return ls->getCoordinatesRO(); - } - const Point *p = dynamic_cast(g); - if ( p ) - { - return p->getCoordinatesRO(); - } - handle->ERROR_MESSAGE("Geometry must be a Point or LineString"); - return NULL; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + try + { + using geos::geom::Point; - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + const LineString *ls = dynamic_cast(g); + if ( ls ) + { + return ls->getCoordinatesRO(); + } + + const Point *p = dynamic_cast(g); + if ( p ) + { + return p->getCoordinatesRO(); + } + + handle->ERROR_MESSAGE("Geometry must be a Point or LineString"); + return 0; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } Geometry * GEOSGeom_createPoint_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - try { - const GeometryFactory *gf; - gf=handle->geomFactory; + try + { + const GeometryFactory *gf = handle->geomFactory; return gf->createPoint(cs); } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + return 0; } Geometry * GEOSGeom_createLinearRing_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try { - const GeometryFactory *gf; - gf=handle->geomFactory; + try + { + const GeometryFactory *gf = handle->geomFactory; return gf->createLinearRing(cs); } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSGeom_createLineString_r(GEOSContextHandle_t extHandle, CoordinateSequence *cs) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try { - const GeometryFactory *gf; - gf=handle->geomFactory; + try + { + const GeometryFactory *gf = handle->geomFactory; return gf->createLineString(cs); } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSGeom_createPolygon_r(GEOSContextHandle_t extHandle, Geometry *shell, Geometry **holes, unsigned int nholes) { - GEOSContextHandleInternal_t *handle; + // FIXME: holes must be non-nullptr or may be nullptr? + //assert(0 != holes); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::geom::LinearRing; - try - { - std::vector *vholes = - new std::vector(holes, holes+nholes); - LinearRing *nshell = dynamic_cast(shell); - if ( ! nshell ) - { - handle->ERROR_MESSAGE("Shell is not a LinearRing"); - return NULL; - } - const GeometryFactory *gf; - gf=handle->geomFactory; + try + { + using geos::geom::LinearRing; + + std::vector *vholes = new std::vector(holes, holes + nholes); - return gf->createPolygon(nshell, vholes); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } + LinearRing *nshell = dynamic_cast(shell); + if ( ! nshell ) + { + handle->ERROR_MESSAGE("Shell is not a LinearRing"); + return NULL; + } + const GeometryFactory *gf = handle->geomFactory; - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + return gf->createPolygon(nshell, vholes); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSGeom_clone_r(GEOSContextHandle_t extHandle, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try { return g->clone(); } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } -} - -int -GEOSGeom_getDimensions_r(GEOSContextHandle_t extHandle, const Geometry *g) -{ - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + try { - return 0; + return g->clone(); } - - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + catch (const std::exception &e) { - return 0; + handle->ERROR_MESSAGE("%s", e.what()); } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; +} - using geos::geom::GeometryCollection; - using geos::geom::Point; - - std::size_t dim = 0; - try { - const LineString *ls = dynamic_cast(g); - if ( ls ) - { - dim = ls->getCoordinatesRO()->getDimension(); - return static_cast(dim); - } - - const Point *p = dynamic_cast(g); - if ( p ) - { - dim = p->getCoordinatesRO()->getDimension(); - return static_cast(dim); - } +int +GEOSGeom_getDimensions_r(GEOSContextHandle_t extHandle, const Geometry *g) +{ + if ( 0 == extHandle ) + { + return 0; + } - const Polygon *poly = dynamic_cast(g); - if ( poly ) - { - return GEOSGeom_getDimensions_r(extHandle, poly->getExteriorRing()); - } - - const GeometryCollection *coll = - dynamic_cast(g); - if ( coll ) - { - if ( coll->isEmpty() ) return 0; - return GEOSGeom_getDimensions_r(extHandle, coll->getGeometryN(0)); - } + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return 0; + } - handle->ERROR_MESSAGE("Unknown geometry type"); - return 0; - } + try + { + using geos::geom::Point; + using geos::geom::GeometryCollection; - catch (const std::exception &e) + if ( g->isEmpty() ) { - handle->ERROR_MESSAGE("%s", e.what()); return 0; } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 0; - } + std::size_t dim = 0; + const LineString *ls = dynamic_cast(g); + if ( ls ) + { + dim = ls->getCoordinatesRO()->getDimension(); + return static_cast(dim); + } + + const Point *p = dynamic_cast(g); + if ( p ) + { + dim = p->getCoordinatesRO()->getDimension(); + return static_cast(dim); + } + + const Polygon *poly = dynamic_cast(g); + if ( poly ) + { + return GEOSGeom_getDimensions_r(extHandle, poly->getExteriorRing()); + } + + const GeometryCollection *coll = dynamic_cast(g); + if ( coll ) + { + return GEOSGeom_getDimensions_r(extHandle, coll->getGeometryN(0)); + } + + handle->ERROR_MESSAGE("Unknown geometry type"); + return 0; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } Geometry * GEOSSimplify_r(GEOSContextHandle_t extHandle, const Geometry *g1, double tolerance) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using namespace geos::simplify; - - try - { - Geometry::AutoPtr g(DouglasPeuckerSimplifier::simplify( - g1, tolerance)); - return g.release(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + using namespace geos::simplify; + Geometry::AutoPtr g(DouglasPeuckerSimplifier::simplify(g1, tolerance)); + return g.release(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } Geometry * GEOSTopologyPreserveSimplify_r(GEOSContextHandle_t extHandle, const Geometry *g1, double tolerance) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using namespace geos::simplify; - - try - { - Geometry::AutoPtr g(TopologyPreservingSimplifier::simplify( - g1, tolerance)); - return g.release(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + using namespace geos::simplify; + Geometry::AutoPtr g(TopologyPreservingSimplifier::simplify(g1, tolerance)); + return g.release(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } @@ -3000,227 +3215,219 @@ WKTReader * GEOSWKTReader_create_r(GEOSContextHandle_t extHandle) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::io::WKTReader; - try - { - return new WKTReader((GeometryFactory*)handle->geomFactory); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + using geos::io::WKTReader; + return new WKTReader((GeometryFactory*)handle->geomFactory); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return NULL; } void GEOSWKTReader_destroy_r(GEOSContextHandle_t extHandle, WKTReader *reader) { - GEOSContextHandleInternal_t *handle; + GEOSContextHandleInternal_t *handle = 0; - try - { - delete reader; - } - catch (const std::exception &e) - { - if( extHandle == NULL ) + try + { + delete reader; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("%s", e.what()); - } - - catch (...) - { - if( extHandle == NULL ) + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } Geometry* GEOSWKTReader_read_r(GEOSContextHandle_t extHandle, WKTReader *reader, const char *wkt) { - GEOSContextHandleInternal_t *handle; + assert(0 != reader); - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - CLocalizer clocale; - try - { - const std::string wktstring = std::string(wkt); - Geometry *g = reader->read(wktstring); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + const std::string wktstring(wkt); + Geometry *g = reader->read(wktstring); + return g; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } /* WKT Writer */ WKTWriter * GEOSWKTWriter_create_r(GEOSContextHandle_t extHandle) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - using geos::io::WKTWriter; - try - { - return new WKTWriter(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return NULL; - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return NULL; - } + try + { + using geos::io::WKTWriter; + return new WKTWriter(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 0; } void GEOSWKTWriter_destroy_r(GEOSContextHandle_t extHandle, WKTWriter *Writer) { - GEOSContextHandleInternal_t *handle; - try - { - delete Writer; - } - catch (const std::exception &e) - { - if( extHandle == NULL ) + GEOSContextHandleInternal_t *handle = 0; + + try + { + delete Writer; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("%s", e.what()); - } - - catch (...) - { - if( extHandle == NULL ) + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } char* GEOSWKTWriter_write_r(GEOSContextHandle_t extHandle, WKTWriter *writer, const Geometry *geom) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - CLocalizer clocale; - try - { - std::string s = writer->write(geom); - char *result = NULL; - result = (char*) std::malloc( s.length() + 1); - std::strcpy(result, s.c_str() ); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try + { + std::string sgeom(writer->write(geom)); + char *result = gstrdup(sgeom); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } return NULL; } @@ -3229,32 +3436,31 @@ WKBReader * GEOSWKBReader_create_r(GEOSContextHandle_t extHandle) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::io::WKBReader; - try - { - return new WKBReader(*(GeometryFactory*)handle->geomFactory); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + using geos::io::WKBReader; + try + { + return new WKBReader(*(GeometryFactory*)handle->geomFactory); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } return NULL; } @@ -3262,152 +3468,154 @@ void GEOSWKBReader_destroy_r(GEOSContextHandle_t extHandle, WKBReader *reader) { - GEOSContextHandleInternal_t *handle; + GEOSContextHandleInternal_t *handle = 0; - try - { - delete reader; - } - catch (const std::exception &e) - { - if( extHandle == NULL ) + try + { + delete reader; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("%s", e.what()); - } - - catch (...) - { - if( extHandle == NULL ) + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } Geometry* GEOSWKBReader_read_r(GEOSContextHandle_t extHandle, WKBReader *reader, const unsigned char *wkb, size_t size) { - GEOSContextHandleInternal_t *handle; + assert(0 != reader); + assert(0 != wkb); - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - try - { - std::string wkbstring = std::string((const char*)wkb, size); // make it binary ! - std::istringstream s(std::ios_base::binary); - s.str(wkbstring); - - s.seekg(0, std::ios::beg); // rewind reader pointer - Geometry *g = reader->read(s); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try + { + std::string wkbstring(reinterpret_cast(wkb), size); // make it binary ! + std::istringstream is(std::ios_base::binary); + is.str(wkbstring); + is.seekg(0, std::ios::beg); // rewind reader pointer + + Geometry *g = reader->read(is); + return g; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - return NULL; + return 0; } Geometry* GEOSWKBReader_readHEX_r(GEOSContextHandle_t extHandle, WKBReader *reader, const unsigned char *hex, size_t size) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + assert(0 != reader); + assert(0 != hex); + + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } - try - { - std::string hexstring = std::string((const char*)hex, size); - std::istringstream s(std::ios_base::binary); - s.str(hexstring); - - s.seekg(0, std::ios::beg); // rewind reader pointer - Geometry *g = reader->readHEX(s); - return g; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try + { + std::string hexstring(reinterpret_cast(hex), size); + std::istringstream is(std::ios_base::binary); + is.str(hexstring); + is.seekg(0, std::ios::beg); // rewind reader pointer + + Geometry *g = reader->readHEX(is); + return g; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - return NULL; + return 0; } /* WKB Writer */ WKBWriter * GEOSWKBWriter_create_r(GEOSContextHandle_t extHandle) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - using geos::io::WKBWriter; - try - { - return new WKBWriter(); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + try + { + using geos::io::WKBWriter; + return new WKBWriter(); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } return NULL; } @@ -3415,293 +3623,296 @@ void GEOSWKBWriter_destroy_r(GEOSContextHandle_t extHandle, WKBWriter *Writer) { - GEOSContextHandleInternal_t *handle; + GEOSContextHandleInternal_t *handle = 0; - try - { - delete Writer; - } - catch (const std::exception &e) - { - if( extHandle == NULL ) + try + { + delete Writer; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("%s", e.what()); - } - - catch (...) - { - if( extHandle == NULL ) + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } -/* The owner owns the result */ +/* The caller owns the result */ unsigned char* GEOSWKBWriter_write_r(GEOSContextHandle_t extHandle, WKBWriter *writer, const Geometry *geom, size_t *size) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); + assert(0 != geom); + assert(0 != size); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - std::ostringstream s(std::ios_base::binary); - writer->write(*geom, s); - std::string wkbstring = s.str(); - size_t len = wkbstring.length(); + try + { + std::ostringstream os(std::ios_base::binary); + writer->write(*geom, os); + std::string wkbstring(os.str()); + const std::size_t len = wkbstring.length(); - unsigned char *result = NULL; - result = (unsigned char*) std::malloc(len); + unsigned char *result = NULL; + result = (unsigned char*) std::malloc(len); std::memcpy(result, wkbstring.c_str(), len); - *size = len; - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + *size = len; + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } return NULL; } -/* The owner owns the result */ +/* The caller owns the result */ unsigned char* GEOSWKBWriter_writeHEX_r(GEOSContextHandle_t extHandle, WKBWriter *writer, const Geometry *geom, size_t *size) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); + assert(0 != geom); + assert(0 != size); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return NULL; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return NULL; } - try - { - std::ostringstream s(std::ios_base::binary); - writer->writeHEX(*geom, s); - std::string wkbstring = s.str(); - const size_t len = wkbstring.length(); + try + { + std::ostringstream os(std::ios_base::binary); + writer->writeHEX(*geom, os); + std::string wkbstring(os.str()); + const std::size_t len = wkbstring.length(); - unsigned char *result = NULL; - result = (unsigned char*) std::malloc(len); + unsigned char *result = NULL; + result = (unsigned char*) std::malloc(len); std::memcpy(result, wkbstring.c_str(), len); - *size = len; - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } + *size = len; + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } return NULL; } int GEOSWKBWriter_getOutputDimension_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) { - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + assert(0 != writer); + + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + int ret = 0; + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 != handle->initialized ) { - return 0; + try + { + ret = writer->getOutputDimension(); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - try - { - return writer->getOutputDimension(); - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return 0; + return ret; } void GEOSWKBWriter_setOutputDimension_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, int newDimension) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 != handle->initialized ) { - return; + try + { + writer->setOutputDimension(newDimension); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - - try - { - return writer->setOutputDimension(newDimension); - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } } int GEOSWKBWriter_getByteOrder_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + int ret = 0; + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 != handle->initialized ) { - return 0; - } + try + { + ret = writer->getByteOrder(); + } - try - { - return writer->getByteOrder(); - } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - return 0; + return ret; } void GEOSWKBWriter_setByteOrder_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, int newByteOrder) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 != handle->initialized ) { - return; + try + { + writer->setByteOrder(newByteOrder); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - - try - { - return writer->setByteOrder(newByteOrder); - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } } char GEOSWKBWriter_getIncludeSRID_r(GEOSContextHandle_t extHandle, const GEOSWKBWriter* writer) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return -1; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + int ret = -1; + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 != handle->initialized ) { - return -1; + try + { + int srid = writer->getIncludeSRID(); + ret = static_cast(srid); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - - try - { - int srid = writer->getIncludeSRID(); - return static_cast(srid); - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return -1; - } + + return static_cast(ret); } void GEOSWKBWriter_setIncludeSRID_r(GEOSContextHandle_t extHandle, GEOSWKBWriter* writer, const char newIncludeSRID) { - GEOSContextHandleInternal_t *handle; + assert(0 != writer); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 != handle->initialized ) { - return; + try + { + writer->setIncludeSRID(newIncludeSRID); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } - - try - { - writer->setIncludeSRID(newIncludeSRID); - } - - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } } @@ -3712,212 +3923,539 @@ const geos::geom::prep::PreparedGeometry* GEOSPrepare_r(GEOSContextHandle_t extHandle, const Geometry *g) { - const geos::geom::prep::PreparedGeometry* prep = NULL; - - GEOSContextHandleInternal_t *handle; - - if( extHandle == NULL ) + if ( 0 == extHandle ) { - return NULL; + return 0; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { - return NULL; + return 0; } + const geos::geom::prep::PreparedGeometry* prep = 0; + try - { - prep = geos::geom::prep::PreparedGeometryFactory::prepare(g); - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - } - + { + prep = geos::geom::prep::PreparedGeometryFactory::prepare(g); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + return prep; } void GEOSPreparedGeom_destroy_r(GEOSContextHandle_t extHandle, const geos::geom::prep::PreparedGeometry *a) { - GEOSContextHandleInternal_t *handle; + GEOSContextHandleInternal_t *handle = 0; - try - { - delete a; - } - catch (const std::exception &e) - { - if( extHandle == NULL ) + try + { + delete a; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("%s", e.what()); - } - catch (...) - { - if( extHandle == NULL ) + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) { return; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return; } - handle->ERROR_MESSAGE("Unknown exception thrown"); - } + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } char -GEOSPreparedContains_r(GEOSContextHandle_t extHandle, const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) +GEOSPreparedContains_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != pg); + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try - { - bool result; - result = pg1->contains(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = pg->contains(g); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char -GEOSPreparedContainsProperly_r(GEOSContextHandle_t extHandle, const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) +GEOSPreparedContainsProperly_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != pg); + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try - { - bool result; - result = pg1->containsProperly(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = pg->containsProperly(g); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char -GEOSPreparedCovers_r(GEOSContextHandle_t extHandle, const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) +GEOSPreparedCovers_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != pg); + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try - { - bool result; - result = pg1->covers(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = pg->covers(g); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; } char -GEOSPreparedIntersects_r(GEOSContextHandle_t extHandle, const geos::geom::prep::PreparedGeometry *pg1, const Geometry *g2) +GEOSPreparedIntersects_r(GEOSContextHandle_t extHandle, + const geos::geom::prep::PreparedGeometry *pg, const Geometry *g) { - GEOSContextHandleInternal_t *handle; + assert(0 != pg); + assert(0 != g); - if( extHandle == NULL ) + if ( 0 == extHandle ) { return 2; } - handle = (GEOSContextHandleInternal_t*)extHandle; - if( handle->initialized == 0 ) + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) { return 2; } - try - { - bool result; - result = pg1->intersects(g2); - return result; - } - catch (const std::exception &e) - { - handle->ERROR_MESSAGE("%s", e.what()); - return 2; - } - catch (...) - { - handle->ERROR_MESSAGE("Unknown exception thrown"); - return 2; - } + try + { + bool result = pg->intersects(g); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; +} + +//----------------------------------------------------------------- +// STRtree +//----------------------------------------------------------------- + +geos::index::strtree::STRtree * +GEOSSTRtree_create_r(GEOSContextHandle_t extHandle, + size_t nodeCapacity) +{ + if ( 0 == extHandle ) + { + return 0; + } + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return 0; + } + + geos::index::strtree::STRtree *tree = 0; + + try + { + tree = new geos::index::strtree::STRtree(nodeCapacity); + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return tree; +} + +void +GEOSSTRtree_insert_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree *tree, + const geos::geom::Geometry *g, + void *item) +{ + GEOSContextHandleInternal_t *handle = 0; + assert(tree != 0); + assert(g != 0); + + try + { + tree->insert(g->getEnvelopeInternal(), item); + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("Unknown exception thrown"); + } } +void +GEOSSTRtree_query_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree *tree, + const geos::geom::Geometry *g, + GEOSQueryCallback callback, + void *userdata) +{ + GEOSContextHandleInternal_t *handle = 0; + assert(tree != 0); + assert(g != 0); + assert(callback != 0); + + try + { + CAPI_ItemVisitor visitor(callback, userdata); + tree->query(g->getEnvelopeInternal(), visitor); + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("Unknown exception thrown"); + } +} + +void +GEOSSTRtree_iterate_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree *tree, + GEOSQueryCallback callback, + void *userdata) +{ + GEOSContextHandleInternal_t *handle = 0; + assert(tree != 0); + assert(callback != 0); + + try + { + CAPI_ItemVisitor visitor(callback, userdata); + tree->iterate(visitor); + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("Unknown exception thrown"); + } +} + +char +GEOSSTRtree_remove_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree *tree, + const geos::geom::Geometry *g, + void *item) +{ + assert(0 != tree); + assert(0 != g); + + if ( 0 == extHandle ) + { + return 2; + } + + GEOSContextHandleInternal_t *handle = 0; + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return 2; + } + + try + { + bool result = tree->remove(g->getEnvelopeInternal(), item); + return result; + } + catch (const std::exception &e) + { + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + handle->ERROR_MESSAGE("Unknown exception thrown"); + } + + return 2; +} + +void +GEOSSTRtree_destroy_r(GEOSContextHandle_t extHandle, + geos::index::strtree::STRtree *tree) +{ + GEOSContextHandleInternal_t *handle = 0; + + try + { + delete tree; + } + catch (const std::exception &e) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("%s", e.what()); + } + catch (...) + { + if ( 0 == extHandle ) + { + return; + } + + handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return; + } + + handle->ERROR_MESSAGE("Unknown exception thrown"); + } +} + +double +GEOSProject_r(GEOSContextHandle_t extHandle, + const Geometry *g, + const Geometry *p) +{ + + const geos::geom::Point* point = dynamic_cast(p); + if (!point) { + if ( 0 == extHandle ) + { + return -1.0; + } + GEOSContextHandleInternal_t *handle = reinterpret_cast(extHandle); + if ( 0 == handle->initialized ) + { + return -1.0; + } + + handle->ERROR_MESSAGE("third argument of GEOSProject_r must be Point*"); + return -1.0; + } + const geos::geom::Coordinate* inputPt = p->getCoordinate(); + return geos::linearref::LengthIndexedLine(g).project(*inputPt); +} + + +Geometry* +GEOSInterpolate_r(GEOSContextHandle_t extHandle, const Geometry *g, double d) +{ + geos::linearref::LengthIndexedLine lil(g); + geos::geom::Coordinate coord = lil.extractPoint(d); + GEOSContextHandleInternal_t *handle = reinterpret_cast(extHandle); + const GeometryFactory *gf = handle->geomFactory; + Geometry* point = gf->createPoint(coord); + return point; +} + + +double +GEOSProjectNormalized_r(GEOSContextHandle_t extHandle, const Geometry *g, + const Geometry *p) +{ + + double length; + GEOSLength_r(extHandle, g, &length); + return GEOSProject_r(extHandle, g, p) / length; +} + + +Geometry* +GEOSInterpolateNormalized_r(GEOSContextHandle_t extHandle, const Geometry *g, + double d) +{ + double length; + GEOSLength_r(extHandle, g, &length); + return GEOSInterpolate_r(extHandle, g, d * length); +} + + } /* extern "C" */ + diff -Nru geos-3.1.0/capi/Makefile.in geos-3.2.2/capi/Makefile.in --- geos-3.1.0/capi/Makefile.in 2009-03-11 19:13:32.000000000 +0000 +++ geos-3.2.2/capi/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -15,16 +16,12 @@ @SET_MAKE@ -SOURCES = $(libgeos_c_la_SOURCES) - -srcdir = @srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -45,6 +42,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -53,42 +55,58 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = geos_c.h +CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(capidir)" -libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) libgeos_c_la_DEPENDENCIES = $(top_builddir)/source/libgeos.la am__objects_1 = libgeos_c_la-geos_c.lo libgeos_c_la-geos_ts_c.lo am_libgeos_c_la_OBJECTS = $(am__objects_1) libgeos_c_la_OBJECTS = $(am_libgeos_c_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +libgeos_c_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libgeos_c_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libgeos_c_la_SOURCES) DIST_SOURCES = $(libgeos_c_la_SOURCES) -nodist_capiHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(nodist_capi_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -top_srcdir = @top_srcdir@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -116,21 +134,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -139,20 +153,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -173,6 +195,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -184,19 +207,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -208,36 +225,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ GEOS_CAPI_VERSION = "@VERSION@-CAPI-@CAPI_VERSION@" GEOS_JTS_PORT = "@JTS_PORT@" INCLUDES = -I$(top_srcdir)/source/headers @@ -265,14 +295,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu capi/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu capi/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu capi/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu capi/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -290,25 +320,30 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): geos_c.h: $(top_builddir)/config.status $(srcdir)/geos_c.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + list2="$$list2 $$p"; \ else :; fi; \ - done + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) - @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: @@ -320,7 +355,7 @@ rm -f "$${dir}/so_locations"; \ done libgeos_c.la: $(libgeos_c_la_OBJECTS) $(libgeos_c_la_DEPENDENCIES) - $(CXXLINK) -rpath $(libdir) $(libgeos_c_la_LDFLAGS) $(libgeos_c_la_OBJECTS) $(libgeos_c_la_LIBADD) $(LIBS) + $(libgeos_c_la_LINK) -rpath $(libdir) $(libgeos_c_la_OBJECTS) $(libgeos_c_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -332,139 +367,145 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeos_c_la-geos_ts_c.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< libgeos_c_la-geos_c.lo: geos_c.cpp -@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libgeos_c_la-geos_c.lo -MD -MP -MF "$(DEPDIR)/libgeos_c_la-geos_c.Tpo" -c -o libgeos_c_la-geos_c.lo `test -f 'geos_c.cpp' || echo '$(srcdir)/'`geos_c.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libgeos_c_la-geos_c.Tpo" "$(DEPDIR)/libgeos_c_la-geos_c.Plo"; else rm -f "$(DEPDIR)/libgeos_c_la-geos_c.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libgeos_c_la-geos_c.lo -MD -MP -MF $(DEPDIR)/libgeos_c_la-geos_c.Tpo -c -o libgeos_c_la-geos_c.lo `test -f 'geos_c.cpp' || echo '$(srcdir)/'`geos_c.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libgeos_c_la-geos_c.Tpo $(DEPDIR)/libgeos_c_la-geos_c.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geos_c.cpp' object='libgeos_c_la-geos_c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgeos_c_la-geos_c.lo `test -f 'geos_c.cpp' || echo '$(srcdir)/'`geos_c.cpp +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgeos_c_la-geos_c.lo `test -f 'geos_c.cpp' || echo '$(srcdir)/'`geos_c.cpp libgeos_c_la-geos_ts_c.lo: geos_ts_c.cpp -@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libgeos_c_la-geos_ts_c.lo -MD -MP -MF "$(DEPDIR)/libgeos_c_la-geos_ts_c.Tpo" -c -o libgeos_c_la-geos_ts_c.lo `test -f 'geos_ts_c.cpp' || echo '$(srcdir)/'`geos_ts_c.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libgeos_c_la-geos_ts_c.Tpo" "$(DEPDIR)/libgeos_c_la-geos_ts_c.Plo"; else rm -f "$(DEPDIR)/libgeos_c_la-geos_ts_c.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libgeos_c_la-geos_ts_c.lo -MD -MP -MF $(DEPDIR)/libgeos_c_la-geos_ts_c.Tpo -c -o libgeos_c_la-geos_ts_c.lo `test -f 'geos_ts_c.cpp' || echo '$(srcdir)/'`geos_ts_c.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/libgeos_c_la-geos_ts_c.Tpo $(DEPDIR)/libgeos_c_la-geos_ts_c.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geos_ts_c.cpp' object='libgeos_c_la-geos_ts_c.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgeos_c_la-geos_ts_c.lo `test -f 'geos_ts_c.cpp' || echo '$(srcdir)/'`geos_ts_c.cpp +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgeos_c_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libgeos_c_la-geos_ts_c.lo `test -f 'geos_ts_c.cpp' || echo '$(srcdir)/'`geos_ts_c.cpp mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-nodist_capiHEADERS: $(nodist_capi_HEADERS) @$(NORMAL_INSTALL) - test -z "$(capidir)" || $(mkdir_p) "$(DESTDIR)$(capidir)" - @list='$(nodist_capi_HEADERS)'; for p in $$list; do \ + test -z "$(capidir)" || $(MKDIR_P) "$(DESTDIR)$(capidir)" + @list='$(nodist_capi_HEADERS)'; test -n "$(capidir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(nodist_capiHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(capidir)/$$f'"; \ - $(nodist_capiHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(capidir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(capidir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(capidir)" || exit $$?; \ done uninstall-nodist_capiHEADERS: @$(NORMAL_UNINSTALL) - @list='$(nodist_capi_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(capidir)/$$f'"; \ - rm -f "$(DESTDIR)$(capidir)/$$f"; \ - done + @list='$(nodist_capi_HEADERS)'; test -n "$(capidir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(capidir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(capidir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -473,7 +514,7 @@ all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(capidir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -495,6 +536,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -508,7 +550,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -516,18 +558,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-nodist_capiHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: install-libLTLIBRARIES +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -548,26 +610,29 @@ ps-am: -uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ - uninstall-nodist_capiHEADERS +uninstall-am: uninstall-libLTLIBRARIES uninstall-nodist_capiHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool 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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ install-libLTLIBRARIES install-man install-nodist_capiHEADERS \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 uninstall-libLTLIBRARIES \ - uninstall-nodist_capiHEADERS + uninstall-libLTLIBRARIES uninstall-nodist_capiHEADERS dist-local: cp -p $(DIST_SOURCES) Makefile.am Makefile.in $(distdir) + # 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 -Nru geos-3.1.0/ChangeLog geos-3.2.2/ChangeLog --- geos-3.1.0/ChangeLog 2009-03-11 19:13:01.000000000 +0000 +++ geos-3.2.2/ChangeLog 2010-04-18 16:06:05.000000000 +0100 @@ -1,791 +1,3045 @@ -2009-02-07 23:29 pramsey +2010-04-18 09:34 Sandro Santilli - * source/headers/geos/precision/Makefile.am: Include - GeometrySnapper.h in distribution package. + * [r2978] tests/unit/capi/GEOSGetCentroidTest.cpp: Forgot to add + this, since I added the Makefile.am line.. -2009-02-02 22:58 sgillies +2010-04-17 21:55 Sandro Santilli - * swig/python/README.txt: Note lack of Python support since 3.0 + * [r2975] NEWS, capi/geos_c.cpp, capi/geos_c.h.in, + capi/geos_ts_c.cpp, configure.in, + source/headers/geos/version.h.vc, tests/unit/Makefile.am: + Back-port fix of GEOS-context leakage -2009-02-02 22:53 sgillies +2010-04-07 14:01 Mateusz Loskot - * README: Notes on state of scripting language bindings + * [r2973] source/dirlist.mk: Ported r2967 update to branches/3.2 -2009-01-30 20:01 pramsey +2010-04-07 13:35 Mateusz Loskot - * configure.in: Add new msvc targets to build + * [r2969] nmake.opt: Removed NDEBUG from CPPFLAGS of debug build + configuration (Ticket #338) -2009-01-29 19:22 mloskot +2010-03-29 17:50 Mateusz Loskot - * build/Makefile.am, build/msvc90, build/msvc90/Makefile.am, - build/msvc90/README, build/msvc90/geos.sln, - build/msvc90/geos.vsprops, build/msvc90/geos_c_dll, - build/msvc90/geos_c_dll/Makefile.am, - build/msvc90/geos_c_dll/geos_c_dll.vcproj, build/msvc90/geos_lib, - build/msvc90/geos_lib/Makefile.am, - build/msvc90/geos_lib/geos_lib.vcproj, build/msvc90/geos_python, - build/msvc90/geos_python/Makefile.am, - build/msvc90/geos_python/geos_python.vcproj, - build/msvc90/geos_ruby, build/msvc90/geos_ruby/Makefile.am, - build/msvc90/geos_ruby/geos_ruby.vcproj, build/msvc90/geos_unit, - build/msvc90/geos_unit/Makefile.am, - build/msvc90/geos_unit/geos_unit.vcproj: Added build/msvc90 with - solution and project files for Microsoft Visual C++ 2009 (9.0). - Successfully built and tested GEOS with Visual C++ 9.0. + * [r2966] ., autogen.bat, nmake.opt, + source/algorithm/distance/DistanceToPoint.cpp: Added NMake 10.x + version to be recognized by nmake.opt (ported from trunk) -2009-01-29 19:02 pramsey +2010-03-29 16:21 Sandro Santilli - * README: update autogen.bat ref + * [r2963] ChangeLog: Update ChangeLog -2009-01-29 18:56 mloskot +2010-03-26 12:35 Mateusz Loskot - * source/headers/geos/algorithm/RayCrossingCounter.h, - source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h, - source/headers/geos/algorithm/locate/PointOnGeometryLocator.h, - source/headers/geos/geom/util/ComponentCoordinateExtracter.h, - source/headers/geos/index/intervalrtree/IntervalRTreeBranchNode.h, - source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h, - source/headers/geos/index/intervalrtree/IntervalRTreeNode.h, - source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h, - source/headers/geos/noding/FastSegmentSetIntersectionFinder.h, - source/headers/geos/noding/NodableSegmentString.h, - source/headers/geos/noding/NodedSegmentString.h, - source/headers/geos/noding/SegmentIntersectionDetector.h, - source/headers/geos/noding/SegmentStringUtil.h: Fixed broken - svn:keyword Id + * [r2956] source/headers/geos/platform.h.vc: platform.h.vc: disable + min/max macros substitution (ported from trunk) -2009-01-29 18:51 mloskot +2010-03-26 12:03 Mateusz Loskot - * autogen.bat, bootstrap.bat: Renamed bootstrap.bat to autogen.bat - for easier guass of the script purpose. Wiki updated. + * [r2953] + source/headers/geos/operation/union/CascadedPolygonUnion.h: Added + GEOS_DLL with Microsoft-specific __declspec attribute missing + from CascadedPolygonUnion class -2009-01-28 01:06 pramsey +2010-03-26 12:00 Mateusz Loskot - * README: Add to win32 instructions + * [r2951] source/geom/GeometryList.cpp: geom\GeoemtryList.cpp: + missing implementation of GeometryList::size() function. -2009-01-27 18:10 pramsey +2010-03-26 11:57 Mateusz Loskot - * source/headers/geos/geom/util/Makefile.am: Add GeometryCombiner.h - to include dist + * [r2949] source/Makefile.vc: source\Makefile.vc: added missing + geom\GeometryList.cpp -2009-01-27 00:18 pramsey +2010-03-26 11:52 Mateusz Loskot - * build/msvc80/geos_c_dll/geos_c_dll.vcproj: Revert some junk from - an old commit, per issue #220 + * [r2947] nmake.opt: nmake.opt: Added missing GEOS_DLL_EXPORT to + CPPFLAGS -2009-01-26 20:44 warmerdam +2010-03-19 15:09 Sandro Santilli - * source/Makefile.vc: added two new files related to cascaded - polygon union (#226) + * [r2945] NEWS, capi/geos_ts_c.cpp: Improve formatting for + GEOSisValidReason_r (issue #329) -2009-01-24 05:03 pramsey +2010-03-18 18:28 Sandro Santilli - * HOWTO_RELEASE: Update + * [r2943] NEWS: Add bugfix item -2009-01-24 05:02 pramsey +2010-03-18 18:26 Sandro Santilli - * ChangeLog: Update changelog + * [r2942] source/headers/geos/operation/valid/IsValidOp.h, + source/operation/valid/IsValidOp.cpp, + tests/xmltester/tests/general/TestValid.xml: Fix false-positive + return from IsValidOp. This is done better than in trunk, so will + backport later. + +2009-12-30 17:55 Mateusz Loskot + + * [r2836] source/Makefile.vc: Ported fix for missing + CoordinateSequenceFactory?.cpp from makefile.vc (Ticket #313) + +2009-12-14 19:21 Paul Ramsey + + * [r2830] capi/geos_c.h.in, configure.in, + source/headers/geos/version.h.vc: Back up the versions to 3.2.1 + for 3.2 branch + +2009-12-14 19:19 Paul Ramsey + + * [r2829] .: Branch 3.2 + +2009-12-14 19:18 Paul Ramsey + + * [r2828] Update version numbers on trunk to 3.3 series + +2009-12-14 19:06 Sandro Santilli + + * [r2826] Updated + +2009-12-14 18:58 Sandro Santilli + + * [r2825] Don't mention 'troubles' in documentation (some like it + not) + +2009-12-14 15:23 Mateusz Loskot + + * [r2824] * Fixed bug in WKTWriter that was dropping geometry tag + in string representation of geometry + * Improved message carried by TopologyException + +2009-12-11 13:17 Sandro Santilli + + * [r2823] Updated + +2009-12-11 13:10 Sandro Santilli + + * [r2822] Fix memory leak in + BasicPreparedGeometry::isAnyTargetComponentInTest (issue #308) + and drop Coordinate copies from it. + +2009-12-09 11:10 Mateusz Loskot + + * [r2821] Fixed generation of platform.h as pre-build step of GEOS + lib project for Visual C++ + +2009-12-09 11:05 Mateusz Loskot + + * [r2820] * Fixed generation of platform.h as pre-build step of + GEOS lib project for Visual C++ 2005 and 2008 + * Added missing headers. + +2009-12-08 22:47 Paul Ramsey + + * [r2817] Prepare for RC4 release. + +2009-12-08 21:40 Mateusz Loskot + + * [r2816] Updated svn:ignore patterns + +2009-12-08 21:39 Mateusz Loskot + + * [r2815] build/msvc10: fixed list of EXTRA_DIST files + +2009-12-08 17:51 Sandro Santilli + + * [r2814] This shouldn't be in the repository ! + +2009-12-08 17:50 Sandro Santilli + + * [r2813] Remove deprecated/unused files + +2009-12-08 17:42 Sandro Santilli + + * [r2812] Drop useless (and leaking) heap allocation exposed by the + new prepared linestring intersection test + +2009-12-08 17:42 Sandro Santilli + + * [r2811] Add missing destructor of PreparedLineString (closes + ticket #305) + +2009-12-08 17:39 Sandro Santilli + + * [r2810] Add test with Prepared linestrings, for the sake of + testing the leak reported in ticket #305 + +2009-12-06 01:05 Mateusz Loskot + + * [r2809] Updated source code files with svn:keywords property. + +2009-12-06 01:01 Mateusz Loskot + + * [r2808] Updated svn:ignore patterns + +2009-12-06 00:56 Mateusz Loskot + + * [r2807] Updated svn:ignore patterns + +2009-12-06 00:51 Mateusz Loskot + + * [r2806] Updated configure.in after moved non-unit tests programs + out of tests/unit (Tickets #240). + +2009-12-06 00:47 Mateusz Loskot + + * [r2805] Moved non-unit tests programs out of tests/unit: geostest + -> tests/geostest, threadtest -> tests/thread, badthreadtest -> + tests/thread (Ticket #240). + +2009-12-05 21:59 Mateusz Loskot + + * [r2804] Added build/msvc80/geos_xmltester to configure.in + +2009-12-05 21:28 Mateusz Loskot + + * [r2803] Added geos_xmltester.vcproj project to build/msvc80 + +2009-12-05 21:20 Mateusz Loskot + + * [r2802] Added GEOS_DLL_EXPORT to preprocessor definitions in + build/msvc80/geos_c_dll/geos_c_dll.vcproj + +2009-12-05 20:30 Mateusz Loskot + + * [r2801] small cleanup + +2009-12-05 20:23 Mateusz Loskot + + * [r2800] Updated solution for Visual C++ 8.0 (Visual Studio 2005) + (Ticket #303) + +2009-12-05 20:21 Mateusz Loskot + + * [r2799] Updated information in README about build/msvcXY + solutions + +2009-12-04 17:38 Mateusz Loskot + + * [r2798] Updated configure.in with msvc10 + +2009-12-04 17:05 Mateusz Loskot + + * [r2797] Added solution and projects for Visual Studio 2010 (note + msvc90 denotes 9.0 however msvc10 is 10 not 1.0) + +2009-12-04 15:58 Mateusz Loskot + + * [r2796] Missing svn keywords + +2009-12-04 15:30 Mateusz Loskot + + * [r2795] Small fixes to TUT. + +2009-12-04 15:20 Mateusz Loskot + + * [r2794] Replaced long with std::streampos + +2009-12-04 15:07 Mateusz Loskot + + * [r2793] std::back_inserter requires in + geom/CoordinateSequence.cpp + +2009-12-04 13:57 Mateusz Loskot + + * [r2792] Updated Visual C++ 9.0 project + +2009-12-03 22:51 Mateusz Loskot + + * [r2791] Yet another try to fix EOL in geos/export.h + +2009-12-03 20:29 Mateusz Loskot + + * [r2790] Removed mysterious extra tokens (blanks) from + geos/export.h + +2009-12-03 20:16 Mateusz Loskot + + * [r2789] Removed mysterious extra tokens (blanks) from + geos/export.h + +2009-12-03 20:01 Mateusz Loskot + + * [r2788] Updated Visual C++ project geos_unit.vcproj + +2009-12-03 19:59 Mateusz Loskot + + * [r2787] Part 26 of larger changeset - source/headers: + * Refine FINITE macro - pseudo-POSIX layer in Visual C++ does not + offer long double version of finite() + * Tidy up. + +2009-12-03 19:57 Mateusz Loskot + + * [r2786] Part 25 of larger changeset - source/headers/geos/util: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:55 Mateusz Loskot + + * [r2785] Part 24 of larger changeset - + source/headers/geos/simplify: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:52 Mateusz Loskot + + * [r2784] Part 23 of larger changeset - + source/headers/geos/planargraph + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:51 Mateusz Loskot + + * [r2783] Part 22 of larger changeset - + source/headers/geos/planargraph/algorithm: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:50 Mateusz Loskot + + * [r2782] Part 21 of larger changeset - + source/headers/geos/operation/valid: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:48 Mateusz Loskot + + * [r2781] Part 20 of larger changeset - + source/headers/geos/operation/overlay: + * Declare noncopyable types as such explicitly (Ticket #304). + * Unified EOL and style. + * Tidy up. + +2009-12-03 19:46 Mateusz Loskot + + * [r2780] Part 19 of larger changeset - + source/headers/geos/operation/overlay: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + * Unified EOL and style. + +2009-12-03 19:45 Mateusz Loskot + + * [r2779] Part 18of larger changeset - + source/headers/geos/operation/buffer: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + * Unified EOL and style. + +2009-12-03 19:44 Mateusz Loskot + + * [r2778] Part 17 of larger changeset - + source/headers/geos/noding/snapround: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + * Unified EOL and style. + +2009-12-03 19:41 Mateusz Loskot + + * [r2777] Part 16 of larger changeset - + source/headers/geos/noding/snapround: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + * Unified EOL and style. + +2009-12-03 19:39 Mateusz Loskot + + * [r2776] Part 15 of larger changeset - + source/headers/geos/linearref: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:38 Mateusz Loskot + + * [r2775] Part 14 of larger changeset - source/headers/geos/io: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:36 Mateusz Loskot + + * [r2774] Part 13 of larger changeset - + source/headers/geos/index/chain: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:36 Mateusz Loskot + + * [r2773] Part 12 of larger changeset - + source/headers/geos/geomgraph: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:30 Mateusz Loskot + + * [r2772] Part 11 of larger changeset - + source/headers/geos/geom/util: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:29 Mateusz Loskot + + * [r2771] Part 10of larger changeset - + source/headers/geos/geom/prep: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:27 Mateusz Loskot + + * [r2770] Part 9 of larger changeset - + source/headers/geos/algorithm: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:24 Mateusz Loskot + + * [r2769] Part 7 of larger changeset - source/geomgraph: + * Fixed incorrect int to string conversion. + +2009-12-03 19:23 Mateusz Loskot + + * [r2768] Part 7 of larger changeset - source/index/intervalrtree: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:22 Mateusz Loskot + + * [r2767] Refined changeset r2766 - fix for nested classes required + by GCC. + +2009-12-03 19:14 Mateusz Loskot + + * [r2766] Part 6 of larger changeset - source/noding: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:11 Mateusz Loskot + + * [r2765] Part 5 of larger changeset - source/noding/snapround: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:03 Mateusz Loskot + + * [r2764] Part 4 of larger changeset - source/algorithm: + * Declare noncopyable types as such explicitly (Ticket #304). + * Added Visual C++ pragmas. + * Tidy up. + +2009-12-03 19:02 Mateusz Loskot + + * [r2763] Part 3 of larger changeset - source/operation: + * Declare noncopyable types as such explicitly (Ticket #304). + * Tidy up. + +2009-12-03 19:01 Mateusz Loskot + + * [r2762] Part 2 of larger changeset - source/simplify: + * Declare noncopyable types as such explicitly (Ticket #304). + * Cleanup. + * Unified EOL to LF. + +2009-12-03 18:56 Mateusz Loskot + + * [r2761] Part 1 of larger changeset - tests/unit: + * Declare noncopyable types as such explicitly (Ticket #304). + * Cleanup. + * Unified EOL to LF. + +2009-12-03 14:48 Mateusz Loskot + + * [r2760] * Added Visual C++ pragmas. + * Fixed implicit pointer tests for 0 (save typing is a myth, be + explicit is bless). + +2009-12-03 13:25 Mateusz Loskot + + * [r2759] Updated C++ TUT framework. + +2009-12-01 16:16 Mateusz Loskot + + * [r2758] Improved WKBReader::readHEX to read WKB encoded with + lower-case hex digits, useful if combined with SQL + encode(geometry, 'hex') + +2009-12-01 15:39 Mateusz Loskot + + * [r2757] * More fixes for incompleteness of types required by + std::auto_ptr + * Replaced utility macros with disappearing ignorance template + trick. + +2009-12-01 13:05 Mateusz Loskot + + * [r2756] Tweaked projects for Visual Studio 2008 + +2009-11-30 17:29 Mateusz Loskot + + * [r2755] * GEOSFree_r should check context handle even if its not + used - nullptr may indicate logic error. + +2009-11-30 13:55 Mateusz Loskot + + * [r2754] * Fixed incomplete types Geometry and + TaggedLinesSimplifier in TopologyPreservingSimplifier.h - + required by std::auto_ptr + * Removed unreachable code. + * Removed /Wp64 option from Visual Studio 2008 projects. + +2009-11-30 12:25 Mateusz Loskot + + * [r2753] Missing log. + +2009-11-30 10:48 Mateusz Loskot + + * [r2752] * Added missing tests to Visual Studio 2008 project + * Replaced call to isnan() missing in Visual C++ with ISNAN macro + +2009-11-29 10:09 Sandro Santilli + + * [r2749] updated + +2009-11-26 21:42 Sandro Santilli + + * [r2748] Add ISNAN support in platform.h.in + +2009-11-26 21:34 Sandro Santilli + + * [r2747] Remove unreferenced files from the repository + +2009-11-26 21:28 Sandro Santilli + + * [r2746] Remove reference to files not needing to go in the dll + +2009-11-26 21:21 Sandro Santilli + + * [r2745] Put destructor of the CoordinateSequenceFactory in an + implementation file, hopefully reducing linker confusion about + RTTI (see ticket #299) + +2009-11-26 19:49 Paul Ramsey + + * [r2744] Add magic flags for OS/X Snow Leopard only. (#299) + +2009-11-26 19:46 Paul Ramsey + + * [r2743] Add vc90 xmltester target to Makefile build + +2009-11-26 18:29 Frank Warmerdam + + * [r2742] clarify ownership of returned buffer from wkbwriter + +2009-11-26 16:32 Paul Ramsey + + * [r2741] Fix missing components in tarball (#300) + +2009-11-24 18:05 Sandro Santilli + + * [r2736] updated + +2009-11-23 18:17 Sandro Santilli + + * [r2735] Coordiante->Coordinate + +2009-11-23 18:06 Sandro Santilli + + * [r2734] Avoid reallocations in Union short-circuit + +2009-11-20 19:58 Sandro Santilli + + * [r2733] Don't force heap allocation of vectors for getting nodes + of a NodeMap + +2009-11-19 21:30 Sandro Santilli + + * [r2732] Don't heap-allocate std::vector in + MCIndexSegmentSetMutualIntersector + +2009-11-19 21:06 Sandro Santilli + + * [r2731] Don't force heap allocation when building edge rings for + isValidOp + +2009-11-19 20:29 Sandro Santilli + + * [r2730] Don't force heap allocation of std::vector in + PolygonizeGraph when deleting dangles (moved allocation higher, + in Polygonizer, so needs a second pass) + +2009-11-19 20:20 Sandro Santilli + + * [r2729] don't heap-allocate vectors in findLabeledEdgeRings + +2009-11-19 19:57 Sandro Santilli + + * [r2728] Move heap-allocation of vector used for 'cut-lines' + containment out of PolygonizeGraph (but into Polygonizer) + +2009-11-19 19:31 Sandro Santilli + + * [r2727] Don't force heap-allocation of vectors for + finding/labeling edge rings + +2009-11-19 19:19 Sandro Santilli + + * [r2726] Change PolygonizeGraph::getEdgeRings signature so not to + force heap allocation of std::vector, update Polygonizer + accordingly + +2009-11-19 19:06 Sandro Santilli + + * [r2725] Do not heap-allocate vector of Node when finding + intersections + +2009-11-19 18:52 Sandro Santilli + + * [r2724] Don not allocate the container of STRtree node childs on + the heap + +2009-11-19 16:40 Paul Ramsey + + * [r2723] Apply patch for --disable-cassert compilation (#291) + +2009-11-18 18:57 Paul Ramsey + + * [r2720] Reverse the upgrade process a bit, bump up revision + numbers *after* release so that the repo version is always one + higher than the release version. (#287) + +2009-11-18 01:28 Mateusz Loskot + + * [r2717] Silent warning thrown by Visual C++ about mixed class and + struct keyword (#269) + +2009-11-17 20:29 Sandro Santilli + + * [r2716] Include capi::GEOSGeomFromWKB test in geos_unit build + (should also distribute as side-effect) + +2009-11-11 23:05 Sandro Santilli + + * [r2713] Change ChangeLog generation rule so it doesn't mess with + make dist. Reflect in HOW_TO_RELEASE + +2009-11-10 23:54 Sandro Santilli + + * [r2712] Make ChangeLog target non-phony to keep 'distcheck' + happy. Reorganize HOW_TO_RELEASE steps. + +2009-11-10 22:58 Sandro Santilli + + * [r2711] Package stuff for release + +2009-10-29 21:06 Mateusz Loskot + + * [r2710] Testing linker problem with DEFAULT_QUADRANT_SEGMENT + constant + +2009-10-29 20:58 Mateusz Loskot + + * [r2709] Testing linker problem with DEFAULT_QUADRANT_SEGMENT + constant + +2009-10-29 20:55 Mateusz Loskot + + * [r2708] Fixed CRLF to LF in BufferOpTest.cpp + +2009-10-29 20:47 Mateusz Loskot + + * [r2707] Missing include of BufferParameters.h header in + BufferOpTest.cpp unit suite + +2009-10-29 16:20 Mateusz Loskot + + * [r2706] Added more test cases for buffer calculation based on A + (input) geometries from XMLTester's buffer.xml and + TestBufferExternal2.xml tests. + +2009-10-29 15:11 Mateusz Loskot + + * [r2705] Added test case for buffer of multipolygon from + XMLTester's buffer.xml, case #25 but with custom quadrant + segments + +2009-10-29 14:24 Mateusz Loskot + + * [r2704] Added test case for buffer of POINT(0 0) with distance + 1.0 and 32 quadrant segments. + +2009-10-29 12:33 Mateusz Loskot + + * [r2703] * tests/unit/operation/buffer: added unit test case for + BufferOp, + * tests/unit/Makefile.am: added new test case source to Makefile, + * build/msvc90/geos_unit/geos_unit.vcproj: updated Visual C++ + project. + +2009-10-28 12:09 Mateusz Loskot + + * [r2702] tests/xmltester/XMLTester.cpp: declare checkBufferSuccess + function to take geometries by refernece to const + +2009-10-25 18:48 Mateusz Loskot + + * [r2701] Fixed typo in getCentroid function comment in Geometry.h. + +2009-10-23 13:04 Sandro Santilli + + * [r2700] Have LinearLocation::getSegment return by auto_ptr to + encode ownership transfer. Fixes leak reported in #296. + +2009-10-23 12:58 Sandro Santilli + + * [r2699] Fix port info, add standard protection notes + +2009-10-23 10:21 Sandro Santilli + + * [r2698] Add destructor to LinearGeometryBuilder fixing memory + leaks there. + +2009-10-23 10:13 Sandro Santilli + + * [r2697] Fix memory access error (#283) + +2009-10-23 10:03 Sandro Santilli + + * [r2696] Fix port info for LinearGeometryBuilder + +2009-10-23 09:53 Sandro Santilli + + * [r2695] Cleanup LinearGeometrybuilder defs and impl to match + common code style, add note about suspicious things (not written + but noted that the class seems to lack a destructor..) + +2009-10-23 09:43 Sandro Santilli + + * [r2694] Document ownership of return from + LocationIndexOfLine::indicesOf, fix mismatch delete/delete[] in + core and unit test + +2009-10-23 09:34 Sandro Santilli + + * [r2693] Add virtual dtor to virtual class + +2009-10-23 09:33 Sandro Santilli + + * [r2692] add some parens to hush gcc warning + +2009-10-23 09:00 Sandro Santilli + + * [r2691] Fix static building of C-api demo/tests + +2009-10-23 08:34 Sandro Santilli + + * [r2690] Run the last available-but-no-automatically-run test: + test.xml + +2009-10-22 18:18 Sandro Santilli + + * [r2689] Merge buffer_snapround.xml into buffer.xml + +2009-10-22 17:13 Sandro Santilli + + * [r2688] A quick check reveals that the tests in buffer.xml are + not really duplicated elsewhere so we run that test too now as + part of make check + +2009-10-22 17:07 Sandro Santilli + + * [r2687] Give buffer.xml cases a somewhat more helpful + description, fix 4 expected results after eye-checking. This is + still not automatically run case it might contain duplicated + tests from elsewhere (to be checked). + +2009-10-22 16:30 Sandro Santilli + + * [r2686] Don't segfault on EOF inside tag + +2009-10-20 16:59 Sandro Santilli + + * [r2685] Commit MingW bug workaround provided by sanak in ticket + #293 + +2009-10-19 13:38 Mateusz Loskot + + * [r2684] tests/xmltester/tests/buffer_snapround.xml: not + well-formed XML, fixed missing attribute. + +2009-10-17 14:47 Sandro Santilli + + * [r2683] updated + +2009-10-17 14:43 Sandro Santilli + + * [r2682] updated + +2009-10-17 14:35 Sandro Santilli + + * [r2681] Half the calls to the virtual CoordinateSequence::getAt + when computing line distances + +2009-10-17 13:40 Sandro Santilli + + * [r2680] Drop pointless asserts. We'd abort anyway if vector is + null. For the out-of-range case the GNU c++ lib helps debugging + with an environment variable + +2009-10-17 13:04 Sandro Santilli + + * [r2679] Add note of private/static nature of implemented methods + +2009-10-17 12:28 Sandro Santilli + + * [r2678] Expose a usable toVector method for CoordinateSequence + (ie: no memory management issues). Use it from + Polygon::getCoordinates. + +2009-10-17 12:02 Sandro Santilli + + * [r2677] Don't allocate too much space for polygon points vector. + Fixes bug #294. + +2009-10-16 15:27 Mateusz Loskot + + * [r2676] xmltester/tests: missing double quotes around XML + attribute value in fme.xml. + +2009-10-14 20:42 Sandro Santilli + + * [r2675] regenerate ChangeLog + +2009-10-14 15:32 Mateusz Loskot + + * [r2674] * Optional use of GEOS_DEBUG_MSVC_USE_VLD in + XMLTester.cpp + * Added xmltester/makefile.vc as port of testrunner.sh for + Windows to be able to run all tests in batch: + ** nmake /f makefile.vc XMLTESTER=C:\path\to\xmltester.exe + +2009-10-14 12:05 Mateusz Loskot + + * [r2673] Added msvc90/geos_xmltester to solution for Visual Studio + 2008. + +2009-10-14 12:03 Mateusz Loskot + + * [r2672] Enable use of Stalkwalker only if building with Visual + C++ and GEOS_TEST_USE_STACKWALKER is defined. + +2009-10-13 16:25 Mateusz Loskot + + * [r2671] build/msvc90: added missing sources of linearref package. + Builds with Visual C++ 9.0 (using both project and makefiles). + +2009-10-13 14:20 Frank Warmerdam + + * [r2670] fix nmake dll export, and link test programs (#288) + +2009-10-08 12:51 Frank Warmerdam + + * [r2669] add new directories and source (#288) + +2009-10-08 08:56 Sandro Santilli + + * [r2668] regenerate ChangeLog now that we have all names in + +2009-10-08 08:47 Sandro Santilli + + * [r2667] Add other missing names/addresses + +2009-10-08 08:40 Sandro Santilli + + * [r2666] Automatically generate the ChangeLog file, forget + ChangeLog.svn. + +2009-10-08 08:38 Sandro Santilli + + * [r2665] Don't signal topology exception when it triggers snapping + +2009-10-08 08:37 Sandro Santilli + + * [r2664] Add yury, fernando and sean + +2009-10-08 08:17 Sandro Santilli + + * [r2663] Distribute all of TUT + +2009-10-08 07:56 Sandro Santilli + + * [r2662] Properly set version for win target + +2009-10-07 07:53 Sandro Santilli + + * [r2661] Expose single-sided buffering in C-API (see ticket #258) + +2009-10-05 21:36 Sandro Santilli + + * [r2659] Drop use of static data in DistanceToPoint class (for + thread-safety) + +2009-10-05 19:29 Sandro Santilli + + * [r2658] release memory earlier, and closer to allocation + +2009-10-05 19:04 Sandro Santilli + + * [r2657] Finish plugging leaks. Make check runs with no leaks. + +2009-10-05 18:42 Sandro Santilli + + * [r2656] another memory management doc + +2009-10-05 18:40 Sandro Santilli + + * [r2655] Document more memory management issues + +2009-10-05 17:20 Sandro Santilli + + * [r2654] More memory leak fixes in single-sided buffering + implementation + +2009-10-05 16:58 Sandro Santilli + + * [r2653] Plug some memory leaks in single sided buffering + implementation + +2009-10-05 16:44 Sandro Santilli + + * [r2652] Document ownership of return from + LineMerger::getMergedLineStrings + +2009-10-05 16:40 Sandro Santilli + + * [r2651] Alright, there's no standard style yet so this file is + made empty, but good to have for reference + +2009-10-01 10:30 Sandro Santilli + + * [r2650] Throw an exception rather than returning NULL if input to + single-sided buffer code is invalid + +2009-10-01 09:10 Sandro Santilli + + * [r2649] Have single-sided buffer constructor return a simple + LINESTRING when appropriate rather than forcing a MULTI; import 2 + tests from the SAFE testsuite + +2009-10-01 09:01 Sandro Santilli + + * [r2648] Better parse style parameter + +2009-10-01 08:46 Sandro Santilli + + * [r2647] Add utility script to import tests from SAFE software + +2009-10-01 08:42 Sandro Santilli + + * [r2646] Don't segfault on xml tests missing precision model + specification + +2009-10-01 07:24 Sandro Santilli + + * [r2645] Re-enable the now succeeding test for sharp edges line + single sided buffering + +2009-10-01 07:23 Sandro Santilli + + * [r2644] Use FLAT/BUTT endcaps when doing single sided buffering + +2009-10-01 07:06 Sandro Santilli + + * [r2643] Fix trimming of left/right curves (ie: don't include the + endcap) + +2009-10-01 06:33 Sandro Santilli + + * [r2642] Use snapped intersection between full buffer boundary and + single-sided offset curves + +2009-09-30 22:18 Sandro Santilli + + * [r2641] Check hausdorff distance in both directions, or an + expected output line longer than the obtained one would be found + as correct + +2009-09-30 20:27 Sandro Santilli + + * [r2640] Some debugging for single sided buffers + +2009-09-30 19:18 Sandro Santilli + + * [r2639] Another simple test for single-sided buffer (horizontal + line, both directions) + +2009-09-30 19:07 Sandro Santilli + + * [r2638] Another simple test for a vertical line, opposite + direction from previous + +2009-09-30 19:05 Sandro Santilli + + * [r2637] Add test for single sided buffer on simple, vertical, + line (this one succeeds both left and right) + +2009-09-30 18:57 Sandro Santilli + + * [r2636] VIM setting for GEOS source code style (3-spaces tabs) + +2009-09-30 14:14 Sandro Santilli + + * [r2635] Don't use non-standard escape sequences with 'echo' + +2009-09-28 10:35 Sandro Santilli + + * [r2634] Replace no-commercial-use licenced MarkupSTL with tinyXML + +2009-09-28 10:34 Sandro Santilli + + * [r2633] Temporarly disable failing single sided buffer test + +2009-09-28 10:10 Sandro Santilli + + * [r2632] Oops, it seems I just don't want a test to fail ;) + +2009-09-28 10:09 Sandro Santilli + + * [r2631] Don't give a false success if one of the + expected/obtained geometry is empty + +2009-09-28 09:03 Sandro Santilli + + * [r2630] Add offsets to PrecisionModel text output + +2009-09-28 07:02 Sandro Santilli + + * [r2629] Add an hausdorff distance based result matcher for + single-sided buffer tests. Enable the single sided buffer test + provided by swong in ticket #215 with minor tweak (expect + multilinestring). + +2009-09-27 20:43 Sandro Santilli + + * [r2628] Re-introduce the singlesided buffer patch. Tests still + need to be worked on. + +2009-09-21 19:47 Paul Ramsey + + * [r2626] Polygon with empty ring causes a crash in WKBReader (from + Tamas Szekeres) (#290) + +2009-09-11 18:47 Paul Ramsey + + * [r2624] Patch for #285, C api for project and interpolate, from + David Turner (novalis) + +2009-08-21 09:54 Mateusz Loskot + + * [r2623] Updated svn:ignore property + +2009-08-21 09:50 Mateusz Loskot + + * [r2622] Cleaned compilation warnings in unit tests. + +2009-08-21 09:43 Mateusz Loskot + + * [r2621] Updated C++ TUT Framework to latest revision (147) of its + SVN trunk + +2009-08-15 13:26 Sandro Santilli + + * [r2620] Const correctness of LenghtIndexedLine port, by novalis + (issue #284) + +2009-08-12 19:01 Paul Ramsey + + * [r2619] Port of JTS linear referencing (from David Turner) (#283) + +2009-08-02 23:39 Mateusz Loskot + + * [r2618] Removed incomplete GEOS_DEBUG message causing compilation + error because Edge type is incomplete. + +2009-08-02 23:15 Mateusz Loskot + + * [r2617] Fixed broken escape sequence in debug msg. + +2009-07-17 22:23 Paul Ramsey + + * [r2616] Remove static string in WKB reader (#232) + +2009-07-15 18:56 Paul Ramsey + + * [r2613] Add PreparedGeometry and STRtree support to SWIG (#279) + Schuyler Erle + +2009-07-15 18:55 Paul Ramsey + + * [r2612] Add STRtree support to the C API (#278) Schuyler Erle + +2009-07-15 18:53 Paul Ramsey + + * [r2611] Add geos::index::strtree::AbstractSTRtree::iterate (#277) + Schuyler Erle + +2009-07-06 17:35 Sandro Santilli + + * [r2610] Add automated XML test for issue #275. Succeeds here. + +2009-07-05 15:58 Sandro Santilli + + * [r2609] Apply fix-msvc90-only2.patch by Sanak from issue #273 + +2009-07-04 16:19 Sandro Santilli + + * [r2608] Apply fix-mingw.patch by Sanak (issue #273) + +2009-06-29 16:40 Paul Ramsey + + * [r2607] Include nmake.opt in 'dist' target (#274) + +2009-06-26 21:59 Sandro Santilli + + * [r2605] Fix typo reported in ticket #272 + +2009-06-24 21:43 Paul Ramsey + + * [r2604] Expose Hausdorf distance to CAPI (#264) from Vincent + Picavet + +2009-06-24 21:30 Paul Ramsey + + * [r2603] Fix stoopid syntax error. + +2009-06-24 21:21 Paul Ramsey + + * [r2602] Remove old logging noise. + +2009-06-24 21:19 Paul Ramsey + + * [r2601] Fix for #270, bad definition of isnan() in OS/X . + This needs to be tested on other operating systems to make sure + it doesn't break them instead. + +2009-06-23 22:20 Paul Ramsey + + * [r2599] Fix clean target for VC build (#267) + +2009-06-23 18:22 Howard Butler + + * [r2598] fix up syntax of the makefile related to the patch for + #257 + +2009-06-22 19:14 Sandro Santilli + + * [r2597] Add tests for limited mitre join (now working) + +2009-06-22 19:02 Sandro Santilli + + * [r2596] Fix bug in BufferParameters::setMitreLimit + +2009-06-20 21:29 Sandro Santilli + + * [r2595] Bump versions (core 3.2.0, capi 1.6.0, port 1.10.0) + +2009-06-20 08:53 Sandro Santilli + + * [r2594] Add tests for GEOSBufferWithStyle + +2009-06-19 22:32 Sandro Santilli + + * [r2593] Extend the C-API interface to expose a + GEOSBufferWithStyle (and corresponding thread-safe version) and + related enums. + +2009-06-16 15:49 Sandro Santilli + + * [r2592] Sync RobustDeterminant to JTS-1.10 (r1.15 was just + commented-out code) + +2009-06-16 15:46 Sandro Santilli + + * [r2591] Sync RobustDeterminant to revision 1.14 + +2009-06-16 15:43 Sandro Santilli + + * [r2590] Port info for RobustDeterminant + +2009-06-16 15:33 Sandro Santilli + + * [r2589] Revert single-sided patch. Martin Davis is workin on it + from the JTS side + +2009-06-16 00:00 Paul Ramsey + + * [r2581] add reminders on bump versions in various places + +2009-06-15 14:57 Paul Ramsey + + * [r2580] operation.h in Makefile.am twice. (#261) + +2009-06-15 14:03 Sandro Santilli + + * [r2579] Port info in the geos::io namespace + +2009-06-15 13:19 Sandro Santilli + + * [r2578] Put CLocalizer in the correct function. Fixes #260 for + the writing part. + +2009-06-15 10:13 Sandro Santilli + + * [r2577] Stop explicitly using the CLocalizer now that it is done + within WKTReader and WKTWriter (see bug #260). Some deep testing + about this would be good. Make check worked for me with + comma-using locale. + +2009-06-15 10:06 Sandro Santilli + + * [r2576] Use C locale while reading/writing WKT. Fixes bug #260. + +2009-06-15 06:57 Sandro Santilli + + * [r2575] Add XML version of the testcase provided for bug #176 + +2009-06-08 22:10 Sandro Santilli + + * [r2572] JTS-1.10 port sync. The whole 'operation' namespace is + complete on this. + +2009-06-08 21:53 Sandro Santilli + + * [r2571] Port info for operation::union + +2009-06-08 17:15 Sandro Santilli + + * [r2570] Sync to JTS-1.10 (port info in SegmentIntersectionTester + was wrong, btw) + +2009-06-08 17:12 Sandro Santilli + + * [r2569] Sync RectangleContains to JTS-1.10 + +2009-06-08 17:02 Sandro Santilli + + * [r2568] Port info for operation::predicate (we're at JTS-1.7 + here) + +2009-06-08 16:58 Sandro Santilli + + * [r2567] Port info for polygonize operation + +2009-06-08 16:46 Sandro Santilli + + * [r2566] Port info and sync for operation::overlay::validate + +2009-06-08 16:26 Sandro Santilli + + * [r2565] sync LineBuilder to JTS-1.10, completing overlay port + +2009-06-08 16:09 Sandro Santilli + + * [r2564] Complete port info in overlay package + +2009-06-08 15:43 Sandro Santilli + + * [r2563] Add missing setMarked static methods in GraphComponent + and make use of them in LineMerger making it able to be called + incrementally (JTS-1.10) + +2009-06-08 15:28 Sandro Santilli + + * [r2562] Port info in operation::linemerge (a single class is + still at JTS-1.7, needs changes in GeometryGraphComponent.h to go + up) + +2009-06-08 10:37 Sandro Santilli + + * [r2561] GeometryLocation sync to JTS-1.10 (docs) + +2009-06-08 10:29 Sandro Santilli + + * [r2560] DistanceOp sync to JTS-1.10 (renames, docs...) + +2009-06-08 10:07 Sandro Santilli + + * [r2559] Update port info for buffer package (it's really + JTS-1.10) + +2009-06-08 09:40 Sandro Santilli + + * [r2558] Warn at configure time if 64bit integer type isn't found. + See bug #202. + +2009-06-08 09:30 Sandro Santilli + + * [r2557] Install all C++ headers to reduce maintainance costs. C++ + API is documented as being unstable after all so let's give users + the power to hurt themselves :) + +2009-06-06 22:22 Sandro Santilli + + * [r2556] Windows C++ exports by Ragi Y. Burhum. See + http://lists.osgeo.org/pipermail/geos-devel/2009-June/004190.html + +2009-06-06 22:17 Sandro Santilli + + * [r2555] fix headers inclusion warnings + +2009-06-06 21:14 Sandro Santilli + + * [r2554] Use real NaNs rather than fake them. Applies patch in + ticket #259. Adds autoconf checks for finite() and isfinite() and + makes use of them for unix systems (platform.h) + +2009-06-06 00:55 Sandro Santilli + + * [r2553] Complete port info and headers exposion for + operation::distance package + +2009-06-05 18:18 Sandro Santilli + + * [r2552] JTS-1.10 OverlayOp + +2009-06-05 18:12 Sandro Santilli + + * [r2551] Add missing static function + +2009-06-05 18:02 Sandro Santilli + + * [r2550] JTS-1.10 sync + +2009-06-05 17:50 Sandro Santilli + + * [r2549] Boundary Node Rule support in relateOp. JTS-1.10. + +2009-06-05 13:44 Sandro Santilli + + * [r2548] geomgraph package fully sync'ed to JTS-1.10 now + +2009-06-05 13:41 Sandro Santilli + + * [r2547] added BoundaryNodeRule capability to EdgeEnds + +2009-06-05 12:42 Sandro Santilli + + * [r2546] Add support for custom BoundaryNodeRule bringing + GeometryGraph to JTS-1.10 + +2009-06-05 12:07 Sandro Santilli + + * [r2545] Complete port info in geomgraph package + +2009-06-05 11:03 Sandro Santilli + + * [r2544] Port info in the geomgraph package (unfinished); fix + compiler warning in GeometryGraph and make code more readable; + +2009-06-05 10:23 Sandro Santilli + + * [r2543] Add port info and introduce header exposion info. Relate + op results partially in JTS-1.7 still. + +2009-06-05 09:36 Sandro Santilli + + * [r2542] typo in doxygen index page + +2009-06-05 09:35 Sandro Santilli + + * [r2541] Fix doxygen link + +2009-06-05 09:28 Sandro Santilli + + * [r2540] Fix deletion of void pointer in IntervalRTreeLeafNode, + document ownership, fix callers tracking allocations to avoid + leaks. Fixes bug #227. + +2009-06-05 09:15 Sandro Santilli + + * [r2539] Allow generating ChangeLog from external build tree + +2009-06-04 15:01 Mateusz Loskot + + * [r2538] * Applied patch for ticket #257. + * Noticed that unit tests fail: + 1>geos::util::UniqueCoordinateArrayFilter: . + 1>---> group: geos::operation::valid::IsValidOp, test: test<1> + 1> problem: assertion failed + +2009-06-04 14:59 Mateusz Loskot + + * [r2537] Fixed bug of inaccessible constructor of incomplete type + NodedSegmentString - header missing. + +2009-06-04 13:59 Sandro Santilli + + * [r2536] Add support for testing single sided buffers + +2009-06-01 03:34 Howard Butler + + * [r2534] #256 finishGEOS called multiple times will segfault + +2009-05-28 14:38 Mateusz Loskot + + * [r2533] Fixed aclocal warnings for mixing cache-id's in + configure.in. + +2009-05-27 16:57 Paul Ramsey + + * [r2516] remove error + +2009-05-27 16:57 Paul Ramsey + + * [r2515] Add single-sided item + +2009-05-21 10:08 Sandro Santilli + + * [r2514] Add Mat's and Paul's entries, make ChangeLog.svn rule + phony + +2009-05-21 09:56 Sandro Santilli + + * [r2513] Add a rule to generate a ChangeLog using svn2cl. The + authors.svn file will be used to map usernames and full names: + please expand your own nick. The generated ChangeLog is added to + repository to show you how it looks. If everybody agree we could + rename this to ChangeLog and stop requiring manual edits (+1 from + me:) + +2009-05-13 11:29 Frank Warmerdam + + * [r2508] refer to GEOSFree() instead of free() + +2009-05-13 11:26 Frank Warmerdam + + * [r2507] forward GEOSFree to GEOSFree_r, use std:: prefix on + free() (#249) + +2009-05-13 04:14 Frank Warmerdam + + * [r2506] Added GEOSFree() and GEOSFree_r() (#249) + +2009-05-12 17:47 Sandro Santilli + + * [r2505] Add note about single-sided buffer + +2009-05-12 16:49 Sandro Santilli + + * [r2504] Never fail bug #244 again (regression testcase added) + +2009-05-12 16:48 Sandro Santilli + + * [r2503] Have DepthSegment hold a real LineSegment, not a + reference. SubgraphDepthLocater was passing the same LineSegment + reference to multiple DepthSegments, messing everything up. This + fixes bug #244. + +2009-05-12 15:38 Sandro Santilli + + * [r2502] Port info + +2009-05-08 16:30 Sandro Santilli + + * [r2501] Update port info + +2009-05-08 12:47 Sandro Santilli + + * [r2500] When included in a C++ environment, include and + use std::size_t. Patch by Mateusz Loskot, ticket #252. + +2009-05-08 12:46 Sandro Santilli + + * [r2499] Oops, forgot to update the static closedPoints + signature.. + +2009-05-08 12:29 Sandro Santilli + + * [r2498] Note the withinDistance addition to DistanceOp + +2009-05-08 12:27 Sandro Santilli + + * [r2497] Add the complete set of tests for closedPoints + +2009-05-08 12:11 Sandro Santilli + + * [r2496] Document semantic of a null return from closestPoints + +2009-05-08 12:09 Sandro Santilli + + * [r2495] Don't wipe out closest locations after computing them + (doh). Fixes bug #236. Takes the chance to make the + GeometryLocation retrival function private as we don't install + GeometryLocation.h header anyway (for future cleanups), and to + rename a function to follow current JTS naming (more renames to + come for proper sync) + +2009-05-08 10:10 Sandro Santilli + + * [r2494] Add isWithinDistance() to DistanceOp, reaching rev 1.17 + of JTS + +2009-05-08 09:39 Sandro Santilli + + * [r2493] Port info for DistanceOp + +2009-05-08 08:44 Sandro Santilli + + * [r2492] Always include stddef.h. Closes bug #213 + +2009-05-07 16:15 Sandro Santilli + + * [r2491] Add "thread-safe" version of GEOSGeom_setSRID. Closes bug + #242. + +2009-05-07 16:00 Sandro Santilli + + * [r2490] minor debug output improvement + +2009-05-07 15:57 Sandro Santilli + + * [r2489] Skip empty components when building GeometryGraph. Fixes + bug #234. Add non-automated test for it, and README file in the + directory containing it... + +2009-05-07 15:36 Sandro Santilli + + * [r2488] Add XML testcase for bug 188 + +2009-05-07 15:36 Sandro Santilli + + * [r2487] remove code duplication on buffer result validation + +2009-05-07 08:52 Sandro Santilli + + * [r2486] Port info, doxygen cleanups + +2009-05-07 08:45 Sandro Santilli + + * [r2485] Add test for creating a CoordinateSequence with at least + 2 dimension + +2009-05-06 20:47 Sandro Santilli + + * [r2484] Fix bug #135, give an hint about GEOSGeom_getDimensions + being related to GEOSCoordSeq_getDimensions, fix signed vs. + unsigned compiler warning. + +2009-05-06 20:22 Sandro Santilli + + * [r2483] Fix compilation warnings thrown by GCC 4.3.x. Patch by + Mateus, closes bug #92. + +2009-05-06 20:12 Mateusz Loskot + + * [r2482] Updated svn:ignore property. + +2009-05-06 17:54 Sandro Santilli + + * [r2481] findCollapsesFromExistingVertices: don't choke on sets of + < 2 points. Fixes bug #219. + +2009-05-06 17:52 Sandro Santilli + + * [r2480] minor indentation thing + +2009-05-06 17:42 Sandro Santilli + + * [r2479] Cleanup MonotoneChainOverlapAction, reduce heap + allocations. Cascade changes. + +2009-05-06 17:14 Sandro Santilli + + * [r2478] Port info (to be worked on for heap allocations + reduction) + +2009-05-06 17:10 Sandro Santilli + + * [r2477] MonotoneChainSelectAction port review, heap allocation + reduced, const-corrected. + +2009-05-06 16:44 Sandro Santilli + + * [r2476] MonotoneChain const-correctness and interface cleanups, + cascaded changes. Possibly discovered a leak in MCPointInRing + algorithm, needs some unit testing. + +2009-05-06 16:36 Sandro Santilli + + * [r2475] Const-correctness for bintree Interval + +2009-05-06 15:47 Sandro Santilli + + * [r2474] Port MonotoneChain up to JTS-1.10, plus minor dox + improvement (memory-oriented) + +2009-05-06 15:31 Sandro Santilli + + * [r2473] Port MonotoneChainBuilder up to JTS-1.10. Tweak some + signatures to use stricter signedness. + +2009-05-06 14:55 Sandro Santilli + + * [r2472] Port to 1.9, fixing an out of boundary access in + findEdgeEnd + +2009-05-06 14:42 Sandro Santilli + + * [r2471] Add port info. We're 4 revision old (catching up next) + +2009-05-05 14:28 Sandro Santilli + + * [r2470] Sync Envelope to JTS-1.10 + +2009-05-05 10:30 Sandro Santilli + + * [r2469] Add compile-time support to skip use of BinaryOp thus + engaging SnapIfNeededOverlayOp used by Geometry methods. Shows + that BinaryOp (GEOS-specific original work) gives better + numerical stability. + +2009-05-05 10:14 Sandro Santilli + + * [r2468] Found old GeometrySnapper/LineStringSnapper classes in an + unexpected directory. Move them where they belong, sync with + JTS-1.10. + +2009-05-05 00:04 Sandro Santilli + + * [r2467] Fix memory leak on exception + +2009-05-04 23:43 Sandro Santilli + + * [r2466] Fix memory bug + +2009-05-04 23:23 Sandro Santilli + + * [r2465] Geometry up to 1.112 with a minor bugfix and performance + improvement in Geometry::covers + +2009-05-04 23:04 Sandro Santilli + + * [r2464] Bring Geometry port up a revision by having it use + SnapIfNeededOp for overlay operations. Note that currently this + doesn't affect the C-API nor the XMLTester codes, both using the + BinaryOp original class (not JTS-ported) doing about the same + thing as the SnapIfNeededOp class. + +2009-05-04 22:03 Sandro Santilli + + * [r2463] Port SnapIfNeededOverlayOp + +2009-05-04 21:28 Sandro Santilli + + * [r2462] Move overlay.validate package files where they belong + +2009-05-04 21:02 Sandro Santilli + + * [r2461] Port overlay.snap.SnapOverlayOp, update GeometrySnapper + to be more useful + +2009-05-04 19:54 Sandro Santilli + + * [r2460] Port overlay.snap.GeometrySnapper + +2009-05-04 19:51 Sandro Santilli + + * [r2459] Extend to accept a vector of const Coordinate pointers + for snap pointers, fix typo making it clone snap points rather + than source points on snapping... + +2009-05-02 11:01 Sandro Santilli + + * [r2458] Port overlay.snap.LineStringSnapper from JTS-1.10 + +2009-05-02 10:59 Sandro Santilli + + * [r2457] Add an insert-like virtual method to CoordinateSequence. + This comes from CoordinateList of JTS, historically bound to + CoordinateSequence in GEOS. Add test for that interface. + +2009-05-02 09:44 Sandro Santilli + + * [r2456] Copy last portable JTS general test, add a file with info + about what's missing + +2009-05-02 09:42 Sandro Santilli + + * [r2455] Drop test also found in TestFunctionPLPrec.xml + +2009-05-02 09:40 Sandro Santilli + + * [r2454] Add support for testing within, covers and coveredby. + Properly use 'arg1' and 'arg2' for these tests. + +2009-05-02 09:25 Sandro Santilli + + * [r2453] Copy TestWithinDistance.xml test, drop duplicates from + testLeaksBig.xml + +2009-05-02 09:20 Sandro Santilli + + * [r2452] More tests from JTS (TestFunction*) + +2009-05-02 09:17 Sandro Santilli + + * [r2451] Boundary test + +2009-05-02 09:16 Sandro Santilli + + * [r2450] ConvexHull tests + +2009-05-02 09:11 Sandro Santilli + + * [r2449] Add support for testing 'contains' in XMLTester, add all + Relate tests from JTS + +2009-05-02 09:01 Sandro Santilli + + * [r2448] More organization of xml tests: 'general' subdir + following JTS + +2009-05-02 08:44 Sandro Santilli + + * [r2447] Put stml testcases under their own dir (like in JTS) + +2009-05-02 08:37 Sandro Santilli + + * [r2446] Add a 'split.xml' testcase to confirm 'difference' may be + used to split linestrings; add TestRobustRelate.xml from JTS, + organize robust-related tests as in JTS repository. + +2009-04-30 12:42 Sandro Santilli + + * [r2444] drop duplicated (and old) port info + +2009-04-30 12:33 Sandro Santilli + + * [r2443] Update port info + +2009-04-30 12:17 Sandro Santilli + + * [r2442] Point full up to JTS-1.0 (rev 1.37) : adds reverse() + +2009-04-30 12:07 Sandro Santilli + + * [r2441] LineString to rev 1.46 : don't override isSimple, always + return MultiPoint as bondary + +2009-04-30 11:47 Sandro Santilli + + * [r2440] Polygon to rev 1.50 (getBoundary always return + MultiLineString) + +2009-04-30 11:42 Sandro Santilli + + * [r2439] MultiPoint up to rev 1.30 (drop isSimple override) + +2009-04-30 11:36 Sandro Santilli + + * [r2438] MultiLineString port info and sync to 1.40 (don't + override isSimple) + +2009-04-30 11:29 Sandro Santilli + + * [r2437] MultiPolygon up to rev 1.34 (getBoundary always returns a + MultiLineString now) + +2009-04-30 11:19 Sandro Santilli + + * [r2436] Oops, *now* we're at 1.14 (drop isSimple, rely on the one + in base class) + +2009-04-30 11:15 Sandro Santilli + + * [r2435] Port info. It's at 1.41 now, JTS is at 1.42 + +2009-04-30 11:03 Sandro Santilli + + * [r2434] Geometry class up to JTS rev 1.104 (need reach 1.127...) + +2009-04-30 10:59 Sandro Santilli + + * [r2433] Add some info about things changed (might have missed + something) + +2009-04-30 10:51 Sandro Santilli + + * [r2432] Sync to rev 1.22 (JTS-1.10) + +2009-04-30 10:47 Sandro Santilli + + * [r2431] EndpointInfo.h header is gone (it's always been private + in JTS) + +2009-04-30 10:46 Sandro Santilli + + * [r2430] Port revision 1.9 of IsSimplOp : allow inspecting + non-simple location coordinate. + +2009-04-30 10:43 Sandro Santilli + + * [r2429] Sync to revision 1.5 (JTS-1.10) : add accessors + +2009-04-30 09:54 Sandro Santilli + + * [r2428] port to rev 1.8 (use of BoundaryNodeRule) + +2009-04-30 09:49 Sandro Santilli + + * [r2427] Import TestSimple.xml from JTS, drop duplicated tests + from testLeaksBig.xml + +2009-04-30 09:26 Sandro Santilli + + * [r2426] Port algorithm::BoundaryNodeRule from JTS-1.10 (needed + for IsSimpleOp sync) + +2009-04-30 08:33 Sandro Santilli + + * [r2425] Port info, and sync from 1.14 to 1.17 (more to do, need + more classes) + +2009-04-29 23:52 Mateusz Loskot + + * [r2424] test/unit/capi: re-tab all .cpp files to use spaces. + +2009-04-29 23:46 Mateusz Loskot + + * [r2423] Removed unused header from C API tests. + +2009-04-29 23:44 Mateusz Loskot + + * [r2422] Added new unit tests for C API: GEOSWithinTest and + GEOSContainsTest. This is check and response for problems + reporting in Ticket #250. Running the new tests does not + reproduce the problem, so it likely has been fixed or the bug is + somewhere else (i.e. Django layers). + +2009-04-29 09:44 Sandro Santilli + + * [r2421] Sync GeometricShapeFactory to JTS-1.10 (createArcPolygon + added) + +2009-04-29 08:56 Sandro Santilli + + * [r2420] Bring all geom::prep package in sync with JTS-1.10 + +2009-04-29 08:22 Sandro Santilli + + * [r2419] Sync BasicPreparedGeometry to JTS-1.10 (short-circuit in + containsProperly) + +2009-04-29 08:15 Sandro Santilli + + * [r2418] Add port information for geom::prep package. Next stop: + sync to JTS-1.10. + +2009-04-27 19:47 Sandro Santilli + + * [r2417] Plug last one. All heap blocks were freed -- no leaks are + possible. + +2009-04-27 19:42 Sandro Santilli + + * [r2416] Fix leak in testcase + +2009-04-27 19:38 Sandro Santilli + + * [r2415] Refactor signatures to make ownership transfers more + explicit. Fixed another leak in Node::insertNode. + +2009-04-27 19:22 Sandro Santilli + + * [r2414] Fix memory leak in NodeBase::remove, exposed by unit + testing + +2009-04-27 15:52 Sandro Santilli + + * [r2413] Port info for quadtree::root + +2009-04-27 15:47 Sandro Santilli + + * [r2412] Port info for quadtree::Node + +2009-04-27 15:39 Sandro Santilli + + * [r2411] Port info and check, doxygen. + +2009-04-27 15:30 Sandro Santilli + + * [r2410] Sync to JTS-1.10, reduce heap allocations and pointers + usage. Includes a bugfix in collectStats. + +2009-04-27 15:00 Sandro Santilli + + * [r2409] DoubleBits didn't change in JTS, update port info + accordingly + +2009-04-27 14:58 Sandro Santilli + + * [r2408] Quadtree's NodeBase: check port sync, add port info, drop + unneeded pointers and virtuals, document objects ownership. + +2009-04-25 00:23 Sandro Santilli + + * [r2407] Const-correctness, reduced heap allocations and port info + for quadtree::Key class, a few more cleanups in user classes, to + be continued. + +2009-04-24 23:44 Sandro Santilli + + * [r2406] Fix memory leak in Quadtree::remove + +2009-04-23 15:26 Sandro Santilli + + * [r2405] Apply Single-sided buffer patch, issue #215. UNTESTED. + +2009-04-21 16:11 Sandro Santilli + + * [r2404] Port ValidSelfTouchingRingFormingHoleTest + +2009-04-21 15:30 Sandro Santilli + + * [r2403] Port ValidClosedRingTest + +2009-04-21 15:13 Sandro Santilli + + * [r2402] ::reverse returns a Geometry now (to be available up in + base class) + +2009-04-21 15:12 Sandro Santilli + + * [r2401] Sync LinearRing to JTS-1.10 (fixing a bug in isClosed) + +2009-04-21 14:03 Sandro Santilli + + * [r2400] Port IsValidOp unit test + +2009-04-21 11:14 Sandro Santilli + + * [r2399] Configure for CXX, not C. Should fix unknown tag and link + issues on telascience. + +2009-04-21 09:06 Sandro Santilli + + * [r2398] Add an AC_LIBTOOL_LANG_C_CONFIG call right before the + AC_LIBTOOL_COMPILER_OPTION calls. Seems to fix compiler selection + on telascience (whereas AC_LANG and AC_LANG_PUSH didn't work) + +2009-04-20 20:32 Sandro Santilli + + * [r2397] Use JTS heuristic for distance-0 buffer checking + +2009-04-20 11:04 Mateusz Loskot + + * [r2396] Updated svn:ignore patterns. + +2009-04-20 10:37 Sandro Santilli + + * [r2395] Port IteratedBufferStessTest + +2009-04-20 09:37 Sandro Santilli + + * [r2394] Add named constants, sync to JTS-1.10 + +2009-04-20 09:24 Mateusz Loskot + + * [r2393] Updated svn:ignore patterns. + +2009-04-18 07:55 Sandro Santilli + + * [r2392] Use BufferResultMatcher for buffer operations. No + failures. + +2009-04-18 07:49 Sandro Santilli + + * [r2391] Imported cleaned-up version of fme.xml -- this one fails + (the one we have is actually expecting a wrong result) + +2009-04-18 07:46 Sandro Santilli + + * [r2390] Don't densify coordinates if buffer distance is 0 + +2009-04-17 16:50 Sandro Santilli + + * [r2389] comment out debugging lines + +2009-04-17 16:49 Sandro Santilli + + * [r2388] Port DiscreteHausdorffDistance unit test + +2009-04-17 16:47 Sandro Santilli + + * [r2387] Offline some more + +2009-04-17 16:46 Sandro Santilli + + * [r2386] Fix typo + +2009-04-17 16:26 Sandro Santilli + + * [r2385] Add missing implementation bits + +2009-04-17 15:47 Sandro Santilli + + * [r2384] Port BufferResultMatcher. Gives 31 new failures !! + +2009-04-17 15:37 Sandro Santilli + + * [r2383] proper inline check_valid + source/headers/geos/geom/BinaryOp.h + +2009-04-17 15:34 Sandro Santilli + + * [r2382] Header guard + +2009-04-17 13:59 Sandro Santilli + + * [r2381] renamed intersection constants + +2009-04-17 09:56 Sandro Santilli + + * [r2380] Add debugging output of variables used by + AC_LIBTOOL_COMPILER_OPTION. Surprisingly, the buildbots try to + use a fortran compiler there + +2009-04-17 07:50 Sandro Santilli + + * [r2379] Differentiate variable used in AC_LIBTOOL_COMPILE_OPTION + for proper use of configuration cache + +2009-04-16 18:05 Sandro Santilli + + * [r2378] Use -ffloat-store flag when available. See + http://lists.osgeo.org/pipermail/geos-devel/2009-April/004089.html + +2009-04-16 12:56 Sandro Santilli + + * [r2377] Make enum values explicit, as JTS tests rely on those.. + +2009-04-16 12:54 Sandro Santilli + + * [r2376] Port RobustLineIntersectorTest from JTS + +2009-04-16 12:08 Sandro Santilli + + * [r2375] better isolation of test-specific functions + +2009-04-16 10:48 Sandro Santilli + + * [r2374] Port RobustLineIntersectionTest (mostly failing, but + reported by Martin Davis to be expected) + +2009-04-15 15:58 Sandro Santilli + + * [r2373] New class rename, following JTS + +2009-04-15 12:56 Sandro Santilli + + * [r2372] typo in disabled section + +2009-04-15 11:17 Sandro Santilli + + * [r2371] Few more docs about memory management in quadtree + indexing; fix a potential leak in quadtree::Key + +2009-04-15 10:43 Sandro Santilli + + * [r2370] Document ownership of quadtree::NodeBase subnodes + +2009-04-15 10:18 Sandro Santilli + + * [r2369] Fix memory leak in unit test + +2009-04-15 10:02 Sandro Santilli + + * [r2368] Fix leak in SimpleGeometryPrecisionReducer, improve + memory management docs where topic. + +2009-04-15 09:29 Sandro Santilli + + * [r2367] Document ownership of DistanceOp::closestPoints return, + fix leak in unit test. + +2009-04-15 09:25 Sandro Santilli + + * [r2366] Fix leak in PolygonBuilder (overlay operation). The leak + was exposed by the stmlf-cases-20061020.xml testcase. This commit + also adds some doc-only throw specs related to the bug. + +2009-04-15 07:52 Sandro Santilli + + * [r2365] Fix memory leaks in IsValid operation + +2009-04-15 00:27 Sandro Santilli + + * [r2364] Explain why unrolled computation is turned off, and keep + it off + +2009-04-15 00:14 Sandro Santilli + + * [r2363] Fix typo in computing angleOrientation + +2009-04-14 19:11 Sandro Santilli + + * [r2362] Temporarly revert the unrolled computation in + HCoordinate::intersection. Added mitred join buffer test from JTS + (failed with the unrolled comp, to be further inspected). + +2009-04-14 16:43 Sandro Santilli + + * [r2361] Port the algorithm::distance package from JTS 1.9 + +2009-04-14 15:25 Sandro Santilli + + * [r2360] Add CoordinateSequenceFilter support, fix default + GeometryComponentFilter moving the logic to the correct place (a + Geometry private class). + +2009-04-14 13:35 Sandro Santilli + + * [r2359] Sync (Robust)LineIntersector to JTS-1.9 + +2009-04-14 13:23 Sandro Santilli + + * [r2358] Sync CGAlgorithms with JTS-1.9 + +2009-04-14 12:55 Sandro Santilli + + * [r2357] Fix memory leak in RayCrossingCounter; update signatures + to avoid pointers when unneeded; add a locatePointInRing taking a + vector of coordinate pointers, for use by CGAlgorithms + +2009-04-14 12:42 Sandro Santilli + + * [r2356] Update port info, checked against JTS-1.9 + +2009-04-14 11:03 Sandro Santilli + + * [r2355] Move XML tests under their own directory + +2009-04-14 10:50 Sandro Santilli + + * [r2354] Fix memory leak in BufferBuilder (due to just-ported + short-circuit) + +2009-04-14 10:27 Sandro Santilli + + * [r2353] Add support for bufferMitredJoin tests + +2009-04-14 09:53 Sandro Santilli + + * [r2352] Fix XML for Buffer testing to match jts layout (arg2 for + distance, arg3 for quadrant segments); copy buffer-related tests + from jts: they succeed w/out editing. + +2009-04-14 09:22 Sandro Santilli + + * [r2351] Update port info of SubgraphDepthLocater + +2009-04-14 09:19 Sandro Santilli + + * [r2350] Update port info for RightmostEdgeFinder (checked) + +2009-04-14 09:14 Sandro Santilli + + * [r2349] Sync BufferSubgraph to JTS-1.9 + +2009-04-14 08:52 Sandro Santilli + + * [r2348] Port OffsetCurveBuilder from JTS-1.9. Twenty time faster + completion of fme.xml testcase ! + +2009-04-10 20:22 Sandro Santilli + + * [r2347] Port BufferInputLineSimplifier from JTS 1.9 + +2009-04-10 15:15 Mateusz Loskot + + * [r2346] Do not generate Makefile for tests/unit/tut. Fixed bug + reported as #247. + +2009-04-10 12:08 Sandro Santilli + + * [r2345] Sync LineSegment with JTS-1.9 + +2009-04-09 21:46 Mateusz Loskot + + * [r2344] Updated tests/unit package with latest relase of C++ TUT + Framework from 2008-11-30. + +2009-04-09 19:39 Mateusz Loskot + + * [r2343] Moved tests/tut to tests/unit/tut. Preparing for update + to latest version of C++ TUT Framework. + +2009-04-09 16:22 Sandro Santilli + + * [r2342] Port algorithm.Angle from JTS-1.9 + +2009-04-09 11:45 Sandro Santilli + + * [r2341] Sync BufferBuilder and BufferOp classes to JTS-1.9. Adapt + OffsetCurveBuilder to use of BufferParameter (needs more work for + JTS-sync). + +2009-04-09 10:21 Sandro Santilli + + * [r2340] typo + +2009-04-09 09:45 Sandro Santilli + + * [r2339] Port BufferParameters from JTS-1.9 + +2009-04-09 08:54 Sandro Santilli + + * [r2338] Sync port of OffsetCurveVertexList to JTS-1.9, improve + memory management documentation (would need some + refactoring/love) + +2009-04-08 16:52 Sandro Santilli + + * [r2337] Improve duplicate edge detection performance (JTS-1.9 + sync) - fme.xml runs 3 times as fast now. + +2009-04-08 16:17 Sandro Santilli + + * [r2332] const correctness + +2009-04-08 15:38 Sandro Santilli + + * [r2329] Fix documentation for GEOSPrepare, GEOSPrepare_r + +2009-04-08 14:54 Sandro Santilli + + * [r2328] OrientedCoordinateArray ported from JTS + +2009-04-08 14:41 Sandro Santilli + + * [r2327] Add increasingDirection static method, from JTS's + CoordinateArray (GEOS puts all of them in CoordinateSequence for + historical reasons) + +2009-04-08 13:16 Sandro Santilli + + * [r2326] Complete porting of SimpleSnapRounder (refactoring for + adding snapped nodes) + +2009-04-08 13:02 Sandro Santilli + + * [r2325] Improve documentation about memory usage for + SegmentStringUtil class + +2009-04-08 12:58 Sandro Santilli + + * [r2324] Stub initial unit tests for C-API's GEOSPreparedGeometry + operations. Helped fixing issue 147 of postgis + +2009-04-08 12:55 Sandro Santilli + + * [r2323] Don't access deleted memory. Fixes issue 147. + +2009-04-08 10:53 Sandro Santilli + + * [r2322] Fix typo + +2009-04-08 10:06 Sandro Santilli + + * [r2321] Add a couple more tests to SegmentNode unit test + +2009-04-08 09:42 Sandro Santilli + + * [r2320] Port SegmentNode to JTS-1.9 + +2009-04-07 19:00 Sandro Santilli + + * [r2319] Refactor SegmentString to be an abstract class, to be in + sync with JTS-1.9. + +2009-04-07 12:36 Sandro Santilli + + * [r2318] update copyright notice + +2009-04-07 11:11 Sandro Santilli + + * [r2317] Sync HotPixel to JTS-1.9 (rev 1.3); fix a few bugs and + use standard algorithms for min/max + +2009-04-07 10:48 Sandro Santilli + + * [r2316] Fix signed vs. unsigned compiler warning + +2009-04-07 10:18 Sandro Santilli + + * [r2315] Port info, indenting + +2009-04-07 09:56 Sandro Santilli + + * [r2314] Port IndexedNestedRingTester and have IsValidOp use it, + syncing the operation to JTS-1.9 + +2009-04-07 09:55 Sandro Santilli + + * [r2313] Update port info, minor tweaks to doxygen comments + +2009-04-07 08:14 Sandro Santilli + + * [r2312] Sync HCoordinate class to JTS-1.9 (rev 1.18) + +2009-04-03 15:27 Mateusz Loskot + + * [r2311] Added _NMAKE_VER 9.00.21022.08 to nmake.opt. Fixed bug + with using BUILD_DEBUG instead of BUILD_BATCH in nmake.opt. + +2009-03-27 02:39 Mateusz Loskot + + * [r2310] Updated build/msvc80. + +2009-03-27 02:38 Mateusz Loskot + + * [r2309] Forgotten nmake.opt in last commit. + +2009-03-26 21:52 Mateusz Loskot + + * [r2308] Refactored NMAKE makefiles. Added nmake.opt file - GDAL + style. Added some auto-magic to determine version of Visual C++ + compiler and set version specific compilation flags. No need to + specify Visual C++ version in cmd line, but just run: nmake -f + makefile.vc in root dir of the tree. + +2009-03-26 21:07 Mateusz Loskot + + * [r2307] CascadedPolygonUnion.cpp: added missing std headers. + +2009-03-26 01:53 Mateusz Loskot + + * [r2306] Dummy commit - testing buildbot resurection. + +2009-03-24 16:49 Mateusz Loskot + + * [r2304] Fixed bug introduced in recent refactoring work (r2281). + This is the reason of PostGIS regression test failing (Issue 143) + +2009-03-24 15:58 Paul Ramsey + + * [r2303] Allow version test to work in glibtoolize + +2009-03-24 00:48 Mateusz Loskot + + * [r2302] capi/geos_ts_c.cpp: refactoring, assert() to test against + nullptr where it is forbidden. + +2009-03-24 00:30 Mateusz Loskot + + * [r2301] REVERTED r2299: Fixed GEOSSetSRID_r missing, GEOSSetSRID + duplicated (Ticket #242). A little of refactoring. + +2009-03-24 00:19 Mateusz Loskot + + * [r2300] Fixed GEOSSetSRID_r missing, GEOSSetSRID duplicated + (Ticket #242). A little of refactoring. + +2009-03-23 23:50 Mateusz Loskot + + * [r2299] capi/geos_ts_c.cpp: refactoring, use single return + expression per function, added assert() to test against nullptr + where it is forbidden. + +2009-03-23 23:29 Mateusz Loskot + + * [r2298] capi/geos_ts_c.cpp: refactoring, use single return + expression per function, added assert() to test against nullptr + where it is forbidden, addd some comments. + +2009-03-23 22:19 Mateusz Loskot + + * [r2297] capi/geos_ts_c.cpp: refactoring, use single return + expression per function, added assert() to test against nullptr + where it is forbidden, addd some comments. + +2009-03-23 21:07 Mateusz Loskot + + * [r2296] capi/geos_ts_c.cpp: refactoring, replace manual strdup + with gstrdup, use single return expression per function, added + some comments. + +2009-03-23 20:31 Mateusz Loskot -2009-01-24 01:33 mloskot + * [r2295] dummy commit - * capi/geos_ts_c.cpp: Fixed mixed signed/unsigned integral types in +2009-03-23 20:03 Mateusz Loskot + + * [r2294] autogen.sh: Fixed typo in tab character. + +2009-03-23 17:08 Mateusz Loskot + + * [r2293] autogen.sh: be more verbose about versions, check for + autoconf, check if ./configure is really generated. + +2009-03-23 16:28 Mateusz Loskot + + * [r2292] configure.in: mloskot made a stupid mistake, mloskot has + fixed it. + +2009-03-23 14:38 Mateusz Loskot + + * [r2291] configure.in: wrap macro arguments with proper M4 quote + characters. + +2009-03-23 14:08 Mateusz Loskot + + * [r2290] autogen.sh: Call libtool *before* aclocal and automake + (see Automake manual,8.3.9.1). + +2009-03-23 14:01 Mateusz Loskot + + * [r2289] autogen.sh: verbose check if autotools versions. + +2009-03-22 20:29 Paul Ramsey + + * [r2288] Show what versions of things we're running + +2009-03-21 02:17 Mateusz Loskot + + * [r2287] capi/geos_ts_c.cpp: refactoring - removed redundant + return expressions, replaced bloated use of malloc + memcpy with + single call to gstrdup, use of C++ cast operators, removed + unnecessary allocation of std::string objects. + +2009-03-21 01:37 Mateusz Loskot + + * [r2286] capi/geos_ts_c.cpp: added gstrdup and gstrdup_s helper + functions to get rid of bloated code in future. Started + eliminating redundant return expressions. + +2009-03-21 01:10 Mateusz Loskot + + * [r2285] macros: Updated svn:ignore property. + +2009-03-21 01:08 Mateusz Loskot + + * [r2284] capi/geos_ts_c.cpp: Use of spaces instead of tabs + applied. + +2009-03-21 01:05 Mateusz Loskot + + * [r2283] source/operation/polygonize/edgering.cpp: cleaned + compiler warnings about mixed integral types. + +2009-03-21 01:01 Mateusz Loskot + + * [r2282] Fixed deprecated conversion from string constant to char* + in GEOSisValidReason_r. Small refactoring. + +2009-03-21 00:47 Mateusz Loskot + + * [r2281] capi/geos_ts_c.cpp: refactoring, use c++ cast operators. + +2009-03-20 23:37 Mateusz Loskot + + * [r2280] Updated svn:ignore property. + +2009-03-20 23:35 Mateusz Loskot + + * [r2279] Updated build/msvc80 project. + +2009-03-19 16:45 Paul Ramsey + + * [r2278] Fix spellingn mistake. + +2009-03-19 16:19 Mateusz Loskot + + * [r2277] * tests/unit/capi: added GEOSGeomFromWKBTest with test + cases (see comment) reported as a bug (See + http://postgis.refractions.net/pipermail/postgis-devel/2009-March/005199.html). + TODO: Reproduce and ask the reporter to submit a ticket if + necessary. + * test/unit/utility.h: Added helper class wkb_hex_decoder. + * Updated build/msvc90 projects. + +2009-03-11 12:51 Mateusz Loskot + + * [r2276] BUG in DistanceOp: + * Test case and explanation of existing bug in + DistanceOp::closestPoints() recently reported by Aya (Ticket + #236). + * Refactored closestPoints() method to clearly present where is + the bug. Again, chain calls are evil! Bless clear code! + * tests/unit/operation/distance/DistanceOpTest.cpp: see test case + test<17>, read FIXME comments. Uncomment closestPoints() to run + and reproduce the bug. + * A dirty fix: if loc0 or loc1 are nullptr, return nullptr + CoordinatesSequence from closestPoints(). + +2009-03-11 12:18 Mateusz Loskot + + * [r2275] Number of assertions in CoordinateArraySequence class. + +2009-03-10 17:29 Paul Ramsey + + * [r2274] svn:ignore + +2009-03-10 17:28 Paul Ramsey + + * [r2273] svn:ignore + +2009-03-10 17:18 Paul Ramsey + + * [r2272] Update NEWS for 3.1.0 + +2009-03-10 16:23 Paul Ramsey + + * [r2271] Update ChangeLog for 3.1.0 release + +2009-02-07 23:29 Paul Ramsey + + * [r2269] Include GeometrySnapper.h in distribution package. + +2009-02-02 22:58 Sean Gillies + + * [r2268] Note lack of Python support since 3.0 + +2009-02-02 22:53 Sean Gillies + + * [r2267] Notes on state of scripting language bindings + +2009-01-30 20:01 Paul Ramsey + + * [r2266] Add new msvc targets to build + +2009-01-29 19:22 Mateusz Loskot + + * [r2265] Added build/msvc90 with solution and project files for + Microsoft Visual C++ 2009 (9.0). Successfully built and tested + GEOS with Visual C++ 9.0. + +2009-01-29 19:02 Paul Ramsey + + * [r2264] update autogen.bat ref + +2009-01-29 18:56 Mateusz Loskot + + * [r2263] Fixed broken svn:keyword Id + +2009-01-29 18:51 Mateusz Loskot + + * [r2262] Renamed bootstrap.bat to autogen.bat for easier guass of + the script purpose. Wiki updated. + +2009-01-28 01:06 Paul Ramsey + + * [r2261] Add to win32 instructions + +2009-01-27 18:10 Paul Ramsey + + * [r2260] Add GeometryCombiner.h to include dist + +2009-01-27 00:18 Paul Ramsey + + * [r2259] Revert some junk from an old commit, per issue #220 + +2009-01-26 20:44 Frank Warmerdam + + * [r2258] added two new files related to cascaded polygon union + (#226) + +2009-01-24 05:03 Paul Ramsey + + * [r2257] Update + +2009-01-24 05:02 Paul Ramsey + + * [r2256] Update changelog + +2009-01-24 01:33 Mateusz Loskot + + * [r2255] Fixed mixed signed/unsigned integral types in geos_ts_c.cpp, so no compilers should flood with warnings now. -2009-01-24 01:30 mloskot +2009-01-24 01:30 Mateusz Loskot - * build/msvc80/geos_c_dll/geos_c_dll.vcproj, - build/msvc80/geos_lib/geos_lib.vcproj, - build/msvc80/geos_unit/geos_unit.vcproj: Updated projects for - Visual Studio 2005 adding new .h/.cpp files. + * [r2254] Updated projects for Visual Studio 2005 adding new + .h/.cpp files. -2009-01-23 23:58 mloskot +2009-01-23 23:58 Mateusz Loskot - * capi/geos_ts_c.cpp, source/geom/util/GeometryCombiner.cpp, - source/headers/geos/geom/util/GeometryCombiner.h, - source/headers/geos/io/CLocalizer.h, - source/headers/geos/operation/union/CascadedPolygonUnion.h, - source/io/CLocalizer.cpp, - source/operation/union/CascadedPolygonUnion.cpp, - tests/unit/capi/GEOSGeomToWKTTest.cpp, - tests/unit/capi/badthreadtest.c, tests/unit/capi/threadtest.c, - tests/unit/operation/union/CascadedPolygonUnionTest.cpp: Updated - svn:keywords property on C/C++ files. + * [r2253] Updated svn:keywords property on C/C++ files. -2009-01-21 22:18 pramsey +2009-01-21 22:18 Paul Ramsey - * source/geom/Geometry.cpp: Remove geometryCollection protection - from Union/Relate/Intersection/Difference. + * [r2252] Remove geometryCollection protection from + Union/Relate/Intersection/Difference. -2009-01-20 01:01 pramsey +2009-01-20 01:01 Paul Ramsey - * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_ts_c.cpp, - source/headers/geos/operation/union/CascadedPolygonUnion.h, - source/operation/union/CascadedPolygonUnion.cpp: Add - GEOSUnionCascaded(*GEOSGeometry) to CAPI in preparation for - PostGIS hook-up. + * [r2251] Add GEOSUnionCascaded(*GEOSGeometry) to CAPI in + preparation for PostGIS hook-up. -2009-01-19 23:55 pramsey +2009-01-19 23:55 Paul Ramsey - * capi/geos_c.cpp, capi/geos_ts_c.cpp: Formatting changes to - function decls. + * [r2250] Formatting changes to function decls. -2009-01-19 20:41 hobu +2009-01-19 20:41 Howard Butler - * source/Makefile.vc: fixes to allow building in msvc 2003 + * [r2249] fixes to allow building in msvc 2003 -2009-01-19 20:00 pramsey +2009-01-19 20:00 Paul Ramsey - * configure.in: Make warning flags conditional behind a compiler - test... fix to bug #192 ? + * [r2248] Make warning flags conditional behind a compiler test... + fix to bug #192 ? -2009-01-19 16:44 pramsey +2009-01-19 16:44 Paul Ramsey - * source/headers/geos/operation/union/CascadedPolygonUnion.h, - source/operation/union/CascadedPolygonUnion.cpp: Added patch from - hkaiser to allow cascadedunion to be run directly on a - multipolygon. + * [r2247] Added patch from hkaiser to allow cascadedunion to be run + directly on a multipolygon. -2009-01-19 00:12 pramsey +2009-01-19 00:12 Paul Ramsey - * autogen.sh: Fix error left behind from testing. + * [r2246] Fix error left behind from testing. -2009-01-18 23:28 pramsey +2009-01-18 23:28 Paul Ramsey - * autogen.sh: Add some more info on missing tools. + * [r2245] Add some more info on missing tools. -2009-01-18 23:07 pramsey +2009-01-18 23:07 Paul Ramsey - * HOWTO_RELEASE, Makefile.am, build, build/Makefile.am, - build/msvc80, build/msvc80/Makefile.am, build/msvc80/geos_c_dll, - build/msvc80/geos_c_dll/Makefile.am, build/msvc80/geos_lib, - build/msvc80/geos_lib/Makefile.am, build/msvc80/geos_python, - build/msvc80/geos_python/Makefile.am, build/msvc80/geos_ruby, - build/msvc80/geos_ruby/Makefile.am, build/msvc80/geos_unit, - build/msvc80/geos_unit/Makefile.am, configure.in, - source/Makefile.vc, source/headers/geos/Makefile.am: Add msvc - files to distribution target, and update release notes to include - updating + * [r2244] Add msvc files to distribution target, and update release + notes to include updating version in .vc headers. -2009-01-18 22:35 pramsey +2009-01-18 22:35 Paul Ramsey - * configure.in: Add a couple extra program checks. + * [r2243] Add a couple extra program checks. -2009-01-18 21:30 pramsey +2009-01-18 21:30 Paul Ramsey - * autogen.sh: Add version test for aclocal and automake to allow + * [r2241] Add version test for aclocal and automake to allow OpenSolaris to work. -2009-01-18 20:34 pramsey +2009-01-18 20:34 Paul Ramsey + + * [r2240] Apply cascaded union patch, for issue #225 + +2009-01-15 01:00 Paul Ramsey - * configure.in, source/geom/Envelope.cpp, - source/geom/util/GeometryCombiner.cpp, - source/geom/util/Makefile.am, - source/headers/geos/geom/Envelope.h, - source/headers/geos/geom/util/GeometryCombiner.h, - source/headers/geos/index/strtree/AbstractSTRtree.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/union, - source/headers/geos/operation/union/CascadedPolygonUnion.h, - source/headers/geos/operation/union/Makefile.am, - source/index/strtree/AbstractSTRtree.cpp, - source/operation/Makefile.am, source/operation/union, - source/operation/union/CascadedPolygonUnion.cpp, - source/operation/union/Makefile.am, tests/unit, - tests/unit/Makefile.am, tests/unit/operation/union, - tests/unit/operation/union/CascadedPolygonUnionTest.cpp: Apply - cascaded union patch, for issue #225 - -2009-01-15 01:00 pramsey - - * tests/xmltester/Makefile.am: Remove XMLTester from list of - installed programs. - -2009-01-14 20:25 pramsey - - * capi/geos_ts_c.cpp: Remove strdup use from code for compilation - in mingw + * [r2239] Remove XMLTester from list of installed programs. -2009-01-13 20:59 pramsey +2009-01-14 20:25 Paul Ramsey - * configure.in: Add [macros] include to configure.in directly. - Seems to make more recent aclocals happy + * [r2238] Remove strdup use from code for compilation in mingw -2009-01-13 20:43 pramsey +2009-01-13 20:59 Paul Ramsey - * configure.in: Change AC_SUBST to one-per-line instead of + * [r2237] Add [macros] include to configure.in directly. Seems to + make more recent aclocals happy + +2009-01-13 20:43 Paul Ramsey + + * [r2236] Change AC_SUBST to one-per-line instead of one-line-for-all. Seems to make more recent autoconf's happier. -2009-01-13 19:23 pramsey +2009-01-13 19:23 Paul Ramsey - * capi/geos_ts_c.cpp: Change return values for - GEOSWKBWriter_getIncludeSRID_r to match function signature. + * [r2235] Change return values for GEOSWKBWriter_getIncludeSRID_r + to match function signature. -2009-01-13 17:04 pramsey +2009-01-13 17:04 Paul Ramsey - * tests/unit/capi/badthreadtest.c, tests/unit/capi/brokengrammar, - tests/unit/capi/threadtest.c: More files missing from commit. + * [r2234] More files missing from commit. -2009-01-13 15:47 pramsey +2009-01-13 15:47 Paul Ramsey - * capi/geos_ts_c.cpp: Add missing file to SVN. + * [r2233] Add missing file to SVN. -2009-01-13 01:21 pramsey +2009-01-13 01:21 Paul Ramsey - * capi/Makefile.am, capi/geos_c.cpp, capi/geos_c.h.in, - capi/geostest.c, capi/test.expected, capi/test.wkt, - capi/testrunner.sh, tests/unit/Makefile.am, - tests/unit/capi/geostest.c, tests/unit/capi/test.expected, - tests/unit/capi/test.wkt, tests/unit/capi/testrunner.sh: Apply - patch for issue #210 (thread safe c-api) submitted by Chuck - Thibert. + * [r2232] Apply patch for issue #210 (thread safe c-api) submitted + by Chuck Thibert. -2009-01-05 23:42 swongu +2009-01-05 23:42 Stephen Wong - * source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveVertexList.h, - source/operation/linemerge/LineMerger.cpp: Fixed memory leak in - BufferBuilder (#218); added read-only coordinates function in - OffsetCurveVertexList; explicity pass ownership in LineMerger. + * [r2231] Fixed memory leak in BufferBuilder (#218); added + read-only coordinates function in OffsetCurveVertexList; + explicity pass ownership in LineMerger. -2008-11-26 19:41 pramsey +2008-11-26 19:41 Paul Ramsey - * source/headers/geos/noding/Octant.h, - tests/unit/noding/SegmentStringTest.cpp: Octant.h error (#185) - from Denise Macleod. + * [r2229] Octant.h error (#185) from Denise Macleod. -2008-11-26 19:27 pramsey +2008-11-26 19:27 Paul Ramsey - * source/io/WKBWriter.cpp: Allow proper writing out of z ordinates. - From Justin Bronn (#216) + * [r2228] Allow proper writing out of z ordinates. From Justin + Bronn (#216) -2008-11-26 19:25 pramsey +2008-11-26 19:25 Paul Ramsey - * source/io/WKBReader.cpp: Allow readpoint to look at input - dimension and fill higher ordinates. (#217) + * [r2227] Allow readpoint to look at input dimension and fill + higher ordinates. (#217) -2008-11-26 19:06 pramsey +2008-11-26 19:06 Paul Ramsey - * capi/geos_c.cpp, capi/geos_c.h.in: Expose GEOSIsValidReason to - CAPI + * [r2226] Expose GEOSIsValidReason to CAPI -2008-11-18 03:09 pramsey +2008-11-18 03:09 Paul Ramsey - * source/inlines.cpp: Cygwin build fix from MCA + * [r2221] Cygwin build fix from MCA -2008-11-11 17:32 pramsey +2008-11-11 17:32 Paul Ramsey - * source/geomgraph/EdgeList.cpp, - source/headers/geos/geomgraph/EdgeList.h, - source/operation/overlay/OverlayOp.cpp: Memory leak on invalid - polygons in intersection(). (#170) from Denise MacLeod. + * [r2220] Memory leak on invalid polygons in intersection(). (#170) + from Denise MacLeod. -2008-11-05 20:52 pramsey +2008-11-05 20:52 Paul Ramsey - * source/geom/prep/PreparedLineStringIntersects.cpp: Another minor - memory leak removed. + * [r2218] Another minor memory leak removed. -2008-10-28 15:47 pramsey +2008-10-28 15:47 Paul Ramsey - * source/inlines.cpp: Cygwin/Mingw patch from Mark Cave-Ayland + * [r2217] Cygwin/Mingw patch from Mark Cave-Ayland -2008-10-23 17:33 warmerdam +2008-10-23 17:33 Frank Warmerdam - * source/operation/valid/IsValidOp.cpp: set isChecked flag after - checking to fix memory leak (#169) + * [r2210] set isChecked flag after checking to fix memory leak + (#169) -2008-10-16 00:40 pramsey +2008-10-16 00:40 Paul Ramsey - * HOWTO_RELEASE: change info to point to osgeo.org + * [r2203] change info to point to osgeo.org -2008-10-14 15:01 pramsey +2008-10-14 15:01 Paul Ramsey - * capi/geos_c.cpp, capi/geos_c.h.in: Consistent const declarations - in c-api ($#209) + * [r2200] Consistent const declarations in c-api ($#209) -2008-10-13 22:40 pramsey +2008-10-13 22:40 Paul Ramsey - * source/headers/geos/io/Makefile.am: Add CLocalizer.h to build so - it gets packaged in make dist + * [r2199] Add CLocalizer.h to build so it gets packaged in make + dist -2008-10-10 17:46 pramsey +2008-10-10 17:46 Paul Ramsey - * source/geom/prep/PreparedPolygonContainsProperly.cpp: One last - memory leak fix. + * [r2198] One last memory leak fix. -2008-10-09 16:39 pramsey +2008-10-09 16:39 Paul Ramsey - * source/geom/prep/PreparedPolygonIntersects.cpp: Memory leak fix - for for prepared intersects. (#207) + * [r2197] Memory leak fix for for prepared intersects. (#207) -2008-10-04 18:14 pramsey +2008-10-04 18:14 Paul Ramsey - * source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h, - source/noding/MCIndexSegmentSetMutualIntersector.cpp: Memory leak - fix for prepared geometry, from Hartmut Kaiser. (#207) + * [r2196] Memory leak fix for prepared geometry, from Hartmut + Kaiser. (#207) -2008-09-29 19:24 pramsey +2008-09-29 19:24 Paul Ramsey - * capi/geos_c.cpp: Put function sig on one line + * [r2195] Put function sig on one line -2008-09-23 23:01 mloskot +2008-09-23 23:01 Mateusz Loskot - * source/geom/prep/AbstractPreparedPolygonContains.cpp, - source/geom/prep/PreparedPolygon.cpp, - source/geom/prep/PreparedPolygonContains.cpp, - source/geom/prep/PreparedPolygonPredicate.cpp, - source/headers/geos/geom/prep/PreparedPolygonContains.h, - source/headers/geos/index/SpatialIndex.h, - source/headers/geos/index/chain/MonotoneChain.h, - source/headers/geos/index/strtree/ItemBoundable.h, - source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h, - source/headers/geos/noding/SegmentSetMutualIntersector.h, - source/index/chain/MonotoneChain.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/ItemBoundable.cpp: Moved some ctor/dctor - bodies from headers to translation units. Improved source code - readability. TODO: We need to run a beast like AStyle on all GEOS - code because many places are very hard to read. + * [r2194] Moved some ctor/dctor bodies from headers to translation + units. Improved source code readability. TODO: We need to run a + beast like AStyle on all GEOS code because many places are very + hard to read. -2008-09-23 22:55 mloskot +2008-09-23 22:55 Mateusz Loskot - * source/noding/MCIndexSegmentSetMutualIntersector.cpp: - MCIndexSegmentSetMutualIntersector::addToIndex: Completed BWJ's - comment on memory leaks with important observations about objects - relation & lifetime. The note is a diagnosis of roots of the - problem. Improved source code readability. + * [r2193] MCIndexSegmentSetMutualIntersector::addToIndex: Completed + BWJ's comment on memory leaks with important observations about + objects relation & lifetime. The note is a diagnosis of roots of + the problem. Improved source code readability. -2008-09-22 21:48 mloskot +2008-09-22 21:48 Mateusz Loskot - * source/headers/geos/io/WKBWriter.h: Use conditional operators - instead of cast bool to int. + * [r2192] Use conditional operators instead of cast bool to int. -2008-09-22 20:16 mloskot +2008-09-22 20:16 Mateusz Loskot - * source/simplify/TopologyPreservingSimplifier.cpp: Removed - unnecessary std::endl from debug messages in + * [r2191] Removed unnecessary std::endl from debug messages in TopologyPreservingSimplifier.cpp. -2008-09-21 21:32 mloskot +2008-09-21 21:32 Mateusz Loskot - * source/Makefile.vc: Patched NMAKE makefiles: replaced lib.exe - with link.exe /lib command to enabled compilation using Microsoft - Visual C++ Toolkit 2003 + * [r2190] Patched NMAKE makefiles: replaced lib.exe with link.exe + /lib command to enabled compilation using Microsoft Visual C++ + Toolkit 2003 -2008-09-16 21:09 mloskot +2008-09-16 21:09 Mateusz Loskot - * source/operation/predicate/SegmentIntersectionTester.cpp, - source/util/math.cpp: Patch fixing build problems on Solaris - (Ticket #205). + * [r2189] Patch fixing build problems on Solaris (Ticket #205). -2008-09-16 21:01 mloskot +2008-09-16 21:01 Mateusz Loskot - * tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Fixed EOL - to LF. + * [r2188] Fixed EOL to LF. -2008-09-16 20:58 mloskot +2008-09-16 20:58 Mateusz Loskot - * source/geom/prep/PreparedGeometryFactory.cpp, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Fixed crash - of Prepared Geometry construction with nullptr to Geometry object - (Ticket #197). + * [r2187] Fixed crash of Prepared Geometry construction with + nullptr to Geometry object (Ticket #197). -2008-09-16 20:55 mloskot +2008-09-16 20:55 Mateusz Loskot - * build/msvc80/geos_unit/geos_unit.vcproj: Added - PreparedGeometryFactoryTest to geos_unit.vcproj. + * [r2186] Added PreparedGeometryFactoryTest to geos_unit.vcproj. -2008-09-16 20:15 mloskot +2008-09-16 20:15 Mateusz Loskot - * build/msvc80/geos_lib/geos_lib.vcproj: Added CLocalizer to - geos_lib.vcproj project for Visual C++ 2005/2008. + * [r2185] Added CLocalizer to geos_lib.vcproj project for Visual + C++ 2005/2008. -2008-09-16 20:13 mloskot +2008-09-16 20:13 Mateusz Loskot - * tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp: Include - missing in isPointInRingTest.cpp + * [r2184] Include missing in isPointInRingTest.cpp -2008-09-16 20:05 mloskot +2008-09-16 20:05 Mateusz Loskot - * source/Makefile.vc, source/io/CLocalizer.cpp: Fixed undeclared - std::locale in CLocalizer when building using Visual C++ (Ticket - #201) + * [r2183] Fixed undeclared std::locale in CLocalizer when building + using Visual C++ (Ticket #201) -2008-08-31 20:28 mloskot +2008-08-31 20:28 Mateusz Loskot - * tests/unit/geos_unit.cpp: Replaced incorrect with - in geos_unit.cpp. + * [r2182] Replaced incorrect with in + geos_unit.cpp. -2008-08-31 20:23 mloskot +2008-08-31 20:23 Mateusz Loskot - * tests/unit/geos_unit.cpp: Added missing include in - geos_unit.cpp. + * [r2181] Added missing include in geos_unit.cpp. -2008-08-31 19:54 mloskot +2008-08-31 19:54 Mateusz Loskot - * source/headers/geos/io/CLocalizer.h, source/io/CLocalizer.cpp: - Removed use of strdup function to fix compilation with GCC 4.3.1 - (Ticket #204). + * [r2180] Removed use of strdup function to fix compilation with + GCC 4.3.1 (Ticket #204). -2008-08-29 18:17 mloskot +2008-08-29 18:17 Mateusz Loskot - * capi/geos_c.cpp: Removed redundant return expressions from - geos_c.cpp. Testing changes notifications for buildbot. + * [r2179] Removed redundant return expressions from geos_c.cpp. + Testing changes notifications for buildbot. -2008-08-29 00:30 mloskot +2008-08-29 00:30 Mateusz Loskot - * capi/geos_c.cpp: Fixed execution paths and removed redundant - return expr in some C API calls. + * [r2176] Fixed execution paths and removed redundant return expr + in some C API calls. -2008-08-29 00:29 mloskot +2008-08-29 00:29 Mateusz Loskot - * source/headers/geos/io/WKBWriter.h, source/io/WKBWriter.cpp: - Added missing virtual destructor to WKBWriter class. + * [r2175] Added missing virtual destructor to WKBWriter class. -2008-08-28 22:20 sgillies +2008-08-28 22:20 Sean Gillies - * capi/geos_c.cpp, source/headers/geos/io.h, - source/headers/geos/io/CLocalizer.h, source/io/CLocalizer.cpp, - source/io/Makefile.am: Added CLocalizer class that switches to C - locale and restores to the outer context's locale when deleted - (#201) + * [r2174] Added CLocalizer class that switches to C locale and + restores to the outer context's locale when deleted (#201) -2008-08-28 21:35 mloskot +2008-08-28 21:35 Mateusz Loskot - * tests/unit/Makefile.am, tests/unit/capi/GEOSGeomToWKTTest.cpp: - tests/unit: added GEOSGeomToWKTTest. + * [r2173] tests/unit: added GEOSGeomToWKTTest. -2008-08-28 19:16 sgillies +2008-08-28 19:16 Sean Gillies - * capi/geos_c.cpp: Switch to C locale while reading and writing WKT - and restore to the original context's locale afterward (#201) + * [r2172] Switch to C locale while reading and writing WKT and + restore to the original context's locale afterward (#201) -2008-08-22 17:25 warmerdam +2008-08-22 17:25 Frank Warmerdam - * source/operation/buffer/BufferOp.cpp: include cmath for - std::pow() and std:log() on MSVC7.1 (#199) + * [r2171] include cmath for std::pow() and std:log() on MSVC7.1 + (#199) -2008-08-22 16:10 mloskot +2008-08-22 16:10 Mateusz Loskot - * build/bjam/README: Added build/bjam/README with status note. + * [r2170] Added build/bjam/README with status note. -2008-08-19 17:02 mloskot +2008-08-19 17:02 Mateusz Loskot - * tests/unit/geom/LineStringTest.cpp: LineStringTest: fixed memory - leak. + * [r2169] LineStringTest: fixed memory leak. -2008-08-19 17:00 mloskot +2008-08-19 17:00 Mateusz Loskot - * source/geom/util/CoordinateOperation.cpp, - source/geom/util/GeometryEditor.cpp: geos/geom/util: Prefer - strict static_cast than C-style cast. Commented ownership - transfer of coordinates object. + * [r2168] geos/geom/util: Prefer strict static_cast than C-style + cast. Commented ownership transfer of coordinates object. -2008-08-19 00:18 mloskot +2008-08-19 00:18 Mateusz Loskot - * tests/unit/algorithm/ConvexHullTest.cpp: - tests/unit/algorithm/ConvexHullTest.cpp: Fixed memory leaks. + * [r2167] tests/unit/algorithm/ConvexHullTest.cpp: Fixed memory + leaks. -2008-08-19 00:05 mloskot +2008-08-19 00:05 Mateusz Loskot - * tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp: - tests/unit/algorithm/CGAlgorithms: Fixed memory leaks. + * [r2166] tests/unit/algorithm/CGAlgorithms: Fixed memory leaks. -2008-08-18 23:45 mloskot +2008-08-18 23:45 Mateusz Loskot - * tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp: - tests/unit/algorithm/CGAlgorithms: Fixed number of memory leaks. + * [r2165] tests/unit/algorithm/CGAlgorithms: Fixed number of memory + leaks. -2008-08-18 23:30 mloskot +2008-08-18 23:30 Mateusz Loskot - * tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp: tests/unit/capi: Fixed - number of memory leaks. + * [r2164] tests/unit/capi: Fixed number of memory leaks. -2008-08-18 16:32 mloskot +2008-08-18 16:32 Mateusz Loskot - * tests/bigtest/GeometryTestFactory.cpp, - tests/bigtest/TestSweepLineSpeed.cpp: tests/bigtest: Pointed out - number of memory leaks but not fixing them, waiting for comments. + * [r2163] tests/bigtest: Pointed out number of memory leaks but not + fixing them, waiting for comments. -2008-08-18 16:30 mloskot +2008-08-18 16:30 Mateusz Loskot - * tests/unit/algorithm/ConvexHullTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/MultiLineStringTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, - tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, - tests/unit/utility.h: tests/unit: added tests cases to + * [r2162] tests/unit: added tests cases to PreparedGeometryFactoryTest, refactored casting utils and geometry comparators, small cleanup. -2008-08-18 16:29 mloskot +2008-08-18 16:29 Mateusz Loskot - * source/algorithm/RayCrossingCounter.cpp, - source/algorithm/locate/IndexedPointInAreaLocator.cpp, - source/algorithm/locate/PointOnGeometryLocator.cpp, - source/geom/util/ComponentCoordinateExtracter.cpp, - source/index/intervalrtree/IntervalRTreeBranchNode.cpp, - source/index/intervalrtree/IntervalRTreeLeafNode.cpp, - source/index/intervalrtree/IntervalRTreeNode.cpp, - source/index/intervalrtree/SortedPackedIntervalRTree.cpp, - source/noding/FastSegmentSetIntersectionFinder.cpp, - source/noding/MCIndexSegmentSetMutualIntersector.cpp, - source/noding/NodedSegmentString.cpp, - source/noding/SegmentIntersectionDetector.cpp, - source/noding/SegmentStringUtil.cpp: Fixed svn:keywords. + * [r2161] Fixed svn:keywords. -2008-08-18 16:27 mloskot +2008-08-18 16:27 Mateusz Loskot - * source/headers/geos/util.h: Fixed UNREFERENCED_PARAMETER macro. + * [r2160] Fixed UNREFERENCED_PARAMETER macro. -2008-08-18 16:27 mloskot +2008-08-18 16:27 Mateusz Loskot - * source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h, - source/headers/geos/geom/prep/BasicPreparedGeometry.h, - source/headers/geos/geom/prep/PreparedGeometry.h, - source/headers/geos/geom/prep/PreparedLineString.h, - source/headers/geos/geom/prep/PreparedLineStringIntersects.h, - source/headers/geos/geom/prep/PreparedPoint.h, - source/headers/geos/geom/prep/PreparedPolygon.h, - source/headers/geos/geom/prep/PreparedPolygonContains.h, - source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h, - source/headers/geos/geom/prep/PreparedPolygonCovers.h, - source/headers/geos/geom/prep/PreparedPolygonIntersects.h, - source/headers/geos/geom/prep/PreparedPolygonPredicate.h: Fixed - svn:keywords. + * [r2159] Fixed svn:keywords. -2008-08-18 16:24 mloskot +2008-08-18 16:24 Mateusz Loskot - * source/geom/prep/AbstractPreparedPolygonContains.cpp, - source/geom/prep/BasicPreparedGeometry.cpp, - source/geom/prep/PreparedGeometry.cpp, - source/geom/prep/PreparedGeometryFactory.cpp, - source/geom/prep/PreparedLineString.cpp, - source/geom/prep/PreparedLineStringIntersects.cpp, - source/geom/prep/PreparedPoint.cpp, - source/geom/prep/PreparedPolygon.cpp, - source/geom/prep/PreparedPolygonContains.cpp, - source/geom/prep/PreparedPolygonContainsProperly.cpp, - source/geom/prep/PreparedPolygonCovers.cpp, - source/geom/prep/PreparedPolygonIntersects.cpp, - source/geom/prep/PreparedPolygonPredicate.cpp: geom/prep: - Refactored kamikaze casts to more readable form. Fixed - svn:keywords. + * [r2158] geom/prep: Refactored kamikaze casts to more readable + form. Fixed svn:keywords. -2008-08-12 00:25 mloskot +2008-08-12 00:25 Mateusz Loskot - * source/headers/geos/geomPrep.h: Fixed Id keywords. + * [r2157] Fixed Id keywords. -2008-08-12 00:23 mloskot +2008-08-12 00:23 Mateusz Loskot - * tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, - tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, - tests/unit/algorithm/ConvexHullTest.cpp, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp, - tests/unit/operation/IsSimpleOpTest.cpp: Fixed EOL to LF in - trunk/tests. + * [r2156] Fixed EOL to LF in trunk/tests. -2008-08-12 00:09 mloskot +2008-08-12 00:09 Mateusz Loskot - * source/headers/geos/geom/prep/PreparedGeometryFactory.h: Updated - svn:keywords property. + * [r2155] Updated svn:keywords property. -2008-08-12 00:03 mloskot +2008-08-12 00:03 Mateusz Loskot - * tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Updated - svn:keywords property. + * [r2154] Updated svn:keywords property. -2008-08-11 23:54 mloskot +2008-08-11 23:54 Mateusz Loskot - * tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Refactored - tabs vs spaces in PreparedGeometryFactoryTest. + * [r2153] Refactored tabs vs spaces in PreparedGeometryFactoryTest. -2008-08-11 23:52 mloskot +2008-08-11 23:52 Mateusz Loskot - * source/headers/geos/geom/prep/PreparedGeometryFactory.h: - PreparedGeometry must be a complete type where it is destroyed by - the factory (Ticket #198). + * [r2152] PreparedGeometry must be a complete type where it is + destroyed by the factory (Ticket #198). -2008-08-11 23:42 mloskot +2008-08-11 23:42 Mateusz Loskot - * source/headers/geos/geom/prep/PreparedGeometryFactory.h, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Completed - PreparedGeometryFactory class with missing named destructor for - PreparedGeometry (Ticket #198) + * [r2151] Completed PreparedGeometryFactory class with missing + named destructor for PreparedGeometry (Ticket #198) -2008-08-11 23:35 mloskot +2008-08-11 23:35 Mateusz Loskot - * tests/unit/geom/prep/.PreparedGeometryFactoryTest.cpp.swp: - Removed .PreparedGeometryFactoryTest.cpp.swp that must sneaked - accidentally. + * [r2150] Removed .PreparedGeometryFactoryTest.cpp.swp that must + sneaked accidentally. -2008-08-11 22:48 mloskot +2008-08-11 22:48 Mateusz Loskot - * tests/unit/Makefile.am, tests/unit/geom/prep, - tests/unit/geom/prep/.PreparedGeometryFactoryTest.cpp.swp, - tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp: Added - PreparedGeometryFactoryTest with first test cases included. - FIXME: The test causes memory leak because we don't know how to - destroy PreparedGeometry objects returned by the factory, - discussing on the geos-devel list now. + * [r2149] Added PreparedGeometryFactoryTest with first test cases + included. FIXME: The test causes memory leak because we don't + know how to destroy PreparedGeometry objects returned by the + factory, discussing on the geos-devel list now. -2008-08-07 16:59 pramsey +2008-08-07 16:59 Paul Ramsey - * source/algorithm/RobustDeterminant.cpp: Added original author to - main copyright block. + * [r2148] Added original author to main copyright block. -2008-08-07 16:57 pramsey +2008-08-07 16:57 Paul Ramsey - * source/headers/geos/timeval.h: Change to standard header, with - (c) credit to author. + * [r2147] Change to standard header, with (c) credit to author. -2008-08-01 23:23 mloskot +2008-08-01 23:23 Mateusz Loskot - * ChangeLog: Updated ChangeLog with latest submissions. Hmm, should - we stil maintain the ChangeLog file? + * [r2146] Updated ChangeLog with latest submissions. Hmm, should we + stil maintain the ChangeLog file? -2008-07-31 17:08 mloskot +2008-07-31 17:08 Mateusz Loskot - * tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp: Fixed tabs, - hopefully. Updated svn:keywords property. + * [r2145] Fixed tabs, hopefully. Updated svn:keywords property. -2008-07-31 17:01 mloskot +2008-07-31 17:01 Mateusz Loskot - * capi/geos_c.cpp, capi/geos_c.h.in, tests/unit/Makefile.am, - tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp: Patch - completing C API interface with wrapper on + * [r2144] Patch completing C API interface with wrapper on Polygonizer::getCutEdges (Ticket #195). Unit test included in tests/unit/capi/GEOSPolygonizer_getCutEdgeTest.cpp. Thanks to Jurgen E. Fischer for this patch. -2008-07-26 23:06 mloskot +2008-07-26 23:06 Mateusz Loskot - * doc/example.cpp, source/geomgraph/GeometryGraph.cpp, - source/headers/geos/noding/FastNodingValidator.h, - source/headers/geos/noding/IntersectionAdder.h, - source/index/quadtree/DoubleBits.cpp, - source/io/StringTokenizer.cpp, - tests/bigtest/TestSweepLineSpeed.cpp: Number of fixes enabling - GEOS compilation with GCC 4.3 (Ticket #167). + * [r2143] Number of fixes enabling GEOS compilation with GCC 4.3 + (Ticket #167). -2008-07-26 21:00 mloskot +2008-07-26 21:00 Mateusz Loskot - * capi/geos_c.h.in: Guarded version macros with #ifndef conditions - to avoid redefinition errors (Ticket #167). + * [r2142] Guarded version macros with #ifndef conditions to avoid + redefinition errors (Ticket #167). -2008-07-26 20:47 mloskot +2008-07-26 20:47 Mateusz Loskot - * source/headers/geos/version.h.in, - source/headers/geos/version.h.vc: Guarded version macros with - #ifndef conditions to avoid redefinition errors (Ticket #167). + * [r2141] Guarded version macros with #ifndef conditions to avoid + redefinition errors (Ticket #167). -2008-07-26 20:24 mloskot +2008-07-26 20:24 Mateusz Loskot - * macros/ac_python_devel.m4: Fixed problems with finding libpython - on Mac Darwin (Ticket #191). + * [r2140] Fixed problems with finding libpython on Mac Darwin + (Ticket #191). -2008-07-26 19:57 mloskot +2008-07-26 19:57 Mateusz Loskot - * autogen.sh: Updated svn:keywords property. + * [r2139] Updated svn:keywords property. -2008-07-26 19:56 mloskot +2008-07-26 19:56 Mateusz Loskot - * autogen.sh: Fixed autogen.sh for OpenSolaris (Ticket #192). + * [r2138] Fixed autogen.sh for OpenSolaris (Ticket #192). -2008-07-25 21:00 mloskot +2008-07-25 21:00 Mateusz Loskot - * build/README, build/msvc80/README, macros/geos.m4, - source/headers/geos/algorithm/CentralEndpointIntersector.h, - source/headers/geos/geomPrep.h, - source/headers/geos/indexIntervalRTree.h, - source/headers/geos/noding/FastNodingValidator.h, - source/headers/geos/noding/SingleInteriorIntersectionFinder.h, - source/noding/FastNodingValidator.cpp, - source/noding/SingleInteriorIntersectionFinder.cpp, - source/operation/buffer/OffsetCurveVertexList.h, - swig/python/tests/TESTING.txt: Updated svn:keywords property + * [r2137] Updated svn:keywords property -2008-07-25 20:56 mloskot +2008-07-25 20:56 Mateusz Loskot - * tests/unit/operation/IsSimpleOpTest.cpp, - tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp: - Updated svn:keywords property - -2008-07-19 19:11 warmerdam - - * source/Makefile.vc: added manifest handling for DLLs (#193) - -2008-07-19 19:07 warmerdam - - * source/Makefile.vc: added rules to create platform.h, version.h - and geos_c.h from templates on win32 - -2008-07-15 22:04 mloskot - - * ChangeLog, capi/geos_c.cpp, source/algorithm/ConvexHull.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/locate/IndexedPointInAreaLocator.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/GeometryGraph.cpp, - source/headers/geos/geom/Coordinate.inl, - source/headers/geos/geom/LineSegment.inl, - source/headers/geos/io/WKBReader.h, - source/headers/geos/noding/IntersectionAdder.h, - source/index/bintree/Key.cpp, source/index/quadtree/Key.cpp, - source/io/ByteOrderValues.cpp, source/noding/Octant.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/planargraph/DirectedEdge.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp, - source/util/math.cpp, tests/xmltester/XMLTester.cpp, - tests/xmltester/markup/MarkupSTL.h: Fixed compilation on with Sun - Studio compiler on Solaris x86 and Sparc (Ticket #189). Thanks to - Magne Mahre for the patch. - -2008-07-15 13:35 mloskot - - * source/Makefile.vc: For building with Visual C++, added new flag - DEBUG=1 (see GEOS building instructions on GEOS Wiki). Added - missing flags for Visual C++ compiler, in release and debug - configuration. - -2008-05-20 21:34 mloskot - - * source/dirlist.mk: Added missing subdirs to source/dirlist.mk - -2008-05-20 21:31 mloskot - - * source/geom/prep: Updated svn:ignore patterns. - -2008-05-20 21:25 mloskot - - * ChangeLog, bootstrap.bat, build/msvc80/geos.sln, - build/msvc80/geos_lib/geos_lib.vcproj, - source/geom/GeometryComponentFilter.cpp, - source/geom/PrecisionModel.cpp, - source/geom/util/GeometryTransformer.cpp, - source/headers/geos/geom/BinaryOp.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/noding/Octant.h, - source/headers/geos/noding/ScaledNoder.h, - source/headers/geos/operation/overlay/PointBuilder.h, - source/headers/geos/util.h, source/index/quadtree/NodeBase.cpp, - source/noding/ScaledNoder.cpp, source/noding/SegmentString.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/operation/overlay/FuzzyPointLocator.cpp, - source/operation/overlay/OverlayOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/GeometrySnapper.cpp, - source/simplify/DouglasPeuckerSimplifier.cpp, - tests/unit/geom/DimensionTest.cpp: * source\headers\geos\util.h: - Add UNREFERENCED_PARAMETER macro. + * [r2136] Updated svn:keywords property + +2008-07-19 19:11 Frank Warmerdam + + * [r2135] added manifest handling for DLLs (#193) + +2008-07-19 19:07 Frank Warmerdam + + * [r2134] added rules to create platform.h, version.h and geos_c.h + from templates on win32 + +2008-07-15 22:04 Mateusz Loskot + + * [r2131] Fixed compilation on with Sun Studio compiler on Solaris + x86 and Sparc (Ticket #189). Thanks to Magne Mahre for the patch. + +2008-07-15 13:35 Mateusz Loskot + + * [r2130] For building with Visual C++, added new flag DEBUG=1 (see + GEOS building instructions on GEOS Wiki). Added missing flags for + Visual C++ compiler, in release and debug configuration. + +2008-05-20 21:34 Mateusz Loskot + + * [r2129] Added missing subdirs to source/dirlist.mk + +2008-05-20 21:31 Mateusz Loskot + + * [r2128] Updated svn:ignore patterns. + +2008-05-20 21:25 Mateusz Loskot + + * [r2127] * source\headers\geos\util.h: Add UNREFERENCED_PARAMETER + macro. * source\geom\PrecisionModel.cpp, source\geom\GeometryComponentFilter.cpp, source\geom\util\GeometryTransformer.cpp, @@ -808,521 +3062,368 @@ * build\msvc80\geos_lib\geos_lib.vcproj: Remove non-existing source files. -2008-05-20 20:45 mloskot +2008-05-20 20:45 Mateusz Loskot + + * [r2126] source/makefile.vc: Removed non-existing file entry: + PreparedPolygonLineIntersects.obj. + +2008-05-20 20:33 Mateusz Loskot + + * [r2125] * bootstrap.bat: Added script generating headers for use + with Visual C++ compiler. DO NOT include this script in GEOS + source distribution. * source/makefile.vc: Do not make copies of + 3 dynamic headers but let users to use bootstrap.bat instead. + +2008-02-07 22:59 Frank Warmerdam + + * [r2123] make sure makefile.vc gets distributed + +2008-02-06 22:17 Frank Warmerdam + + * [r2122] try to fix up the files include in distribution, and + remove unused files from Makefile.vc (#175) + +2008-01-30 22:34 Ben Jubb - * ChangeLog, source/Makefile.vc: source/makefile.vc: Removed - non-existing file entry: PreparedPolygonLineIntersects.obj. + * [r2120] Added documentation, for benefit of doxygen. -2008-05-20 20:33 mloskot +2008-01-30 22:30 Ben Jubb - * ChangeLog, bootstrap.bat, source/Makefile.vc: * bootstrap.bat: - Added script generating headers for use with Visual C++ compiler. - DO NOT include this script in GEOS source distribution. * - source/makefile.vc: Do not make copies of 3 dynamic headers but - let users to use bootstrap.bat instead. - -2008-02-07 22:59 warmerdam - - * Makefile.am: make sure makefile.vc gets distributed - -2008-02-06 22:17 warmerdam - - * source/Makefile.am, source/Makefile.vc, - source/headers/geos/noding/Makefile.am: try to fix up the files - include in distribution, and remove unused files from Makefile.vc - (#175) - -2008-01-30 22:34 benjubb - - * source/headers/geos/algorithm/RayCrossingCounter.h, - source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h, - source/headers/geos/algorithm/locate/PointOnGeometryLocator.h, - source/headers/geos/algorithm/locate/SimplePointInAreaLocator.h, - source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h, - source/headers/geos/geom/prep/BasicPreparedGeometry.h, - source/headers/geos/geom/prep/PreparedGeometry.h, - source/headers/geos/geom/prep/PreparedGeometryFactory.h, - source/headers/geos/geom/prep/PreparedLineString.h, - source/headers/geos/geom/prep/PreparedLineStringIntersects.h, - source/headers/geos/geom/prep/PreparedPoint.h, - source/headers/geos/geom/prep/PreparedPolygon.h, - source/headers/geos/geom/prep/PreparedPolygonContains.h, - source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h, - source/headers/geos/geom/prep/PreparedPolygonCovers.h, - source/headers/geos/geom/prep/PreparedPolygonIntersects.h, - source/headers/geos/geom/prep/PreparedPolygonPredicate.h, - source/headers/geos/geom/util/ComponentCoordinateExtracter.h, - source/headers/geos/geomUtil.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h, - source/headers/geos/indexIntervalRTree.h, - source/headers/geos/noding/FastSegmentSetIntersectionFinder.h, - source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h, - source/headers/geos/noding/NodableSegmentString.h, - source/headers/geos/noding/NodedSegmentString.h, - source/headers/geos/noding/SegmentIntersectionDetector.h, - source/headers/geos/noding/SegmentSetMutualIntersector.h, - source/headers/geos/noding/SegmentStringUtil.h: Added - documentation, for benefit of doxygen. - -2008-01-30 22:30 benjubb - - * source/geom/prep/PreparedPolygonIntersects.cpp: deleted - out-commented line. - -2008-01-30 22:29 benjubb - - * source/geom/prep/PreparedPolygon.cpp: removed ref to - PreparedPolygonLineIntersection - -2008-01-30 22:18 benjubb - - * source/geom/prep/Makefile.am, - source/headers/geos/geom/prep/Makefile.am: Removed refs to - PreparedPolygonLineIntersection. - -2008-01-30 22:17 benjubb - - * source/geom/prep/PreparedPolygonLineIntersection.cpp, - source/headers/geos/geom/prep/PreparedPolygonLineIntersection.h: - Deleted. not used, not needed. + * [r2119] deleted out-commented line. + +2008-01-30 22:29 Ben Jubb + + * [r2118] removed ref to PreparedPolygonLineIntersection + +2008-01-30 22:18 Ben Jubb + + * [r2117] Removed refs to PreparedPolygonLineIntersection. + +2008-01-30 22:17 Ben Jubb + + * [r2116] Deleted. not used, not needed. -2008-01-30 19:09 benjubb +2008-01-30 19:09 Ben Jubb + + * [r2115] Added for benefit of doxygen. + +2008-01-29 17:55 Ben Jubb - * source/headers/geos/geomPrep.h: Added for benefit of doxygen. + * [r2114] Some small changes to improve the memory management. + These changes plug a few leaks, but not all. -2008-01-29 17:55 benjubb +2008-01-29 17:49 Ben Jubb - * source/geom/prep/AbstractPreparedPolygonContains.cpp, - source/geom/prep/PreparedLineString.cpp, - source/geom/prep/PreparedPolygon.cpp, - source/headers/geos/geom/prep/PreparedLineString.h, - source/headers/geos/noding/SegmentIntersectionDetector.h, - source/headers/geos/noding/SegmentIntersector.h, - source/noding/MCIndexSegmentSetMutualIntersector.cpp, - source/noding/SegmentIntersectionDetector.cpp: Some small changes - to improve the memory management. These changes plug a few leaks, - but not all. - -2008-01-29 17:49 benjubb - - * source/operation/predicate/RectangleContains.cpp: Fix a bug in - the shortcut test for containment in a rectangle. This test - wasn't correctly testing for case of a point on the boundary. + * [r2113] Fix a bug in the shortcut test for containment in a + rectangle. This test wasn't correctly testing for case of a point + on the boundary. Was also a bug in JTS (now fixed). -2008-01-29 17:37 benjubb +2008-01-29 17:37 Ben Jubb - * source/geom/Geometry.cpp: Patch to fix bug in ticket #171 + * [r2112] Patch to fix bug in ticket #171 -2008-01-22 19:34 benjubb +2008-01-22 19:34 Ben Jubb - * capi/geos_c.h.in, source/headers/geos/version.h.vc: Updated for - VC to give correct version (3.1.0-CAPI-1.5.0). + * [r2111] Updated for VC to give correct version + (3.1.0-CAPI-1.5.0). -2008-01-18 00:37 benjubb +2008-01-18 00:37 Ben Jubb - * configure.in: Added to CAPI interface, cleared - CAPI_INTERFACE_REV, bumped AGE & CURRENT + * [r2110] Added to CAPI interface, cleared CAPI_INTERFACE_REV, + bumped AGE & CURRENT -2008-01-18 00:35 benjubb +2008-01-18 00:35 Ben Jubb - * source/index/chain/MonotoneChainBuilder.cpp: Fixed a bug in the - handling of line strings with repeated points. + * [r2109] Fixed a bug in the handling of line strings with repeated + points. -This line, and those below, will be ignored-- M MonotoneChainBuilder.cpp -2008-01-17 19:15 benjubb +2008-01-17 19:15 Ben Jubb - * capi/geos_c.cpp: Fixed a misspelling, - GEOSPreparedContainsProperty => GEOSPreparedContainsProperly + * [r2108] Fixed a misspelling, GEOSPreparedContainsProperty => + GEOSPreparedContainsProperly -2008-01-16 18:36 warmerdam +2008-01-16 18:36 Frank Warmerdam - * source/Makefile.vc: updated to include post 3.0 classes + * [r2107] updated to include post 3.0 classes -2008-01-09 23:49 benjubb +2008-01-09 23:49 Ben Jubb - * capi/geos_c.cpp, capi/geos_c.h.in: Added support for prepared - geometry + * [r2106] Added support for prepared geometry -2008-01-09 23:48 benjubb +2008-01-09 23:48 Ben Jubb - * source/headers/geos/geom/prep/PreparedGeometryFactory.h: removed - extraneous 'using namespace' + * [r2105] removed extraneous 'using namespace' -2008-01-03 21:11 benjubb +2008-01-03 21:11 Ben Jubb - * source/noding/MCIndexSegmentSetMutualIntersector.cpp: commented - out some delete's in + * [r2104] commented out some delete's in MCIndexSegmentSetMutualIntersector::addToIndex, to fix a bug in prepared contains() predicate. -2008-01-02 23:23 sgillies +2008-01-02 23:23 Sean Gillies - * swig/Makefile.am: Conditionally add swig/python,ruby to SUBDIRS + * [r2102] Conditionally add swig/python,ruby to SUBDIRS -2007-12-22 00:04 mloskot +2007-12-22 00:04 Mateusz Loskot - * build/bjam/geos/Jamfile, build/bjam/geos_c, build/bjam/geos_unit: - Updated configuration of experimental builder based on + * [r2101] Updated configuration of experimental builder based on Boost.Build. GEOS compiles with bjam successfully as static library. -2007-12-21 23:50 mloskot +2007-12-21 23:50 Mateusz Loskot - * source/Makefile.vc, source/algorithm/locate, - source/index/intervalrtree: Updated Visual C++ makefiles with new - submissions from Ben. Now, new GEOS features compiles with NMAKE - too. + * [r2100] Updated Visual C++ makefiles with new submissions from + Ben. Now, new GEOS features compiles with NMAKE too. -2007-12-21 23:31 mloskot +2007-12-21 23:31 Mateusz Loskot - * source/headers/geos/algorithm/Makefile.am: Removed - SimplePointInAreaLocator.h from algorithm/Makefile.am (header - migrated to algorithm/locate). + * [r2099] Removed SimplePointInAreaLocator.h from + algorithm/Makefile.am (header migrated to algorithm/locate). -2007-12-21 23:26 mloskot +2007-12-21 23:26 Mateusz Loskot - * source/algorithm/Makefile.am: Added comment about deprecated - translation units in source/algorithm. + * [r2098] Added comment about deprecated translation units in + source/algorithm. -2007-12-21 23:26 pramsey +2007-12-21 23:26 Paul Ramsey - * source/geom/util/Makefile.am: remove trailing backslash + * [r2097] remove trailing backslash -2007-12-21 23:21 mloskot +2007-12-21 23:21 Mateusz Loskot - * ., source/headers/geos/algorithm, - source/headers/geos/algorithm/locate, tests/unit: Updated - svn:ignore property. + * [r2096] Updated svn:ignore property. -2007-12-21 23:18 mloskot +2007-12-21 23:18 Mateusz Loskot - * source/geom/prep/PreparedPolygonContainsProperly.cpp: Fixed extra - qualifications in /geom/prep/PreparedPolygonContainsProperly. + * [r2095] Fixed extra qualifications in + /geom/prep/PreparedPolygonContainsProperly. -2007-12-21 23:12 mloskot +2007-12-21 23:12 Mateusz Loskot - * source/geom/prep/AbstractPreparedPolygonContains.cpp, - source/geom/prep/PreparedGeometryFactory.cpp, - source/headers/geos/geom/prep/PreparedGeometryFactory.h: Fixed - extra qualifications in PreparedGeometryFactory class. + * [r2094] Fixed extra qualifications in PreparedGeometryFactory + class. -2007-12-21 22:57 mloskot +2007-12-21 22:57 Mateusz Loskot - * source/headers/geos/geom/util/ComponentCoordinateExtracter.h: - Fixed GeometryTypeId misused in + * [r2093] Fixed GeometryTypeId misused in geos/geom/util/ComponentCoordinateExtracter.h. -2007-12-21 22:49 pramsey +2007-12-21 22:49 Paul Ramsey - * source/geom/util/Makefile.am: remove .cpp files that weren't - there before + * [r2092] remove .cpp files that weren't there before -2007-12-21 22:49 mloskot +2007-12-21 22:49 Mateusz Loskot - * source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateSequence.cpp, source/geom/LineString.cpp: - Reverted changes appled in r2089 to three files from source/geom. + * [r2091] Reverted changes appled in r2089 to three files from + source/geom. -2007-12-21 22:47 pramsey +2007-12-21 22:47 Paul Ramsey - * source/algorithm/Makefile.am: type subdir typo + * [r2090] type subdir typo -2007-12-21 22:43 mloskot +2007-12-21 22:43 Mateusz Loskot - * source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateSequence.cpp, source/geom/LineString.cpp, - source/geom/prep, source/headers/geos/geom/prep, - source/headers/geos/index/intervalrtree, - source/index/intervalrtree: Updated svn:ignore property. + * [r2089] Updated svn:ignore property. -2007-12-21 22:41 mloskot +2007-12-21 22:41 Mateusz Loskot - * source/examples/CustomPointCoordinateSequence.cpp: Added missing - header to CustomPointCoordinateSequence.cpp. + * [r2088] Added missing header to + CustomPointCoordinateSequence.cpp. -2007-12-21 22:40 mloskot +2007-12-21 22:40 Mateusz Loskot - * source/algorithm/Makefile.am, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/locate: Removed unused - SimplePointInAreaLocator.cpp. This unit migrated to - algorithm/locate module. + * [r2087] Removed unused SimplePointInAreaLocator.cpp. This unit + migrated to algorithm/locate module. -2007-12-21 22:21 pramsey +2007-12-21 22:21 Paul Ramsey - * configure.in: Updated configure.in with new locations. + * [r2086] Updated configure.in with new locations. -2007-12-21 22:14 mloskot +2007-12-21 22:14 Mateusz Loskot - * configure.in: Updated configure.in with new locations. + * [r2085] Updated configure.in with new locations. -2007-12-21 22:12 mloskot +2007-12-21 22:12 Mateusz Loskot - * configure.in: Updated configure.in with new locations. + * [r2084] Updated configure.in with new locations. -2007-12-21 22:09 mloskot +2007-12-21 22:09 Mateusz Loskot - * configure.in: Updated configure.in with new locations. + * [r2083] Updated configure.in with new locations. -2007-12-21 22:07 mloskot +2007-12-21 22:07 Mateusz Loskot - * configure.in: Updated configure.in with new locations. + * [r2082] Updated configure.in with new locations. -2007-12-21 22:02 pramsey +2007-12-21 22:02 Paul Ramsey - * source/headers/geos/algorithm/Makefile.am, - source/headers/geos/algorithm/locate/Makefile.am, - source/headers/geos/noding/Makefile.am: Add - headers/geos/algorithm/locate to automake + * [r2081] Add headers/geos/algorithm/locate to automake -2007-12-21 22:01 pramsey +2007-12-21 22:01 Paul Ramsey - * source/noding/Makefile.am: Add files to automake + * [r2080] Add files to automake -2007-12-21 21:57 pramsey +2007-12-21 21:57 Paul Ramsey - * source/headers/geos/index/Makefile.am, - source/headers/geos/index/intervalrtree/Makefile.am: Added - headers/index/intervalrtree to automake + * [r2079] Added headers/index/intervalrtree to automake -2007-12-21 21:55 pramsey +2007-12-21 21:55 Paul Ramsey - * source/headers/geos/geom/Makefile.am, - source/headers/geos/geom/prep/Makefile.am, - source/headers/geos/geom/util/Makefile.am: Added - headers/geom/prep headers/geom/util to automake + * [r2078] Added headers/geom/prep headers/geom/util to automake -2007-12-21 21:47 pramsey +2007-12-21 21:47 Paul Ramsey - * source/index/Makefile.am, source/index/intervalrtree/Makefile.am: - Added index/intervalrtree to automake + * [r2077] Added index/intervalrtree to automake -2007-12-21 21:43 pramsey +2007-12-21 21:43 Paul Ramsey - * source/geom/util/Makefile.am: added - geom/util/ComponentCoordinateExtracter.h + * [r2076] added geom/util/ComponentCoordinateExtracter.h -2007-12-21 21:40 pramsey +2007-12-21 21:40 Paul Ramsey - * source/geom/Makefile.am, source/geom/prep/Makefile.am: Add - geom/prep to automake + * [r2075] Add geom/prep to automake -2007-12-21 21:36 pramsey +2007-12-21 21:36 Paul Ramsey - * source/algorithm/Makefile.am, - source/algorithm/locate/Makefile.am: Add algorithm/location to - automake + * [r2074] Add algorithm/location to automake -2007-12-21 21:31 pramsey +2007-12-21 21:31 Paul Ramsey - * source/algorithm/Makefile.am: Added new files + * [r2073] Added new files -2007-12-21 20:50 benjubb +2007-12-21 20:50 Ben Jubb - * source/algorithm/RayCrossingCounter.cpp: + * [r2072] -2007-12-21 20:48 benjubb +2007-12-21 20:48 Ben Jubb - * build/msvc80/geos_lib/geos_lib.vcproj: + * [r2071] -2007-12-21 20:47 benjubb +2007-12-21 20:47 Ben Jubb - * source/headers/geos/index/intervalrtree, - source/headers/geos/index/intervalrtree/IntervalRTreeBranchNode.h, - source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h, - source/headers/geos/index/intervalrtree/IntervalRTreeNode.h, - source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h: - Added from JTS 1.9 to support prepared geometry + * [r2070] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:47 benjubb +2007-12-21 20:47 Ben Jubb - * source/algorithm/locate, - source/algorithm/locate/IndexedPointInAreaLocator.cpp, - source/algorithm/locate/PointOnGeometryLocator.cpp, - source/algorithm/locate/SimplePointInAreaLocator.cpp: Added from - JTS 1.9 to support prepared geometry + * [r2069] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:44 benjubb +2007-12-21 20:44 Ben Jubb - * source/geom/util/ComponentCoordinateExtracter.cpp: Added from JTS - 1.9 to support prepared geometry + * [r2068] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:44 benjubb +2007-12-21 20:44 Ben Jubb - * source/headers/geos/geom/util/ComponentCoordinateExtracter.h: - Added from JTS 1.9 to support prepared geometry + * [r2067] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:42 benjubb +2007-12-21 20:42 Ben Jubb - * source/operation/predicate/RectangleIntersects.cpp: modified - because SimplePointInAreaLocator.h moved + * [r2066] modified because SimplePointInAreaLocator.h moved -2007-12-21 20:41 benjubb +2007-12-21 20:41 Ben Jubb - * source/noding/FastSegmentSetIntersectionFinder.cpp, - source/noding/MCIndexSegmentSetMutualIntersector.cpp, - source/noding/NodedSegmentString.cpp, - source/noding/SegmentIntersectionDetector.cpp, - source/noding/SegmentStringUtil.cpp: Added from JTS 1.9 to - support prepared geometry + * [r2065] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:41 benjubb +2007-12-21 20:41 Ben Jubb - * source/index/intervalrtree, - source/index/intervalrtree/IntervalRTreeBranchNode.cpp, - source/index/intervalrtree/IntervalRTreeLeafNode.cpp, - source/index/intervalrtree/IntervalRTreeNode.cpp, - source/index/intervalrtree/SortedPackedIntervalRTree.cpp: Added - from JTS 1.9 to support prepared geometry + * [r2064] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:40 benjubb +2007-12-21 20:40 Ben Jubb - * source/geom/prep, - source/geom/prep/AbstractPreparedPolygonContains.cpp, - source/geom/prep/BasicPreparedGeometry.cpp, - source/geom/prep/PreparedGeometry.cpp, - source/geom/prep/PreparedGeometryFactory.cpp, - source/geom/prep/PreparedLineString.cpp, - source/geom/prep/PreparedLineStringIntersects.cpp, - source/geom/prep/PreparedPoint.cpp, - source/geom/prep/PreparedPolygon.cpp, - source/geom/prep/PreparedPolygonContains.cpp, - source/geom/prep/PreparedPolygonContainsProperly.cpp, - source/geom/prep/PreparedPolygonCovers.cpp, - source/geom/prep/PreparedPolygonIntersects.cpp, - source/geom/prep/PreparedPolygonLineIntersection.cpp, - source/geom/prep/PreparedPolygonPredicate.cpp: Added from JTS 1.9 - to support prepared geometry + * [r2063] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:39 benjubb +2007-12-21 20:39 Ben Jubb - * source/geomgraph/EdgeEndStar.cpp: modified because - SimplePointInAreaLocator.h moved + * [r2062] modified because SimplePointInAreaLocator.h moved -2007-12-21 20:38 benjubb +2007-12-21 20:38 Ben Jubb - * source/headers/geos/algorithm/SimplePointInAreaLocator.h: Moved - into geos::algorithm::locate + * [r2061] Moved into geos::algorithm::locate -2007-12-21 20:37 benjubb +2007-12-21 20:37 Ben Jubb - * source/headers/geos/algorithm/RayCrossingCounter.h: Added from - JTS 1.9 to support prepared geometry + * [r2060] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:35 benjubb +2007-12-21 20:35 Ben Jubb - * source/headers/geos/geom/prep, - source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h, - source/headers/geos/geom/prep/BasicPreparedGeometry.h, - source/headers/geos/geom/prep/PreparedGeometry.h, - source/headers/geos/geom/prep/PreparedGeometryFactory.h, - source/headers/geos/geom/prep/PreparedLineString.h, - source/headers/geos/geom/prep/PreparedLineStringIntersects.h, - source/headers/geos/geom/prep/PreparedPoint.h, - source/headers/geos/geom/prep/PreparedPolygon.h, - source/headers/geos/geom/prep/PreparedPolygonContains.h, - source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h, - source/headers/geos/geom/prep/PreparedPolygonCovers.h, - source/headers/geos/geom/prep/PreparedPolygonIntersects.h, - source/headers/geos/geom/prep/PreparedPolygonLineIntersection.h, - source/headers/geos/geom/prep/PreparedPolygonPredicate.h: Added - from JTS 1.9 to support prepared geometry + * [r2059] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:34 benjubb +2007-12-21 20:34 Ben Jubb - * source/headers/geos/noding/FastSegmentSetIntersectionFinder.h, - source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h, - source/headers/geos/noding/NodableSegmentString.h, - source/headers/geos/noding/NodedSegmentString.h, - source/headers/geos/noding/SegmentIntersectionDetector.h, - source/headers/geos/noding/SegmentSetMutualIntersector.h, - source/headers/geos/noding/SegmentStringUtil.h: Added from JTS - 1.9 to support prepared geometry + * [r2058] Added from JTS 1.9 to support prepared geometry -2007-12-21 20:33 benjubb +2007-12-21 20:33 Ben Jubb - * source/headers/geos/noding/SegmentString.h: changed destructor to - be virtual + * [r2057] changed destructor to be virtual -2007-12-21 20:31 benjubb +2007-12-21 20:31 Ben Jubb - * source/headers/geos/geom/Envelope.h: Added a covers() predicate, - from JTS 1.9, to support prepared geometry + * [r2056] Added a covers() predicate, from JTS 1.9, to support + prepared geometry -2007-12-21 20:30 benjubb +2007-12-21 20:30 Ben Jubb - * source/headers/geos/geom/Geometry.h: changed IsRectangle to be - public + * [r2055] changed IsRectangle to be public -2007-12-21 20:03 benjubb +2007-12-21 20:03 Ben Jubb - * source/headers/geos/geom/Envelope.inl: Added a covers() - predicate, from JTS 1.9, to support prepared geometry + * [r2054] Added a covers() predicate, from JTS 1.9, to support + prepared geometry -2007-12-21 20:00 benjubb +2007-12-21 20:00 Ben Jubb - * source/headers/geos/algorithm/locate/SimplePointInAreaLocator.h: - Moved from geos::algorithm as in JTS 1.9 + * [r2053] Moved from geos::algorithm as in JTS 1.9 -2007-12-21 19:55 benjubb +2007-12-21 19:55 Ben Jubb - * source/headers/geos/algorithm/locate, - source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h, - source/headers/geos/algorithm/locate/PointOnGeometryLocator.h: - New namaspace geos::algorithm::locate, as in JTS 1.9.. + * [r2052] New namaspace geos::algorithm::locate, as in JTS 1.9.. -2007-12-21 19:52 benjubb +2007-12-21 19:52 Ben Jubb - * source/headers/geos/algorithm/SimplePointInAreaLocator.h: Added a - public constructor, and a method to bring in line with JTS 1.9. - Changed namespace to geos::algorithm::locate + * [r2051] Added a public constructor, and a method to bring in line + with JTS 1.9. Changed namespace to geos::algorithm::locate -2007-12-21 18:44 pramsey +2007-12-21 18:44 Paul Ramsey - * configure.in: version numbering for next release (3.1.0) + * [r2050] version numbering for next release (3.1.0) -2007-12-21 18:41 pramsey +2007-12-21 18:41 Paul Ramsey - * ChangeLog, configure.in: 3.0.0 release + * [r2046] 3.0.0 release -2007-12-19 20:18 mloskot +2007-12-19 20:18 Mateusz Loskot - * ChangeLog, source/headers/geos/geom.h, source/headers/geos/io.h: - Improved warning message about using DEPRECATED headers + * [r2045] Improved warning message about using DEPRECATED headers -2007-12-17 23:09 mloskot +2007-12-17 23:09 Mateusz Loskot - * tests/xmltester/XMLTester.cpp: Fixed std::tolower usage in - XMLTester.cpp (Ticket #163). + * [r2044] Fixed std::tolower usage in XMLTester.cpp (Ticket #163). -2007-12-17 23:05 mloskot +2007-12-17 23:05 Mateusz Loskot - * source/algorithm/HCoordinate.cpp: Replaced finite function with - std::numeric_limits (Ticket #162). + * [r2043] Replaced finite function with std::numeric_limits (Ticket + #162). -2007-12-17 21:52 mloskot +2007-12-17 21:52 Mateusz Loskot - * ChangeLog, source/Makefile.vc: source\Makefile.vc: Fixed MSVC_VER - condition for Microsoft Visual C++ 2008 (9.0). + * [r2042] source\Makefile.vc: Fixed MSVC_VER condition for + Microsoft Visual C++ 2008 (9.0). -2007-12-13 16:11 mloskot +2007-12-13 16:11 Mateusz Loskot - * ChangeLog: Added Id keyword at the top of ChangeLog file. + * [r2041] Added Id keyword at the top of ChangeLog file. -2007-12-13 16:09 mloskot +2007-12-13 16:09 Mateusz Loskot - * ChangeLog, build/msvc80/geos_unit/geos_unit.vcproj, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - tests/unit/geom/GeometryFactoryTest.cpp: * - build\msvc80\geos_unit\geos_unit.vcproj: fixed post-build event + * [r2040] * build\msvc80\geos_unit\geos_unit.vcproj: fixed + post-build event * source\geom\GeometryCollection.cpp: removed unreachable code, shorten exception message. * source\geom\Geometry.cpp: purified condition based on @@ -1331,451 +3432,345 @@ instead of int where unsigned integral type required. -2007-12-09 00:02 mloskot +2007-12-09 00:02 Mateusz Loskot - * ChangeLog, tests/unit/Makefile.am, - tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp: - Added test suite for class + * [r2038] Added test suite for class geos::precision::SimpleGeometryPrecisionReducer. -2007-12-08 22:59 mloskot +2007-12-08 22:59 Mateusz Loskot - * .: Updated svn:keyword property. + * [r2037] Updated svn:keyword property. -2007-11-26 16:26 mloskot +2007-11-26 16:26 Mateusz Loskot - * build/msvc80/geos.vsprops: Added geos.vsprops - property sheet - for Visual C++ projects. + * [r2036] Added geos.vsprops - property sheet for Visual C++ + projects. -2007-11-26 15:19 mloskot +2007-11-26 15:19 Mateusz Loskot - * ChangeLog, build/msvc80/geos_python/geos_python.vcproj, - build/msvc80/geos_ruby/geos_ruby.vcproj, - swig/python/geos_wrap.cxx: Added common Property Sheet for Visual - C++ projects where Python and Ruby macros/locations are defined. - Fixed include of Python.h, see Ticket #164 for details. + * [r2035] Added common Property Sheet for Visual C++ projects where + Python and Ruby macros/locations are defined. Fixed include of + Python.h, see Ticket #164 for details. -2007-11-26 06:21 mloskot +2007-11-26 06:21 Mateusz Loskot - * source/algorithm: Updated svn:ignore patterns. + * [r2034] Updated svn:ignore patterns. -2007-11-26 06:16 mloskot +2007-11-26 06:16 Mateusz Loskot - * ChangeLog, source/Makefile.vc, source/headers/geos/version.h.vc: - Enabled target copying version.h.vc and geos_c.h.vc to headers - used by Visual C++. Added test if version.h.vc is used with - Visual C++. + * [r2033] Enabled target copying version.h.vc and geos_c.h.vc to + headers used by Visual C++. Added test if version.h.vc is used + with Visual C++. -2007-11-23 02:33 mloskot +2007-11-23 02:33 Mateusz Loskot - * ChangeLog, source/headers/geos/io/WKBWriter.h: A bit of - purification with explicit casting int to bool type. + * [r2032] A bit of purification with explicit casting int to bool + type. -2007-11-02 22:41 pramsey +2007-11-02 22:41 Paul Ramsey - * web/index.html: urls updated to point to osgeo locations + * [r2031] urls updated to point to osgeo locations -2007-11-02 22:17 pramsey +2007-11-02 22:17 Paul Ramsey - * web, web/index.html, web/style.css: add the web site content to - svn for collaborative management + * [r2030] add the web site content to svn for collaborative + management -2007-09-21 17:42 csavage +2007-09-21 17:42 Charlie Savage - * configure.in: Update the CAPI and GEOS version numbers based on + * [r2029] Update the CAPI and GEOS version numbers based on Reader/Writer additions to the CAPI and EWKB support for the C++ api. -2007-09-21 17:40 csavage +2007-09-21 17:40 Charlie Savage - * swig/geos.i.in, swig/ruby/geos_wrap.cxx, swig/ruby/ruby.i, - swig/ruby/test/test_buffer.rb, swig/ruby/test/test_helper.rb, - swig/ruby/test/test_io.rb, swig/ruby/test/test_operations.rb, - swig/ruby/test/test_srid.rb, swig/ruby/test/test_version.rb: - Updated the SWIG bindings and tests to use the new Reader/Writer - classes exposed in the CAPI. + * [r2028] Updated the SWIG bindings and tests to use the new + Reader/Writer classes exposed in the CAPI. -2007-09-21 17:40 csavage +2007-09-21 17:40 Charlie Savage - * capi/geos_c.cpp, capi/geos_c.h.in: Update the CAPI to expose - WKTReader/WBTWriter and WKBReader/WBKWriter in the CAPI. This is - an improvement over the existing API since it avoids the use of - the static variable used to control byte order and # of - dimenions, and gives clients more control over the - creation/destruction of readers and writers. Finally, exposed the - ability to output the EWKB format (set SRID to true in the - WKBWriter). + * [r2027] Update the CAPI to expose WKTReader/WBTWriter and + WKBReader/WBKWriter in the CAPI. This is an improvement over the + existing API since it avoids the use of the static variable used + to control byte order and # of dimenions, and gives clients more + control over the creation/destruction of readers and writers. + Finally, exposed the ability to output the EWKB format (set SRID + to true in the WKBWriter). -2007-09-21 17:35 csavage +2007-09-21 17:35 Charlie Savage - * source/index/strtree/STRtree.cpp: Switched back to using < - because the fuzzy comparison now in use trips assertion errors in - VC++. See comments in code for more information. Note this change - may cause problems. Strk left a note in the code saying that the - '<' comparison sometimes gives unstable results. But that seems - better than an assertion failure. + * [r2026] Switched back to using < because the fuzzy comparison now + in use trips assertion errors in VC++. See comments in code for + more information. Note this change may cause problems. Strk left + a note in the code saying that the '<' comparison sometimes gives + unstable results. But that seems better than an assertion + failure. -2007-09-21 17:32 csavage +2007-09-21 17:32 Charlie Savage - * source/headers/geos/io/WKBWriter.h, source/io/WKBWriter.cpp: - Updated the WKBWriter so it can output EWKB format similar to - PostGIS. Also added a few getter/setter methods that allow - clients to specify the reader's number of dimensions, byte order - and whether srid values should be output. These getters/setters - make it easier to wrap the reader in the CAPI. + * [r2025] Updated the WKBWriter so it can output EWKB format + similar to PostGIS. Also added a few getter/setter methods that + allow clients to specify the reader's number of dimensions, byte + order and whether srid values should be output. These + getters/setters make it easier to wrap the reader in the CAPI. -2007-09-14 15:34 csavage +2007-09-14 15:34 Charlie Savage - * build/msvc80/geos_c_dll/geos_c_dll.vcproj, - build/msvc80/geos_ruby, build/msvc80/geos_ruby/geos_ruby.vcproj: + * [r2024] -2007-09-14 15:34 csavage +2007-09-14 15:34 Charlie Savage - * build/msvc80/geos_python: Told SVN to ignore MSCV++ Python swig - build directories. + * [r2023] Told SVN to ignore MSCV++ Python swig build directories. -2007-09-14 15:25 csavage +2007-09-14 15:25 Charlie Savage - * source/io/WKBReader.cpp: Set unknown SRID values to 0 instead of - -1 to be more consistent with the rest of GEOS (srid values are - initialized to 0 by default). + * [r2022] Set unknown SRID values to 0 instead of -1 to be more + consistent with the rest of GEOS (srid values are initialized to + 0 by default). -2007-09-11 02:02 csavage +2007-09-11 02:02 Charlie Savage - * source/headers/geos/profiler.h: Don't include config.h for MSVC++ - builds. + * [r2021] Don't include config.h for MSVC++ builds. -2007-09-07 17:32 csavage +2007-09-07 17:32 Charlie Savage - * configure.in: The test for SWIG was incorrect. Fixed by patch - from Mark Cave-Ayland. + * [r2020] The test for SWIG was incorrect. Fixed by patch from Mark + Cave-Ayland. -2007-09-06 23:24 csavage +2007-09-06 23:24 Charlie Savage - * source/headers/geos/profiler.h: Applied patch from Mark - Cave-Ayland's to make older versions of MingW that don't have - struct timezone defined compile again. Also fixed issues with - more recent versions of MingW that don't correctly compile with - the -ansi compiler switch. + * [r2019] Applied patch from Mark Cave-Ayland's to make older + versions of MingW that don't have struct timezone defined compile + again. Also fixed issues with more recent versions of MingW that + don't correctly compile with the -ansi compiler switch. -2007-09-06 23:22 csavage +2007-09-06 23:22 Charlie Savage - * configure.in, macros/ruby.m4: Applied patches from Mark - Cave-Ayland's that reorganize/improve the SWIG support in the - generated configure file.\ + * [r2018] Applied patches from Mark Cave-Ayland's that + reorganize/improve the SWIG support in the generated configure + file.\ -2007-08-31 20:44 csavage +2007-08-31 20:44 Charlie Savage - * capi/geos_c.cpp, capi/geos_c.h.in: For MSVC++ builds the CAPI - version was set in geos_c.cpp instead of geos_c.h and it was set - incorrectly. This patch fixes the MSVC++ version number and - centralizes the various versoin #defines in the geos_c.h. + * [r2017] For MSVC++ builds the CAPI version was set in geos_c.cpp + instead of geos_c.h and it was set incorrectly. This patch fixes + the MSVC++ version number and centralizes the various versoin + #defines in the geos_c.h. -2007-08-31 20:18 csavage +2007-08-31 20:18 Charlie Savage - * swig/python/Makefile.am, swig/ruby/Makefile.am: Update swig - makefiles to make the wrappers dependent on the SWIG interface - files even if SWIG is disabled. Doing this means that Make will - correctly recognize that a user has modified an I file, but that - the .cxx wrapper cannot be regenerated since SWIG is not - available. + * [r2016] Update swig makefiles to make the wrappers dependent on + the SWIG interface files even if SWIG is disabled. Doing this + means that Make will correctly recognize that a user has modified + an I file, but that the .cxx wrapper cannot be regenerated since + SWIG is not available. -2007-08-30 20:06 csavage +2007-08-30 20:06 Charlie Savage - * source/headers/geos/profiler.h, source/headers/geos/timeval.h: - MingW now includes the gettimeofday function - so reworked - includes to only use custom version when building with VC++. + * [r2015] MingW now includes the gettimeofday function - so + reworked includes to only use custom version when building with + VC++. -2007-08-30 17:00 csavage +2007-08-30 17:00 Charlie Savage - * macros/ruby.m4, swig/ruby/Makefile.am: Added RUBY_BIN_DIR to - autoconf macros - simplified auto make input file for ruby - bindings. + * [r2014] Added RUBY_BIN_DIR to autoconf macros - simplified auto + make input file for ruby bindings. -2007-08-30 06:19 csavage +2007-08-30 06:19 Charlie Savage - * macros/ac_pkg_swig.m4: The last attempt to fix this file failed - - instead keep the code that queries the swig libraries but use sed - to merge multiple lines together. If this is not done, then the - swig output causes ./configure to blow up on msys. + * [r2013] The last attempt to fix this file failed - instead keep + the code that queries the swig libraries but use sed to merge + multiple lines together. If this is not done, then the swig + output causes ./configure to blow up on msys. -2007-08-30 05:31 csavage +2007-08-30 05:31 Charlie Savage - * macros/ac_pkg_swig.m4: Fixes sed issue with swig on msys. For - more info see: + * [r2012] Fixes sed issue with swig on msys. For more info see: http://lists.refractions.net/pipermail/geos-devel/2007-August/002956.html -2007-08-30 03:18 csavage +2007-08-30 03:18 Charlie Savage - * swig/geos.i.in: Changed from dos to unix line feeds. + * [r2011] Changed from dos to unix line feeds. -2007-08-29 01:41 csavage +2007-08-29 01:41 Charlie Savage - * build/msvc80/geos.sln, build/msvc80/geos_python, - build/msvc80/geos_python/geos_python.vcproj, - build/msvc80/geos_ruby/geos_ruby.vcproj: New VC++ project for the - python SWIG bindings. + * [r2010] New VC++ project for the python SWIG bindings. -2007-08-29 01:29 csavage +2007-08-29 01:29 Charlie Savage - * build/msvc80/geos_ruby/geos_ruby.vcproj, swig/geos.i.in, - swig/python/python.i, swig/ruby/geos_wrap.cxx, swig/ruby/ruby.i: - Ruby SWIG bindings - mapped eql? to == so that you can do point - == point2 in ruby. Removed a hard-coded path from VC++ project. - Updated out-of-date copyright notices for no particularly good - reason. + * [r2009] Ruby SWIG bindings - mapped eql? to == so that you can do + point == point2 in ruby. Removed a hard-coded path from VC++ + project. Updated out-of-date copyright notices for no + particularly good reason. -2007-08-28 21:29 csavage +2007-08-28 21:29 Charlie Savage - * build/msvc80: Added release as an ignored directory for VC++, - similar to the debug directory. + * [r2008] Added release as an ignored directory for VC++, similar + to the debug directory. -2007-08-28 21:28 csavage +2007-08-28 21:28 Charlie Savage - * build/msvc80/geos_ruby: Added new ruby VC++ project to solution - file. + * [r2007] Added new ruby VC++ project to solution file. -2007-08-28 21:27 csavage +2007-08-28 21:27 Charlie Savage - * capi/geos_c.h.in: Fixed c api include for VC++ - it should be - #include instead of #include . + * [r2006] Fixed c api include for VC++ - it should be #include + instead of #include . -2007-08-28 21:27 csavage +2007-08-28 21:27 Charlie Savage - * build/msvc80/geos.sln: Added new ruby VC++ project to solution - file. + * [r2005] Added new ruby VC++ project to solution file. -2007-08-28 21:26 csavage +2007-08-28 21:26 Charlie Savage - * build/msvc80/geos_c_dll/geos_c_dll.vcproj: Follow lead of - geos_lib project - copy geos/geos_c.h.in to geos/geos_c.h when - building with VC++. + * [r2004] Follow lead of geos_lib project - copy geos/geos_c.h.in + to geos/geos_c.h when building with VC++. -2007-08-28 21:25 csavage +2007-08-28 21:25 Charlie Savage - * build/msvc80/geos_ruby, build/msvc80/geos_ruby/geos_ruby.vcproj: - Added new vc++ project for building ruby bindings. Its not - perfect since it hard-codes the path to Ruby, but its enough to - get one started. + * [r2003] Added new vc++ project for building ruby bindings. Its + not perfect since it hard-codes the path to Ruby, but its enough + to get one started. -2007-08-28 21:22 csavage +2007-08-28 21:22 Charlie Savage - * swig/python/geos.py, swig/python/geos_wrap.cxx, - swig/ruby/geos_wrap.cxx: Updated SWIG wrappers based on changed - interface file. Also generated with SWIG 1.3.31 + * [r2002] Updated SWIG wrappers based on changed interface file. + Also generated with SWIG 1.3.31 -2007-08-28 20:42 csavage +2007-08-28 20:42 Charlie Savage - * swig/ruby/test/geos_tests.rb, swig/ruby/test/test_buffer.rb, - swig/ruby/test/test_combinations.rb, - swig/ruby/test/test_coordinate_sequence.rb, - swig/ruby/test/test_envelope.rb, swig/ruby/test/test_geometry.rb, - swig/ruby/test/test_io.rb, swig/ruby/test/test_operations.rb, - swig/ruby/test/test_relations.rb, swig/ruby/test/test_srid.rb, - swig/ruby/test/test_version.rb: SWIG bindings - updated Ruby - tests based on name changes. + * [r2001] SWIG bindings - updated Ruby tests based on name changes. -2007-08-28 20:41 csavage +2007-08-28 20:41 Charlie Savage - * swig/ruby/ruby.i: Updated Ruby swig bindings to more closely - match Ruby style names. So eql? instead of equals, dimensions - instead of get_dimensions, etc. + * [r2000] Updated Ruby swig bindings to more closely match Ruby + style names. So eql? instead of equals, dimensions instead of + get_dimensions, etc. -2007-08-28 20:40 csavage +2007-08-28 20:40 Charlie Savage - * swig/geos.i.in: Exposed Geometry::Clone method in SWIG bindings. - Added check for NULL string in geomFromWKT wrapper. + * [r1999] Exposed Geometry::Clone method in SWIG bindings. Added + check for NULL string in geomFromWKT wrapper. -2007-08-23 20:35 pramsey +2007-08-23 20:35 Paul Ramsey - * source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/OffsetCurveVertexList.h: Memory leak - patches from Robert Coup + * [r1998] Memory leak patches from Robert Coup -2007-08-22 23:45 mloskot +2007-08-22 23:45 Mateusz Loskot - * source/headers/geos/io/ByteOrderDataInStream.inl, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/polygonize/Polygonizer.cpp: Cleaned compilation - warnings from VC++. + * [r1997] Cleaned compilation warnings from VC++. -2007-06-11 07:43 mloskot +2007-06-11 07:43 Mateusz Loskot - * ChangeLog, source/operation/IsSimpleOp.cpp: Replaced - post-increment operators with pre-increment operators where - standard iterators are incremented in loops. NOTE: Prefer - pre-incr. over post-inc. when working with standard iterators. + * [r1996] Replaced post-increment operators with pre-increment + operators where standard iterators are incremented in loops. + NOTE: Prefer pre-incr. over post-inc. when working with standard + iterators. -2007-06-11 07:39 mloskot +2007-06-11 07:39 Mateusz Loskot - * tests/unit/Makefile.am, tests/unit/operation/IsSimpleOpTest.cpp: - Added unit test for geos::operation::IsSimpleOp class. + * [r1995] Added unit test for geos::operation::IsSimpleOp class. -2007-06-10 13:03 mloskot +2007-06-10 13:03 Mateusz Loskot - * ., ChangeLog, tests/unit/Makefile.am: Updated - tests/unit/Makefile.am with new files. + * [r1994] Updated tests/unit/Makefile.am with new files. -2007-06-10 11:53 mloskot +2007-06-10 11:53 Mateusz Loskot - * ChangeLog, build/msvc80/geos.sln, - build/msvc80/geos_unit/geos_unit.vcproj, - tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp, - tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp, - tests/unit/algorithm/ConvexHullTest.cpp: Added unit test for + * [r1993] Added unit test for geos::algorithm::CGAlgorithms::computeOrientation() function. -2007-06-10 11:29 mloskot +2007-06-10 11:29 Mateusz Loskot + + * [r1992] Updated svn:ignore property for the whole tree adding + VC++ and Windows specific patterns. + +2007-06-10 11:18 Mateusz Loskot + + * [r1991] Added unit test for CGAlgorithms::isCCW() function. + +2007-06-10 11:08 Mateusz Loskot - * ., capi, source, source/geom, source/geom/util, source/geomgraph, - source/geomgraph/index, source/index/bintree, source/index/chain, - source/index/quadtree, source/index/strtree, - source/index/sweepline, source/io, source/noding, - source/noding/snapround, source/operation, - source/operation/buffer, source/operation/distance, - source/operation/linemerge, source/operation/overlay, - source/operation/polygonize, source/operation/predicate, - source/operation/relate, source/operation/valid, - source/planargraph, source/planargraph/algorithm, - source/precision, source/simplify, source/util: Updated - svn:ignore property for the whole tree adding VC++ and Windows - specific patterns. - -2007-06-10 11:18 mloskot - - * ChangeLog, build/msvc80/geos_unit/geos_unit.vcproj, - tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp: Added unit test - for CGAlgorithms::isCCW() function. - -2007-06-10 11:08 mloskot - - * tests/unit/algorithm/ConvexHullTest.cpp, - tests/unit/geom/LineStringTest.cpp: Added unit test for - geos::algorithm::ConvexHull. - -2007-06-10 11:03 mloskot - - * tests/unit/utility.h: Added custom operators for static and - dynamic casts of pointers wrapped with std::auto_ptr type. - -2007-06-08 17:13 mloskot - - * tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: Identified - test case failing because of geos::index::strtree::yComparator() - instability. - -2007-06-08 17:10 mloskot - - * ChangeLog, source/index/strtree/STRtree.cpp: Analysis of - instability of the yComparator, there are some new important - questions to answer. - -2007-06-08 15:27 mloskot - - * ChangeLog, build/msvc80/geos_lib/geos_lib.vcproj, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/geom/CoordinateSequence.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeList.cpp, - source/headers/geos/geom/CoordinateFilter.h, - source/headers/geos/geomgraph/Edge.h, - source/headers/geos/geomgraph/Node.h, - source/headers/geos/index/bintree/Root.h, - source/headers/geos/index/chain/MonotoneChainOverlapAction.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/operation/buffer/BufferSubgraph.cpp: Cleaned - signed/unsigned types mixtures, got rid from annoying compiler - warnings. - -2007-06-08 14:50 mloskot - - * ChangeLog: Applied Konstantin Baumann's suggestion about - including version.h in C API header for Visual C++. - -2007-06-08 14:50 mloskot - - * capi/geos_c.h.in: Applied Konstantin Baumann's suggestion about - including version.h in C API header for Visual C++. - -2007-06-01 13:53 mloskot - - * ChangeLog, build/bjam, build/bjam/Jamroot, build/bjam/geos, - build/bjam/geos/Jamfile, build/bjam/geos_c, - build/bjam/geos_c/Jamfile, build/bjam/geos_unit, - build/bjam/geos_unit/Jamfile: Added Boost.Build configuration for - GEOS (experimental). The idea is to enable users to build GEOS - with bjam tool from Boost.Build package. - -2007-06-01 13:43 mloskot - - * source/headers/geos/platform.h.vc, - source/headers/geos/version.h.vc, - tests/unit/operation/distance/DistanceOpTest.cpp, - tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp, - tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp, - tests/unit/operation/overlay/OverlayResultValidatorTest.cpp: Set - missing svn:keywords property. - -2007-06-01 13:06 mloskot - - * ChangeLog, build/msvc80/geos_lib/geos_lib.vcproj: Applied patch - with pre-build events generating platform.h and version.h - headers. Thanks to Konstantin Baumann for this patch. - -2007-05-06 02:42 mloskot - - * build/msvc80, build/msvc80/geos_c_dll, build/msvc80/geos_lib, - build/msvc80/geos_unit: Updated svn:ignore property for - build\msvc80. - -2007-05-06 02:40 mloskot - - * ChangeLog, source/headers/geos/version.h.vc: Added - source/headers/geos/version.h.vc file for Visual C++ compiler. - -2007-04-22 04:44 mloskot - - * ., ChangeLog, capi, source/geom/CoordinateArraySequence.cpp, - swig, tests/unit/capi/GEOSCoordSeqTest.cpp: Added assertion - validating ordinateIndex in setOrdinate() function. Extended - GEOSCoordSeqTest with swapped and non-swapped calls of - coordiantes assignment functions. - -2007-04-15 18:02 mloskot - - * ChangeLog, autogen.sh: Added detection of glibtoolize under Mac - OS X. - -2007-03-05 09:58 strk - - * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/hole_from_shell.xml, - tests/xmltester/hole_red.xml: Add new testcases by Carl Anderson + * [r1990] Added unit test for geos::algorithm::ConvexHull. -2007-02-26 10:46 strk +2007-06-10 11:03 Mateusz Loskot - * ChangeLog, source/inlines.cpp: Patch by Tom Elwertowski: + * [r1989] Added custom operators for static and dynamic casts of + pointers wrapped with std::auto_ptr type. + +2007-06-08 17:13 Mateusz Loskot + + * [r1988] Identified test case failing because of + geos::index::strtree::yComparator() instability. + +2007-06-08 17:10 Mateusz Loskot + + * [r1987] Analysis of instability of the yComparator, there are + some new important questions to answer. + +2007-06-08 15:27 Mateusz Loskot + + * [r1986] Cleaned signed/unsigned types mixtures, got rid from + annoying compiler warnings. + +2007-06-08 14:50 Mateusz Loskot + + * [r1985] Applied Konstantin Baumann's suggestion about including + version.h in C API header for Visual C++. + +2007-06-08 14:50 Mateusz Loskot + + * [r1984] Applied Konstantin Baumann's suggestion about including + version.h in C API header for Visual C++. + +2007-06-01 13:53 Mateusz Loskot + + * [r1983] Added Boost.Build configuration for GEOS (experimental). + The idea is to enable users to build GEOS with bjam tool from + Boost.Build package. + +2007-06-01 13:43 Mateusz Loskot + + * [r1982] Set missing svn:keywords property. + +2007-06-01 13:06 Mateusz Loskot + + * [r1981] Applied patch with pre-build events generating platform.h + and version.h headers. Thanks to Konstantin Baumann for this + patch. + +2007-05-06 02:42 Mateusz Loskot + + * [r1980] Updated svn:ignore property for build\msvc80. + +2007-05-06 02:40 Mateusz Loskot + + * [r1979] Added source/headers/geos/version.h.vc file for Visual + C++ compiler. + +2007-04-22 04:44 Mateusz Loskot + + * [r1978] Added assertion validating ordinateIndex in setOrdinate() + function. Extended GEOSCoordSeqTest with swapped and non-swapped + calls of coordiantes assignment functions. + +2007-04-15 18:02 Mateusz Loskot + + * [r1977] Added detection of glibtoolize under Mac OS X. + +2007-03-05 09:58 Sandro Santilli + + * [r1976] Add new testcases by Carl Anderson + +2007-02-26 10:46 Sandro Santilli + + * [r1975] Patch by Tom Elwertowski: * source/inlines.cpp: fix for MingW32 builds. -2007-02-21 10:14 strk +2007-02-21 10:14 Sandro Santilli - * ChangeLog, source/operation/buffer/SubgraphDepthLocater.cpp: - Patch by Carl Anderson: + * [r1974] Patch by Carl Anderson: * source/operation/buffer/SubgraphDepthLocater.cpp (findStabbedSegments): @@ -1784,123 +3779,88 @@ Fixes badguy3.xml -2007-02-21 10:12 strk +2007-02-21 10:12 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/badguy3.xml: * tests/xmltester/: Makefile.am, - badguy3.xml: + * [r1973] * tests/xmltester/: Makefile.am, badguy3.xml: Added simplified version of nasty buffer bug test. -2007-02-08 23:33 strk +2007-02-08 23:33 Sandro Santilli - * ChangeLog, configure.in: Patch by Mark Cave-Ayland: + * [r1972] Patch by Mark Cave-Ayland: * configure.in: Allow configure to continue with use_python set to false if a python binary is not found, as per http://sources.redhat.com/automake/automake.html#Python. -2007-02-07 00:34 strk +2007-02-07 00:34 Sandro Santilli - * ChangeLog, source/headers/geos/index/strtree/AbstractNode.h, - source/headers/geos/index/strtree/AbstractSTRtree.h, - source/headers/geos/index/strtree/Boundable.h, - source/headers/geos/index/strtree/ItemBoundable.h, - source/headers/geos/index/strtree/SIRtree.h, - source/headers/geos/index/strtree/STRtree.h, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp: General refactoring aimed at - making the code cleaner + * [r1971] General refactoring aimed at making the code cleaner to read and maintain; use iterators rather then random accessing containers to allow easy future switch to std::list from std::vector; use a tolerance-based strict weak ordering operator for sorting child boundables in STRtree, this fixes the heisenbug when building with inlines disabled. -2007-02-06 02:05 strk +2007-02-06 02:05 Sandro Santilli - * ChangeLog, tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: - * tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: + * [r1970] * tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: Expect result of POLYGON simplification to always be a polygon, even if collapsed to the empty geom. -2007-02-06 01:57 strk +2007-02-06 01:57 Sandro Santilli - * ChangeLog, source/headers/geos/operation/buffer/BufferBuilder.h, - source/headers/geos/operation/buffer/BufferOp.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp: * - operation::buffer::BufferBuilder, + * [r1969] * operation::buffer::BufferBuilder, operation::buffer::BufferOp: Fixed buffer operation to always return polygonal geometry -2007-02-03 02:18 pramsey +2007-02-03 02:18 Paul Ramsey - * ChangeLog, configure.in: 3.0.0rc4 tagging + * [r1967] 3.0.0rc4 tagging -2007-02-01 11:11 strk +2007-02-01 11:11 Sandro Santilli - * ChangeLog, source/headers/geos/operation/buffer/BufferOp.h, - source/operation/buffer/BufferOp.cpp: * - operation::buffer::BufferOp: set MAX_PRECISION_DIGITS + * [r1966] * operation::buffer::BufferOp: set MAX_PRECISION_DIGITS so to match JTS. -2007-01-26 01:19 strk +2007-01-26 01:19 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/stmlf-cases-20070119.xml: * tests/xmltester/: - Makefile.am, stmlf-cases-20070119.xml: + * [r1965] * tests/xmltester/: Makefile.am, + stmlf-cases-20070119.xml: New overlay test. -2007-01-26 00:57 strk +2007-01-26 00:57 Sandro Santilli - * ChangeLog, source/operation/buffer/BufferBuilder.cpp, - tests/xmltester/XMLTester.cpp: * tests/xmltester/XMLTester.cpp: - improved buffer + * [r1964] * tests/xmltester/XMLTester.cpp: improved buffer result validator. * source/operation/buffer/BufferBuilder.cpp (computeNodedEdges): remove repeated points from noded SegmentStrings, skip collapsed edges. -2007-01-17 11:59 strk +2007-01-17 11:59 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/heisenbugs.xml: New testcase for bug fixed by - previous commit. + * [r1963] New testcase for bug fixed by previous commit. -2007-01-17 01:05 strk +2007-01-17 01:05 Sandro Santilli - * ChangeLog, source/index/strtree/STRtree.cpp: * - source/index/strtree/STRtree.cpp (yComparator): + * [r1962] * source/index/strtree/STRtree.cpp (yComparator): Use static_cast<> and make code more readable. A side effect seems to be fixing a segfault :! -2007-01-17 00:45 strk +2007-01-17 00:45 Sandro Santilli - * ChangeLog, source/headers/geos/index/strtree/STRtree.h: * - source/headers/geos/index/strtree/STRtree.h (centreY): + * [r1961] * source/headers/geos/index/strtree/STRtree.h (centreY): const-corrected. -2007-01-16 14:12 strk +2007-01-16 14:12 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp, - tests/xmltester/XMLTester.h: * tests/xmltester/XMLTester.cpp: - don't include catch-all headers. - -2007-01-09 17:34 strk - - * ChangeLog, - source/headers/geos/operation/buffer/OffsetCurveBuilder.h, - source/operation/buffer/Makefile.am, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveVertexList.h, - tests/xmltester/Makefile.am, - tests/xmltester/TestBufferExternal.xml, - tests/xmltester/XMLTester.cpp: * source/operation/buffer/: - Makefile.am, OffsetCurveVertexList.h: + * [r1960] * tests/xmltester/XMLTester.cpp: don't include catch-all + headers. + +2007-01-09 17:34 Sandro Santilli + + * [r1959] * source/operation/buffer/: Makefile.am, + OffsetCurveVertexList.h: New helper class for OffsetCurveBuilder * operation::buffer::OffsetCurveBuilder: Move vertexlist management to external class. @@ -1913,12 +3873,9 @@ to be smaller then 1/1000 of expected geometry area. -2007-01-09 15:08 strk +2007-01-09 15:08 Sandro Santilli - * ChangeLog, source/geom/CoordinateArraySequence.cpp, - source/headers/geos/geom/CoordinateArraySequence.h, - source/headers/geos/geom/CoordinateSequence.h: * - source/geom/CoordinateArraySequence.cpp, + * [r1958] * source/geom/CoordinateArraySequence.cpp, source/headers/geos/geom/CoordinateSequence.h, source/headers/geos/geom/CoordinateArraySequence.h: add(Coordinate, bool) made a virtual method and overrridden @@ -1926,135 +3883,104 @@ (single virtual call vs. multiple); added front() and back() methods. -2007-01-09 10:27 strk +2007-01-09 10:27 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: * - tests/xmltester/XMLTester.cpp: add areatest to buffer test - handler. + * [r1957] * tests/xmltester/XMLTester.cpp: add areatest to buffer + test handler. -2007-01-05 01:01 strk +2007-01-05 01:01 Sandro Santilli - * ChangeLog, configure.in: * configure.in: prepared for version to - 3.0.0rc4, + * [r1956] * configure.in: prepared for version to 3.0.0rc4, fixed swig python errors as suggested by hint (AM_PATH_PYTHON). -2007-01-04 22:43 strk +2007-01-04 22:43 Sandro Santilli - * ChangeLog, configure.in, swig/geos.i, swig/geos.i.in: * - configure.in, swig/geos.i.in, swig/geos.i: + * [r1955] * configure.in, swig/geos.i.in, swig/geos.i: geos.i generated at configure time from geos.i.in (so we don't have to manually update versions there). -2007-01-04 22:38 strk +2007-01-04 22:38 Sandro Santilli - * ChangeLog, swig/geos.i: Patch by dev-zero at gentoo dot org: + * [r1954] Patch by dev-zero at gentoo dot org: * swig/geos.i: use unsigned int when CAPI signatures expect unsigned int (not size_t). -2007-01-03 20:11 strk +2007-01-03 20:11 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am, tests/xmltester/fme.xml: - * tests/xmltester/: fme.xml, Makefile.am: added buffer testcase. + * [r1953] * tests/xmltester/: fme.xml, Makefile.am: added buffer + testcase. -2007-01-03 20:06 strk +2007-01-03 20:06 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: * - tests/xmltester/XMLTester.cpp: use a tolerance of 10E-6 + * [r1952] * tests/xmltester/XMLTester.cpp: use a tolerance of 10E-6 for buffer validation (~10cm at worst when using latlong projections); create sql tables with oid to work around a bug in qgis 0.7.4. -2007-01-03 19:18 strk +2007-01-03 19:18 Sandro Santilli - * ChangeLog, source/algorithm/HCoordinate.cpp, source/inlines.cpp: - Applied patch by Mark Cave-Ayland + * [r1951] Applied patch by Mark Cave-Ayland : * source/inlines.cpp, source/algorithm/HCoordinate.cpp: Fixes for MingW builds. See geos-devel/2007-January/002766.html. -2007-01-03 14:56 strk +2007-01-03 14:56 Sandro Santilli - * ChangeLog, source/operation/buffer/BufferOp.cpp: * - source/operation/buffer/BufferOp.cpp (bufferReducedPrecision): + * [r1950] * source/operation/buffer/BufferOp.cpp + (bufferReducedPrecision): Fixed computation of reduced PrecisionModel scale. -2006-12-18 20:04 strk +2006-12-18 20:04 Sandro Santilli - * ChangeLog, tests/xmltester/robustness.xml: * - tests/xmltester/robustness.xml: added + * [r1949] * tests/xmltester/robustness.xml: added testcase reported to fail with 2.2.3 on postgis-users/2006-November/014013.html. -2006-12-18 18:44 strk +2006-12-18 18:44 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h, - source/headers/geos/precision/GeometrySnapper.h, - source/precision/GeometrySnapper.cpp: Geometry snapping synced - with JTS. + * [r1948] Geometry snapping synced with JTS. -2006-12-18 14:27 strk +2006-12-18 14:27 Sandro Santilli - * ChangeLog, HOWTO_RELEASE: * HOWTO_RELEASE: add ChangeLog's - release mark step. + * [r1947] * HOWTO_RELEASE: add ChangeLog's release mark step. -2006-12-18 14:19 strk +2006-12-18 14:19 Sandro Santilli - * ChangeLog, source/precision/GeometrySnapper.cpp, - tests/xmltester/Makefile.am, - tests/xmltester/TestRobustOverlayFixed.xml: * - source/precision/GeometrySnapper.cpp (computeSnapTolerance): + * [r1946] * source/precision/GeometrySnapper.cpp + (computeSnapTolerance): properly compute snap tolerance for fixed precision geometries. * tests/xmltester/: Makefile.am, TestRobustOverlayFixed.xml: new test for fixed precision snapping. -2006-12-15 10:50 strk +2006-12-15 10:50 Sandro Santilli - * ChangeLog: release 3.0.0rc3 marked + * [r1945] release 3.0.0rc3 marked -2006-12-14 19:12 pramsey +2006-12-14 19:12 Paul Ramsey - * configure.in: bumped version numbers for 3.0.0rc3 + * [r1943] bumped version numbers for 3.0.0rc3 -2006-12-13 11:05 mloskot +2006-12-13 11:05 Mateusz Loskot - * ChangeLog, build/msvc80/geos_lib/geos_lib.vcproj, - source/Makefile.vc: Updated makefile and project files for Visual - C++. + * [r1942] Updated makefile and project files for Visual C++. -2006-12-13 10:55 strk +2006-12-13 10:55 Sandro Santilli - * ChangeLog, - source/headers/geos/operation/overlay/FuzzyPointLocator.h, - source/headers/geos/operation/overlay/OffsetPointGenerator.h, - source/headers/geos/operation/overlay/OverlayResultValidator.h, - source/operation/overlay/FuzzyPointLocator.cpp, - source/operation/overlay/OffsetPointGenerator.cpp, - source/operation/overlay/OverlayResultValidator.cpp: Updated port - information. + * [r1941] Updated port information. -2006-12-13 10:51 strk +2006-12-13 10:51 Sandro Santilli - * ChangeLog, source/headers/geos/precision/GeometrySnapper.h, - source/headers/geos/precision/LineStringSnapper.h, - source/precision/GeometrySnapper.cpp, - source/precision/LineStringSnapper.cpp: * - precision::GeometrySnapper, precision::LineStringSnapper: + * [r1940] * precision::GeometrySnapper, + precision::LineStringSnapper: Updated port information. -2006-12-11 17:42 strk +2006-12-11 17:42 Sandro Santilli - * ChangeLog, source/headers/geos/geomgraph/EdgeNodingValidator.h, - source/headers/geos/noding/FastNodingValidator.h, - source/headers/geos/noding/Makefile.am, - source/headers/geos/noding/SegmentIntersector.h, - source/headers/geos/noding/SingleInteriorIntersectionFinder.h, - source/noding/FastNodingValidator.cpp, - source/noding/MCIndexNoder.cpp, source/noding/Makefile.am, - source/noding/SingleInteriorIntersectionFinder.cpp: * - source/headers/geos/noding/SegmentIntersector.h: added virtual + * [r1939] * source/headers/geos/noding/SegmentIntersector.h: added + virtual isDone() function, always returning false by default. * source/noding/MCIndexNoder.cpp (intersectChains): short-circuit from JTS-1.8, based on the new @@ -2069,305 +3995,254 @@ * source/headers/geos/geomgraph/EdgeNodingValidator.h: use a FastNodingValidator rather then a simple NodingValidator. -2006-12-07 10:45 strk +2006-12-07 10:45 Sandro Santilli - * ChangeLog, source/algorithm/LineIntersector.cpp, - source/headers/geos/algorithm/CentralEndpointIntersector.h, - source/headers/geos/algorithm/LineIntersector.h, - source/headers/geos/algorithm/Makefile.am: * - source/headers/geos/algorithm/: CentralEndpointIntersector.h, + * [r1938] * source/headers/geos/algorithm/: + CentralEndpointIntersector.h, Makefile.am: new port from JTS-1.8. * algorithm::LineIntersector: robustness improvements from JTS-1.8. -2006-12-05 11:22 mloskot +2006-12-05 11:22 Mateusz Loskot - * tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp: Fixed indentantion in - tests/unit/capi. + * [r1937] Fixed indentantion in tests/unit/capi. -2006-12-05 11:10 mloskot +2006-12-05 11:10 Mateusz Loskot - * ChangeLog: Fixed typos in changelog. + * [r1936] Fixed typos in changelog. -2006-12-05 11:05 mloskot +2006-12-05 11:05 Mateusz Loskot - * tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp: Set svn:keyword property on - CAPI tests. + * [r1935] Set svn:keyword property on CAPI tests. -2006-12-05 11:02 mloskot +2006-12-05 11:02 Mateusz Loskot - * ChangeLog, tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp: Purifying - CAPI unit tests. + * [r1934] Purifying CAPI unit tests. -2006-12-05 10:59 mloskot +2006-12-05 10:59 Mateusz Loskot - * build/msvc80/geos_unit/geos_unit.vcproj: Added CAPI tests to VC++ - project. + * [r1933] Added CAPI tests to VC++ project. -2006-12-05 10:42 strk +2006-12-05 10:42 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h, - source/operation/overlay/OverlayOp.cpp: * - source/operation/overlay/OverlayOp.cpp: Use EdgeNodingValidator + * [r1932] * source/operation/overlay/OverlayOp.cpp: Use + EdgeNodingValidator instead of OverlayResultValidator (faster and more effective). Note that compile-time defines can select use of either or both ones. * source/headers/geos/geom/BinaryOp.h: be quiet if not in DEBUG mode. -2006-12-05 09:59 strk +2006-12-05 09:59 Sandro Santilli - * ChangeLog, source/headers/geos/noding/NodingValidator.h, - source/noding/NodingValidator.cpp: * noding::NodingValidator.h: - throw TopologyException + * [r1931] * noding::NodingValidator.h: throw TopologyException rather then a generic GEOSException. -2006-12-04 12:41 strk +2006-12-04 12:41 Sandro Santilli - * ChangeLog, source/headers/geos/geomgraph/EdgeNodingValidator.h: * - source/headers/geos/geomgraph/EdgeNodingValidator.h: + * [r1930] * source/headers/geos/geomgraph/EdgeNodingValidator.h: fix members initialization order. -2006-12-04 11:38 strk +2006-12-04 11:38 Sandro Santilli - * ChangeLog, source/geomgraph/EdgeNodingValidator.cpp, - source/headers/geos/geomgraph/EdgeNodingValidator.h: * - geomgraph::EdgeNodingValidator: minor cleanup + * [r1929] * geomgraph::EdgeNodingValidator: minor cleanup to use references args instead of pointers for method that doesn't handle NULLs anyway. -2006-12-04 10:31 strk +2006-12-04 10:31 Sandro Santilli - * ChangeLog, source/simplify/DouglasPeuckerLineSimplifier.cpp, - tests/unit/Makefile.am, tests/unit/capi/GEOSCoordSeq.cpp, - tests/unit/capi/GEOSCoordSeqTest.cpp, - tests/unit/capi/GEOSSimplifyTest.cpp: * tests/unit/capi/: - GEOSCoordSeq.cpp => GEOSCoordSeqTest.cpp + * [r1928] * tests/unit/capi/: GEOSCoordSeq.cpp => + GEOSCoordSeqTest.cpp * tests/unit/capi/GEOSSimplifyTest.cpp: new test for GEOSSimplify (just a test for bug #134). * source/simplify/DouglasPeuckerLineSimplifier.cpp (simplify): don't try to simplify empty coordinate lists. Fixes bug #134. -2006-12-04 10:14 strk +2006-12-04 10:14 Sandro Santilli - * ChangeLog, tests/unit/capi/GEOSCoordSeq.cpp: Other tests using - setOrdinate instead of set{X,Y,Z} + * [r1927] Other tests using setOrdinate instead of set{X,Y,Z} -2006-12-04 10:12 strk +2006-12-04 10:12 Sandro Santilli - * ChangeLog, source/geom/CoordinateArraySequence.cpp: * - source/geom/CoordinateArraySequence.cpp (setOrdinate): fix bug - #133. + * [r1926] * source/geom/CoordinateArraySequence.cpp (setOrdinate): + fix bug #133. -2006-12-04 10:00 strk +2006-12-04 10:00 Sandro Santilli - * ChangeLog, tests/unit/capi/GEOSCoordSeq.cpp: * - tests/unit/capi/GEOSCoordSeq.cpp: add test for bug #133 + * [r1925] * tests/unit/capi/GEOSCoordSeq.cpp: add test for bug #133 (failing). -2006-12-04 09:57 strk +2006-12-04 09:57 Sandro Santilli - * ChangeLog, tests/unit/geom/CoordinateArraySequenceTest.cpp: * - tests/unit/geom/CoordinateArraySequenceTest.cpp: added tests for - setOrdinate() + * [r1924] * tests/unit/geom/CoordinateArraySequenceTest.cpp: added + tests for setOrdinate() -2006-11-30 14:49 strk +2006-11-30 14:49 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, tests/unit/Makefile.am, - tests/unit/capi, tests/unit/capi/GEOSCoordSeq.cpp: * tests/unit/: - Makefile.am, capi/GEOSCoordSeq.cpp: + * [r1923] * tests/unit/: Makefile.am, capi/GEOSCoordSeq.cpp: new experimental test for C-API GEOSCoordSeq. * capi/geos_c.cpp (GEOSCoordSeq_create): removed suspicious static cast. -2006-11-28 19:13 mloskot +2006-11-28 19:13 Mateusz Loskot - * build, build/README, build/msvc80, build/msvc80/README, - build/msvc80/geos.sln, build/msvc80/geos_c_dll, - build/msvc80/geos_c_dll/geos_c_dll.vcproj, build/msvc80/geos_lib, - build/msvc80/geos_lib/geos_lib.vcproj, build/msvc80/geos_unit, - build/msvc80/geos_unit/geos_unit.vcproj: Added Visual C++ 2005 - project files. + * [r1922] Added Visual C++ 2005 project files. -2006-11-23 20:17 strk +2006-11-23 20:17 Sandro Santilli - * ChangeLog, source/geom/Point.cpp: * source/geom/Point.cpp - (equalsExact): don't segfault on empty points. Fixes bug #132. + * [r1921] * source/geom/Point.cpp (equalsExact): don't segfault on + empty points. Fixes bug #132. -2006-11-23 12:25 strk +2006-11-23 12:25 Sandro Santilli - * tests/xmltester/stmlf-cases-20061020.xml: Added short descripion - of testcases provenience + * [r1920] Added short descripion of testcases provenience -2006-11-22 20:29 strk +2006-11-22 20:29 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/stmlf-cases-20061020.xml: * tests/xmltester/: - stmlf-cases-20061020.xml, Makefile.am: add more robustness - testcases. + * [r1919] * tests/xmltester/: stmlf-cases-20061020.xml, + Makefile.am: add more robustness testcases. -2006-11-22 12:26 strk +2006-11-22 12:26 Sandro Santilli - * ChangeLog, autogen.sh: Patch by dron@ak4719.spb.edu: + * [r1918] Patch by dron@ak4719.spb.edu: * autogen.sh: call 'autoheader' after 'aclocal'. Fixes bug #131 -2006-11-18 15:30 mloskot +2006-11-18 15:30 Mateusz Loskot - * source/Makefile.vc: Fixed path to geos_c.h in source/makefile.vc. + * [r1917] Fixed path to geos_c.h in source/makefile.vc. -2006-11-15 18:26 strk +2006-11-15 18:26 Sandro Santilli - * ChangeLog, capi/Makefile.am, capi/geos_c.h.vc.in, configure.in, - source/Makefile.vc, source/headers/geos/Makefile.am, - source/headers/geos/version.h.vc: * configure.in: don't generate - geos_c.h.vc + * [r1916] * configure.in: don't generate geos_c.h.vc * source/Makefile.vc: don't generate geos_c.h and version.h * source/headers/geos/version.h.vc, capi/geos_c.h.vc.in: removed, will NOT be needed by Makefile.vc * source/headers/geos/Makefile.am: distribute version.h * capi/Makefile.am: distribute geos_c.h -2006-11-15 14:42 strk +2006-11-15 14:42 Sandro Santilli - * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: hopefully fixed - GEOS_DLL use. + * [r1915] * capi/geos_c.h.in: hopefully fixed GEOS_DLL use. -2006-11-15 11:28 strk +2006-11-15 11:28 Sandro Santilli - * ChangeLog, capi/geos_c.cpp: * capi/geos_c.cpp - (GEOSGeom_getDimensions): Fix a segfault on empty geometry input - (fix bug #126). + * [r1914] * capi/geos_c.cpp (GEOSGeom_getDimensions): Fix a + segfault on empty geometry input (fix bug #126). -2006-11-11 05:32 pramsey +2006-11-11 05:32 Paul Ramsey - * capi/geos_c.h.vc.in: Retreived original .vc file and put in MACRO + * [r1913] Retreived original .vc file and put in MACRO substitutions. Somehow GNU version replaced .vc version during file shuffles to get macros in. -2006-11-10 18:24 strk +2006-11-10 18:24 Sandro Santilli - * ChangeLog: fixed timewarp + * [r1912] fixed timewarp -2006-11-10 17:56 pramsey +2006-11-10 17:56 Paul Ramsey - * ChangeLog: noted .vc change + * [r1911] noted .vc change -2006-11-10 17:55 pramsey +2006-11-10 17:55 Paul Ramsey - * capi/Makefile.am: Made sure geos_c.h.vc is part of 'make dist' - since VC users won't have .configure + * [r1910] Made sure geos_c.h.vc is part of 'make dist' since VC + users won't have .configure -2006-11-10 17:38 pramsey +2006-11-10 17:38 Paul Ramsey - * capi/Makefile.am, capi/geos_c.h.vc, capi/geos_c.h.vc.in: Added - substitution strings to .in files for .vc generation. + * [r1909] Added substitution strings to .in files for .vc + generation. -2006-11-10 17:35 pramsey +2006-11-10 17:35 Paul Ramsey - * configure.in: Changes for capi .vc generation + * [r1908] Changes for capi .vc generation -2006-11-10 14:50 hobu +2006-11-10 14:50 Howard Butler - * capi/geos_c.h.vc: update + * [r1907] update -2006-11-09 09:10 strk +2006-11-09 09:10 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: * - test/xmltester/XMLTester.cpp: improved 'testarea' test. + * [r1906] * test/xmltester/XMLTester.cpp: improved 'testarea' test. -2006-11-08 11:54 strk +2006-11-08 11:54 Sandro Santilli - * ChangeLog: added 'release-separator' tag + * [r1905] added 'release-separator' tag -2006-11-08 11:51 strk +2006-11-08 11:51 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/robustness.xml: * tests/xmltester/robustness.xml: - made test safe to + * [r1904] * tests/xmltester/robustness.xml: made test safe to run by using the new 'areatest' operation; added new testcases just raised on the mailing list. * tests/xmltester/Makefile.am: robustness.xml is now safe to run, so run it on make check. -2006-11-08 10:40 strk +2006-11-08 10:40 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * - source/headers/geos/geom/BinaryOp.h: enable + * [r1903] * source/headers/geos/geom/BinaryOp.h: enable COMMONBITS-removal heuristic so it is attempted before geometry snapping. -2006-11-05 20:34 strk +2006-11-05 20:34 Sandro Santilli - * ChangeLog, capi/Makefile.am: * capi/Makefile.am: distribute files - needed for testing, proper cleanup (make distcheck works now) + * [r1900] * capi/Makefile.am: distribute files needed for testing, + proper cleanup (make distcheck works now) -2006-11-05 00:24 csavage +2006-11-05 00:24 Charlie Savage - * swig/ruby/geos_wrap.cxx: Updated ruby swig wrapper for changes in - header files. + * [r1899] Updated ruby swig wrapper for changes in header files. -2006-11-05 00:24 csavage +2006-11-05 00:24 Charlie Savage - * swig/python/geos_wrap.cxx: Updated python swig wrapper for - changes in header files. + * [r1898] Updated python swig wrapper for changes in header files. -2006-11-05 00:23 csavage +2006-11-05 00:23 Charlie Savage - * swig/geos.i: Fixes for changes in header files. + * [r1897] Fixes for changes in header files. -2006-11-03 12:35 strk +2006-11-03 12:35 Sandro Santilli - * capi/testrunner.sh: redirect 'diff' output to stderr + * [r1896] redirect 'diff' output to stderr -2006-11-03 10:54 strk +2006-11-03 10:54 Sandro Santilli - * ChangeLog, capi/testrunner.sh: hopefully fixed proper quoting + * [r1895] hopefully fixed proper quoting -2006-11-03 10:30 strk +2006-11-03 10:30 Sandro Santilli - * ChangeLog, capi/testrunner.sh: Report non-zero return from - ./geostest run + * [r1894] Report non-zero return from ./geostest run -2006-11-02 10:08 strk +2006-11-02 10:08 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * - source/headers/geos/geom/BinaryOp.h: disable debugging output by - default. + * [r1893] * source/headers/geos/geom/BinaryOp.h: disable debugging + output by default. -2006-11-02 10:02 strk +2006-11-02 10:02 Sandro Santilli - * ChangeLog, capi/geostest.c: * capi/geostest.c: updated to use the - new GEOSGeometry typedef, so to build w/out warnings and fully - respecting current const specification. + * [r1892] * capi/geostest.c: updated to use the new GEOSGeometry + typedef, so to build w/out warnings and fully respecting current + const specification. -2006-11-02 09:48 strk +2006-11-02 09:48 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: * capi/geos_c.cpp, - capi/geos_c.h.in: const-corrected and documented GEOSPolygonize - function. + * [r1891] * capi/geos_c.cpp, capi/geos_c.h.in: const-corrected and + documented GEOSPolygonize function. -2006-11-02 09:38 strk +2006-11-02 09:38 Sandro Santilli - * ChangeLog, capi/test.expected, capi/testrunner.sh: * - capi/test.expected: updated expected version + * [r1890] * capi/test.expected: updated expected version * capi/testrunner.sh: be happy with geostest running w/out segfaulting, still run diff for reference. -2006-11-02 09:33 strk +2006-11-02 09:33 Sandro Santilli - * ChangeLog, configure.in: * configure.in: updated versions to - 3.0.0rc2 / CAPI-1.3.0 + * [r1889] * configure.in: updated versions to 3.0.0rc2 / CAPI-1.3.0 -2006-11-02 08:32 strk +2006-11-02 08:32 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: Patch by Markus - Schaber : + * [r1888] Patch by Markus Schaber : * capi/geos_c.h.in: add GEOSGeometry and GEOSCoordSequence typedef, to unhide the pointer type and allow fine-grained @@ -2376,27 +4251,25 @@ * capi/geos_c.cpp: define GEOSGeometry and GEOSCoordSequence for cross-checking of types in header. -2006-10-30 15:14 strk +2006-10-30 15:14 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: Patch by Markus - Schaber + * [r1887] Patch by Markus Schaber * capi/geos_c.cpp: more focused 'using' directives. * capi/geos_c.h.in: let the enum visible by geos_c.cpp now that there are no more name clashes. -2006-10-30 13:20 strk +2006-10-30 13:20 Sandro Santilli - * capi/geos_c.cpp: removed useless GEOSGeomTypes define + * [r1886] removed useless GEOSGeomTypes define -2006-10-30 13:00 strk +2006-10-30 13:00 Sandro Santilli - * ChangeLog, source/operation/overlay/OverlayOp.cpp: reduce default - verbosity + * [r1885] reduce default verbosity -2006-10-30 12:49 strk +2006-10-30 12:49 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: * capi/geos_c.cpp: + * [r1884] * capi/geos_c.cpp: Remove a typedef which is also included via Header; Use dynamic_cast instead of C cast in 2 cases to allow the RTTI type check; @@ -2409,1548 +4282,803 @@ Added a comment explaining ou #ifndef magic; Unified the two #ifndef into a single one. -2006-10-30 10:29 strk +2006-10-30 10:29 Sandro Santilli + + * [r1883] * capi/: test.expected, testrunner.sh, Makefile.am: Added + a run of ./geostest as part of 'make check' + +2006-10-30 10:15 Sandro Santilli + + * [r1882] Patch submitted by Markus Schaber ( + reviewed and fixed ) + + * capi/: geos_c.cpp, geos_c.h.in: + Changed the C-API implementation to actually include the header + that's included by the clients, this allows the compiler to check + declarations and implementation for consistency, fixed geos_c.cpp + accordingly (const-correctness, mainly). + +2006-10-30 09:49 Sandro Santilli + + * [r1881] * capi/geostest.c: added some checks of return from CAPI + functions returning GEOSGeom (not all, just a few) + +2006-10-27 11:54 Sandro Santilli + + * [r1880] Patch by Markus Schaber + + * algorithm::InteriorPointLine (ctor): take Geometry by + const-pointer. + * geom::Geometry (getInteriorPoint): made a const-method + * operation::polygonize::Polygonizer: implement filter_ro rather + then filter_rw, as it doesn't change the Geometry, propagated + change to internal interfaces (add methods) + +2006-10-26 09:22 Sandro Santilli + + * [r1879] * capi/geos_c.h.in: reverted all changes of 'int' types + to 'size_t' types (the lib never changed, and still expects + ints) + +2006-10-24 16:54 Sandro Santilli + + * [r1878] * source/headers/geos/geom/BinaryOp.h: try original geoms + first by default. + +2006-10-24 16:53 Sandro Santilli + + * [r1877] * operation::overlay::OverlayResultValidator.cpp + (isValid): run the test even if inputs and output are not areal. + +2006-10-24 16:49 Sandro Santilli + + * [r1876] * operation::overlay::FuzzyPointLocator: eliminate + non-polygonal components from consideration when testing the + location of points. + +2006-10-24 10:16 Sandro Santilli + + * [r1875] * precision::GeometrySnapper: snapPrecisionFactor + augmented from 10e-12 to 10e-10. + +2006-10-24 09:49 Sandro Santilli + + * [r1874] * precision::LineStringSnapper (findSegmentToSnap): + return the *closest* segment, don't snap if the closest + segment *intersects* the snap points, consider a distance + of exactly snapTolerance as non-tolerated (got in sync with JTS) + +2006-10-23 10:23 Sandro Santilli + + * [r1873] * source/headers/geos/geom/BinaryOp.h (SnapOp): document + and add optional CBR step (snap after applying common bits + removal - this is the default); (check_valid): add validity + checker function. + +2006-10-20 11:18 Sandro Santilli + + * [r1872] * noding::SegmentString: added notifyCoordinatesChange + method. + * noding::ScaledNoder: notify possible coordinates change to + SegmentString after removing repeated points. + +2006-10-19 18:26 Sandro Santilli + + * [r1871] * configure.in: use 'expr' for arithmetics (more + portable) + +2006-10-18 19:21 Mateusz Loskot + + * [r1870] Refactored Visual C++ makefiles. + +2006-10-18 17:53 Mateusz Loskot + + * [r1869] Updated source\makefile.vc and source\dirlist.mk files. + +2006-10-18 17:53 Mateusz Loskot + + * [r1868] Added top-level makefile.vc. + +2006-10-18 14:28 Sandro Santilli + + * [r1867] fixed svn:ignore property + +2006-10-18 12:08 Sandro Santilli + + * [r1866] disable non-JTS overlay result validators (to more + closely track JTS at this stage) + +2006-10-17 14:26 Sandro Santilli + + * [r1865] * source/headers/geos/geom/BinaryOp.h (SnapOp): fixed + horrible + bug applying overlay of first geom to itself :( + +2006-10-17 10:15 Sandro Santilli + + * [r1864] really fixed 'extra tokens at end of #endif directive' + warning + +2006-10-17 10:10 Sandro Santilli + + * [r1863] fixed 'extra tokens at end of #endif directive' warning + +2006-10-17 08:44 Sandro Santilli + + * [r1862] * capi/Makefile.am: don't directly link geostest against + both libgeos.so and libstdc++ (should be derived by + libgeos_c.so). + +2006-10-12 15:33 Sandro Santilli + + * [r1861] * tests/bigtest/GeometryTestFactory.cpp, + tests/bigtest/bigtest.h, tests/bigtest/TestSweepLineSpeed.cpp: + fixed header inclusion, to reduce compiler noise. + +2006-10-09 16:39 Sandro Santilli + + * [r1860] * source/headers/geos/geom/BinaryOp.h: always snap geoms + to each-other before applying an overlay (temp hack). + +2006-10-09 16:35 Sandro Santilli + + * [r1859] * source/operation/overlay/OverlayOp.cpp: enable all + overlay result validators, make it disablable at compile time. + +2006-10-05 10:58 Mateusz Loskot + + * [r1858] Added inclusion guards to geos_c.h files. + +2006-10-05 09:46 Sandro Santilli + + * [r1857] increment areatest verbosity (needs -v -v) + +2006-10-02 18:53 Howard Butler + + * [r1856] GEOSEnvelope wasn't in the PROTOTYPES section in + geos_c.cpp + +2006-09-27 07:48 Sandro Santilli + + * [r1855] updated tag item + +2006-09-27 07:43 Sandro Santilli + + * [r1854] added info about svn tags + +2006-09-19 06:54 Sandro Santilli + + * [r1853] Added include + +2006-09-08 23:13 Paul Ramsey + + * [r1851] Added information about funders of the 3.0.0 series: Safe + Software, Autodesk, + Bavarian State Ministry of Agriculture and Forestry and the State + Survey of Bavaria. + +2006-09-08 09:38 Sandro Santilli + + * [r1850] updated + +2006-09-08 09:31 Sandro Santilli + + * [r1849] more debugging output - * ChangeLog, capi/Makefile.am, capi/test.expected, - capi/testrunner.sh: * capi/: test.expected, testrunner.sh, - Makefile.am: Added a run of ./geostest as part of 'make check' +2006-09-08 09:21 Sandro Santilli -2006-10-30 10:15 strk + * [r1848] More testcases - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: Patch submitted by - Markus Schaber ( reviewed and fixed ) - - * capi/: geos_c.cpp, geos_c.h.in: - Changed the C-API implementation to actually include the header - that's included by the clients, this allows the compiler to check - declarations and implementation for consistency, fixed geos_c.cpp - accordingly (const-correctness, mainly). +2006-09-07 18:07 Sandro Santilli -2006-10-30 09:49 strk + * [r1847] New unit test for OverlayResultValidator class - * ChangeLog, capi/geostest.c: * capi/geostest.c: added some checks - of return from CAPI functions returning GEOSGeom (not all, just a - few) +2006-09-07 18:07 Sandro Santilli -2006-10-27 11:54 strk + * [r1846] more debugging output - * ChangeLog, source/algorithm/InteriorPointLine.cpp, - source/geom/Geometry.cpp, - source/headers/geos/algorithm/InteriorPointLine.h, - source/headers/geos/geom/Geometry.h, - source/headers/geos/operation/polygonize/Polygonizer.h, - source/operation/polygonize/Polygonizer.cpp: Patch by Markus - Schaber - - * algorithm::InteriorPointLine (ctor): take Geometry by - const-pointer. - * geom::Geometry (getInteriorPoint): made a const-method - * operation::polygonize::Polygonizer: implement filter_ro rather - then filter_rw, as it doesn't change the Geometry, propagated - change to internal interfaces (add methods) +2006-09-07 17:52 Sandro Santilli -2006-10-26 09:22 strk + * [r1845] Added addVertices private method (unused, as in JTS, but + possibly useful in the future) - * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: reverted all - changes of 'int' types - to 'size_t' types (the lib never changed, and still expects - ints) +2006-09-07 17:41 Sandro Santilli -2006-10-24 16:54 strk + * [r1844] Added debugging code - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * - source/headers/geos/geom/BinaryOp.h: try original geoms first by - default. - -2006-10-24 16:53 strk - - * ChangeLog, - source/headers/geos/operation/overlay/OverlayResultValidator.h, - source/operation/overlay/OverlayResultValidator.cpp: * - operation::overlay::OverlayResultValidator.cpp (isValid): run the - test even if inputs and output are not areal. - -2006-10-24 16:49 strk - - * ChangeLog, - source/headers/geos/operation/overlay/FuzzyPointLocator.h, - source/operation/overlay/FuzzyPointLocator.cpp: * - operation::overlay::FuzzyPointLocator: eliminate non-polygonal - components from consideration when testing the location of - points. +2006-09-07 17:35 Sandro Santilli -2006-10-24 10:16 strk + * [r1843] more testcases (added test for max distance of offset + points) - * ChangeLog, source/headers/geos/precision/GeometrySnapper.h, - source/precision/GeometrySnapper.cpp: * - precision::GeometrySnapper: snapPrecisionFactor augmented from - 10e-12 to 10e-10. - -2006-10-24 09:49 strk - - * ChangeLog, source/headers/geos/precision/LineStringSnapper.h, - source/precision/LineStringSnapper.cpp: * - precision::LineStringSnapper (findSegmentToSnap): - return the *closest* segment, don't snap if the closest - segment *intersects* the snap points, consider a distance - of exactly snapTolerance as non-tolerated (got in sync with JTS) +2006-09-07 15:28 Sandro Santilli -2006-10-23 10:23 strk + * [r1842] removed svn:executable prop from all .cpp files - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * - source/headers/geos/geom/BinaryOp.h (SnapOp): document and add - optional CBR step (snap after applying common bits removal - this - is the default); (check_valid): add validity checker function. - -2006-10-20 11:18 strk - - * ChangeLog, source/headers/geos/noding/SegmentString.h, - source/noding/ScaledNoder.cpp, source/noding/SegmentString.cpp: * - noding::SegmentString: added notifyCoordinatesChange method. - * noding::ScaledNoder: notify possible coordinates change to - SegmentString after removing repeated points. +2006-09-07 15:22 Sandro Santilli -2006-10-19 18:26 strk + * [r1841] removed svn:executable property - * ChangeLog, configure.in: * configure.in: use 'expr' for - arithmetics (more portable) +2006-09-07 15:21 Sandro Santilli -2006-10-18 19:21 mloskot + * [r1840] testing execute bit state - * ChangeLog, makefile.vc, source/Makefile.vc: Refactored Visual C++ - makefiles. +2006-09-07 12:17 Mateusz Loskot -2006-10-18 17:53 mloskot + * [r1839] Set svn:keyword for $ expansion. - * source/Makefile.vc, source/dirlist.mk: Updated source\makefile.vc - and source\dirlist.mk files. +2006-09-07 11:34 Sandro Santilli -2006-10-18 17:53 mloskot + * [r1838] Cleaned up OverlayResultValidator call (still disabled + due to bugs) - * makefile.vc: Added top-level makefile.vc. +2006-09-07 11:27 Sandro Santilli -2006-10-18 14:28 strk + * [r1837] blindly return positive result if any input or output is + not an area - * .: fixed svn:ignore property +2006-09-07 11:08 Sandro Santilli -2006-10-18 12:08 strk + * [r1836] new test for FuzzyPointLocator - * ChangeLog, source/operation/overlay/OverlayOp.cpp: disable - non-JTS overlay result validators (to more closely track JTS at - this stage) +2006-09-07 10:30 Sandro Santilli -2006-10-17 14:26 strk + * [r1835] Explicit values to LocationValue enum items. Removed CVS + Log - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * - source/headers/geos/geom/BinaryOp.h (SnapOp): fixed horrible - bug applying overlay of first geom to itself :( +2006-09-07 09:33 Sandro Santilli -2006-10-17 10:15 strk + * [r1834] Removed catch-all headers inclusion and use of obsoleted + Unload class - * capi/geos_c.h.in: really fixed 'extra tokens at end of #endif - directive' warning +2006-09-07 09:24 Sandro Santilli -2006-10-17 10:10 strk + * [r1833] updated - * capi/geos_c.h.in: fixed 'extra tokens at end of #endif directive' - warning +2006-09-07 09:23 Sandro Santilli -2006-10-17 08:44 strk + * [r1832] comment cleanup - * ChangeLog, capi/Makefile.am: * capi/Makefile.am: don't directly - link geostest against - both libgeos.so and libstdc++ (should be derived by - libgeos_c.so). +2006-09-07 09:01 Sandro Santilli -2006-10-12 15:33 strk + * [r1831] Comments about ownership (and lifetime) of returned + objects - * ChangeLog, tests/bigtest/GeometryTestFactory.cpp, - tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bigtest.h: * - tests/bigtest/GeometryTestFactory.cpp, tests/bigtest/bigtest.h, - tests/bigtest/TestSweepLineSpeed.cpp: fixed header inclusion, to - reduce compiler noise. +2006-09-07 08:59 Sandro Santilli -2006-10-09 16:39 strk + * [r1830] New DistanceOp unit test - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * - source/headers/geos/geom/BinaryOp.h: always snap geoms to - each-other before applying an overlay (temp hack). +2006-09-07 08:57 Sandro Santilli -2006-10-09 16:35 strk + * [r1829] (computeMinDistancePoints): fixed invalid reference. - * ChangeLog, source/operation/overlay/OverlayOp.cpp: * - source/operation/overlay/OverlayOp.cpp: enable all overlay result - validators, make it disablable at compile time. +2006-09-07 08:23 Sandro Santilli -2006-10-05 10:58 mloskot + * [r1828] don't giveup on automake failures (testing) - * ChangeLog, capi/geos_c.h.in, capi/geos_c.h.vc: Added inclusion - guards to geos_c.h files. +2006-09-06 18:44 Sandro Santilli -2006-10-05 09:46 strk + * [r1827] Ops, overlay result validation erroenously committed - * ChangeLog, tests/xmltester/XMLTester.cpp: increment areatest - verbosity (needs -v -v) +2006-09-06 18:41 Sandro Santilli -2006-10-02 18:53 hobu + * [r1826] new test for OffsetPointGenerator class - * ChangeLog, capi/geos_c.cpp: GEOSEnvelope wasn't in the PROTOTYPES - section in geos_c.cpp +2006-09-06 18:37 Sandro Santilli -2006-09-27 07:48 strk + * [r1825] Fixed uninitialized memory bug - * HOWTO_RELEASE: updated tag item +2006-09-06 17:59 Sandro Santilli -2006-09-27 07:43 strk + * [r1824] new test for FuzzyPointLocator class - * HOWTO_RELEASE: added info about svn tags +2006-09-06 17:48 Sandro Santilli -2006-09-19 06:54 strk + * [r1823] updated after GeometrySnapper interface change. - * source/operation/overlay/OffsetPointGenerator.cpp: Added - include +2006-09-06 17:26 Mateusz Loskot -2006-09-08 23:13 pramsey + * [r1822] Set $ expansion for new files in 'overlay' module. - * AUTHORS: Added information about funders of the 3.0.0 series: - Safe Software, Autodesk, - Bavarian State Ministry of Agriculture and Forestry and the State - Survey of Bavaria. +2006-09-06 17:22 Sandro Santilli -2006-09-08 09:38 strk + * [r1821] Rest of Overlay validation classes. - * TODO: updated +2006-09-06 16:54 Mateusz Loskot -2006-09-08 09:31 strk + * [r1820] Set svn:keyword property for Id keyword expansion. - * source/operation/overlay/OverlayResultValidator.cpp: more - debugging output +2006-09-06 15:50 Sandro Santilli -2006-09-08 09:21 strk - - * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp, - tests/unit/operation/overlay/OverlayResultValidatorTest.cpp: More - testcases - -2006-09-07 18:07 strk - - * tests/unit/Makefile.am, - tests/unit/operation/overlay/OverlayResultValidatorTest.cpp: New - unit test for OverlayResultValidator class - -2006-09-07 18:07 strk - - * source/operation/overlay/OverlayResultValidator.cpp: more - debugging output - -2006-09-07 17:52 strk - - * source/headers/geos/operation/overlay/OverlayResultValidator.h, - source/operation/overlay/OverlayResultValidator.cpp: Added - addVertices private method (unused, as in JTS, but possibly - useful in the future) - -2006-09-07 17:41 strk - - * source/operation/overlay/OverlayResultValidator.cpp: Added - debugging code - -2006-09-07 17:35 strk - - * tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp: more - testcases (added test for max distance of offset points) - -2006-09-07 15:28 strk - - * tests/unit/algorithm/PointLocatorTest.cpp, - tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/CoordinateListTest.cpp, - tests/unit/geom/CoordinateTest.cpp, - tests/unit/geom/DimensionTest.cpp, - tests/unit/geom/EnvelopeTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/LineSegmentTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/LocationTest.cpp, - tests/unit/geom/MultiLineStringTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/MultiPolygonTest.cpp, - tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/TriangleTest.cpp, - tests/unit/io/WKBReaderTest.cpp, - tests/unit/noding/SegmentStringTest.cpp, - tests/unit/operation/distance/DistanceOpTest.cpp, - tests/unit/precision/LineStringSnapperTest.cpp: removed - svn:executable prop from all .cpp files - -2006-09-07 15:22 strk - - * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp, - tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp: - removed svn:executable property - -2006-09-07 15:21 strk - - * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp: testing - execute bit state - -2006-09-07 12:17 mloskot - - * tests/unit/operation/distance/DistanceOpTest.cpp: Set svn:keyword - for $ expansion. - -2006-09-07 11:34 strk - - * source/operation/overlay/OverlayOp.cpp: Cleaned up - OverlayResultValidator call (still disabled due to bugs) - -2006-09-07 11:27 strk - - * source/operation/overlay/OverlayResultValidator.cpp: blindly - return positive result if any input or output is not an area - -2006-09-07 11:08 strk - - * tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp: new test - for FuzzyPointLocator - -2006-09-07 10:30 strk - - * source/headers/geos/geom/Location.h: Explicit values to - LocationValue enum items. Removed CVS Log - -2006-09-07 09:33 strk - - * doc/example.cpp: Removed catch-all headers inclusion and use of - obsoleted Unload class - -2006-09-07 09:24 strk - - * README: updated - -2006-09-07 09:23 strk - - * source/headers/geos/operation/overlay/OverlayResultValidator.h: - comment cleanup - -2006-09-07 09:01 strk - - * source/headers/geos/operation/distance/DistanceOp.h: Comments - about ownership (and lifetime) of returned objects - -2006-09-07 08:59 strk - - * tests/unit/Makefile.am, tests/unit/operation/distance, - tests/unit/operation/distance/DistanceOpTest.cpp: New DistanceOp - unit test - -2006-09-07 08:57 strk - - * ChangeLog, source/operation/distance/DistanceOp.cpp: - (computeMinDistancePoints): fixed invalid reference. - -2006-09-07 08:23 strk - - * ChangeLog, autogen.sh: don't giveup on automake failures - (testing) - -2006-09-06 18:44 strk - - * source/operation/overlay/OverlayOp.cpp: Ops, overlay result - validation erroenously committed - -2006-09-06 18:41 strk - - * ChangeLog, tests/unit/Makefile.am, - tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp: new - test for OffsetPointGenerator class - -2006-09-06 18:37 strk - - * source/operation/overlay/OffsetPointGenerator.cpp: Fixed - uninitialized memory bug - -2006-09-06 17:59 strk - - * ChangeLog, source/operation/overlay/OverlayOp.cpp, - tests/unit/Makefile.am, tests/unit/operation, - tests/unit/operation/overlay, - tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp: new test - for FuzzyPointLocator class - -2006-09-06 17:48 strk - - * tests/unit/precision/GeometrySnapperTest.cpp: updated after - GeometrySnapper interface change. - -2006-09-06 17:26 mloskot - - * ChangeLog, - source/headers/geos/operation/overlay/OffsetPointGenerator.h, - source/headers/geos/operation/overlay/OverlayResultValidator.h, - source/operation/overlay/OffsetPointGenerator.cpp, - source/operation/overlay/OverlayResultValidator.cpp: Set $ - expansion for new files in 'overlay' module. - -2006-09-06 17:22 strk - - * ChangeLog, - source/headers/geos/operation/overlay/FuzzyPointLocator.h, - source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/overlay/OffsetPointGenerator.h, - source/headers/geos/operation/overlay/OverlayResultValidator.h, - source/operation/overlay/FuzzyPointLocator.cpp, - source/operation/overlay/Makefile.am, - source/operation/overlay/OffsetPointGenerator.cpp, - source/operation/overlay/OverlayResultValidator.cpp: Rest of - Overlay validation classes. - -2006-09-06 16:54 mloskot - - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_c.h.vc, - capi/geostest.c, configure.in, debian/watch, doc/Doxyfile.in, - doc/example.cpp, source/Makefile.vc, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, source/dirlist.mk, - source/examples/CPCLException.cpp, - source/examples/CoordinateSequencesExample.cpp, - source/examples/CustomCoordinateSequenceExample.cpp, - source/examples/CustomCoordinateSequenceExample.h, - source/examples/CustomPointCoordinateSequence.cpp, - source/geom/Coordinate.cpp, - source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateArraySequenceFactory.cpp, - source/geom/CoordinateSequence.cpp, - source/geom/CoordinateSequenceFactory.cpp, - source/geom/Dimension.cpp, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, source/geom/GeometryList.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, source/geom/Triangle.cpp, - source/geom/util/CoordinateOperation.cpp, - source/geom/util/GeometryEditor.cpp, - source/geom/util/GeometryTransformer.cpp, - source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp, - source/geom/util/ShortCircuitedGeometryVisitor.cpp, - source/geomgraph/Depth.cpp, source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, - source/geomgraph/EdgeNodingValidator.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/GraphComponent.cpp, source/geomgraph/Label.cpp, - source/geomgraph/Node.cpp, source/geomgraph/NodeFactory.cpp, - source/geomgraph/NodeMap.cpp, source/geomgraph/PlanarGraph.cpp, - source/geomgraph/Position.cpp, source/geomgraph/Quadrant.cpp, - source/geomgraph/TopologyLocation.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/geomgraph/index/SweepLineSegment.cpp, - source/headers/acconfig.h, source/headers/geos.h, - source/headers/geos/algorithm/CGAlgorithms.h, - source/headers/geos/algorithm/CentroidArea.h, - source/headers/geos/algorithm/CentroidLine.h, - source/headers/geos/algorithm/CentroidPoint.h, - source/headers/geos/algorithm/ConvexHull.h, - source/headers/geos/algorithm/ConvexHull.inl, - source/headers/geos/algorithm/HCoordinate.h, - source/headers/geos/algorithm/InteriorPointArea.h, - source/headers/geos/algorithm/InteriorPointLine.h, - source/headers/geos/algorithm/InteriorPointPoint.h, - source/headers/geos/algorithm/LineIntersector.h, - source/headers/geos/algorithm/MCPointInRing.h, - source/headers/geos/algorithm/MinimumDiameter.h, - source/headers/geos/algorithm/NotRepresentableException.h, - source/headers/geos/algorithm/PointInRing.h, - source/headers/geos/algorithm/PointLocator.h, - source/headers/geos/algorithm/RobustDeterminant.h, - source/headers/geos/algorithm/SIRtreePointInRing.h, - source/headers/geos/algorithm/SimplePointInAreaLocator.h, - source/headers/geos/algorithm/SimplePointInRing.h, - source/headers/geos/geom.h, source/headers/geos/geom/BinaryOp.h, - source/headers/geos/geom/Coordinate.h, - source/headers/geos/geom/Coordinate.inl, - source/headers/geos/geom/CoordinateArraySequence.h, - source/headers/geos/geom/CoordinateArraySequenceFactory.h, - source/headers/geos/geom/CoordinateArraySequenceFactory.inl, - source/headers/geos/geom/CoordinateFilter.h, - source/headers/geos/geom/CoordinateList.h, - source/headers/geos/geom/CoordinateSequence.h, - source/headers/geos/geom/CoordinateSequenceFactory.h, - source/headers/geos/geom/Dimension.h, - source/headers/geos/geom/Envelope.h, - source/headers/geos/geom/Envelope.inl, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/Geometry.inl, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/GeometryCollection.inl, - source/headers/geos/geom/GeometryComponentFilter.h, - source/headers/geos/geom/GeometryFactory.h, - source/headers/geos/geom/GeometryFactory.inl, - source/headers/geos/geom/GeometryFilter.h, - source/headers/geos/geom/GeometryList.h, - source/headers/geos/geom/IntersectionMatrix.h, - source/headers/geos/geom/LineSegment.h, - source/headers/geos/geom/LineSegment.inl, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/LinearRing.h, - source/headers/geos/geom/Location.h, - source/headers/geos/geom/MultiLineString.h, - source/headers/geos/geom/MultiLineString.inl, - source/headers/geos/geom/MultiPoint.h, - source/headers/geos/geom/MultiPolygon.h, - source/headers/geos/geom/MultiPolygon.inl, - source/headers/geos/geom/Point.h, - source/headers/geos/geom/Polygon.h, - source/headers/geos/geom/PrecisionModel.h, - source/headers/geos/geom/PrecisionModel.inl, - source/headers/geos/geom/Triangle.h, - source/headers/geos/geom/util/CoordinateOperation.h, - source/headers/geos/geom/util/GeometryEditor.h, - source/headers/geos/geom/util/GeometryEditorOperation.h, - source/headers/geos/geom/util/GeometryTransformer.h, - source/headers/geos/geom/util/LinearComponentExtracter.h, - source/headers/geos/geom/util/PointExtracter.h, - source/headers/geos/geom/util/PolygonExtracter.h, - source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h, - source/headers/geos/geomUtil.h, source/headers/geos/geomgraph.h, - source/headers/geos/geomgraph/Depth.h, - source/headers/geos/geomgraph/DirectedEdge.h, - source/headers/geos/geomgraph/DirectedEdge.inl, - source/headers/geos/geomgraph/DirectedEdgeStar.h, - source/headers/geos/geomgraph/Edge.h, - source/headers/geos/geomgraph/EdgeEnd.h, - source/headers/geos/geomgraph/EdgeEndStar.h, - source/headers/geos/geomgraph/EdgeIntersection.h, - source/headers/geos/geomgraph/EdgeIntersectionList.h, - source/headers/geos/geomgraph/EdgeList.h, - source/headers/geos/geomgraph/EdgeNodingValidator.h, - source/headers/geos/geomgraph/EdgeRing.h, - source/headers/geos/geomgraph/GeometryGraph.h, - source/headers/geos/geomgraph/GeometryGraph.inl, - source/headers/geos/geomgraph/GraphComponent.h, - source/headers/geos/geomgraph/Label.h, - source/headers/geos/geomgraph/Node.h, - source/headers/geos/geomgraph/NodeFactory.h, - source/headers/geos/geomgraph/NodeMap.h, - source/headers/geos/geomgraph/PlanarGraph.h, - source/headers/geos/geomgraph/Position.h, - source/headers/geos/geomgraph/Quadrant.h, - source/headers/geos/geomgraph/TopologyLocation.h, - source/headers/geos/geomgraph/index/EdgeSetIntersector.h, - source/headers/geos/geomgraph/index/MonotoneChain.h, - source/headers/geos/geomgraph/index/MonotoneChainEdge.h, - source/headers/geos/geomgraph/index/MonotoneChainIndexer.h, - source/headers/geos/geomgraph/index/SegmentIntersector.h, - source/headers/geos/geomgraph/index/SimpleEdgeSetIntersector.h, - source/headers/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, - source/headers/geos/geomgraph/index/SimpleSweepLineIntersector.h, - source/headers/geos/geomgraph/index/SweepLineEvent.h, - source/headers/geos/geomgraph/index/SweepLineEventObj.h, - source/headers/geos/geomgraph/index/SweepLineSegment.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/index/ItemVisitor.h, - source/headers/geos/index/SpatialIndex.h, - source/headers/geos/index/bintree/Bintree.h, - source/headers/geos/index/bintree/Interval.h, - source/headers/geos/index/bintree/Key.h, - source/headers/geos/index/bintree/Node.h, - source/headers/geos/index/bintree/NodeBase.h, - source/headers/geos/index/bintree/Root.h, - source/headers/geos/index/chain/MonotoneChain.h, - source/headers/geos/index/chain/MonotoneChainBuilder.h, - source/headers/geos/index/chain/MonotoneChainOverlapAction.h, - source/headers/geos/index/chain/MonotoneChainSelectAction.h, - source/headers/geos/index/quadtree/DoubleBits.h, - source/headers/geos/index/quadtree/IntervalSize.h, - source/headers/geos/index/quadtree/Key.h, - source/headers/geos/index/quadtree/Node.h, - source/headers/geos/index/quadtree/NodeBase.h, - source/headers/geos/index/quadtree/Quadtree.h, - source/headers/geos/index/quadtree/Root.h, - source/headers/geos/index/strtree/AbstractNode.h, - source/headers/geos/index/strtree/AbstractSTRtree.h, - source/headers/geos/index/strtree/Boundable.h, - source/headers/geos/index/strtree/Interval.h, - source/headers/geos/index/strtree/ItemBoundable.h, - source/headers/geos/index/strtree/SIRtree.h, - source/headers/geos/index/strtree/STRtree.h, - source/headers/geos/index/sweepline/SweepLineEvent.h, - source/headers/geos/index/sweepline/SweepLineIndex.h, - source/headers/geos/index/sweepline/SweepLineInterval.h, - source/headers/geos/index/sweepline/SweepLineOverlapAction.h, - source/headers/geos/indexBintree.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/indexSweepline.h, - source/headers/geos/inline.h, source/headers/geos/io.h, - source/headers/geos/io/ByteOrderDataInStream.h, - source/headers/geos/io/ByteOrderDataInStream.inl, - source/headers/geos/io/ByteOrderValues.h, - source/headers/geos/io/ParseException.h, - source/headers/geos/io/StringTokenizer.h, - source/headers/geos/io/WKBConstants.h, - source/headers/geos/io/WKBReader.h, - source/headers/geos/io/WKBWriter.h, - source/headers/geos/io/WKTReader.h, - source/headers/geos/io/WKTReader.inl, - source/headers/geos/io/WKTWriter.h, - source/headers/geos/io/Writer.h, source/headers/geos/noding.h, - source/headers/geos/noding/IntersectionAdder.h, - source/headers/geos/noding/IntersectionFinderAdder.h, - source/headers/geos/noding/IteratedNoder.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/noding/MCIndexNoder.inl, - source/headers/geos/noding/Noder.h, - source/headers/geos/noding/NodingValidator.h, - source/headers/geos/noding/Octant.h, - source/headers/geos/noding/ScaledNoder.h, - source/headers/geos/noding/SegmentIntersector.h, - source/headers/geos/noding/SegmentNode.h, - source/headers/geos/noding/SegmentNodeList.h, - source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SegmentString.inl, - source/headers/geos/noding/SimpleNoder.h, - source/headers/geos/noding/SinglePassNoder.h, - source/headers/geos/noding/snapround/HotPixel.h, - source/headers/geos/noding/snapround/HotPixel.inl, - source/headers/geos/noding/snapround/MCIndexPointSnapper.h, - source/headers/geos/noding/snapround/MCIndexSnapRounder.h, - source/headers/geos/noding/snapround/MCIndexSnapRounder.inl, - source/headers/geos/noding/snapround/SimpleSnapRounder.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, - source/headers/geos/opLinemerge.h, - source/headers/geos/opOverlay.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/opPredicate.h, - source/headers/geos/opRelate.h, source/headers/geos/opValid.h, - source/headers/geos/operation.h, - source/headers/geos/operation/EndpointInfo.h, - source/headers/geos/operation/GeometryGraphOperation.h, - source/headers/geos/operation/IsSimpleOp.h, - source/headers/geos/operation/buffer/BufferBuilder.h, - source/headers/geos/operation/buffer/BufferOp.h, - source/headers/geos/operation/buffer/BufferSubgraph.h, - source/headers/geos/operation/buffer/OffsetCurveBuilder.h, - source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h, - source/headers/geos/operation/buffer/RightmostEdgeFinder.h, - source/headers/geos/operation/buffer/SubgraphDepthLocater.h, - source/headers/geos/operation/distance/ConnectedElementLocationFilter.h, - source/headers/geos/operation/distance/ConnectedElementPointFilter.h, - source/headers/geos/operation/distance/DistanceOp.h, - source/headers/geos/operation/distance/GeometryLocation.h, - source/headers/geos/operation/linemerge/EdgeString.h, - source/headers/geos/operation/linemerge/LineMergeDirectedEdge.h, - source/headers/geos/operation/linemerge/LineMergeEdge.h, - source/headers/geos/operation/linemerge/LineMergeGraph.h, - source/headers/geos/operation/linemerge/LineMerger.h, - source/headers/geos/operation/linemerge/LineSequencer.h, - source/headers/geos/operation/overlay/EdgeSetNoder.h, - source/headers/geos/operation/overlay/ElevationMatrix.h, - source/headers/geos/operation/overlay/ElevationMatrixCell.h, - source/headers/geos/operation/overlay/FuzzyPointLocator.h, - source/headers/geos/operation/overlay/LineBuilder.h, - source/headers/geos/operation/overlay/MaximalEdgeRing.h, - source/headers/geos/operation/overlay/MinimalEdgeRing.h, - source/headers/geos/operation/overlay/MinimalEdgeRing.inl, - source/headers/geos/operation/overlay/OverlayNodeFactory.h, - source/headers/geos/operation/overlay/OverlayOp.h, - source/headers/geos/operation/overlay/PointBuilder.h, - source/headers/geos/operation/overlay/PolygonBuilder.h, - source/headers/geos/operation/polygonize/EdgeRing.h, - source/headers/geos/operation/polygonize/PolygonizeDirectedEdge.h, - source/headers/geos/operation/polygonize/PolygonizeEdge.h, - source/headers/geos/operation/polygonize/PolygonizeGraph.h, - source/headers/geos/operation/polygonize/Polygonizer.h, - source/headers/geos/operation/predicate/RectangleContains.h, - source/headers/geos/operation/predicate/RectangleIntersects.h, - source/headers/geos/operation/predicate/SegmentIntersectionTester.h, - source/headers/geos/operation/relate/EdgeEndBuilder.h, - source/headers/geos/operation/relate/EdgeEndBundle.h, - source/headers/geos/operation/relate/EdgeEndBundleStar.h, - source/headers/geos/operation/relate/RelateComputer.h, - source/headers/geos/operation/relate/RelateNode.h, - source/headers/geos/operation/relate/RelateNodeFactory.h, - source/headers/geos/operation/relate/RelateNodeGraph.h, - source/headers/geos/operation/relate/RelateOp.h, - source/headers/geos/operation/valid/ConnectedInteriorTester.h, - source/headers/geos/operation/valid/ConsistentAreaTester.h, - source/headers/geos/operation/valid/IsValidOp.h, - source/headers/geos/operation/valid/QuadtreeNestedRingTester.h, - source/headers/geos/operation/valid/RepeatedPointTester.h, - source/headers/geos/operation/valid/SimpleNestedRingTester.h, - source/headers/geos/operation/valid/SweeplineNestedRingTester.h, - source/headers/geos/operation/valid/TopologyValidationError.h, - source/headers/geos/planargraph.h, - source/headers/geos/planargraph/DirectedEdge.h, - source/headers/geos/planargraph/DirectedEdgeStar.h, - source/headers/geos/planargraph/Edge.h, - source/headers/geos/planargraph/GraphComponent.h, - source/headers/geos/planargraph/Node.h, - source/headers/geos/planargraph/NodeMap.h, - source/headers/geos/planargraph/PlanarGraph.h, - source/headers/geos/planargraph/Subgraph.h, - source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h, - source/headers/geos/platform.h.in, - source/headers/geos/platform.h.vc, - source/headers/geos/precision.h, - source/headers/geos/precision/CommonBits.h, - source/headers/geos/precision/CommonBitsOp.h, - source/headers/geos/precision/CommonBitsRemover.h, - source/headers/geos/precision/EnhancedPrecisionOp.h, - source/headers/geos/precision/GeometrySnapper.h, - source/headers/geos/precision/LineStringSnapper.h, - source/headers/geos/precision/SimpleGeometryPrecisionReducer.h, - source/headers/geos/profiler.h, - source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h, - source/headers/geos/simplify/DouglasPeuckerSimplifier.h, - source/headers/geos/simplify/LineSegmentIndex.h, - source/headers/geos/simplify/TaggedLineSegment.h, - source/headers/geos/simplify/TaggedLineString.h, - source/headers/geos/simplify/TaggedLineStringSimplifier.h, - source/headers/geos/simplify/TaggedLinesSimplifier.h, - source/headers/geos/simplify/TopologyPreservingSimplifier.h, - source/headers/geos/spatialIndex.h, - source/headers/geos/timeval.h, source/headers/geos/unload.h, - source/headers/geos/util.h, source/headers/geos/util/Assert.h, - source/headers/geos/util/AssertionFailedException.h, - source/headers/geos/util/CoordinateArrayFilter.h, - source/headers/geos/util/GEOSException.h, - source/headers/geos/util/GeometricShapeFactory.h, - source/headers/geos/util/IllegalArgumentException.h, - source/headers/geos/util/TopologyException.h, - source/headers/geos/util/UniqueCoordinateArrayFilter.h, - source/headers/geos/util/UnsupportedOperationException.h, - source/headers/geos/util/math.h, - source/headers/geos/version.h.in, - source/headers/geos/version.h.vc, - source/index/bintree/Bintree.cpp, - source/index/bintree/Interval.cpp, source/index/bintree/Key.cpp, - source/index/bintree/Node.cpp, source/index/bintree/NodeBase.cpp, - source/index/bintree/Root.cpp, - source/index/chain/MonotoneChain.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/Key.cpp, source/index/quadtree/Node.cpp, - source/index/quadtree/NodeBase.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/quadtree/Root.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/index/sweepline/SweepLineEvent.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, source/inlines.cpp, - source/io/ByteOrderDataInStream.cpp, - source/io/ByteOrderValues.cpp, source/io/ParseException.cpp, - source/io/StringTokenizer.cpp, source/io/Unload.cpp, - source/io/WKBReader.cpp, source/io/WKBWriter.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, source/noding/IntersectionAdder.cpp, - source/noding/IntersectionFinderAdder.cpp, - source/noding/IteratedNoder.cpp, source/noding/MCIndexNoder.cpp, - source/noding/NodingValidator.cpp, source/noding/Octant.cpp, - source/noding/ScaledNoder.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/noding/snapround/SimpleSnapRounder.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance/ConnectedElementLocationFilter.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/GeometryLocation.cpp, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/linemerge/LineSequencer.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixCell.cpp, - source/operation/overlay/FuzzyPointLocator.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/EdgeRing.cpp, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/predicate/RectangleContains.cpp, - source/operation/predicate/RectangleIntersects.cpp, - source/operation/predicate/SegmentIntersectionTester.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/planargraph/DirectedEdge.cpp, - source/planargraph/DirectedEdgeStar.cpp, - source/planargraph/Edge.cpp, source/planargraph/Node.cpp, - source/planargraph/NodeMap.cpp, - source/planargraph/PlanarGraph.cpp, - source/planargraph/Subgraph.cpp, - source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, - source/precision/CommonBits.cpp, - source/precision/CommonBitsOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp, - source/precision/GeometrySnapper.cpp, - source/precision/LineStringSnapper.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp, - source/simplify/DouglasPeuckerLineSimplifier.cpp, - source/simplify/DouglasPeuckerSimplifier.cpp, - source/simplify/LineSegmentIndex.cpp, - source/simplify/TaggedLineSegment.cpp, - source/simplify/TaggedLineString.cpp, - source/simplify/TaggedLineStringSimplifier.cpp, - source/simplify/TaggedLinesSimplifier.cpp, - source/simplify/TopologyPreservingSimplifier.cpp, - source/util/Assert.cpp, source/util/AssertionFailedException.cpp, - source/util/GeometricShapeFactory.cpp, - source/util/IllegalArgumentException.cpp, - source/util/Profiler.cpp, - source/util/UnsupportedOperationException.cpp, - source/util/math.cpp, swig/geos.i, swig/python/geos.py, - swig/python/python.i, swig/python/tests/example.py, - swig/python/tests/runtests.py, - swig/python/tests/test_geometry.py, swig/ruby/ruby.i, - tests/bigtest/GeometryTestFactory.cpp, - tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bigtest.h, - tests/tut/tut.h, tests/tut/tut_reporter.h, - tests/tut/tut_restartable.h, - tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp, - tests/unit/algorithm/PointLocatorTest.cpp, - tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/CoordinateListTest.cpp, - tests/unit/geom/CoordinateTest.cpp, - tests/unit/geom/DimensionTest.cpp, - tests/unit/geom/EnvelopeTest.cpp, - tests/unit/geom/Geometry/coversTest.cpp, - tests/unit/geom/Geometry/isRectangleTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/IntersectionMatrixTest.cpp, - tests/unit/geom/LineSegmentTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/LocationTest.cpp, - tests/unit/geom/MultiLineStringTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/MultiPolygonTest.cpp, - tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/TriangleTest.cpp, tests/unit/geos_unit.cpp, - tests/unit/index/quadtree/DoubleBitsTest.cpp, - tests/unit/io/ByteOrderValuesTest.cpp, - tests/unit/io/WKBReaderTest.cpp, - tests/unit/noding/SegmentNodeTest.cpp, - tests/unit/noding/SegmentPointComparatorTest.cpp, - tests/unit/noding/SegmentStringTest.cpp, - tests/unit/precision/GeometrySnapperTest.cpp, - tests/unit/precision/LineStringSnapperTest.cpp, - tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp, - tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp, - tests/unit/utility.h, tests/xmltester/CTS.cpp, - tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/Stackwalker.cpp, tests/xmltester/Stackwalker.h, - tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h, - tests/xmltester/markup/MarkupSTL.cpp, - tests/xmltester/markup/MarkupSTL.h, tools/geos-config.in: Set - svn:keyword property for Id keyword expansion. - -2006-09-06 15:50 strk - - * source/headers/geos/operation/overlay/FuzzyPointLocator.h, - source/operation/overlay/FuzzyPointLocator.cpp: Fixed comments - and includes - -2006-09-06 15:33 strk - - * ChangeLog, - source/headers/geos/operation/overlay/FuzzyPointLocator.h, - source/operation/overlay/FuzzyPointLocator.cpp: new helper class - for Overlay op validation. + * [r1819] Fixed comments and includes + +2006-09-06 15:33 Sandro Santilli + + * [r1818] new helper class for Overlay op validation. -2006-09-06 15:21 strk +2006-09-06 15:21 Sandro Santilli - * source/headers/geos/geom/Geometry.h: (getBoundary) memory - allocations documented + * [r1817] (getBoundary) memory allocations documented -2006-09-05 16:18 strk +2006-09-05 16:18 Sandro Santilli - * ChangeLog: updated (last commit log was bogus, refer to ChangeLog + * [r1816] updated (last commit log was bogus, refer to ChangeLog entry) -2006-09-05 16:07 strk +2006-09-05 16:07 Sandro Santilli - * source/headers/geos/geom/BinaryOp.h, - source/headers/geos/precision/GeometrySnapper.h, - source/operation/overlay/OverlayOp.cpp, - source/precision/GeometrySnapper.cpp: - (OverlayOp::checkObviouslyWrongResult): exceptions messages - rewording + * [r1815] (OverlayOp::checkObviouslyWrongResult): exceptions + messages rewording -2006-08-31 23:13 strk +2006-08-31 23:13 Sandro Santilli - * ChangeLog, source/index/quadtree/Root.cpp: (insertContained): - fixed bug reported in geos-devel/2006-August/002541.html + * [r1814] (insertContained): fixed bug reported in + geos-devel/2006-August/002541.html -2006-08-31 23:07 strk +2006-08-31 23:07 Sandro Santilli - * ChangeLog, configure.in: Reverted last two commits. Darwin host - on buildbot seems to have its own problems... + * [r1813] Reverted last two commits. Darwin host on buildbot seems + to have its own problems... -2006-08-31 22:28 strk +2006-08-31 22:28 Sandro Santilli - * configure.in: Ops, it was AM_CONFIG_HEADER the old version - - still testing + * [r1812] Ops, it was AM_CONFIG_HEADER the old version - still + testing -2006-08-31 22:21 strk +2006-08-31 22:21 Sandro Santilli - * ChangeLog, configure.in: AC_CONFIG_HEADERS => AM_CONFIG_HEADER - (to support older automake versions) + * [r1811] AC_CONFIG_HEADERS => AM_CONFIG_HEADER (to support older + automake versions) -2006-08-04 20:30 hobu +2006-08-04 20:30 Howard Butler - * capi/geos_c.h.vc: version should be 3.0.0 instead of 3.3.0 + * [r1810] version should be 3.0.0 instead of 3.3.0 -2006-08-04 20:29 hobu +2006-08-04 20:29 Howard Butler - * source/headers/geos/version.h.vc: bump patch to rc1 + * [r1809] bump patch to rc1 -2006-08-04 20:23 hobu +2006-08-04 20:23 Howard Butler - * source/Makefile.vc: give makefile.vc some love + * [r1808] give makefile.vc some love -2006-08-04 16:40 csavage +2006-08-04 16:40 Charlie Savage - * swig/geos.i, swig/python/geos.py, swig/python/geos_wrap.cxx, - swig/ruby/geos_wrap.cxx: Updated SWIG bindings to expose the - equalsExact and normalize methods. + * [r1807] Updated SWIG bindings to expose the equalsExact and + normalize methods. -2006-08-03 23:43 csavage +2006-08-03 23:43 Charlie Savage - * source/headers/geos/platform.h.in, source/headers/geos/timeval.h: - Two changes needed to include the correct definitions for + * [r1806] Two changes needed to include the correct definitions for compiling geos using MingW/msys on Windows. -2006-08-03 22:46 strk +2006-08-03 22:46 Sandro Santilli - * ChangeLog: try to keep text within 80 cols + * [r1805] try to keep text within 80 cols -2006-08-03 22:24 csavage +2006-08-03 22:24 Charlie Savage - * configure.in: Changed configure.in to use *nix line feeds. + * [r1804] Changed configure.in to use *nix line feeds. -2006-08-03 22:17 csavage +2006-08-03 22:17 Charlie Savage - * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_c.h.vc: Mistakenly - used Geometry* in C api headers instead of GEOSGeom. + * [r1803] Mistakenly used Geometry* in C api headers instead of + GEOSGeom. -2006-08-03 22:13 csavage +2006-08-03 22:13 Charlie Savage - * configure.in: Removed native line endings for configure.in since - CR/LF does not work on Windows under msys. + * [r1802] Removed native line endings for configure.in since CR/LF + does not work on Windows under msys. -2006-08-03 22:02 csavage +2006-08-03 22:02 Charlie Savage - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_c.h.vc: - Added equalsExact and normalize to the c api as discussed on the - mailing list + * [r1801] Added equalsExact and normalize to the c api as discussed + on the mailing list (http://geos.refractions.net/pipermail/geos-devel/2006-July/002452.html). -2006-08-03 21:34 csavage +2006-08-03 21:34 Charlie Savage - * ChangeLog, swig/python/Makefile.am, swig/ruby/Makefile.am: - Updated build scripts so that ruby/geos_wrap.cxx, + * [r1800] Updated build scripts so that ruby/geos_wrap.cxx, python/geos_wrap.cxx and python/geos.py are removed by make maintainer-clean but not make clean. -2006-08-03 16:28 mloskot +2006-08-03 16:28 Mateusz Loskot - * ChangeLog, tests/unit/geos_unit.cpp: Fixed Bug #90 + * [r1799] Fixed Bug #90 -2006-08-03 16:18 csavage +2006-08-03 16:18 Charlie Savage - * swig/python/geos.py, swig/python/geos_wrap.cxx, - swig/ruby/geos_wrap.cxx: Added SWIG generated wrapper files for - Ruby and Python + * [r1798] Added SWIG generated wrapper files for Ruby and Python -2006-07-27 06:18 mloskot +2006-07-27 06:18 Mateusz Loskot - * .: Added svn:ignore property to ignore 'geos-3.0.0rc1' dir + * [r1797] Added svn:ignore property to ignore 'geos-3.0.0rc1' dir (testing commit access to SVN). -2006-07-26 19:06 strk +2006-07-26 19:06 Sandro Santilli - * .cvsignore, capi/.cvsignore, doc/.cvsignore, macros/.cvsignore, - source/.cvsignore, source/algorithm/.cvsignore, - source/examples/.cvsignore, source/geom/.cvsignore, - source/geom/util/.cvsignore, source/geomgraph/.cvsignore, - source/geomgraph/index/.cvsignore, source/headers/.cvsignore, - source/headers/geos/.cvsignore, - source/headers/geos/algorithm/.cvsignore, - source/headers/geos/geom/.cvsignore, - source/headers/geos/geom/util/.cvsignore, - source/headers/geos/geomgraph/.cvsignore, - source/headers/geos/geomgraph/index/.cvsignore, - source/headers/geos/index/.cvsignore, - source/headers/geos/index/bintree/.cvsignore, - source/headers/geos/index/chain/.cvsignore, - source/headers/geos/index/quadtree/.cvsignore, - source/headers/geos/index/strtree/.cvsignore, - source/headers/geos/index/sweepline/.cvsignore, - source/headers/geos/io/.cvsignore, - source/headers/geos/noding/.cvsignore, - source/headers/geos/noding/snapround/.cvsignore, - source/headers/geos/operation/.cvsignore, - source/headers/geos/operation/buffer/.cvsignore, - source/headers/geos/operation/distance/.cvsignore, - source/headers/geos/operation/linemerge/.cvsignore, - source/headers/geos/operation/overlay/.cvsignore, - source/headers/geos/operation/polygonize/.cvsignore, - source/headers/geos/operation/predicate/.cvsignore, - source/headers/geos/operation/relate/.cvsignore, - source/headers/geos/operation/valid/.cvsignore, - source/headers/geos/planargraph/.cvsignore, - source/headers/geos/planargraph/algorithm/.cvsignore, - source/headers/geos/precision/.cvsignore, - source/headers/geos/simplify/.cvsignore, - source/headers/geos/util/.cvsignore, source/index/.cvsignore, - source/index/bintree/.cvsignore, source/index/chain/.cvsignore, - source/index/quadtree/.cvsignore, - source/index/strtree/.cvsignore, - source/index/sweepline/.cvsignore, source/io/.cvsignore, - source/noding/.cvsignore, source/noding/snapround/.cvsignore, - source/operation/.cvsignore, source/operation/buffer/.cvsignore, - source/operation/distance/.cvsignore, - source/operation/linemerge/.cvsignore, - source/operation/overlay/.cvsignore, - source/operation/polygonize/.cvsignore, - source/operation/predicate/.cvsignore, - source/operation/relate/.cvsignore, - source/operation/valid/.cvsignore, source/planargraph/.cvsignore, - source/precision/.cvsignore, source/simplify/.cvsignore, - source/util/.cvsignore, swig/.cvsignore, swig/python/.cvsignore, - swig/python/tests/.cvsignore, swig/ruby/.cvsignore, - swig/ruby/test/.cvsignore, tests/.cvsignore, - tests/bigtest/.cvsignore, tests/tut/.cvsignore, - tests/unit/.cvsignore, tests/xmltester/.cvsignore, - tools/.cvsignore: Removed .cvsignore files from repository + * [r1795] Removed .cvsignore files from repository -2006-07-26 17:51 strk +2006-07-26 17:51 Sandro Santilli - * ChangeLog, capi/Makefile.am, tests/xmltester/XMLTester.cpp: * - capi/Makefile.am: forced link of geostest against stdc++ lib + * [r1794] * capi/Makefile.am: forced link of geostest against + stdc++ lib * tests/xmltester/XMLTester.cpp: added include (for fabs use) -2006-07-26 15:28 strk +2006-07-26 15:28 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h: Added geometry - snapping heuristic + * [r1776] Added geometry snapping heuristic -2006-07-25 20:45 strk +2006-07-25 20:45 Sandro Santilli - * ChangeLog, autogen.sh: Made autogen.sh errors more visible + * [r1775] Made autogen.sh errors more visible -2006-07-21 19:37 csavage +2006-07-21 19:37 Charlie Savage - * NEWS: Added note about inclusion of version.in.vc. See + * [r1773] Added note about inclusion of version.in.vc. See http://geos.refractions.net/pipermail/geos-devel/2006-July/002463.html for more info. -2006-07-21 17:59 strk +2006-07-21 17:59 Sandro Santilli + + * [r1772] Added test for GeometrySnapper + +2006-07-21 17:59 Sandro Santilli + + * [r1771] Fixed preprocessor directive use - * ChangeLog, tests/unit/Makefile.am, - tests/unit/precision/GeometrySnapperTest.cpp: Added test for - GeometrySnapper - -2006-07-21 17:59 strk - - * source/precision/LineStringSnapper.cpp: Fixed preprocessor - directive use - -2006-07-21 17:09 strk - - * ChangeLog, source/headers/geos/precision/GeometrySnapper.h, - source/headers/geos/precision/LineStringSnapper.h, - source/headers/geos/precision/Makefile.am, - source/precision/GeometrySnapper.cpp, - source/precision/LineStringSnapper.cpp, - source/precision/Makefile.am, tests/unit/Makefile.am, - tests/unit/precision, - tests/unit/precision/LineStringSnapperTest.cpp: Added new - precision::LineStringSnapper class + test +2006-07-21 17:09 Sandro Santilli + + * [r1770] Added new precision::LineStringSnapper class + test and precision::GeometrySnapper (w/out test) -2006-07-21 17:05 strk +2006-07-21 17:05 Sandro Santilli - * ChangeLog, source/headers/geos/geom/CoordinateList.h: added - operator<< for CoordinateList class + * [r1769] added operator<< for CoordinateList class -2006-07-21 17:00 strk +2006-07-21 17:00 Sandro Santilli - * ChangeLog, tests/unit/geom/LineSegmentTest.cpp: Added another - distance() test + * [r1768] Added another distance() test -2006-07-21 16:45 mloskot +2006-07-21 16:45 Mateusz Loskot - * ChangeLog, source/headers/geos/geom.h, source/headers/geos/io.h: - Wrapped FIXME message with #warning directive to shout about - potential headers removal in future. + * [r1767] Wrapped FIXME message with #warning directive to shout + about potential headers removal in future. -2006-07-21 14:53 strk +2006-07-21 14:53 Sandro Santilli - * ChangeLog, source/headers/geos/geom/CoordinateList.h, - source/headers/geos/geom/Makefile.am, tests/unit/Makefile.am, - tests/unit/geom/CoordinateListTest.cpp: CoordinateList class - re-introduced, for list-based ops + * [r1766] CoordinateList class re-introduced, for list-based ops (not strictly mapped to JTS version, not yet at least) -2006-07-21 14:49 strk +2006-07-21 14:49 Sandro Santilli - * source/headers/geos/geom/LineSegment.h: Fixed typo in comment + * [r1765] Fixed typo in comment -2006-07-21 08:33 strk +2006-07-21 08:33 Sandro Santilli - * swig/ruby/test/Makefile.am: Removed blank space after backslash - (automake complained) + * [r1764] Removed blank space after backslash (automake complained) -2006-07-19 02:43 csavage +2006-07-19 02:43 Charlie Savage - * source/headers/geos/Makefile.am: Added veresion.h.vc as - EXTRA_DIST to ensure it is packaged when doing make dist. + * [r1763] Added veresion.h.vc as EXTRA_DIST to ensure it is + packaged when doing make dist. -2006-07-15 19:36 csavage +2006-07-15 19:36 Charlie Savage - * configure.in: Removed python test/cases directory (tests are now - just in tests directory). + * [r1762] Removed python test/cases directory (tests are now just + in tests directory). -2006-07-13 08:02 csavage +2006-07-13 08:02 Charlie Savage - * ChangeLog: Updated ChangeLog to note additional SWIG tests and + * [r1761] Updated ChangeLog to note additional SWIG tests and integration with the GEOS build system. -2006-07-13 07:49 csavage +2006-07-13 07:49 Charlie Savage - * capi/geos_c.h.vc: Updated version number to 3.0.0rc1-CAPI-1.1.1 - to match the autoconf generated files. + * [r1760] Updated version number to 3.0.0rc1-CAPI-1.1.1 to match + the autoconf generated files. -2006-07-13 07:38 csavage +2006-07-13 07:38 Charlie Savage - * swig/ruby/test/Makefile.am: Fixed spelling mistake in test task. + * [r1759] Fixed spelling mistake in test task. -2006-07-13 07:36 csavage +2006-07-13 07:36 Charlie Savage - * swig/Makefile.am: Removed dependency on README.txt since it has - been removed. + * [r1758] Removed dependency on README.txt since it has been + removed. -2006-07-13 07:35 csavage +2006-07-13 07:35 Charlie Savage - * swig/ruby/test/test_buffer.rb: New tests for the buffer - operation. + * [r1757] New tests for the buffer operation. -2006-07-13 07:29 csavage +2006-07-13 07:29 Charlie Savage - * configure.in: Added SWIG Python and Ruby bindings back into the - main GEOS build system. + * [r1756] Added SWIG Python and Ruby bindings back into the main + GEOS build system. -2006-07-13 07:27 csavage +2006-07-13 07:27 Charlie Savage - * swig/python/tests/Makefile.am, swig/ruby/test/Makefile.am: - Updated extra_dist for test directories. + * [r1755] Updated extra_dist for test directories. -2006-07-13 07:20 csavage +2006-07-13 07:20 Charlie Savage - * swig/python/tests/Makefile.am: Remove the dependency on the cases - subdirectory which is no longer needed. + * [r1754] Remove the dependency on the cases subdirectory which is + no longer needed. -2006-07-13 07:19 csavage +2006-07-13 07:19 Charlie Savage - * swig/python/tests/runtests.py: Updated test suite to use the - correct tests. + * [r1753] Updated test suite to use the correct tests. -2006-07-13 07:16 csavage +2006-07-13 07:16 Charlie Savage - * swig/python/tests/cases: Removed old tests cases which are no - longer valid (worked using the C++ api). + * [r1752] Removed old tests cases which are no longer valid (worked + using the C++ api). -2006-07-13 07:14 csavage +2006-07-13 07:14 Charlie Savage - * swig/python/tests/test_geometry.py: New Python test case to - ensure creating coordinate sequences and geometries works - correctly. + * [r1751] New Python test case to ensure creating coordinate + sequences and geometries works correctly. -2006-07-13 07:14 csavage +2006-07-13 07:14 Charlie Savage - * swig/README.txt, swig/python/Makefile.am, swig/python/README.txt, - swig/ruby/Makefile.am, swig/ruby/README.txt: Removed README.txt - files which are no longer applicable now that the SWIG bindings - have been intergrated into the GEOS build system. + * [r1750] Removed README.txt files which are no longer applicable + now that the SWIG bindings have been intergrated into the GEOS + build system. -2006-07-13 07:13 csavage +2006-07-13 07:13 Charlie Savage - * swig/ruby/test/test_geometry.rb: Renamed test class. + * [r1749] Renamed test class. -2006-07-13 07:09 csavage +2006-07-13 07:09 Charlie Savage - * swig/python/Makefile.am: Removed old, unused code. + * [r1748] Removed old, unused code. -2006-07-13 07:09 csavage +2006-07-13 07:09 Charlie Savage - * swig/python/python.i: Added tyepmap to support creating polygons - with holes. + * [r1747] Added tyepmap to support creating polygons with holes. -2006-07-13 07:08 csavage +2006-07-13 07:08 Charlie Savage - * swig/geos.i: Added default value for quadsegs parmeter in buffer + * [r1746] Added default value for quadsegs parmeter in buffer operation. -2006-07-13 04:47 csavage +2006-07-13 04:47 Charlie Savage - * swig/python/tests/example.py: Manually moved from parent - directory. + * [r1745] Manually moved from parent directory. -2006-07-13 04:46 csavage +2006-07-13 04:46 Charlie Savage - * swig/python/Makefile.am: Updated EXTRA_DIST to include python.i - and geos.pth + * [r1744] Updated EXTRA_DIST to include python.i and geos.pth -2006-07-13 04:46 csavage +2006-07-13 04:46 Charlie Savage - * swig/python/example.py: Moved file to tests subdirectory. + * [r1743] Moved file to tests subdirectory. -2006-07-13 04:45 csavage +2006-07-13 04:45 Charlie Savage - * swig/python/setup.py: Installation is now done by autoconf macros - instead of setup.py + * [r1742] Installation is now done by autoconf macros instead of + setup.py -2006-07-13 04:39 csavage +2006-07-13 04:39 Charlie Savage - * swig/geos.i, swig/python/python.i, swig/ruby/ruby.i: Cleaned up - ruby.i, added licenxe to python.i, commented back in python.i - into geos.i. + * [r1741] Cleaned up ruby.i, added licenxe to python.i, commented + back in python.i into geos.i. -2006-07-13 04:09 csavage +2006-07-13 04:09 Charlie Savage - * swig/ruby/test/test_helper.rb: Added code to read xml test cases. + * [r1740] Added code to read xml test cases. -2006-07-13 04:08 csavage +2006-07-13 04:08 Charlie Savage - * swig/geos.i: Added exception handling for results that return + * [r1739] Added exception handling for results that return geometries. Added normalize and equalsExact, but for the moment they are commented out. -2006-07-13 03:59 csavage +2006-07-13 03:59 Charlie Savage - * tests/xmltester/XMLTester.cpp: Changes to compile on VC++ - fully - qualified polygon name. Should also work on MingW, will test - next. + * [r1738] Changes to compile on VC++ - fully qualified polygon + name. Should also work on MingW, will test next. -2006-07-12 23:17 csavage +2006-07-12 23:17 Charlie Savage - * swig/ruby/test/geos_tests.rb: Disabled test_combinations.rb for - the moment since it fails. + * [r1737] Disabled test_combinations.rb for the moment since it + fails. -2006-07-12 23:16 csavage +2006-07-12 23:16 Charlie Savage - * swig/geos.i: Fixed serious bug in geom_to_hex and geom_to_wkb - type maps. Was using temporary variable instead of passed in - variable. + * [r1736] Fixed serious bug in geom_to_hex and geom_to_wkb type + maps. Was using temporary variable instead of passed in variable. -2006-07-12 22:55 csavage +2006-07-12 22:55 Charlie Savage - * capi/geos_c.h.vc: Switched GeosBytesOrder to int in api - signatures. + * [r1735] Switched GeosBytesOrder to int in api signatures. -2006-07-12 22:11 csavage +2006-07-12 22:11 Charlie Savage - * swig/geos.i: A number of changes to fix warning generated by gcc - and to make sure the bindings compile for Python. + * [r1734] A number of changes to fix warning generated by gcc and + to make sure the bindings compile for Python. -2006-07-12 22:11 csavage +2006-07-12 22:11 Charlie Savage - * swig/python/Makefile.am: Updated Python SWIG makefile to build - with the c api. + * [r1733] Updated Python SWIG makefile to build with the c api. -2006-07-12 22:10 csavage +2006-07-12 22:10 Charlie Savage - * swig/ruby/ruby.i: Minor change to fix gcc warning. + * [r1732] Minor change to fix gcc warning. -2006-07-12 22:10 csavage +2006-07-12 22:10 Charlie Savage - * swig/ruby/Makefile.am: Updated Ruby SWIG makefile to build with - the c api. + * [r1731] Updated Ruby SWIG makefile to build with the c api. -2006-07-12 21:03 csavage +2006-07-12 21:03 Charlie Savage - * capi/geos_c.cpp, capi/geos_c.h.in, capi/geos_c.h.vc: Fixed an - error in the way GEOSByteOrder was declared. It is now an enum in - geos_c.h + * [r1730] Fixed an error in the way GEOSByteOrder was declared. It + is now an enum in geos_c.h -2006-07-12 19:10 csavage +2006-07-12 19:10 Charlie Savage - * swig/geos.i: Added %rename directive so that GeomUnion is exposed - as union is SWIG languages. + * [r1729] Added %rename directive so that GeomUnion is exposed as + union is SWIG languages. -2006-07-12 19:08 csavage +2006-07-12 19:08 Charlie Savage - * swig/ruby/test/geos_tests.rb, - swig/ruby/test/test_combinations.rb, - swig/ruby/test/test_operations.rb: Updated tests for combinatins - (union, intersection, etc.) and operaptions (buffer, centroid, - etc.). + * [r1728] Updated tests for combinatins (union, intersection, etc.) + and operaptions (buffer, centroid, etc.). -2006-07-12 19:07 csavage +2006-07-12 19:07 Charlie Savage - * swig/ruby/test/test_simple.rb: These tests are no longer needed. + * [r1727] These tests are no longer needed. -2006-07-12 17:51 csavage +2006-07-12 17:51 Charlie Savage - * swig/ruby/test/geos_tests.rb, swig/ruby/test/test_helper.rb, - swig/ruby/test/test_relations.rb: Ported old tests for relations, - such as intersects, touches, etc., to new swig bindings. + * [r1726] Ported old tests for relations, such as intersects, + touches, etc., to new swig bindings. -2006-07-12 08:30 csavage +2006-07-12 08:30 Charlie Savage - * swig/ruby/ruby.i: Added type map needed to create polygons with - holes. Unfortunately, this is Ruby specific. It needs to be - ported to Python next. + * [r1725] Added type map needed to create polygons with holes. + Unfortunately, this is Ruby specific. It needs to be ported to + Python next. -2006-07-12 08:29 csavage +2006-07-12 08:29 Charlie Savage - * swig/geos.i: Removed wrapper classes and replace them with SWIG - "fake" classes. This makes the interface cleaner, and makes - memory management much easier. Also added area, dimension, - length, getExteriorRing, getInteriorRingN methods. + * [r1724] Removed wrapper classes and replace them with SWIG "fake" + classes. This makes the interface cleaner, and makes memory + management much easier. Also added area, dimension, length, + getExteriorRing, getInteriorRingN methods. -2006-07-12 08:27 csavage +2006-07-12 08:27 Charlie Savage - * swig/ruby/test/test_srid.rb: Added test to read from wkb geometry - - currently fails, needs more investigation. + * [r1723] Added test to read from wkb geometry - currently fails, + needs more investigation. -2006-07-12 08:27 csavage +2006-07-12 08:27 Charlie Savage - * swig/ruby/test/test_io.rb: Added tests for invalid geometries. + * [r1722] Added tests for invalid geometries. -2006-07-12 08:27 csavage +2006-07-12 08:27 Charlie Savage - * swig/ruby/test/geos_tests.rb: Updated ruby test suite. + * [r1721] Updated ruby test suite. -2006-07-12 08:24 csavage +2006-07-12 08:24 Charlie Savage - * swig/ruby/test/test_geometry.rb: New tests for area, length, - distance. + * [r1720] New tests for area, length, distance. -2006-07-12 05:21 csavage +2006-07-12 05:21 Charlie Savage - * swig/ruby/test/test_coordinate_sequence.rb, - swig/ruby/test/test_version.rb: Converted line feeds to Unix - style. + * [r1719] Converted line feeds to Unix style. -2006-07-12 05:21 csavage +2006-07-12 05:21 Charlie Savage - * swig/ruby/test/test_geometry.rb: New tests for creating - geometries and calling various functions such as numGeometries, - isValid, etc. + * [r1718] New tests for creating geometries and calling various + functions such as numGeometries, isValid, etc. -2006-07-12 05:20 csavage +2006-07-12 05:20 Charlie Savage - * swig/ruby/test/test_srid.rb: Tests for srid handling. + * [r1717] Tests for srid handling. -2006-07-12 05:20 csavage +2006-07-12 05:20 Charlie Savage - * swig/ruby/test/test_io.rb: Merged tests from test_wkb_reader.rb + * [r1716] Merged tests from test_wkb_reader.rb -2006-07-12 05:18 csavage +2006-07-12 05:18 Charlie Savage - * swig/ruby/test/test_wkb_reader.rb: Merging into test_io.rb + * [r1715] Merging into test_io.rb -2006-07-12 04:46 csavage +2006-07-12 04:46 Charlie Savage - * swig/ruby/test/test_version.rb: Tests to verify returned version - numbers from C api. + * [r1714] Tests to verify returned version numbers from C api. -2006-07-11 18:48 csavage +2006-07-11 18:48 Charlie Savage - * swig/geos.i: Fixes for coordinate sequences. Fixed bug in range + * [r1713] Fixes for coordinate sequences. Fixed bug in range checking, chaned clone to be a method instead of copy constructor, marked clone as creating a new object. -2006-07-11 18:44 csavage +2006-07-11 18:44 Charlie Savage - * swig/ruby/test/test_coordinate_sequence.rb: Tests for SWIG - coordinate sequence class. + * [r1712] Tests for SWIG coordinate sequence class. -2006-07-11 09:07 csavage +2006-07-11 09:07 Charlie Savage - * capi/geos_c.h.in, capi/geos_c.h.vc: Added reference to new enum - called GEOSByteOrders. The enum has two values, GEOS_WKB_NDR and - GEOS_WKB_XDR which signify big endian and little endian byte - orders. + * [r1711] Added reference to new enum called GEOSByteOrders. The + enum has two values, GEOS_WKB_NDR and GEOS_WKB_XDR which signify + big endian and little endian byte orders. -2006-07-11 09:05 csavage +2006-07-11 09:05 Charlie Savage - * capi/geos_c.h.in, capi/geos_c.h.vc: Added 5 methods to the C API - as documented in the changelong. The new methods are read/write - WKB Hex values, read/write WKB byte order and read wkb output - dimensions. + * [r1710] Added 5 methods to the C API as documented in the + changelong. The new methods are read/write WKB Hex values, + read/write WKB byte order and read wkb output dimensions. -2006-07-11 08:55 csavage +2006-07-11 08:55 Charlie Savage - * swig/ruby/test/test_wkb_reader.rb: Test cases for reading and - writing geometries to WKT, WKB and hex encoded WKB formats via - the SWIG bindings. + * [r1709] Test cases for reading and writing geometries to WKT, WKB + and hex encoded WKB formats via the SWIG bindings. -2006-07-11 08:54 csavage +2006-07-11 08:54 Charlie Savage - * capi/geos_c.h.vc: Updated visual studio header file to match - geos_c.h.in + * [r1708] Updated visual studio header file to match geos_c.h.in -2006-07-11 08:53 csavage +2006-07-11 08:53 Charlie Savage - * capi/geos_c.cpp: Added 5 methods to the C API as documented in - the changelong. The new methods are read/write WKB Hex values, + * [r1707] Added 5 methods to the C API as documented in the + changelong. The new methods are read/write WKB Hex values, read/write WKB byte order and read wkb output dimensions. -2006-07-11 08:52 csavage +2006-07-11 08:52 Charlie Savage - * ChangeLog: Noted additions to the C API and porting of SWIG to - use the C api. + * [r1706] Noted additions to the C API and porting of SWIG to use + the C api. -2006-07-11 08:44 csavage +2006-07-11 08:44 Charlie Savage - * swig/geos.i, swig/ruby/ruby.i: Ported SWIG bindings to use c-api. + * [r1705] Ported SWIG bindings to use c-api. -2006-07-10 22:29 strk +2006-07-10 22:29 Sandro Santilli - * tests/tut, tests/tut/.cvsignore: Added .cvsignore file + * [r1704] Added .cvsignore file -2006-07-10 21:51 strk +2006-07-10 21:51 Sandro Santilli - * ChangeLog, capi/geos_c.cpp: don't use dynamic strings as format - arg the formatted message callbacks. + * [r1703] don't use dynamic strings as format arg the formatted + message callbacks. -2006-07-10 10:16 strk +2006-07-10 10:16 Sandro Santilli - * ChangeLog, - source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h: - changed vector to vector (see bug#101) + * [r1702] changed vector to vector (see bug#101) -2006-07-09 03:37 mloskot +2006-07-09 03:37 Mateusz Loskot - * tests/xmltester, tests/xmltester/.cvsignore: Added 'testrunner' - pattern to tests/xmltester/.cvsignore. + * [r1701] Added 'testrunner' pattern to tests/xmltester/.cvsignore. -2006-07-09 03:21 mloskot +2006-07-09 03:21 Mateusz Loskot - * ., .cvsignore: Added 'testrunner' to .cvsignore patterns. + * [r1700] Added 'testrunner' to .cvsignore patterns. -2006-07-09 03:21 mloskot +2006-07-09 03:21 Mateusz Loskot - * ChangeLog: Updated ChangeLog with details about new unit tests. + * [r1699] Updated ChangeLog with details about new unit tests. -2006-07-09 03:16 mloskot +2006-07-09 03:16 Mateusz Loskot - * tests/unit/Makefile.am: Added new tests to - tests/unit/Makefile.am. + * [r1698] Added new tests to tests/unit/Makefile.am. -2006-07-09 03:15 mloskot +2006-07-09 03:15 Mateusz Loskot - * tests/unit/noding/SegmentNodeTest.cpp, - tests/unit/noding/SegmentPointComparatorTest.cpp, - tests/unit/noding/SegmentStringTest.cpp: Added new tests cases to - tests/unit/noding. Removed zero-to-pointer casts. + * [r1697] Added new tests cases to tests/unit/noding. Removed + zero-to-pointer casts. -2006-07-09 00:24 strk +2006-07-09 00:24 Sandro Santilli - * tests/xmltester/Makefile.am: Added testrunner to CLEANFILES. make - distcheck now succeeds. + * [r1696] Added testrunner to CLEANFILES. make distcheck now + succeeds. -2006-07-08 00:33 strk +2006-07-08 00:33 Sandro Santilli - * ChangeLog, configure.in, source/geom/Geometry.cpp, - source/geom/GeometryFactory.cpp, source/geomgraph/EdgeRing.cpp, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryFactory.h, - source/headers/geos/geom/GeometryFactory.inl, - source/headers/geos/geomgraph/EdgeRing.h, - source/headers/geos/platform.h.in: * configure.in: incremented - CAPI minor version, to avoid falling behind any future version - from the 2.2. branch. + * [r1693] * configure.in: incremented CAPI minor version, to avoid + falling behind any future version from the 2.2. branch. * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, source/geomgraph/EdgeRing.cpp, source/headers/geos/geom/Geometry.h, @@ -3961,699 +5089,446 @@ * source/headers/geos/platform.h.in: include rather then -2006-07-07 20:02 mloskot +2006-07-07 20:02 Mateusz Loskot - * ChangeLog: Updated ChangeLog with version comparison fix in + * [r1691] Updated ChangeLog with version comparison fix in GEOS_UNIT. -2006-07-07 20:00 mloskot +2006-07-07 20:00 Mateusz Loskot - * macros/geos.m4: Fixed versions comparison in the GEOS_UNIT macro. + * [r1690] Fixed versions comparison in the GEOS_UNIT macro. -2006-07-07 19:33 strk +2006-07-07 19:33 Sandro Santilli - * ChangeLog, acsite.m4, configure.in: * acsite.m4: include - rather then + * [r1689] * acsite.m4: include rather then (the latter is not available on Solaris 9) * configure.in: make sure CFLAGS is set before compiling using the 64bit integer detection macro. -2006-07-06 16:39 mloskot +2006-07-06 16:39 Mateusz Loskot - * ChangeLog, macros/geos.m4: Fixed version query regexp with - escaped dots. Removed -lpq from GEOS_LIBS flags. + * [r1688] Fixed version query regexp with escaped dots. Removed + -lpq from GEOS_LIBS flags. -2006-07-05 23:27 mloskot +2006-07-05 23:27 Mateusz Loskot - * ChangeLog, macros/geos.m4: Removed redundant -L and -I from - GEOS_LIBS and GEOS_CFLAGS. + * [r1687] Removed redundant -L and -I from GEOS_LIBS and + GEOS_CFLAGS. -2006-07-05 23:10 mloskot +2006-07-05 23:10 Mateusz Loskot - * ChangeLog, macros/geos.m4: Fixed GEOS_INIT to support full paths - to geos-config passed to --with-geos. Fixed version decoding. + * [r1686] Fixed GEOS_INIT to support full paths to geos-config + passed to --with-geos. Fixed version decoding. -2006-07-05 22:54 strk +2006-07-05 22:54 Sandro Santilli - * ChangeLog, tests/unit/Makefile.am: distribute utility.h + * [r1685] distribute utility.h -2006-07-05 22:19 strk +2006-07-05 22:19 Sandro Santilli - * ChangeLog, configure.in, tests/Makefile.am, - tests/tut/Makefile.am: distribute the TUT framework. + * [r1684] distribute the TUT framework. -2006-07-05 21:47 strk +2006-07-05 21:47 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am: Distribute XML tests and - tester. + * [r1683] Distribute XML tests and tester. -2006-07-05 21:18 strk +2006-07-05 21:18 Sandro Santilli - * ChangeLog, source/operation/valid/Makefile.am: Fixed missing - SweeplineNestedRingTester.cpp file. + * [r1682] Fixed missing SweeplineNestedRingTester.cpp file. -2006-07-05 20:52 strk +2006-07-05 20:52 Sandro Santilli - * ChangeLog, source/headers/geos/operation/linemerge/Makefile.am: - Fixed missing backslash, dropping headers from distribution. + * [r1681] Fixed missing backslash, dropping headers from + distribution. -2006-07-05 20:20 strk +2006-07-05 20:20 Sandro Santilli - * TODO: updated + * [r1680] updated -2006-07-05 20:19 strk +2006-07-05 20:19 Sandro Santilli - * ChangeLog, source/headers/geos/operation/overlay/OverlayOp.h, - source/operation/overlay/OverlayOp.cpp: added checks for - obviously wrong result of difference and intersection ops + * [r1679] added checks for obviously wrong result of difference and + intersection ops -2006-06-27 15:59 strk +2006-06-27 15:59 Sandro Santilli - * ChangeLog, source/algorithm/HCoordinate.cpp: * - source/algorithm/HCoordinate.cpp: added support for MingW -ansi - builds. + * [r1677] * source/algorithm/HCoordinate.cpp: added support for + MingW -ansi builds. -2006-06-27 15:26 strk +2006-06-27 15:26 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in: * capi/geos_c.cpp: - fixed forward declaration of GEOSCoordSeq_getOrdinate. + * [r1676] * capi/geos_c.cpp: fixed forward declaration of + GEOSCoordSeq_getOrdinate. * capi/geos_c.h.in: renamed GEOSGeomTypeId enum to GEOSGeomTypes, to make VC++ 2005 happy. -2006-06-19 23:33 strk +2006-06-19 23:33 Sandro Santilli - * ChangeLog, source/headers/geos/geom/CoordinateFilter.h, - source/headers/geos/noding/ScaledNoder.h, - source/headers/geos/util/CoordinateArrayFilter.h, - source/headers/geos/util/UniqueCoordinateArrayFilter.h, - source/noding/ScaledNoder.cpp: Don't *require* CoordinateFilters - to define both read-only and read-write methods. + * [r1675] Don't *require* CoordinateFilters to define both + read-only and read-write methods. -2006-06-19 22:52 strk +2006-06-19 22:52 Sandro Santilli - * ChangeLog, source/geom/Polygon.cpp: optimized loops + * [r1674] optimized loops -2006-06-19 21:20 strk +2006-06-19 21:20 Sandro Santilli - * ChangeLog, source/geom/util/GeometryTransformer.cpp, - source/headers/geos/geom/util/GeometryTransformer.h: updated port - info + * [r1673] updated port info -2006-06-19 21:17 strk +2006-06-19 21:17 Sandro Santilli - * ChangeLog, source/geom/GeometryFactory.cpp, - source/headers/geos/geom/GeometryFactory.h, - source/headers/geos/geom/GeometryFactory.inl: port info and - doxygen dox. + * [r1672] port info and doxygen dox. -2006-06-19 20:48 strk +2006-06-19 20:48 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: parseCase(): make sure - to exit the tag before returning + * [r1671] parseCase(): make sure to exit the tag before + returning -2006-06-14 19:27 strk +2006-06-14 19:27 Sandro Santilli - * ChangeLog, source/geom/Coordinate.cpp, - source/headers/geos/geom/Coordinate.h, - source/headers/geos/geom/Coordinate.inl: Let the compiler - synthetize copy ctor and assignment op for Coordinate class to - obtain better numerical stability. + * [r1670] Let the compiler synthetize copy ctor and assignment op + for Coordinate class to obtain better numerical stability. -2006-06-14 19:19 strk +2006-06-14 19:19 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: Added support for - "AreaTest" operations. + * [r1669] Added support for "AreaTest" operations. -2006-06-14 19:17 strk +2006-06-14 19:17 Sandro Santilli - * ChangeLog, source/operation/overlay/PolygonBuilder.cpp: Fixed bug - in findShell() needlessly erasing vector elements + * [r1668] Fixed bug in findShell() needlessly erasing vector + elements -2006-06-14 15:38 strk +2006-06-14 15:38 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Fixed just-introduced bug + * [r1667] Fixed just-introduced bug -2006-06-14 15:03 strk +2006-06-14 15:03 Sandro Santilli - * ChangeLog, source/operation/overlay/OverlayOp.cpp: * - source/operation/overlay/OverlayOp.cpp: use NodeMap::container - and related typedefs, removed (int) casts, optimized loops. + * [r1666] * source/operation/overlay/OverlayOp.cpp: use + NodeMap::container and related typedefs, removed (int) casts, + optimized loops. -2006-06-14 14:32 strk +2006-06-14 14:32 Sandro Santilli - * ChangeLog, source/geomgraph/EdgeEnd.cpp, - source/headers/geos/geomgraph/DirectedEdge.h, - source/headers/geos/geomgraph/DirectedEdge.inl, - source/headers/geos/geomgraph/EdgeEnd.h: EdgeEnd::getEdge() made - non-virtual and inlined. + * [r1665] EdgeEnd::getEdge() made non-virtual and inlined. -2006-06-14 13:59 strk +2006-06-14 13:59 Sandro Santilli - * ChangeLog, source/operation/overlay/PolygonBuilder.cpp: Fixed bug - in PolygonBuilder::placePolygonHoles, performance improved as a - side effect. + * [r1664] Fixed bug in PolygonBuilder::placePolygonHoles, + performance improved as a side effect. -2006-06-13 23:26 strk +2006-06-13 23:26 Sandro Santilli - * ChangeLog, - source/headers/geos/operation/overlay/PolygonBuilder.h, - source/operation/overlay/PolygonBuilder.cpp: cleanups + * [r1663] cleanups -2006-06-13 22:50 strk +2006-06-13 22:50 Sandro Santilli - * ChangeLog, source/headers/geos/io/WKTReader.inl: * - source/headers/geos/io/WKTReader.inl: added missing include for - GEOS_DEBUG set case, use stderr for debugging output. + * [r1662] * source/headers/geos/io/WKTReader.inl: added missing + include for GEOS_DEBUG set case, use stderr for debugging output. -2006-06-13 22:19 strk +2006-06-13 22:19 Sandro Santilli - * ChangeLog, source/operation/overlay/LineBuilder.cpp: fixed unused - parameter warning + * [r1661] fixed unused parameter warning -2006-06-13 22:00 strk +2006-06-13 22:00 Sandro Santilli - * ChangeLog, source/headers/geos/geomgraph/GeometryGraph.h: Changed - GeometryGraph::lineEdgeMap set comparison function to be - pointer-based. Should be safe and much faster. Available tests - all succeed. + * [r1660] Changed GeometryGraph::lineEdgeMap set comparison + function to be pointer-based. Should be safe and much faster. + Available tests all succeed. -2006-06-13 21:42 strk +2006-06-13 21:42 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: trimmed cvs log, cleanups + * [r1659] trimmed cvs log, cleanups -2006-06-13 21:40 strk +2006-06-13 21:40 Sandro Santilli - * source/geomgraph/GeometryGraph.cpp: Cleanups and some more - debugging lines + * [r1658] Cleanups and some more debugging lines -2006-06-13 21:38 strk +2006-06-13 21:38 Sandro Santilli - * ChangeLog, source/geom/Geometry.cpp: Added self comparison check - in Geometry::compareTo(). + * [r1657] Added self comparison check in Geometry::compareTo(). -2006-06-13 19:16 strk +2006-06-13 19:16 Sandro Santilli - * ChangeLog: fixed mis-assigned commit + * [r1656] fixed mis-assigned commit -2006-06-12 17:18 strk +2006-06-12 17:18 Sandro Santilli - * ChangeLog, source/simplify/LineSegmentIndex.cpp: - LineSegmentIndex: explicitly initialized parent class in + * [r1655] LineSegmentIndex: explicitly initialized parent class in constructors. -2006-06-12 17:15 strk +2006-06-12 17:15 Sandro Santilli - * ChangeLog, source/headers/geos/index/quadtree/Root.h, - source/headers/geos/operation/distance/ConnectedElementPointFilter.h, - source/headers/geos/operation/polygonize/Polygonizer.h: Removed - unused parameters warning + * [r1654] Removed unused parameters warning -2006-06-12 17:14 strk +2006-06-12 17:14 Sandro Santilli - * ChangeLog, source/headers/geos/geom/GeometryFilter.h: added - assert(0) version of filter_ro() and filter_rw() to allow - implementations to only defined the required one. + * [r1653] added assert(0) version of filter_ro() and filter_rw() to + allow implementations to only defined the required one. -2006-06-12 16:59 strk +2006-06-12 16:59 Sandro Santilli - * tests/bigtest/TestSweepLineSpeed.cpp, - tests/xmltester/SimpleWKTTester.cpp: Removed unused parameter - warnings + * [r1652] Removed unused parameter warnings -2006-06-12 16:57 strk +2006-06-12 16:57 Sandro Santilli - * source/headers/geos/planargraph/Node.h: Added note about - ownership of return from getEdgesBetween() + * [r1651] Added note about ownership of return from + getEdgesBetween() -2006-06-12 16:55 strk +2006-06-12 16:55 Sandro Santilli - * ChangeLog, source/headers/geos/io/WKTWriter.h, - source/io/WKTWriter.cpp: fixed compiler warnings, fixed some - methods to omit unused parameters. + * [r1650] fixed compiler warnings, fixed some methods to omit + unused parameters. -2006-06-12 16:51 strk +2006-06-12 16:51 Sandro Santilli - * ChangeLog, source/geom/CoordinateSequence.cpp, - source/headers/geos/geom/CoordinateSequence.h, - tests/unit/geom/CoordinateArraySequenceTest.cpp: Added equality - and inequality operators and tests + * [r1649] Added equality and inequality operators and tests -2006-06-12 16:36 strk +2006-06-12 16:36 Sandro Santilli - * ChangeLog, source/geom/CoordinateSequence.cpp, - source/headers/geos/geom/CoordinateSequence.h: indentation, notes - about things to be fixed. + * [r1648] indentation, notes about things to be fixed. -2006-06-12 15:47 strk +2006-06-12 15:47 Sandro Santilli - * ChangeLog, source/planargraph/Node.cpp: implemented missing - getEdgesBetween() method (untested). + * [r1647] implemented missing getEdgesBetween() method (untested). -2006-06-12 15:46 strk +2006-06-12 15:46 Sandro Santilli - * source/headers/geos/planargraph/DirectedEdge.h, - source/planargraph/DirectedEdge.cpp: provided a memory friendly - version of toEdges() method. + * [r1646] provided a memory friendly version of toEdges() method. -2006-06-12 15:07 strk +2006-06-12 15:07 Sandro Santilli - * ChangeLog, source/geom/CoordinateArraySequence.cpp: explicitly - invoked CoordinateSequence (copy) ctor - suggested by GCC - warning. + * [r1645] explicitly invoked CoordinateSequence (copy) ctor - + suggested by GCC warning. -2006-06-12 15:06 strk +2006-06-12 15:06 Sandro Santilli - * source/headers/geos/geom/CoordinateSequence.h: Added default ctor - and copy ctor (protected) + * [r1644] Added default ctor and copy ctor (protected) -2006-06-12 13:57 strk +2006-06-12 13:57 Sandro Santilli - * ChangeLog, acsite.m4, configure.in, - source/headers/geos/platform.h.in: Check for int64_t type for - int64 typedef. + * [r1643] Check for int64_t type for int64 typedef. -2006-06-12 11:29 strk +2006-06-12 11:29 Sandro Santilli - * ChangeLog, source/algorithm/SimplePointInAreaLocator.cpp, - source/geomgraph/EdgeNodingValidator.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/PlanarGraph.cpp, - source/geomgraph/TopologyLocation.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/headers/geos/geom/CoordinateArraySequenceFactory.h, - source/headers/geos/geom/CoordinateArraySequenceFactory.inl, - source/headers/geos/geom/LineSegment.inl, - source/headers/geos/geom/Location.h, - source/headers/geos/geomgraph/TopologyLocation.h, - source/headers/geos/noding/SegmentNodeList.h, - source/headers/geos/profiler.h, - source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h, - source/headers/geos/simplify/TaggedLineString.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/noding/SegmentNodeList.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/predicate/SegmentIntersectionTester.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/simplify/DouglasPeuckerLineSimplifier.cpp, - source/simplify/LineSegmentIndex.cpp, - source/simplify/TaggedLineString.cpp, source/util/Profiler.cpp: - unsigned int => size_t - -2006-06-12 10:49 strk - - * ChangeLog, source/algorithm/ConvexHull.cpp, - source/algorithm/PointLocator.cpp, source/geom/Envelope.cpp, - source/geom/LineString.cpp, - source/headers/geos/geom/LineString.h, - source/headers/geos/geomgraph/EdgeEndStar.h, - source/headers/geos/index/strtree/AbstractSTRtree.h, - source/headers/geos/index/strtree/SIRtree.h, - source/headers/geos/index/strtree/STRtree.h, - source/headers/geos/planargraph/DirectedEdgeStar.h, - source/headers/geos/planargraph/Node.h, - source/headers/geos/planargraph/PlanarGraph.h, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/operation/linemerge/LineSequencer.cpp, - source/planargraph/PlanarGraph.cpp: unsigned int => size_t - -2006-06-12 10:39 strk - - * ChangeLog, tests/xmltester/XMLTester.cpp: don't print test file - precision model if verbosity level < 2. - -2006-06-12 10:10 strk - - * ChangeLog, NEWS, capi/geos_c.h.in, - source/algorithm/CGAlgorithms.cpp, - source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateSequence.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPolygon.cpp, source/geom/Polygon.cpp, - source/headers/geos/geom/CoordinateArraySequence.h, - source/headers/geos/geom/CoordinateArraySequenceFactory.h, - source/headers/geos/geom/CoordinateSequence.h, - source/headers/geos/geom/CoordinateSequenceFactory.h, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/LineSegment.h, - source/headers/geos/util/UniqueCoordinateArrayFilter.h: Fixed - getGeometryN() to take size_t rather then int, changed unsigned - int parameters to size_t. + * [r1642] unsigned int => size_t -2006-06-09 08:28 strk +2006-06-12 10:49 Sandro Santilli - * tests/xmltester/SimpleWKTTester.cpp: Removed compiler warning + * [r1641] unsigned int => size_t -2006-06-09 08:17 strk +2006-06-12 10:39 Sandro Santilli - * ChangeLog, tests/unit/noding/SegmentStringTest.cpp: removed - signed/unsigned comparison warnings. + * [r1640] don't print test file precision model if verbosity level + < 2. -2006-06-09 08:09 strk +2006-06-12 10:10 Sandro Santilli - * ChangeLog, tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/PolygonTest.cpp: removed signed/unsigned - comparison warnings. + * [r1639] Fixed getGeometryN() to take size_t rather then int, + changed unsigned int parameters to size_t. -2006-06-09 08:02 strk +2006-06-09 08:28 Sandro Santilli - * ChangeLog, tests/unit/geom/LineStringTest.cpp: Fixed - signed/unsigned comparison tests + * [r1638] Removed compiler warning -2006-06-09 07:42 strk +2006-06-09 08:17 Sandro Santilli - * ChangeLog, source/geomgraph/GeometryGraph.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/valid/RepeatedPointTester.cpp: * - source/geomgraph/GeometryGraph.cpp, + * [r1637] removed signed/unsigned comparison warnings. + +2006-06-09 08:09 Sandro Santilli + + * [r1636] removed signed/unsigned comparison warnings. + +2006-06-09 08:02 Sandro Santilli + + * [r1635] Fixed signed/unsigned comparison tests + +2006-06-09 07:42 Sandro Santilli + + * [r1634] * source/geomgraph/GeometryGraph.cpp, source/operation/buffer/OffsetCurveSetBuilder.cpp, source/operation/overlay/OverlayOp.cpp, source/operation/valid/RepeatedPointTester.cpp: Fixed warning after Polygon ring accessor methods changed to work with size_t. Small optimizations in loops. -2006-06-09 06:41 strk +2006-06-09 06:41 Sandro Santilli - * ChangeLog: Added missing log for mloskot change + * [r1633] Added missing log for mloskot change -2006-06-08 18:50 mloskot +2006-06-08 18:50 Mateusz Loskot - * tests/unit/geom/DimensionTest.cpp: Fixed no-effect warning in - test<1> from DimensionTest.cpp. + * [r1632] Fixed no-effect warning in test<1> from + DimensionTest.cpp. -2006-06-08 18:18 strk +2006-06-08 18:18 Sandro Santilli - * ChangeLog, tests/unit/geom/GeometryFactoryTest.cpp: * - tests/unit/geom/GeometryFactoryTest.cpp: fixed compiler warnings - about signed/unsigned comparisons. + * [r1631] * tests/unit/geom/GeometryFactoryTest.cpp: fixed compiler + warnings about signed/unsigned comparisons. -2006-06-08 17:58 strk +2006-06-08 17:58 Sandro Santilli - * ChangeLog, NEWS, source/algorithm/CentroidArea.cpp, - source/geom/Polygon.cpp, source/geom/util/GeometryEditor.cpp, - source/headers/geos/geom/Polygon.h, source/io/WKTWriter.cpp: - Polygon::getNumInteriorRing() return size_t, + * [r1630] Polygon::getNumInteriorRing() return size_t, Polygon::interiorRingN() takes size_t. -2006-06-08 17:46 strk +2006-06-08 17:46 Sandro Santilli - * ChangeLog, tests/unit/geom/CoordinateArraySequenceTest.cpp: * - tests/unit/geom/CoordinateArraySequenceTest.cpp: fix + * [r1629] * tests/unit/geom/CoordinateArraySequenceTest.cpp: fix signed/unsigned comparison warning. -2006-06-08 15:55 strk +2006-06-08 15:55 Sandro Santilli - * ChangeLog, tests/xmltester/markup/MarkupSTL.cpp: * - tests/xmltester/markup/MarkupSTL.cpp: removed use of + * [r1628] * tests/xmltester/markup/MarkupSTL.cpp: removed use of allocator, which brings in some incompatibilities with libstdc++ 6.0.7 (gcc 4.0.2). -2006-06-08 13:19 strk +2006-06-08 13:19 Sandro Santilli - * configure.in: Commented out ruby and python detection + * [r1627] Commented out ruby and python detection -2006-06-08 12:58 strk +2006-06-08 12:58 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/testrunner.sh: Fixed - xml testrunner rule + * [r1626] Fixed xml testrunner rule -2006-06-08 12:16 strk +2006-06-08 12:16 Sandro Santilli - * ChangeLog, tests/xmltester/Makefile.am, - tests/xmltester/testrunner.sh: added XML tests run to the 'make - check' rule. + * [r1625] added XML tests run to the 'make check' rule. -2006-06-08 11:20 strk +2006-06-08 11:20 Sandro Santilli - * ChangeLog, source/headers/geos/geom/CoordinateSequenceFactory.h, - source/headers/geos/geom/GeometryComponentFilter.h, - source/headers/geos/geom/GeometryFilter.h, - source/headers/geos/geom/util/CoordinateOperation.h, - source/headers/geos/geom/util/GeometryEditorOperation.h, - source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h, - source/headers/geos/geomgraph/NodeFactory.h, - source/headers/geos/index/ItemVisitor.h, - source/headers/geos/index/strtree/AbstractSTRtree.h, - source/headers/geos/index/sweepline/SweepLineOverlapAction.h: - Added missing virtual destructor to abstract classes. + * [r1624] Added missing virtual destructor to abstract classes. -2006-06-07 20:04 strk +2006-06-07 20:04 Sandro Santilli - * ChangeLog, configure.in: * configure.in: enforce -Wall -ansi - -pedantic -Wno-long-long to C and CXX flags. + * [r1623] * configure.in: enforce -Wall -ansi -pedantic + -Wno-long-long to C and CXX flags. -2006-06-07 19:45 strk +2006-06-07 19:45 Sandro Santilli - * swig/ruby/test/Makefile.am: Renamed (reserved) TESTS variable to - RUBY_TESTS + * [r1622] Renamed (reserved) TESTS variable to RUBY_TESTS -2006-06-07 19:26 strk +2006-06-07 19:26 Sandro Santilli - * Makefile.am: Fixed SUBDIRS order, and added a NOTE about - maintaining it. + * [r1621] Fixed SUBDIRS order, and added a NOTE about maintaining + it. -2006-06-07 17:03 strk +2006-06-07 17:03 Sandro Santilli - * ChangeLog, Makefile.am, configure.in, swig/python/Makefile.am, - swig/ruby/Makefile.am, swig/ruby/test/Makefile.am: * Makefile.am, - configure.in, swig/python/Makefile.am, swig/ruby/Makefile.am, - swig/ruby/test/Makefile.am: swig removed from automatic build - process. + * [r1620] * Makefile.am, configure.in, swig/python/Makefile.am, + swig/ruby/Makefile.am, swig/ruby/test/Makefile.am: swig removed + from automatic build process. * configure.in: removed check for boost availability. -2006-06-07 16:07 strk +2006-06-07 16:07 Sandro Santilli + + * [r1619] Set release version to 3.0.0rc1 - * configure.in: Set release version to 3.0.0rc1 +2006-06-07 14:10 Mateusz Loskot -2006-06-07 14:10 mloskot + * [r1618] Update ChangeLog with info about new test case + isPointInRingTest.cpp. - * ChangeLog, tests/unit/Makefile.am: Update ChangeLog with info - about new test case isPointInRingTest.cpp. +2006-06-07 14:06 Mateusz Loskot -2006-06-07 14:06 mloskot + * [r1617] Renamed file isPointInRing.cpp to isPointInRingTest.cpp + to follow GEOS Unit Test convention. - * tests/unit/algorithm/CGAlgorithms/isPointInRing.cpp, - tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp: Renamed - file isPointInRing.cpp to isPointInRingTest.cpp to follow GEOS - Unit Test convention. +2006-06-07 13:52 Mateusz Loskot -2006-06-07 13:52 mloskot + * [r1616] Added new test: CGAlgorithms/isPointInRing.cpp. - * tests/unit/Makefile.am, tests/unit/algorithm/CGAlgorithms, - tests/unit/algorithm/CGAlgorithms/isPointInRing.cpp: Added new - test: CGAlgorithms/isPointInRing.cpp. +2006-06-07 13:10 Sandro Santilli -2006-06-07 13:10 strk + * [r1615] Removed Triangle.h include from geom.h - * ChangeLog, source/headers/geos/geom.h: Removed Triangle.h include - from geom.h +2006-06-07 13:08 Sandro Santilli -2006-06-07 13:08 strk + * [r1614] * source/headers/geos/geom/Makefile.am: removed + Triangle.h from installed header set. - * ChangeLog, source/headers/geos/geom/Makefile.am: * - source/headers/geos/geom/Makefile.am: removed Triangle.h from +2006-06-05 19:42 Sandro Santilli + + * [r1613] Fixed noinst_geos_HEADERS => noinst_HEADERS. + +2006-06-05 15:36 Sandro Santilli + + * [r1612] Given OverlayOp funx code enum a name and renamed values + to have a lowercase prefix. Drop all of noding headers from installed header set. -2006-06-05 19:42 strk +2006-06-03 22:31 Howard Butler - * ChangeLog, source/headers/geos/Makefile.am, - source/headers/geos/algorithm/Makefile.am, - source/headers/geos/geom/Makefile.am, - source/headers/geos/geom/util/Makefile.am, - source/headers/geos/geomgraph/Makefile.am, - source/headers/geos/geomgraph/index/Makefile.am, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/index/Makefile.am, - source/headers/geos/index/bintree/Makefile.am, - source/headers/geos/index/chain/Makefile.am, - source/headers/geos/index/quadtree/Makefile.am, - source/headers/geos/index/strtree/Makefile.am, - source/headers/geos/index/sweepline/Makefile.am, - source/headers/geos/indexSweepline.h, - source/headers/geos/io/Makefile.am, - source/headers/geos/noding/Makefile.am, - source/headers/geos/noding/snapround/Makefile.am, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opDistance.h, - source/headers/geos/opOverlay.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/opPredicate.h, - source/headers/geos/opRelate.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/buffer/Makefile.am, - source/headers/geos/operation/distance/Makefile.am, - source/headers/geos/operation/linemerge/Makefile.am, - source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/polygonize/Makefile.am, - source/headers/geos/operation/predicate/Makefile.am, - source/headers/geos/operation/relate/Makefile.am, - source/headers/geos/operation/valid/Makefile.am, - source/headers/geos/planargraph.h, - source/headers/geos/planargraph/Makefile.am, - source/headers/geos/planargraph/algorithm/Makefile.am, - source/headers/geos/precision/Makefile.am, - source/headers/geos/util.h, source/headers/geos/util/Makefile.am: - Fixed noinst_geos_HEADERS => noinst_HEADERS. + * [r1611] update to track latest removals -2006-06-05 15:36 strk +2006-06-03 22:29 Howard Butler - * ChangeLog, NEWS, capi/geos_c.cpp, source/geom/Geometry.cpp, - source/headers/geos/noding.h, - source/headers/geos/noding/Makefile.am, - source/headers/geos/operation/overlay/LineBuilder.h, - source/headers/geos/operation/overlay/OverlayOp.h, - source/headers/geos/operation/overlay/PointBuilder.h, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - tests/xmltester/XMLTester.cpp: Given OverlayOp funx code enum a - name and renamed values to have a lowercase prefix. Drop all of - noding headers from installed header set. - -2006-06-03 22:31 hobu - - * source/Makefile.vc: update to track latest removals - -2006-06-03 22:29 hobu - - * source/simplify/DouglasPeuckerLineSimplifier.cpp: Use a fully - qualified namespace for LineSegment because we're inside of - geos::simplify at the time - -2006-06-01 11:49 strk - - * ChangeLog, source/headers/geos/geomgraph.h, - source/headers/geos/geomgraph/Makefile.am, - source/headers/geos/geomgraph/Node.h, - source/headers/geos/geomgraph/PlanarGraph.h, - source/headers/geos/io.h, source/headers/geos/io/Makefile.am, - source/headers/geos/io/WKBReader.h, - source/headers/geos/opValid.h, - source/headers/geos/operation/buffer/Makefile.am, - source/headers/geos/operation/distance/Makefile.am, - source/headers/geos/operation/predicate/Makefile.am, - source/headers/geos/operation/valid/Makefile.am, - source/headers/geos/precision.h, - source/headers/geos/precision/Makefile.am, - source/io/WKTWriter.cpp, source/io/Writer.cpp: Reduced installed - headers form geomgraph namespace - -2006-06-01 10:28 strk - - * ChangeLog, source/headers/geos/index/bintree/Makefile.am, - source/headers/geos/index/chain/Makefile.am, - source/headers/geos/index/quadtree/Makefile.am, - source/headers/geos/index/strtree/Makefile.am, - source/headers/geos/index/sweepline/Makefile.am, - source/headers/geos/indexBintree.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/indexSweepline.h, - source/headers/geos/operation/valid/SweeplineNestedRingTester.h, - source/operation/valid/Makefile.am: Reduced number of installed - headers for the geos::index namespace - -2006-05-25 18:44 strk - - * ChangeLog, tests/unit/geom/TriangleTest.cpp: * - tests/unit/geom/TriangleTest.cpp: take floating-point rounding - error into account. + * [r1610] Use a fully qualified namespace for LineSegment because + we're inside of geos::simplify at the time + +2006-06-01 11:49 Sandro Santilli + + * [r1609] Reduced installed headers form geomgraph namespace + +2006-06-01 10:28 Sandro Santilli + + * [r1608] Reduced number of installed headers for the geos::index + namespace + +2006-05-25 18:44 Sandro Santilli -2006-05-25 16:11 mloskot + * [r1607] * tests/unit/geom/TriangleTest.cpp: take floating-point + rounding error into account. - * tests/tut/tut.h: Changed precision constant with epsilon() from +2006-05-25 16:11 Mateusz Loskot + + * [r1606] Changed precision constant with epsilon() from std::numeric_limits. -2006-05-25 15:54 mloskot +2006-05-25 15:54 Mateusz Loskot - * tests/tut/tut.h: Added specialization of ensure_equals for double - type. + * [r1605] Added specialization of ensure_equals for double type. -2006-05-24 16:29 strk +2006-05-24 16:29 Sandro Santilli - * ChangeLog, source/index/quadtree/DoubleBits.cpp: * - source/index/quadtree/DoubleBits.cpp: handled negative or zero - values in getExponent(). + * [r1604] * source/index/quadtree/DoubleBits.cpp: handled negative + or zero values in getExponent(). -2006-05-24 16:01 strk +2006-05-24 16:01 Sandro Santilli - * ChangeLog, tests/unit/utility.h: * tests/unit/utility.h: fixed - missing return from isSameStructure's specialization on - GeometryCollection, also fixed a signed/unsigned mismatch warning - there. + * [r1603] * tests/unit/utility.h: fixed missing return from + isSameStructure's specialization on GeometryCollection, also + fixed a signed/unsigned mismatch warning there. -2006-05-24 15:42 strk +2006-05-24 15:42 Sandro Santilli - * ChangeLog, source/util/CoordinateArrayFiter.cpp, - source/util/GEOSException.cpp, source/util/Makefile.am, - source/util/UniqueCoordinateArrayFilter.cpp: * - source/util/Makefile.am, source/util/CoordinateArrayFiter.cpp, + * [r1602] * source/util/Makefile.am, + source/util/CoordinateArrayFiter.cpp, source/util/GEOSException.cpp, source/util/UniqueCoordinateArrayFilter.cpp: removed empty implementation files. -2006-05-24 15:32 strk +2006-05-24 15:32 Sandro Santilli - * ChangeLog, source/headers/geos/simplify/TaggedLinesSimplifier.h: - * source/headers/geos/simplify/TaggedLinesSimplifier.h: added - LineSegmentIndex.h include so that every use of the templated - simplify() function get all the required definitions. + * [r1601] * source/headers/geos/simplify/TaggedLinesSimplifier.h: + added LineSegmentIndex.h include so that every use of the + templated simplify() function get all the required definitions. -2006-05-24 15:17 strk +2006-05-24 15:17 Sandro Santilli - * ChangeLog, source/headers/geos/algorithm/Makefile.am, - source/headers/geos/geom/Makefile.am, - source/headers/geos/geomgraph/Makefile.am, - source/headers/geos/opLinemerge.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/distance/Makefile.am, - source/headers/geos/operation/linemerge/Makefile.am, - source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/overlay/OverlayOp.h, - source/headers/geos/operation/polygonize/Makefile.am, - source/headers/geos/operation/relate/Makefile.am, - source/headers/geos/planargraph/Makefile.am: Reduced number of - installed headers in geos/operation/ subdir + * [r1600] Reduced number of installed headers in geos/operation/ + subdir -2006-05-24 13:44 strk +2006-05-24 13:44 Sandro Santilli - * NEWS: Added a note about unit tests being introduced + * [r1599] Added a note about unit tests being introduced -2006-05-24 11:44 mloskot +2006-05-24 11:44 Mateusz Loskot - * ChangeLog: Added missing entries to ChangeLog. + * [r1598] Added missing entries to ChangeLog. -2006-05-24 11:41 strk +2006-05-24 11:41 Sandro Santilli - * ChangeLog, source/headers/geos/simplify/TaggedLinesSimplifier.h, - source/simplify/TaggedLinesSimplifier.cpp, - source/simplify/TopologyPreservingSimplifier.cpp: * - source/headers/geos/simplify/TaggedLinesSimplifier.h, + * [r1597] * source/headers/geos/simplify/TaggedLinesSimplifier.h, source/simplify/TaggedLinesSimplifier.cpp, source/simplify/TopologyPreservingSimplifier.cpp: fixed bug in TopologyPreservingSimplifier failing to @@ -4661,4098 +5536,2334 @@ class to more closely match JTS and use templated functions. -2006-05-24 08:32 strk +2006-05-24 08:32 Sandro Santilli - * ChangeLog, capi/geos_c.h.in: * capi/geos_c.h.in: #include - to get size_t definition (only #ifndef __cplusplus) + * [r1596] * capi/geos_c.h.in: #include to get size_t + definition (only #ifndef __cplusplus) -2006-05-24 05:53 mloskot +2006-05-24 05:53 Mateusz Loskot - * tests/unit/Makefile.am, - tests/unit/simplify/TopologyPreservingSimplifierTest.cpp, - tests/unit/utility.h: Added new test: - TopologyPreservingSimplifierTest.cpp. Added new utility.cpp - helper for Unit Tests (implementes utils from JTS Unit Tests). + * [r1595] Added new test: TopologyPreservingSimplifierTest.cpp. + Added new utility.cpp helper for Unit Tests (implementes utils + from JTS Unit Tests). -2006-05-23 15:06 strk +2006-05-23 15:06 Sandro Santilli - * ChangeLog, source/headers/geos/geom/Coordinate.h: * - source/headers/geos/geom/Coordinate.h: added missing - include. + * [r1594] * source/headers/geos/geom/Coordinate.h: added missing + include. -2006-05-23 14:44 strk +2006-05-23 14:44 Sandro Santilli - * ChangeLog, source/headers/geos/config.h: * - source/headers/geos/config.h: removed file which is not supposed - to be in the repository. + * [r1593] * source/headers/geos/config.h: removed file which is not + supposed to be in the repository. -2006-05-23 14:29 strk +2006-05-23 14:29 Sandro Santilli - * ChangeLog, source/headers/geos/index/quadtree/DoubleBits.h, - source/index/quadtree/DoubleBits.cpp: * - source/headers/geos/index/quadtree/DoubleBits.h, + * [r1592] * source/headers/geos/index/quadtree/DoubleBits.h, source/index/quadtree/DoubleBits.cpp: const correctness and documentation. -2006-05-23 13:21 strk +2006-05-23 13:21 Sandro Santilli - * tests/unit/io/ByteOrderValuesTest.cpp: Added test for put/get - Long values + * [r1591] Added test for put/get Long values -2006-05-23 13:16 strk +2006-05-23 13:16 Sandro Santilli - * ChangeLog, source/io/WKBWriter.cpp: Fixed a bug in - WKBWriter::writeByteOrder() failing to consider machine's byte - order + * [r1590] Fixed a bug in WKBWriter::writeByteOrder() failing to + consider machine's byte order -2006-05-23 12:57 strk +2006-05-23 12:57 Sandro Santilli - * tests/unit/geom/CoordinateTest.cpp: Fixed small typo in label + * [r1589] Fixed small typo in label -2006-05-23 12:33 strk +2006-05-23 12:33 Sandro Santilli - * ChangeLog, source/io/ByteOrderValues.cpp: * - source/io/ByteOrderValues.cpp: fixed bug in putLong() also - affecting putDouble() + * [r1588] * source/io/ByteOrderValues.cpp: fixed bug in putLong() + also affecting putDouble() -2006-05-23 12:23 strk +2006-05-23 12:23 Sandro Santilli - * ChangeLog, tests/unit/Makefile.am, - tests/unit/io/ByteOrderValuesTest.cpp: * tests/unit/Makefile.am, + * [r1587] * tests/unit/Makefile.am, tests/unit/io/ByteOrderValuesTest.cpp: unit test for ByteOrderValues class. -2006-05-23 11:07 strk +2006-05-23 11:07 Sandro Santilli - * ChangeLog, source/io/WKBWriter.cpp: * source/io/WKBWriter.cpp: - fixed bug in ::writeInt missing to honour the requested byte - order. + * [r1586] * source/io/WKBWriter.cpp: fixed bug in ::writeInt + missing to honour the requested byte order. -2006-05-23 10:56 strk +2006-05-23 10:56 Sandro Santilli - * tests/unit/io/WKBReaderTest.cpp: Fixed top comment + * [r1585] Fixed top comment -2006-05-23 10:48 strk +2006-05-23 10:48 Sandro Santilli - * ChangeLog, tests/unit/io/WKBReaderTest.cpp: * - tests/unit/io/WKBReaderTest.cpp: cleaned up and added both XDR - and NDR tests. + * [r1584] * tests/unit/io/WKBReaderTest.cpp: cleaned up and added + both XDR and NDR tests. -2006-05-23 09:24 strk +2006-05-23 09:24 Sandro Santilli - * ChangeLog, source/headers/geos/io/WKBConstants.h, - source/io/ByteOrderValues.cpp: * source/io/ByteOrderValues.cpp: - changed ENDIAN_BIG and ENDIAN_LITTLE values to match - WKBConstants::XDR and WKBConstants::NDR respectively. + * [r1583] * source/io/ByteOrderValues.cpp: changed ENDIAN_BIG and + ENDIAN_LITTLE values to match WKBConstants::XDR and + WKBConstants::NDR respectively. * source/headers/geos/io/WKBConstants.h: added comments about meaning of XDR/NDR. -2006-05-22 15:08 strk +2006-05-22 15:08 Sandro Santilli - * source/headers/geos/util/GEOSException.h: Print colon after - exception name (as it has always been) + * [r1582] Print colon after exception name (as it has always been) -2006-05-19 17:44 strk +2006-05-19 17:44 Sandro Santilli - * ChangeLog, source/simplify/TopologyPreservingSimplifier.cpp: * - source/simplify/TopologyPreservingSimplifier.cpp: + * [r1581] * source/simplify/TopologyPreservingSimplifier.cpp: removed friend specification in TopologyPreservingSimplifier helper class (no more needed) -2006-05-19 17:39 strk +2006-05-19 17:39 Sandro Santilli - * ChangeLog, tests/unit/geom/Geometry/coversTest.cpp: * - tests/unit/geom/Geometry/coversTest.cpp: + * [r1580] * tests/unit/geom/Geometry/coversTest.cpp: keep tests in 'tut' namespace. -2006-05-19 16:38 strk +2006-05-19 16:38 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: * - tests/xmltester/XMLTester.cpp: report + * [r1579] * tests/xmltester/XMLTester.cpp: report error on load of requested tests. -2006-05-18 10:19 strk +2006-05-18 10:19 Sandro Santilli - * ChangeLog, source/headers/geos/geom.h: * - source/headers/geos/geom.h: fixed doxygen header for mainpage. + * [r1578] * source/headers/geos/geom.h: fixed doxygen header for + mainpage. -2006-05-18 10:16 strk +2006-05-18 10:16 Sandro Santilli - * NEWS: Added note about the new BinaryOp class and its uses. + * [r1577] Added note about the new BinaryOp class and its uses. -2006-05-18 10:13 strk +2006-05-18 10:13 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h: * - source/headers/geos/geom/BinaryOp.h: added compile-time defines - to avoid precision-reduction and simplify based policies (default - to enabled). + * [r1576] * source/headers/geos/geom/BinaryOp.h: added compile-time + defines to avoid precision-reduction and simplify based policies + (default to enabled). -2006-05-18 09:32 strk +2006-05-18 09:32 Sandro Santilli - * NEWS: added note about new Geometry predicates + * [r1575] added note about new Geometry predicates -2006-05-18 09:00 strk +2006-05-18 09:00 Sandro Santilli - * ChangeLog, tests/unit/geom/Geometry/coversTest.cpp: Added tests - for coveredBy(), fixed ChangeLog entry + * [r1574] Added tests for coveredBy(), fixed ChangeLog entry -2006-05-18 08:56 strk +2006-05-18 08:56 Sandro Santilli - * ChangeLog, source/geom/Geometry.cpp, - source/headers/geos/geom/Geometry.h, tests/unit/Makefile.am, - tests/unit/geom/Geometry/coversTest.cpp: * - source/geom/Geometry.cpp, + * [r1573] * source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h: added covers() and isCoveredBy() predicates. * tests/unit/Makefile.am, tests/unit/geom/Geometry/coversTest.cpp: added test for covers() predicates. -2006-05-17 17:41 strk +2006-05-17 17:41 Sandro Santilli - * source/geom/IntersectionMatrix.cpp, - source/headers/geos/geom/IntersectionMatrix.h, - tests/unit/geom/IntersectionMatrixTest.cpp: Added output operator - + test + * [r1572] Added output operator + test -2006-05-17 17:24 strk +2006-05-17 17:24 Sandro Santilli - * ChangeLog, source/geom/IntersectionMatrix.cpp, - source/headers/geos/geom/IntersectionMatrix.h: Added port info, - fixed isCoveredBy() comment. + * [r1571] Added port info, fixed isCoveredBy() comment. -2006-05-17 17:20 strk +2006-05-17 17:20 Sandro Santilli - * ChangeLog, source/geom/IntersectionMatrix.cpp, - source/headers/geos/geom/IntersectionMatrix.h, - tests/unit/geom/IntersectionMatrixTest.cpp: added isCovers() and - isCoveredBy() public methods to IntersectionMatrix and associated - tests. + * [r1570] added isCovers() and isCoveredBy() public methods to + IntersectionMatrix and associated tests. -2006-05-17 08:40 strk +2006-05-17 08:40 Sandro Santilli - * source/headers/geos/geom/BinaryOp.h: typo fixed to make - description more clear + * [r1569] typo fixed to make description more clear -2006-05-13 10:42 mloskot +2006-05-13 10:42 Mateusz Loskot - * tests/unit/algorithm/PointLocatorTest.cpp: Fixed line-ends in - PointLocatorTest.cpp file. + * [r1563] Fixed line-ends in PointLocatorTest.cpp file. -2006-05-13 08:26 mloskot +2006-05-13 08:26 Mateusz Loskot - * ., .cvsignore, tests/unit, tests/unit/.cvsignore, - tests/unit/geom/Geometry/isRectangleTest.cpp: Fixed line-ends in - isRectangleTest.cpp. Added new patterns to .cvsignore. + * [r1562] Fixed line-ends in isRectangleTest.cpp. Added new + patterns to .cvsignore. -2006-05-05 15:40 strk +2006-05-05 15:40 Sandro Santilli - * ChangeLog, source/noding/snapround/MCIndexSnapRounder.cpp, - source/noding/snapround/SimpleSnapRounder.cpp: Had nodind - validation error throw an exception for SimpleSnapRounder + * [r1561] Had nodind validation error throw an exception for + SimpleSnapRounder and MCIndexSnapRounder -2006-05-05 14:34 strk +2006-05-05 14:34 Sandro Santilli - * ChangeLog, tests/unit/Makefile.am, tests/unit/noding, - tests/unit/noding/SegmentStringTest.cpp: New SegmentString unit - test + * [r1560] New SegmentString unit test -2006-05-05 14:25 strk +2006-05-05 14:25 Sandro Santilli - * source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SegmentString.inl, - source/noding/SegmentString.cpp: moved getSegmentOctant out of - .inl into .cpp, renamed private eiList to nodeList as in JTS, - added more assertion checking and fixed doxygen comments + * [r1559] moved getSegmentOctant out of .inl into .cpp, renamed + private eiList to nodeList as in JTS, added more assertion + checking and fixed doxygen comments -2006-05-05 10:19 strk +2006-05-05 10:19 Sandro Santilli - * ChangeLog, source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SegmentString.inl, - source/noding/SegmentNodeList.cpp: droppped - SegmentString::getContext(), new name is getData() to reflect - change in JTS + * [r1558] droppped SegmentString::getContext(), new name is + getData() to reflect change in JTS -2006-05-05 09:37 strk +2006-05-05 09:37 Sandro Santilli - * ChangeLog, source/headers/geos/geom.h: * - source/headers/geos/geom.h: fixed namespace qualification in - doxygen page about C++ interface. + * [r1557] * source/headers/geos/geom.h: fixed namespace + qualification in doxygen page about C++ interface. -2006-05-04 15:49 strk +2006-05-04 15:49 Sandro Santilli - * ChangeLog, source/geom/GeometryCollection.cpp, - source/geom/LineString.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/headers/geos/geom/Dimension.h, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/MultiLineString.h, - source/headers/geos/geom/MultiPoint.h, - source/headers/geos/geom/MultiPolygon.h, - source/headers/geos/geom/Point.h, - source/headers/geos/geom/Polygon.h, - source/operation/buffer/BufferOp.cpp: updated all - Geometry::getDimension() methods to return + * [r1556] updated all Geometry::getDimension() methods to return Dimension::DimensionType (closes bug#93) -2006-05-04 14:05 strk +2006-05-04 14:05 Sandro Santilli - * ChangeLog, source/geom/PrecisionModel.cpp, - source/headers/geos/noding/snapround/HotPixel.inl, - source/headers/geos/util/math.h, source/noding/ScaledNoder.cpp: * - source/headers/geos/util/math.h: provided an util::round() method - being an inline proxy to call appropriate default rounding - function for the whole GEOS codebase. Currently pointing at - util::java_math_round() being the last being used. + * [r1555] * source/headers/geos/util/math.h: provided an + util::round() method being an inline proxy to call appropriate + default rounding function for the whole GEOS codebase. Currently + pointing at util::java_math_round() being the last being used. -2006-05-04 13:38 strk +2006-05-04 13:38 Sandro Santilli - * source/headers/geos/geomgraph/DirectedEdge.h: doxygen comments - cleanup + * [r1554] doxygen comments cleanup -2006-05-04 12:54 strk +2006-05-04 12:54 Sandro Santilli - * ChangeLog, source/headers/geos/geomgraph/NodeMap.h: Added - invariant tester for NodeMap class, fixed comment about ownership - of NodeFactory + * [r1553] Added invariant tester for NodeMap class, fixed comment + about ownership of NodeFactory -2006-05-04 12:33 strk +2006-05-04 12:33 Sandro Santilli - * source/operation/buffer/BufferSubgraph.cpp: Added some comments - about RightmostEdgeFinder only considering forward DirectedEdge + * [r1552] Added some comments about RightmostEdgeFinder only + considering forward DirectedEdge -2006-05-04 12:19 strk +2006-05-04 12:19 Sandro Santilli - * source/headers/geos/operation/buffer/RightmostEdgeFinder.h: Added - note about findEdge() only scanning for forward DirectedEdges + * [r1551] Added note about findEdge() only scanning for forward + DirectedEdges -2006-05-04 12:17 strk +2006-05-04 12:17 Sandro Santilli - * source/geomgraph/PlanarGraph.cpp: Added comment about management - of newly created DirectedEdges + * [r1550] Added comment about management of newly created + DirectedEdges -2006-05-04 10:15 strk +2006-05-04 10:15 Sandro Santilli - * ChangeLog, - source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h: - Doxygen comments + * [r1549] Doxygen comments -2006-05-04 09:16 strk +2006-05-04 09:16 Sandro Santilli - * source/operation/buffer/BufferBuilder.cpp: Added JTS debugging, - for comparison with JTS + * [r1548] Added JTS debugging, for comparison with JTS -2006-05-04 08:42 strk +2006-05-04 08:42 Sandro Santilli - * ChangeLog, source/headers/geos/geom/CoordinateSequence.h: Added - note about the CoordinateSequence::toVector() method. + * [r1547] Added note about the CoordinateSequence::toVector() + method. -2006-05-04 08:35 strk +2006-05-04 08:35 Sandro Santilli - * ChangeLog, source/noding/SegmentNodeList.cpp: - noding/SegmentNodeList.cpp: cleanups, changed output operator to - be more similar to JTS + * [r1546] noding/SegmentNodeList.cpp: cleanups, changed output + operator to be more similar to JTS -2006-05-04 08:30 strk +2006-05-04 08:30 Sandro Santilli - * source/noding/ScaledNoder.cpp: removed use of - SegmentString::setCoordinates() [dropped] + * [r1545] removed use of SegmentString::setCoordinates() [dropped] -2006-05-04 08:29 strk +2006-05-04 08:29 Sandro Santilli - * ChangeLog, source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SegmentString.inl: * - source/noding/ScaledNoder.cpp: removed use of + * [r1544] * source/noding/ScaledNoder.cpp: removed use of SegmentString::setCoordinates(). * source/headers/geos/noding/SegmentStrign.{h,inl}: removed new setCoordinates() interface. -2006-05-04 07:43 strk +2006-05-04 07:43 Sandro Santilli - * ChangeLog, source/headers/geos/noding/SegmentString.h, - source/noding/SegmentString.cpp: output operator for - SegmentString class + * [r1543] output operator for SegmentString class -2006-05-04 07:41 strk +2006-05-04 07:41 Sandro Santilli - * ChangeLog, source/headers/geos/noding/SegmentNodeList.h: - const-correct size() method for SegmentNodeList + * [r1542] const-correct size() method for SegmentNodeList -2006-05-04 06:36 strk +2006-05-04 06:36 Sandro Santilli - * source/headers/geos/noding/ScaledNoder.h: Extended definition to - take new CoordinateSequence tracking into account + * [r1541] Extended definition to take new CoordinateSequence + tracking into account -2006-05-03 20:05 strk +2006-05-03 20:05 Sandro Santilli - * ChangeLog, source/noding/ScaledNoder.cpp: Added SQL debugging - output + * [r1540] Added SQL debugging output -2006-05-03 19:47 strk +2006-05-03 19:47 Sandro Santilli - * ChangeLog, source/geom/CoordinateSequence.cpp, - source/headers/geos/geom/CoordinateSequence.h: added operator<< - for CoordinateSequence + * [r1539] added operator<< for CoordinateSequence -2006-05-03 18:04 strk +2006-05-03 18:04 Sandro Santilli - * ChangeLog, source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SegmentString.inl: added - SegmentString::setCoordinates() interface + * [r1538] added SegmentString::setCoordinates() interface -2006-05-03 17:54 strk +2006-05-03 17:54 Sandro Santilli - * source/noding/snapround/SimpleSnapRounder.cpp: Uncommented - correctness checker + * [r1537] Uncommented correctness checker -2006-05-03 17:51 strk +2006-05-03 17:51 Sandro Santilli - * source/noding/snapround/HotPixel.cpp: system headers included - after package headers + * [r1536] system headers included after package headers -2006-05-03 17:50 strk +2006-05-03 17:50 Sandro Santilli - * ChangeLog, source/headers/geos/noding/snapround/HotPixel.h: - Doxygen comments + * [r1535] Doxygen comments -2006-05-03 17:48 strk +2006-05-03 17:48 Sandro Santilli - * source/headers/geos/nodingSnapround.h: Forgot a slash + * [r1534] Forgot a slash -2006-05-03 17:48 strk +2006-05-03 17:48 Sandro Santilli - * ChangeLog, source/headers/geos/nodingSnapround.h: Doxygen brief + * [r1533] Doxygen brief -2006-05-03 16:22 hobu +2006-05-03 16:22 Howard Butler - * source/Makefile.vc: tweak clean target + * [r1532] tweak clean target -2006-05-03 16:21 hobu +2006-05-03 16:21 Howard Butler - * source/Makefile.vc: Build the C API and shared lib separate from - the normal lib + * [r1531] Build the C API and shared lib separate from the normal + lib Add missing files -2006-05-03 16:19 strk +2006-05-03 16:19 Sandro Santilli - * source/headers/geos/noding/SegmentString.h: fit in 80 columns + * [r1530] fit in 80 columns -2006-05-03 16:09 hobu +2006-05-03 16:09 Howard Butler - * capi/geos_c.h.vc: Maintain a geos_c.h.vc until we come up with a - better solution + * [r1529] Maintain a geos_c.h.vc until we come up with a better + solution -2006-05-03 15:50 hobu +2006-05-03 15:50 Howard Butler - * ChangeLog: *** empty log message *** + * [r1528] *** empty log message *** -2006-05-03 15:49 strk +2006-05-03 15:49 Sandro Santilli - * ChangeLog, source/noding/snapround/SimpleSnapRounder.cpp: fixed - bug in SimpleSnapRounder::computeSnaps, trying to access - out-of-bound vector element. + * [r1527] fixed bug in SimpleSnapRounder::computeSnaps, trying to + access out-of-bound vector element. -2006-05-03 15:49 hobu +2006-05-03 15:49 Howard Butler - * source/Makefile.vc: add additional files and change names where - necessary + * [r1526] add additional files and change names where necessary -2006-05-03 15:40 strk +2006-05-03 15:40 Sandro Santilli - * source/noding/ScaledNoder.cpp: test SegmentString invariant - before and after scaling + * [r1525] test SegmentString invariant before and after scaling -2006-05-03 15:37 strk +2006-05-03 15:37 Sandro Santilli - * ChangeLog: Tabs for indent + * [r1524] Tabs for indent -2006-05-03 15:32 hobu +2006-05-03 15:32 Howard Butler - * ChangeLog: *** empty log message *** + * [r1523] *** empty log message *** -2006-05-03 15:30 hobu +2006-05-03 15:30 Howard Butler - * source/headers/geos/version.h.vc: Maintain a version.h.vc until - we come up with a better solution + * [r1522] Maintain a version.h.vc until we come up with a better + solution -2006-05-03 15:28 strk +2006-05-03 15:28 Sandro Santilli - * ChangeLog, configure.in: updated JTS_PORT to 1.7.1 + * [r1521] updated JTS_PORT to 1.7.1 -2006-05-03 15:26 strk +2006-05-03 15:26 Sandro Santilli - * ChangeLog, source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SegmentString.inl: testInvariant made - public and always inlined + * [r1520] testInvariant made public and always inlined -2006-05-03 15:19 strk +2006-05-03 15:19 Sandro Santilli - * ChangeLog, source/headers/geos/noding/snapround/HotPixel.inl: - Changed sym_round() to java_math_round() + * [r1519] Changed sym_round() to java_math_round() -2006-05-03 15:12 strk +2006-05-03 15:12 Sandro Santilli - * source/noding/ScaledNoder.cpp: Oops, uninitialized value fix + * [r1518] Oops, uninitialized value fix -2006-05-03 15:06 strk +2006-05-03 15:06 Sandro Santilli - * ChangeLog: Updated + * [r1517] Updated -2006-05-03 15:06 strk +2006-05-03 15:06 Sandro Santilli - * source/headers/geos/noding/IntersectionFinderAdder.h: Better - doxygen comment + * [r1516] Better doxygen comment -2006-05-03 15:05 strk +2006-05-03 15:05 Sandro Santilli - * source/operation/buffer/RightmostEdgeFinder.cpp: Assertions - checking + * [r1515] Assertions checking -2006-05-03 15:04 strk +2006-05-03 15:04 Sandro Santilli - * source/headers/geos/noding/ScaledNoder.h: removed reduntant port - info + * [r1514] removed reduntant port info -2006-05-03 15:02 strk +2006-05-03 15:02 Sandro Santilli - * source/headers/geos/noding/snapround/SimpleSnapRounder.h, - source/noding/snapround/SimpleSnapRounder.cpp: moved some - implementations from header to .cpp file (taken out of inline) + * [r1513] moved some implementations from header to .cpp file + (taken out of inline) -2006-05-03 15:00 strk +2006-05-03 15:00 Sandro Santilli - * source/headers/geos/noding/ScaledNoder.h, - source/noding/ScaledNoder.cpp: Fixed scale() function to remove - repeated points *after* rounding. Added brief doxygen class - description. + * [r1512] Fixed scale() function to remove repeated points *after* + rounding. Added brief doxygen class description. -2006-05-03 10:26 strk +2006-05-03 10:26 Sandro Santilli - * ChangeLog, source/operation/buffer/BufferOp.cpp: Fixed misuse of - precision model in noder (bufferFixedPrecision) + * [r1511] Fixed misuse of precision model in noder + (bufferFixedPrecision) -2006-05-03 09:46 strk +2006-05-03 09:46 Sandro Santilli - * ChangeLog: buffer headers reduction item + * [r1510] buffer headers reduction item -2006-05-03 09:45 strk +2006-05-03 09:45 Sandro Santilli - * source/headers/geos/opBuffer.h, - source/headers/geos/operation/buffer/Makefile.am: Do not install - following buffer headers: BufferBuilder.h, + * [r1509] Do not install following buffer headers: BufferBuilder.h, OffsetCurveSetBuilder.h, BufferSubgraph.h, SubgraphDepthLocater.h, RightmostEdgeFinder.h -2006-05-03 09:14 strk +2006-05-03 09:14 Sandro Santilli - * ChangeLog, source/headers/geos/noding/ScaledNoder.h, - source/noding/ScaledNoder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: * - source/operation/buffer/OffsetCurveSetBuilder.cpp: used auto_ptr - to protect leaks of CoordinateSequence + * [r1508] * source/operation/buffer/OffsetCurveSetBuilder.cpp: used + auto_ptr to protect leaks of CoordinateSequence * source/noding/ScaledNoder.cpp, source/headers/geos/noding/ScaledNoder.h: ported JTS bugfix in scale method. -2006-05-03 08:58 strk +2006-05-03 08:58 Sandro Santilli - * ChangeLog, source/geom/CoordinateArraySequence.cpp, - source/headers/geos/geom/CoordinateArraySequence.h, - source/headers/geos/geom/CoordinateSequence.h, - tests/unit/geom/CoordinateArraySequenceTest.cpp: added new - non-static CoordinateSequence::removeRepeatedPoints() mutator. + * [r1507] added new non-static + CoordinateSequence::removeRepeatedPoints() mutator. -2006-05-02 16:22 strk +2006-05-02 16:22 Sandro Santilli - * ChangeLog, source/noding/ScaledNoder.cpp: * - source/noding/ScaledNoder.cpp: use java_math_round instead of - sym_round. + * [r1506] * source/noding/ScaledNoder.cpp: use java_math_round + instead of sym_round. -2006-05-02 14:51 strk +2006-05-02 14:51 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp, - source/headers/geos/algorithm/CGAlgorithms.h: Added port info and - fixed doxygen comments for CGAlgorithms class + * [r1505] Added port info and fixed doxygen comments for + CGAlgorithms class -2006-05-02 14:32 strk +2006-05-02 14:32 Sandro Santilli - * ChangeLog, source/headers/geos/opPolygonize.h, - source/headers/geos/operation/polygonize/EdgeRing.h, - source/headers/geos/operation/polygonize/Makefile.am, - source/operation/polygonize/EdgeRing.cpp: Added port info for - polygonize/EdgeRing class, polygonize/EdgeRing.h header + * [r1503] Added port info for polygonize/EdgeRing class, + polygonize/EdgeRing.h header not installed. -2006-05-02 14:22 strk +2006-05-02 14:22 Sandro Santilli - * ChangeLog, source/operation/polygonize/EdgeRing.cpp, - source/operation/polygonize/Makefile.am, - source/operation/polygonize/polygonizeEdgeRing.cpp: * - source/operation/polygonize/: polygonizeEdgeRing.cpp renamed to - EdgeRing.cpp, to follow JTS naming. + * [r1502] * source/operation/polygonize/: polygonizeEdgeRing.cpp + renamed to EdgeRing.cpp, to follow JTS naming. -2006-05-02 14:01 strk +2006-05-02 14:01 Sandro Santilli - * ChangeLog, source/io/WKBReader.cpp: * source/io/WKBReader.cpp: - fixed reads of XDR WKB. + * [r1500] * source/io/WKBReader.cpp: fixed reads of XDR WKB. -2006-04-28 12:09 strk +2006-04-28 12:09 Sandro Santilli - * tests/xmltester/Makefile.am: Added 'verbose-test' rule + * [r1497] Added 'verbose-test' rule -2006-04-28 12:08 strk +2006-04-28 12:08 Sandro Santilli - * NEWS: Added note about Geometry constructors + * [r1496] Added note about Geometry constructors -2006-04-28 11:56 strk +2006-04-28 11:56 Sandro Santilli - * ChangeLog, source/geom/GeometryFactory.cpp, - source/geom/Polygon.cpp, - source/headers/geos/geom/GeometryFactory.h: * - source/geom/GeometryFactory.cpp, + * [r1495] * source/geom/GeometryFactory.cpp, source/headers/geos/geom/GeometryFactory.h: added LineString copy constructor. * source/geom/Polygon.cpp: fixed getBoundary method to always return a geometry composed by LineStrings (not LinearRings) -2006-04-28 11:12 strk +2006-04-28 11:12 Sandro Santilli - * ChangeLog, - source/headers/geos/operation/predicate/RectangleIntersects.h, - source/io/WKTWriter.cpp, - source/operation/predicate/RectangleIntersects.cpp: removed - warnings related to change in getNumPoints() return type. - -2006-04-28 10:55 strk - - * ChangeLog, source/geom/GeometryCollection.cpp, - source/geom/LineString.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/MultiLineString.h, - source/headers/geos/geom/MultiPoint.h, - source/headers/geos/geom/MultiPolygon.h, - source/headers/geos/geom/Point.h, - source/headers/geos/geom/Polygon.h: Geometry constructors made - protected, to ensure all constructions use GeometryFactory, + * [r1494] removed warnings related to change in getNumPoints() + return type. + +2006-04-28 10:55 Sandro Santilli + + * [r1493] Geometry constructors made protected, to ensure all + constructions use GeometryFactory, which has been made friend of all Geometry derivates. getNumPoints() changed to return size_t. -2006-04-28 10:51 strk +2006-04-28 10:51 Sandro Santilli - * ChangeLog, tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp: - Unit tests: only construct Geoms using GeometryFactory. + * [r1492] Unit tests: only construct Geoms using GeometryFactory. -2006-04-27 15:15 strk +2006-04-27 15:15 Sandro Santilli - * ChangeLog, source/headers/geos/geomgraph/Node.h: Z check removed - from invariant tester to avoid aborts due to differences in FP - computations. + * [r1491] Z check removed from invariant tester to avoid aborts due + to differences in FP computations. -2006-04-27 15:07 strk +2006-04-27 15:07 Sandro Santilli - * source/geomgraph/PlanarGraph.cpp: use output operators in - debugging lines + * [r1490] use output operators in debugging lines -2006-04-27 15:06 strk +2006-04-27 15:06 Sandro Santilli - * ChangeLog, source/geomgraph/NodeMap.cpp: (addNode): always use - the Node Coordinate as a key in the map to reduce likeliness of a - premature deletion. + * [r1489] (addNode): always use the Node Coordinate as a key in the + map to reduce likeliness of a premature deletion. -2006-04-27 15:03 strk +2006-04-27 15:03 Sandro Santilli - * source/geomgraph/Node.cpp: standard algorithm used in addZ() for - vector seek + * [r1488] standard algorithm used in addZ() for vector seek -2006-04-26 16:35 strk +2006-04-26 16:35 Sandro Santilli - * ChangeLog, source/io/StringTokenizer.cpp, - source/io/WKTReader.cpp, tests/xmltester/testLeaksBig.xml: Had - WKTReader accept correct form for MultiPoint + * [r1485] Had WKTReader accept correct form for MultiPoint -2006-04-26 10:39 strk +2006-04-26 10:39 Sandro Santilli - * ChangeLog: Added mloskot item (bug#100) + * [r1482] Added mloskot item (bug#100) -2006-04-26 10:26 strk +2006-04-26 10:26 Sandro Santilli - * ChangeLog, tools/geos-config.in: tools/geos-config.in: fixed - library path to use layout detected by autoconf + * [r1481] tools/geos-config.in: fixed library path to use layout + detected by autoconf -2006-04-24 15:47 strk +2006-04-24 15:47 Sandro Santilli - * source/simplify/TopologyPreservingSimplifier.cpp: Public - constructors change made permanent + * [r1480] Public constructors change made permanent -2006-04-23 11:58 mloskot +2006-04-23 11:58 Mateusz Loskot - * ., .cvsignore, - tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: Small - refactoring of DouglasPeuckerSimplifierTest (prefer to use ctor - instead of operator= to create objects). Added new patterns to - .cvsignore. + * [r1479] Small refactoring of DouglasPeuckerSimplifierTest (prefer + to use ctor instead of operator= to create objects). Added new + patterns to .cvsignore. -2006-04-23 11:29 mloskot +2006-04-23 11:29 Mateusz Loskot - * ., .cvsignore: Added new patterns to .cvsignore file. + * [r1478] Added new patterns to .cvsignore file. -2006-04-22 17:16 mloskot +2006-04-22 17:16 Mateusz Loskot - * source/simplify/TopologyPreservingSimplifier.cpp: Temporar fix of - Bug #100. This report requires deeper analysis!. + * [r1477] Temporar fix of Bug #100. This report requires deeper + analysis!. -2006-04-21 17:04 strk +2006-04-21 17:04 Sandro Santilli - * ChangeLog, source/geom/PrecisionModel.cpp: Fixed constructor by - type to always initialize scale factor + * [r1476] Fixed constructor by type to always initialize scale + factor -2006-04-20 16:21 strk +2006-04-20 16:21 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h: Added missing - debugging output + * [r1475] Added missing debugging output -2006-04-20 14:27 strk +2006-04-20 14:27 Sandro Santilli - * ChangeLog, source/algorithm/HCoordinate.cpp, - source/headers/geos/algorithm/HCoordinate.h: HCoordinate class - changed to use long double types internally, in order to improve - computation precision + * [r1474] HCoordinate class changed to use long double types + internally, in order to improve computation precision -2006-04-20 14:16 strk +2006-04-20 14:16 Sandro Santilli - * source/headers/geos/algorithm/LineIntersector.h: Added some more - doxygen comments + * [r1473] Added some more doxygen comments -2006-04-20 11:11 strk +2006-04-20 11:11 Sandro Santilli - * ChangeLog, source/algorithm/HCoordinate.cpp: - source/algorithm/HCoordinate.cpp: added compile time define to - force storage of intermediate computation values to variables (in - order to make the -ffloat-store gcc switch effective). Disabled - by default. + * [r1472] source/algorithm/HCoordinate.cpp: added compile time + define to force storage of intermediate computation values to + variables (in order to make the -ffloat-store gcc switch + effective). Disabled by default. -2006-04-19 09:21 strk +2006-04-19 09:21 Sandro Santilli - * TODO: Added snapround and simplify tests items + * [r1471] Added snapround and simplify tests items -2006-04-19 09:20 strk +2006-04-19 09:20 Sandro Santilli - * NEWS: updated + * [r1470] updated -2006-04-14 15:34 strk +2006-04-14 15:34 Sandro Santilli - * ChangeLog, capi/geos_c.cpp: Had CAPI use new BinaryOp class in an - aim to reduce robustness problems + * [r1469] Had CAPI use new BinaryOp class in an aim to reduce + robustness problems -2006-04-14 15:25 strk +2006-04-14 15:25 Sandro Santilli - * TODO: updated, somehow + * [r1468] updated, somehow -2006-04-14 15:19 strk +2006-04-14 15:19 Sandro Santilli - * ChangeLog, source/operation/overlay/OverlayOp.cpp: removed - precision reduction code (use BinaryOp for that) + * [r1467] removed precision reduction code (use BinaryOp for that) -2006-04-14 15:06 strk +2006-04-14 15:06 Sandro Santilli - * source/headers/geos/geom/Makefile.am: Added BinaryOp.h header + * [r1466] Added BinaryOp.h header -2006-04-14 15:04 strk +2006-04-14 15:04 Sandro Santilli - * source/headers/geos/operation/overlay/OverlayOp.h: fixed missing - namespace qualification in overlay::overlayOp + * [r1465] fixed missing namespace qualification in + overlay::overlayOp -2006-04-14 14:57 strk +2006-04-14 14:57 Sandro Santilli - * ChangeLog, tests/xmltester/XMLTester.cpp: XMLTester binary ops - invoked using the new BinaryOp template function. + * [r1464] XMLTester binary ops invoked using the new BinaryOp + template function. -2006-04-14 14:38 strk +2006-04-14 14:38 Sandro Santilli - * ChangeLog, source/headers/geos/geom/BinaryOp.h: new - geos::Geom::BinaryOp template function implementing various - heuristics aimed at making binary geometry ops work around - robustness issues. + * [r1463] new geos::Geom::BinaryOp template function implementing + various heuristics aimed at making binary geometry ops work + around robustness issues. -2006-04-14 14:35 strk +2006-04-14 14:35 Sandro Santilli - * ChangeLog, source/headers/geos/operation/overlay/OverlayOp.h: - Added overlayOp() adapter for use in templates expecting binary - ops + * [r1462] Added overlayOp() adapter for use in templates expecting + binary ops -2006-04-14 09:02 strk +2006-04-14 09:02 Sandro Santilli - * ChangeLog, source/algorithm/HCoordinate.cpp, - source/headers/geos/algorithm/HCoordinate.h: Hadded output - operator and debugging prints for HCoordinate. + * [r1461] Hadded output operator and debugging prints for + HCoordinate. -2006-04-13 23:57 strk +2006-04-13 23:57 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Disables reduced - precision overlayOp (is broken) + * [r1460] Disables reduced precision overlayOp (is broken) -2006-04-13 23:42 strk +2006-04-13 23:42 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Plugged CommonBitsOp - attempts in overlay op, before brute force precision + * [r1459] Plugged CommonBitsOp attempts in overlay op, before brute + force precision reduction (this is likely going to change) -2006-04-13 23:28 strk +2006-04-13 23:28 Sandro Santilli - * source/precision/CommonBitsOp.cpp: "always build before commit" - (forgot a closing paren) + * [r1458] "always build before commit" (forgot a closing paren) -2006-04-13 23:23 strk +2006-04-13 23:23 Sandro Santilli - * ChangeLog, source/headers/geos/precision/CommonBitsOp.h, - source/precision/CommonBitsOp.cpp: fixed bug in binary ops - failing to consistently reduce operands. + * [r1457] fixed bug in binary ops failing to consistently reduce + operands. -2006-04-13 21:53 strk +2006-04-13 21:53 Sandro Santilli - * capi/geostest.c: fixed bug introduced by previous commit + * [r1456] fixed bug introduced by previous commit -2006-04-13 21:52 strk +2006-04-13 21:52 Sandro Santilli - * source/headers/geos/simplify/TaggedLineString.h, - source/headers/geos/simplify/TaggedLineStringSimplifier.h, - source/simplify/TaggedLineString.cpp, - source/simplify/TaggedLineStringSimplifier.cpp, - source/simplify/TopologyPreservingSimplifier.cpp: Many debugging - lines and assertions added. Fixed bug in TaggedLineString class. + * [r1455] Many debugging lines and assertions added. Fixed bug in + TaggedLineString class. -2006-04-13 17:09 strk +2006-04-13 17:09 Sandro Santilli - * ChangeLog, capi/geos_c.cpp: Use default GeometryFactory instance - (finishGEOS() is a no-op now) + * [r1454] Use default GeometryFactory instance (finishGEOS() is a + no-op now) -2006-04-13 16:48 strk +2006-04-13 16:48 Sandro Santilli - * ChangeLog, capi/geos_c.cpp, capi/geos_c.h.in, capi/geostest.c: - Added GEOSSimplify and GEOSTopologyPreserveSimplify interfaces. - Removed compiler warnings in geostest + * [r1453] Added GEOSSimplify and GEOSTopologyPreserveSimplify + interfaces. Removed compiler warnings in geostest -2006-04-13 16:44 strk +2006-04-13 16:44 Sandro Santilli - * source/simplify/DouglasPeuckerSimplifier.cpp: Fixed a bug in - DPTransformer handling of MultiPolygons + * [r1452] Fixed a bug in DPTransformer handling of MultiPolygons -2006-04-13 16:04 strk +2006-04-13 16:04 Sandro Santilli - * source/headers/geos/simplify/TaggedLineString.h, - source/headers/geos/simplify/TopologyPreservingSimplifier.h, - source/simplify/Makefile.am, - source/simplify/TopologyPreservingSimplifier.cpp: Made - TopologyPreservingSimplifier implementation successfully build + * [r1451] Made TopologyPreservingSimplifier implementation + successfully build -2006-04-13 14:51 strk +2006-04-13 14:51 Sandro Santilli - * ChangeLog, tests/unit/io/WKBReaderTest.cpp: Forced NDR output (to - not rely on architecture). Removed CRs endings. + * [r1450] Forced NDR output (to not rely on architecture). Removed + CRs endings. -2006-04-13 14:25 strk +2006-04-13 14:25 Sandro Santilli - * ChangeLog, source/geom/GeometryComponentFilter.cpp, - source/headers/geos/geom/GeometryComponentFilter.h, - source/headers/geos/geom/util/GeometryTransformer.h, - source/headers/geos/simplify/TaggedLinesSimplifier.h, - source/headers/geos/simplify/TopologyPreservingSimplifier.h, - source/simplify/Makefile.am, - source/simplify/TaggedLinesSimplifier.cpp, - source/simplify/TopologyPreservingSimplifier.cpp: - TopologyPreservingSimplifier initial port + * [r1449] TopologyPreservingSimplifier initial port -2006-04-13 10:39 strk +2006-04-13 10:39 Sandro Santilli - * ChangeLog, - source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h, - source/headers/geos/simplify/DouglasPeuckerSimplifier.h, - source/headers/geos/simplify/Makefile.am, - source/headers/geos/simplify/TaggedLineStringSimplifier.h, - source/headers/geos/simplify/TaggedLinesSimplifier.h, - source/headers/geos/simplify/TopologyPreservingSimplifier.h, - source/simplify/Makefile.am, - source/simplify/TaggedLinesSimplifier.cpp, - source/simplify/TopologyPreservingSimplifier.cpp: Initial - implementation of TaggedLinesSimplifier class + * [r1448] Initial implementation of TaggedLinesSimplifier class -2006-04-13 09:28 mloskot +2006-04-13 09:28 Mateusz Loskot - * source/headers/geos/simplify/LineSegmentIndex.h, - source/simplify/LineSegmentIndex.cpp: Removed definition of copy - ctor and assignment operator for LineSegmentString class. + * [r1447] Removed definition of copy ctor and assignment operator + for LineSegmentString class. -2006-04-13 09:21 mloskot +2006-04-13 09:21 Mateusz Loskot - * source/headers/geos/simplify/TaggedLineString.h, - source/simplify/TaggedLineString.cpp: Removed definition of copy - ctor and assignment operator for TaggedLineString class. + * [r1446] Removed definition of copy ctor and assignment operator + for TaggedLineString class. According to following rule: Declaring, but not defining, private copy operations has the effect of "turning off" copying for the class. -2006-04-12 17:24 strk +2006-04-12 17:24 Sandro Santilli - * ChangeLog: Added note about reduction of installed headers in + * [r1445] Added note about reduction of installed headers in simplify namespace -2006-04-12 17:19 strk +2006-04-12 17:19 Sandro Santilli - * ChangeLog, source/headers/geos/geom/LineSegment.h, - source/headers/geos/simplify/Makefile.am, - source/headers/geos/simplify/TaggedLineSegment.h, - source/headers/geos/simplify/TaggedLineString.h, - source/headers/geos/simplify/TaggedLineStringSimplifier.h, - source/simplify/Makefile.am, - source/simplify/TaggedLineSegment.cpp, - source/simplify/TaggedLineStringSimplifier.cpp: Ported - TaggedLineStringSimplifier class, made LineSegment class + * [r1444] Ported TaggedLineStringSimplifier class, made LineSegment + class polymorphic to fix derivation of TaggedLineSegment -2006-04-12 15:20 strk +2006-04-12 15:20 Sandro Santilli + + * [r1443] LineSegmentIndex class - * ChangeLog, source/headers/geos/simplify/LineSegmentIndex.h, - source/headers/geos/simplify/Makefile.am, - source/headers/geos/simplify/TaggedLineString.h, - source/simplify/LineSegmentIndex.cpp, - source/simplify/Makefile.am, - source/simplify/TaggedLineString.cpp: LineSegmentIndex class - -2006-04-12 14:22 strk - - * ChangeLog, source/headers/geos/simplify/Makefile.am, - source/headers/geos/simplify/TaggedLineSegment.h, - source/headers/geos/simplify/TaggedLineString.h, - source/simplify/Makefile.am, - source/simplify/TaggedLineSegment.cpp, - source/simplify/TaggedLineString.cpp: Initial implementation of - TaggedLineSegment and TaggedLineString classes +2006-04-12 14:22 Sandro Santilli -2006-04-12 12:20 strk + * [r1442] Initial implementation of TaggedLineSegment and + TaggedLineString classes - * source/operation/overlay/OverlayOp.cpp: Added support for use of - CommonBitsOp in reduced precision attempts +2006-04-12 12:20 Sandro Santilli + + * [r1441] Added support for use of CommonBitsOp in reduced + precision attempts (compile-time option) -2006-04-12 11:57 strk +2006-04-12 11:57 Sandro Santilli - * source/algorithm/LineIntersector.cpp: Fixed debugging line + * [r1440] Fixed debugging line -2006-04-12 11:39 strk +2006-04-12 11:39 Sandro Santilli - * source/headers/geos/geom/GeometryFactory.h: Removed Geometry.h - and CoordinateSequence.h includes. + * [r1439] Removed Geometry.h and CoordinateSequence.h includes. The former created a circular dependency. -2006-04-12 11:17 strk +2006-04-12 11:17 Sandro Santilli - * ChangeLog, source/io/WKBReader.cpp: Fixed exceptions constructors - (were using operator+ with strings and const char*) + * [r1438] Fixed exceptions constructors (were using operator+ with + strings and const char*) -2006-04-12 10:57 strk +2006-04-12 10:57 Sandro Santilli - * ChangeLog, source/headers/geos/io/WKBReader.h, - source/io/WKBReader.cpp: Added WKBReader default ctor using - default GeometryFactory instance + * [r1437] Added WKBReader default ctor using default + GeometryFactory instance -2006-04-11 16:04 strk +2006-04-11 16:04 Sandro Santilli - * ChangeLog, source/geom/util/GeometryTransformer.cpp, - source/headers/geos/simplify/DouglasPeuckerSimplifier.h, - source/headers/geos/simplify/Makefile.am, - source/simplify/DouglasPeuckerSimplifier.cpp, - source/simplify/Makefile.am, tests/unit/Makefile.am, - tests/unit/simplify, - tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp: - geos::simplify::DouglasPeukerSimplifier class + unit test + * [r1436] geos::simplify::DouglasPeukerSimplifier class + unit test -2006-04-11 12:56 strk +2006-04-11 12:56 Sandro Santilli - * source/headers/geos/geom/util/GeometryTransformer.h: used typedef - for auto_ptr + * [r1435] used typedef for auto_ptr -2006-04-11 12:21 strk +2006-04-11 12:21 Sandro Santilli - * ChangeLog, source/geom/util/GeometryTransformer.cpp, - source/geom/util/Makefile.am, - source/headers/geos/geom/util/GeometryTransformer.h, - source/headers/geos/geom/util/Makefile.am: GeometryTransformer - class ported + * [r1434] GeometryTransformer class ported -2006-04-11 11:55 strk +2006-04-11 11:55 Sandro Santilli - * source/headers/geos/geom/CoordinateSequence.h: Added - CoordinateSequence::AutoPtr typedef + * [r1433] Added CoordinateSequence::AutoPtr typedef -2006-04-11 11:16 strk +2006-04-11 11:16 Sandro Santilli - * ChangeLog, source/geom/GeometryFactory.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/headers/geos/geom/GeometryFactory.h, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/LinearRing.h: Added LineString and - LinearRing constructors by auto_ptr + * [r1432] Added LineString and LinearRing constructors by auto_ptr -2006-04-11 09:53 strk +2006-04-11 09:53 Sandro Santilli - * source/headers/geos/geom/GeometryList.h: Added missing duplicated - include sentinel + * [r1431] Added missing duplicated include sentinel -2006-04-11 09:41 strk +2006-04-11 09:41 Sandro Santilli - * source/geom/GeometryList.cpp, source/geom/Makefile.am, - source/headers/geos/geom/GeometryList.h, - source/headers/geos/geom/Makefile.am: Initial implementation of a - GeometryList class, to be used to manage + * [r1430] Initial implementation of a GeometryList class, to be + used to manage lists of Geometry pointers. -2006-04-11 09:31 strk +2006-04-11 09:31 Sandro Santilli - * source/headers/geos/geom/Geometry.h: Added Geometry::AutoPtr - typedef + * [r1429] Added Geometry::AutoPtr typedef -2006-04-11 09:29 strk +2006-04-11 09:29 Sandro Santilli - * source/geom/Geometry.cpp: Fixed initialization list (removed - compiler warning) + * [r1428] Fixed initialization list (removed compiler warning) -2006-04-10 18:15 strk +2006-04-10 18:15 Sandro Santilli - * ChangeLog, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, source/geom/LineString.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/headers/geos/geom/Envelope.h, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/Point.h, - source/headers/geos/geom/Polygon.h: Changed Geometry::envelope - member to be of type auto_ptr. + * [r1427] Changed Geometry::envelope member to be of type + auto_ptr. Changed computeEnvelopeInternal() signater to return auto_ptr -2006-04-10 17:35 strk +2006-04-10 17:35 Sandro Santilli - * ChangeLog, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/Point.cpp, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/LinearRing.h, - source/headers/geos/geom/Point.h, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/PointTest.cpp: Changed LineString::points and - Point::coordinates to be wrapped + * [r1426] Changed LineString::points and Point::coordinates to be + wrapped in an auto_ptr<>. This should close bugs #86 and #89 -2006-04-10 15:11 strk +2006-04-10 15:11 Sandro Santilli - * ChangeLog: First manual edit (will likely update later tonight... + * [r1425] First manual edit (will likely update later tonight... with changes grouped by date) -2006-04-10 15:05 strk +2006-04-10 15:05 Sandro Santilli - * tests/xmltester/TestInteriorPoint.xml: Re-synced with JTS version - (so this actually *was* a bug :) + * [r1424] Re-synced with JTS version (so this actually *was* a bug + :) -2006-04-10 15:05 strk +2006-04-10 15:05 Sandro Santilli - * source/geom/Geometry.cpp: Fixed a bug introduced by previous - commit in getCentroid() + * [r1423] Fixed a bug introduced by previous commit in + getCentroid() -2006-04-10 14:18 strk +2006-04-10 14:18 Sandro Santilli - * source/geom/Geometry.cpp: Fixed getCentroid(Coordinate&) to round - using PrecisionModel + * [r1422] Fixed getCentroid(Coordinate&) to round using + PrecisionModel all unit tests succeed. -2006-04-10 13:40 strk +2006-04-10 13:40 Sandro Santilli - * source/headers/geos/io/WKTReader.h, - source/headers/geos/io/WKTReader.inl: Added default ctor for - WKTReader (using GeometryFactory's default instance) + * [r1421] Added default ctor for WKTReader (using GeometryFactory's + default instance) -2006-04-10 13:13 strk +2006-04-10 13:13 Sandro Santilli - * tools/geos-config.in: Removed INLINE flags from geos-config - --libs + * [r1420] Removed INLINE flags from geos-config --libs -2006-04-10 13:09 strk +2006-04-10 13:09 Sandro Santilli - * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/headers/geos/geom/GeometryFactory.h, source/io/Unload.cpp: - Added GeometryFactory::defaultInstance() + * [r1419] Added GeometryFactory::defaultInstance() Made Geometry::INTERNAL_GEOMETRY_FACTORY an alias for it removed last deletion from Unload::Release class -2006-04-10 12:05 strk +2006-04-10 12:05 Sandro Santilli - * source/Makefile.am, source/geom/LineSegment.cpp, - source/headers/geos/geom/LineSegment.inl, - source/headers/geos/io/WKTReader.h, - source/headers/geos/io/WKTReader.inl, - source/headers/geos/noding/MCIndexNoder.inl, - source/headers/geos/noding/SegmentString.inl, - source/headers/geos/noding/snapround/HotPixel.inl, - source/headers/geos/noding/snapround/MCIndexSnapRounder.inl, - source/inlines.cpp, source/io/ByteOrderDataInStream.cpp, - source/io/WKTReader.cpp, source/operation/overlay/OverlayOp.cpp: - Added inline-replicator implementation files to make sure + * [r1418] Added inline-replicator implementation files to make sure functions in .inl files are still available out-of-line. A side effect is this should fix MingW build. -2006-04-10 11:34 strk +2006-04-10 11:34 Sandro Santilli - * tests/unit/algorithm/PointLocatorTest.cpp: Uncommented required - Geometry.h include (for use in auto_ptr) + * [r1417] Uncommented required Geometry.h include (for use in + auto_ptr) -2006-04-10 09:21 mloskot +2006-04-10 09:21 Mateusz Loskot - * source/headers/geos/util/UniqueCoordinateArrayFilter.h, - tests/unit/Makefile.am, - tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/MultiPointTest.cpp, tests/unit/util, - tests/unit/util/UniqueCoordinateArrayFilterTest.cpp: Added new - test for UniqueCoordinateArrayFilter class. Small fixes related - to signed/unsigned comparison. + * [r1416] Added new test for UniqueCoordinateArrayFilter class. + Small fixes related to signed/unsigned comparison. -2006-04-09 11:07 mloskot +2006-04-09 11:07 Mateusz Loskot - * doc/example.cpp: Small fixes in doc/example.cpp. + * [r1413] Small fixes in doc/example.cpp. -2006-04-09 04:56 mloskot +2006-04-09 04:56 Mateusz Loskot - * tests/xmltester/markup/MarkupSTL.cpp: Removed redundant - semicolons from xmltester sources. + * [r1412] Removed redundant semicolons from xmltester sources. -2006-04-09 04:26 mloskot +2006-04-09 04:26 Mateusz Loskot - * tests/xmltester/markup/MarkupSTL.cpp: Removed redundant semicolon - reported by g++ -pedantic. + * [r1411] Removed redundant semicolon reported by g++ -pedantic. -2006-04-09 04:09 mloskot +2006-04-09 04:09 Mateusz Loskot - * source/operation/valid/SweeplineNestedRingTester.cpp: Removed - redundant semicolon reported by g++ -pedantic. + * [r1410] Removed redundant semicolon reported by g++ -pedantic. -2006-04-09 01:48 mloskot +2006-04-09 01:48 Mateusz Loskot - * tests/unit/Makefile.am, - tests/unit/geom/IntersectionMatrixTest.cpp: Added Unit Test for - IntersectionMatrix class. + * [r1409] Added Unit Test for IntersectionMatrix class. -2006-04-09 01:46 mloskot +2006-04-09 01:46 Mateusz Loskot - * source/headers/geos/geom/IntersectionMatrix.h: [SORRY] Added - comments for doxygen based on JTS docs. Added row/col dimension - consts. Added asserts in functions to check if given row/col is - in range. + * [r1408] [SORRY] Added comments for doxygen based on JTS docs. + Added row/col dimension consts. Added asserts in functions to + check if given row/col is in range. -2006-04-09 01:41 mloskot +2006-04-09 01:41 Mateusz Loskot - * source/geom/IntersectionMatrix.cpp: Added comments for doxygen - based on JTS docs. Added row/col dimension consts. Added asserts - in functions to check if given row/col is in range. + * [r1407] Added comments for doxygen based on JTS docs. Added + row/col dimension consts. Added asserts in functions to check if + given row/col is in range. -2006-04-08 15:57 mloskot +2006-04-08 15:57 Mateusz Loskot - * tests/tut/tut.h, tests/tut/tut_reporter.h, - tests/tut/tut_restartable.h: Added copyright notice to TUT files. - Small cleaning. + * [r1406] Added copyright notice to TUT files. Small cleaning. -2006-04-08 13:05 strk +2006-04-08 13:05 Sandro Santilli - * source/geomgraph/EdgeEnd.cpp: Added assertion + * [r1405] Added assertion -2006-04-08 13:00 strk +2006-04-08 13:00 Sandro Santilli - * source/geomgraph/NodeMap.cpp: assertion checking, mergeLabel() - call fix (bug#91) + * [r1404] assertion checking, mergeLabel() call fix (bug#91) -2006-04-07 16:52 strk +2006-04-07 16:52 Sandro Santilli - * source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geomgraph/PlanarGraph.h: Port info, doxygen - comments, assertion checking + * [r1403] Port info, doxygen comments, assertion checking -2006-04-07 16:01 strk +2006-04-07 16:01 Sandro Santilli - * source/geomgraph/Node.cpp, source/headers/geos/geomgraph/Node.h: - Port info, doxygen comments, testInvariant(), many assertionss, - handling of + * [r1402] Port info, doxygen comments, testInvariant(), many + assertionss, handling of the NULL EdgeEndStar member -2006-04-07 13:26 strk +2006-04-07 13:26 Sandro Santilli - * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Use - of auto_ptr<> to prevent confusing leaks in tester + * [r1401] Use of auto_ptr<> to prevent confusing leaks in tester -2006-04-07 13:14 mloskot +2006-04-07 13:14 Mateusz Loskot - * tests/tut/tut_reporter.h: Fixed annoying warnings from TUT. + * [r1400] Fixed annoying warnings from TUT. -2006-04-07 13:01 mloskot +2006-04-07 13:01 Mateusz Loskot - * tests/unit/geos_unit.cpp: Fixed line-ends to LF. + * [r1399] Fixed line-ends to LF. -2006-04-07 12:55 mloskot +2006-04-07 12:55 Mateusz Loskot - * tests/unit/geom/PolygonTest.cpp: Uncommented test nr 38 in - PolygonTest.cpp. + * [r1398] Uncommented test nr 38 in PolygonTest.cpp. -2006-04-07 12:37 mloskot +2006-04-07 12:37 Mateusz Loskot - * source/geom/PrecisionModel.cpp, source/headers/geos/util/math.h, - source/util/math.cpp, tests/tut/tut_reporter.h, - tests/unit/geom/MultiLineStringTest.cpp, - tests/unit/geom/MultiPolygonTest.cpp, - tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, - tests/unit/geos_unit.cpp: Added java_math_round() function for - Asymmetric Arithmetic Rounding. Small fixes in Unit Tests. + * [r1397] Added java_math_round() function for Asymmetric + Arithmetic Rounding. Small fixes in Unit Tests. -2006-04-07 10:42 mloskot +2006-04-07 10:42 Mateusz Loskot - * tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/PointTest.cpp: Added test nr 29 to PointTest (JTS - conformance). Removed inform() calls from GeometryFactoryTest. + * [r1396] Added test nr 29 to PointTest (JTS conformance). Removed + inform() calls from GeometryFactoryTest. -2006-04-07 09:54 strk +2006-04-07 09:54 Sandro Santilli - * source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/PointLocator.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, source/geom/MultiPolygon.cpp, - source/geom/util/GeometryEditor.cpp, - source/geomgraph/GeometryGraph.cpp, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryCollection.h, - source/io/WKTWriter.cpp, source/operation/valid/IsValidOp.cpp, - source/operation/valid/RepeatedPointTester.cpp: - Geometry::getNumGeometries() changed to return 'unsigned int' + * [r1395] Geometry::getNumGeometries() changed to return 'unsigned + int' rather then 'int' -2006-04-07 09:12 strk +2006-04-07 09:12 Sandro Santilli - * source/algorithm/LineIntersector.cpp: kept isInSegmentEnvelopes() - check even when not debugging + * [r1394] kept isInSegmentEnvelopes() check even when not debugging -2006-04-07 08:31 strk +2006-04-07 08:31 Sandro Santilli - * source/precision/EnhancedPrecisionOp.cpp: Debugging lines + * [r1393] Debugging lines -2006-04-07 08:30 strk +2006-04-07 08:30 Sandro Santilli - * source/headers/geos/precision/CommonBitsRemover.h: made - addCommonBits/removeCommonBits interface consistent, doxygen - comments + * [r1392] made addCommonBits/removeCommonBits interface consistent, + doxygen comments -2006-04-07 08:28 strk +2006-04-07 08:28 Sandro Santilli - * source/precision/CommonBitsRemover.cpp: debugging lines, - assertions + * [r1391] debugging lines, assertions -2006-04-07 08:27 strk +2006-04-07 08:27 Sandro Santilli - * source/precision/CommonBitsOp.cpp: debugging blocks + * [r1390] debugging blocks -2006-04-07 07:21 mloskot +2006-04-07 07:21 Mateusz Loskot - * tests/unit/Makefile.am, tests/unit/geom/CoordinateTest.cpp: Add - new-line at the EOF some files. + * [r1389] Add new-line at the EOF some files. -2006-04-07 05:55 mloskot +2006-04-07 05:55 Mateusz Loskot - * ., .cvsignore: Added new objects to .cvsignore. + * [r1388] Added new objects to .cvsignore. -2006-04-07 05:44 mloskot +2006-04-07 05:44 Mateusz Loskot - * source/headers/geos/geom/Dimension.h, - tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/CoordinateTest.cpp, - tests/unit/geom/DimensionTest.cpp, - tests/unit/geom/EnvelopeTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/LineSegmentTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/LocationTest.cpp, - tests/unit/geom/MultiLineStringTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/MultiPolygonTest.cpp, - tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/TriangleTest.cpp: Added name for anonymous enum - in Dimension class (bug). Added missing new-line at the end of - source files. Removed CR from line ends. + * [r1387] Added name for anonymous enum in Dimension class (bug). + Added missing new-line at the end of source files. Removed CR + from line ends. -2006-04-07 00:05 mloskot +2006-04-07 00:05 Mateusz Loskot - * tests/unit/geom/Geometry, - tests/unit/geom/Geometry/isRectangleTest.cpp: Adding missing - isRectangleTest.cpp + * [r1386] Adding missing isRectangleTest.cpp -2006-04-06 23:50 mloskot +2006-04-06 23:50 Mateusz Loskot - * tests/unit/Makefile.am, tests/unit/geom, - tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp, - tests/unit/geom/CoordinateArraySequenceTest.cpp, - tests/unit/geom/CoordinateTest.cpp, - tests/unit/geom/DimensionTest.cpp, - tests/unit/geom/EnvelopeTest.cpp, - tests/unit/geom/GeometryFactoryTest.cpp, - tests/unit/geom/LineSegmentTest.cpp, - tests/unit/geom/LineStringTest.cpp, - tests/unit/geom/LinearRingTest.cpp, - tests/unit/geom/LocationTest.cpp, - tests/unit/geom/MultiLineStringTest.cpp, - tests/unit/geom/MultiPointTest.cpp, - tests/unit/geom/MultiPolygonTest.cpp, - tests/unit/geom/PointTest.cpp, tests/unit/geom/PolygonTest.cpp, - tests/unit/geom/TriangleTest.cpp, tests/unit/io, - tests/unit/io/WKBReaderTest.cpp: Adding new Unit Tests. + * [r1385] Adding new Unit Tests. -2006-04-06 23:35 strk +2006-04-06 23:35 Sandro Santilli - * AUTHORS: Added Mateusz Loskot + * [r1384] Added Mateusz Loskot -2006-04-06 23:31 mloskot +2006-04-06 23:31 Mateusz Loskot - * tests/unit/algorithm, tests/unit/algorithm/PointLocatorTest.cpp: - [UT Files Renaming] Add PointLocatorTest.cpp + * [r1383] [UT Files Renaming] Add PointLocatorTest.cpp -2006-04-06 23:28 mloskot +2006-04-06 23:28 Mateusz Loskot - * tests/unit/io: [UT Files Renaming] Remove 'io' tests. + * [r1382] [UT Files Renaming] Remove 'io' tests. -2006-04-06 23:26 mloskot +2006-04-06 23:26 Mateusz Loskot - * tests/unit/geom: [UT Files Renaming] Remove 'geom' tests. + * [r1381] [UT Files Renaming] Remove 'geom' tests. -2006-04-06 23:25 mloskot +2006-04-06 23:25 Mateusz Loskot - * tests/unit/algorithm: [UT Files Renaming] Remove file - PointLocator.cpp + * [r1380] [UT Files Renaming] Remove file PointLocator.cpp -2006-04-06 23:20 mloskot +2006-04-06 23:20 Mateusz Loskot - * tests/unit/geos_unit.cpp: New version of Unit Test runner. Now, - it's more GNU style compatible + * [r1379] New version of Unit Test runner. Now, it's more GNU style + compatible -2006-04-06 22:30 mloskot +2006-04-06 22:30 Mateusz Loskot - * tests/tut/tut.h, tests/tut/tut_reporter.h: Add inform() target in - tut.h and new callbacks in tut_reporter.h + * [r1378] Add inform() target in tut.h and new callbacks in + tut_reporter.h -2006-04-06 21:31 strk +2006-04-06 21:31 Sandro Santilli - * source/algorithm/LineIntersector.cpp, - source/headers/geos/algorithm/LineIntersector.h: Const - correctness for debugging function + * [r1377] Const correctness for debugging function -2006-04-06 21:30 strk +2006-04-06 21:30 Sandro Santilli - * source/headers/geos/util/math.h: Added missing rint_vc() forward - declaration + * [r1376] Added missing rint_vc() forward declaration -2006-04-06 17:33 strk +2006-04-06 17:33 Sandro Santilli - * tests/unit/Makefile.am, tests/unit/index, - tests/unit/index/quadtree, - tests/unit/index/quadtree/DoubleBitsTest.cpp: Added unit test for - DoubleBits + * [r1375] Added unit test for DoubleBits -2006-04-06 14:36 strk +2006-04-06 14:36 Sandro Santilli - * source/headers/geos/precision/CommonBitsOp.h, - source/headers/geos/precision/CommonBitsRemover.h, - source/headers/geos/precision/EnhancedPrecisionOp.h, - source/precision/CommonBitsOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp: Cleanup in - geos::precision namespace (leaks plugged, auto_ptr use, ...) + * [r1374] Cleanup in geos::precision namespace (leaks plugged, + auto_ptr use, ...) -2006-04-06 12:58 strk +2006-04-06 12:58 Sandro Santilli - * source/geomgraph/DirectedEdge.cpp: Added printing of EdgeRing if - available + * [r1373] Added printing of EdgeRing if available -2006-04-06 12:48 strk +2006-04-06 12:48 Sandro Santilli - * source/headers/geos/operation/valid/ConnectedInteriorTester.h: - Added private vector to keep track of allocated MaximalEdgeRings - objects + * [r1372] Added private vector to keep track of allocated + MaximalEdgeRings objects -2006-04-06 12:47 strk +2006-04-06 12:47 Sandro Santilli - * source/geomgraph/EdgeEnd.cpp: Fixed output function + * [r1371] Fixed output function -2006-04-06 12:45 strk +2006-04-06 12:45 Sandro Santilli - * source/operation/valid/ConnectedInteriorTester.cpp: Delayed - deletion of newly allocated MaximalEdgeRings. + * [r1370] Delayed deletion of newly allocated MaximalEdgeRings. Existing 'valid' operation tests don't should instability with this patch. -2006-04-06 12:36 strk +2006-04-06 12:36 Sandro Santilli + + * [r1369] removed spurious lines from previous commi + +2006-04-06 12:34 Sandro Santilli + + * [r1368] Port info, more debugging lines, doxygen comments + +2006-04-06 12:33 Sandro Santilli + + * [r1367] More debugging lines + +2006-04-06 12:29 Sandro Santilli + + * [r1366] Fixed bogus static PrecisionModel variable in + ::readCoordinate(). + +2006-04-06 09:41 Sandro Santilli + + * [r1365] Added operator<<, added pts!=NULL assertion in + testInvariant() function + +2006-04-06 09:39 Sandro Santilli + + * [r1364] Added operator<< + +2006-04-06 09:01 Sandro Santilli + + * [r1363] Doxygen comments, port info, operator<<, assertion + checking + +2006-04-06 07:52 Sandro Santilli + + * [r1362] Fixed bug in ::print() function + +2006-04-05 18:28 Sandro Santilli + + * [r1361] Moved testInvariant() methods from private to public, + added + some comments about them. + +2006-04-05 15:59 Sandro Santilli + + * [r1360] Removed dead code + +2006-04-05 14:33 Sandro Santilli + + * [r1359] Removed annoying warnings from external source + +2006-04-05 14:04 Sandro Santilli + + * [r1358] Fixed copy ctor to support "Null" Envelope copies. + Drop init(Envelope&) method. + Port info and various cleanups. + +2006-04-05 10:25 Sandro Santilli + + * [r1357] Fixed LineString constructor to ensure deletion of + CoordinateSequence + argument on exception throw + +2006-04-05 09:34 Sandro Santilli + + * [r1356] GEOSException derived from std::exception again, + hopefully the correct way now + +2006-04-05 09:20 Sandro Santilli + + * [r1355] Added port informations and many assertion checking. + Fixed bug in getRightmostSide() method ( a "testing-only" corner + case ) + +2006-04-04 16:07 Sandro Santilli + + * [r1353] More assertion checking, less overhead when built with + NDEBUG defined + +2006-04-04 13:35 Sandro Santilli + + * [r1352] Port info, assertion checking, indentation + +2006-04-04 12:39 Sandro Santilli + + * [r1351] Changed NotRepresentableCoordinate exception handler to + throw + a TopologyException. This allows further handling. + +2006-04-04 11:37 Sandro Santilli + + * [r1350] Port information + initialization lists in ctors + +2006-04-04 11:28 Sandro Santilli + + * [r1349] NotRepresentable condition detected using finite() from + + rather then using FINITE() macro. Made ::intersection() body + more readable. + +2006-04-04 09:53 Sandro Santilli + + * [r1348] Fixed applyCoordinateFilter() templated function body + +2006-04-04 08:16 Sandro Santilli + + * [r1345] Changed GEOSException hierarchy to be derived from + std::runtime_exception. + Removed the GEOSException::toString redundant method (use + ::what() instead) + +2006-04-04 01:54 Howard Butler + + * [r1344] Add in changes/missing from previous rearranging. + +2006-04-04 01:29 Howard Butler + + * [r1343] GEOS_JTS_PORT is in version.h not platform.h + +2006-04-04 01:28 Howard Butler + + * [r1342] remove objects that no longer exist + default to MSVC_VER=1310 + +2006-04-03 17:05 Sandro Santilli + + * [r1341] Assertion checking, port info, cleanups + +2006-04-03 15:54 Sandro Santilli + + * [r1340] - getArgGeometry() parameter type changed from 'int' to + 'unsigned int' + - Added port informations + - minor assertions checking + - minor cleanups + +2006-04-03 14:07 Sandro Santilli + + * [r1339] Commented out obsoleted toInternal() method + +2006-04-03 13:58 Sandro Santilli + + * [r1337] Applied patch by Charlie Savage: + - Fixes up the SWIG bindings to use the new GEOS namespaces + - Fixes a bug in the Python m4 macro + - Adds the -modern flag for SWIG when compiling a Python + extension + +2006-04-03 13:56 Sandro Santilli + + * [r1336] Made externally-owned PrecisionModel const + +2006-04-03 10:56 Sandro Santilli + + * [r1334] Removed implementation files build spec for fully-inlined + classes + +2006-04-03 10:44 Sandro Santilli + + * [r1333] Added missing headers + +2006-04-03 10:16 Sandro Santilli + + * [r1332] DouglasPeuckerLineSimplifier class port + +2006-04-03 08:43 Sandro Santilli + + * [r1331] Added port info, minor cleanups + +2006-04-03 08:29 Sandro Santilli + + * [r1330] Added port info, cleaned up log message, minor assertion + checking. + +2006-03-31 17:51 Sandro Santilli + + * [r1329] A few assertion checking, comments cleanup, use of + initialization lists + in constructors, handled NULL parameters. + +2006-03-31 16:55 Sandro Santilli + + * [r1328] Added many assertions checking in LineString + implementation. + Changed ::getCoordinate() to return NULL on empty geom. + Changed ::get{Start,End}Point() to return NULL on empty geom. + +2006-03-31 16:53 Sandro Santilli + + * [r1327] Added comment about possible NULL return from + getCoordinate() + +2006-03-31 11:03 Sandro Santilli + + * [r1325] Fixed NULL-GeometryFactory constructor to use + INTERNAL_GEOMETRY_FACTORY + (should fix bug #81) + +2006-03-30 09:26 Sandro Santilli + + * [r1324] minor cleanup + +2006-03-29 15:48 Sandro Santilli + + * [r1323] Added missing 'const' in catch std::exception statements + +2006-03-29 15:23 Sandro Santilli + + * [r1322] Moved GeometryGraph inlines from .h to .inl file + +2006-03-29 14:34 Sandro Santilli + + * [r1321] Sync'ed testfile with JTS head + +2006-03-29 14:31 Sandro Santilli + + * [r1320] Added PointLocator unit test + +2006-03-29 13:53 Sandro Santilli + + * [r1319] EdgeRing equipped with Invariant testing function and + lots of exceptional assertions. Removed useless heap allocations, + and pointers usages. + +2006-03-29 11:52 Sandro Santilli + + * [r1318] const correctness, useless heap allocations removal + +2006-03-29 11:48 Sandro Santilli + + * [r1317] Removed useless heap allocations in construction, + enforced const correctness + +2006-03-28 16:49 Sandro Santilli + + * [r1316] Reintroduced rewind of input parameter in printHEX() + [dropped by prev commit] + +2006-03-28 16:33 Sandro Santilli + + * [r1315] Added note about args responsibility in GeometryFactory + constructor + +2006-03-28 16:11 Sandro Santilli + + * [r1314] swapped assert_equals() args to get obtained/expected the + right way. + +2006-03-28 15:27 Sandro Santilli + + * [r1313] Simplified printHEX() implementation + +2006-03-28 15:19 Sandro Santilli + + * [r1312] Added macros for sections skip (useful in debugging) + +2006-03-28 14:45 Sandro Santilli + + * [r1311] Added simple test for WKB reader. + +2006-03-28 14:02 Sandro Santilli + + * [r1310] added missing header for non-inlined builds + +2006-03-28 14:01 Sandro Santilli + + * [r1309] forgot to add in previous commit + +2006-03-28 11:26 Sandro Santilli + + * [r1308] ByteOrderDataInStream inlines moved to .inl file, updated + implementation files includes. + +2006-03-28 11:25 Sandro Santilli + + * [r1307] Assertion checking + +2006-03-28 09:14 Sandro Santilli + + * [r1306] Headers inclusion fix. + +2006-03-28 08:57 Sandro Santilli + + * [r1305] Comments cleanup, system headers included after project + headers + +2006-03-28 08:40 Sandro Santilli + + * [r1304] C-API lib version bumped to 1.1.1 (release 2.2.2 will + ship 1.1.0) + +2006-03-27 17:59 Sandro Santilli + + * [r1302] Fixed small leak. - * source/geom/PrecisionModel.cpp: removed spurious lines from - previous commi +2006-03-27 17:04 Sandro Santilli -2006-04-06 12:34 strk + * [r1301] Cleanups and explicit initializations - * source/geom/PrecisionModel.cpp, - source/headers/geos/geom/PrecisionModel.h, - source/headers/geos/geom/PrecisionModel.inl: Port info, more - debugging lines, doxygen comments +2006-03-27 16:02 Sandro Santilli -2006-04-06 12:33 strk + * [r1300] Added INL file for MinimalEdgeRing, added many debugging + blocks, + fixed memory leak in ConnectedInteriorTester (bug #59) - * source/geom/GeometryFactory.cpp: More debugging lines +2006-03-27 15:57 Sandro Santilli -2006-04-06 12:29 strk + * [r1299] Commented need for platform.h include - * source/io/WKBReader.cpp: Fixed bogus static PrecisionModel - variable in ::readCoordinate(). +2006-03-27 15:56 Sandro Santilli -2006-04-06 09:41 strk + * [r1298] Added missing platform.h include (for ISNAN macro) - * source/geomgraph/EdgeRing.cpp, - source/headers/geos/geomgraph/EdgeRing.h: Added operator<<, added - pts!=NULL assertion in testInvariant() function +2006-03-27 14:20 Sandro Santilli -2006-04-06 09:39 strk + * [r1297] Added paranoid assertion checking and a note in header + about responsibility of return from buildMaximalEdgeRings() - * source/geomgraph/EdgeEnd.cpp, - source/headers/geos/geomgraph/EdgeEnd.h: Added operator<< +2006-03-27 10:37 Sandro Santilli -2006-04-06 09:01 strk + * [r1296] Reduced heap allocations and probability of error by + making LineIntersector + and RelateNodeGraph part of ConsistentAreaTester class . - * source/geomgraph/Label.cpp, - source/geomgraph/TopologyLocation.cpp, - source/headers/geos/geomgraph/Label.h, - source/headers/geos/geomgraph/TopologyLocation.h: Doxygen - comments, port info, operator<<, assertion checking +2006-03-27 10:36 Sandro Santilli -2006-04-06 07:52 strk + * [r1295] added missing space in exception message - * source/geomgraph/DirectedEdge.cpp: Fixed bug in ::print() - function +2006-03-27 10:34 Sandro Santilli -2006-04-05 18:28 strk + * [r1294] moved external includes after internal ones - * source/headers/geos/geomgraph/Edge.h, - source/headers/geos/geomgraph/EdgeRing.h: Moved testInvariant() - methods from private to public, added - some comments about them. +2006-03-27 09:50 Sandro Santilli -2006-04-05 15:59 strk + * [r1293] Added final isValid test from JTS (floating version) - * source/operation/overlay/OverlayOp.cpp: Removed dead code +2006-03-27 09:48 Sandro Santilli -2006-04-05 14:33 strk + * [r1292] Extracted TestValid2.xml from testLeaksBig.xml (target + file is taken from JTS source tree) - * tests/xmltester/markup/MarkupSTL.cpp, - tests/xmltester/markup/MarkupSTL.h: Removed annoying warnings - from external source +2006-03-27 09:45 Sandro Santilli -2006-04-05 14:04 strk + * [r1291] Added TestValid.xml test, taken from JTS source tree, + already present in testLeaksBig (from which tests were removed) - * source/geom/Envelope.cpp, source/headers/geos/geom/Envelope.h, - source/headers/geos/geom/Envelope.inl: Fixed copy ctor to support - "Null" Envelope copies. - Drop init(Envelope&) method. - Port info and various cleanups. +2006-03-27 09:28 Sandro Santilli -2006-04-05 10:25 strk + * [r1290] added namespaces use and headers split - * source/geom/LineString.cpp, - source/headers/geos/geom/LineString.h: Fixed LineString - constructor to ensure deletion of CoordinateSequence - argument on exception throw +2006-03-27 09:05 Sandro Santilli -2006-04-05 09:34 strk + * [r1289] Added note about responsibility of return from + GEOSGeomType() - * source/headers/geos/util/GEOSException.h: GEOSException derived - from std::exception again, hopefully the correct way now +2006-03-27 09:00 Sandro Santilli -2006-04-05 09:20 strk + * [r1288] Bug #79 - Small fix in + CoordinateArraySequence::toString() - * source/headers/geos/operation/buffer/RightmostEdgeFinder.h, - source/operation/buffer/RightmostEdgeFinder.cpp: Added port - informations and many assertion checking. - Fixed bug in getRightmostSide() method ( a "testing-only" corner - case ) +2006-03-24 11:42 Sandro Santilli -2006-04-04 16:07 strk + * [r1287] reverted default of assertion checking - * source/geomgraph/DirectedEdgeStar.cpp: More assertion checking, - less overhead when built with NDEBUG defined +2006-03-24 11:11 Sandro Santilli -2006-04-04 13:35 strk + * [r1286] Inlining enabled by default, assertion checking disabled + by default. + Added --enable-cassert and --disable-inline configure switches. + Had geos-config --cflags output appropriate inline flag if + required (-DGEOS_INLINE) - * source/geomgraph/EdgeEndStar.cpp, - source/headers/geos/geomgraph/EdgeEndStar.h: Port info, assertion - checking, indentation +2006-03-24 11:04 Sandro Santilli -2006-04-04 12:39 strk + * [r1285] Changed assert() with Assert::isTrue in addReverseSubpath - * source/algorithm/LineIntersector.cpp: Changed - NotRepresentableCoordinate exception handler to throw - a TopologyException. This allows further handling. +2006-03-24 10:44 Sandro Santilli -2006-04-04 11:37 strk + * [r1284] Fixed to build with -DNDEBUG - * source/algorithm/HCoordinate.cpp, - source/headers/geos/algorithm/HCoordinate.h: Port information + - initialization lists in ctors +2006-03-24 09:52 Sandro Santilli -2006-04-04 11:28 strk + * [r1283] USE_INLINE => GEOS_INLINE - * source/algorithm/HCoordinate.cpp: NotRepresentable condition - detected using finite() from - rather then using FINITE() macro. Made ::intersection() body - more readable. +2006-03-24 09:26 Sandro Santilli -2006-04-04 09:53 strk + * [r1282] Bug #77 - Missing platform.h - * source/headers/geos/geom/CoordinateSequence.h: Fixed - applyCoordinateFilter() templated function body +2006-03-24 09:25 Sandro Santilli -2006-04-04 08:16 strk + * [r1281] Bugs #77 and #76: missing - * NEWS, doc/example.cpp, - source/algorithm/NotRepresentableException.cpp, - source/examples/CPCLException.cpp, - source/examples/CustomCoordinateSequenceExample.cpp, - source/examples/CustomCoordinateSequenceExample.h, - source/headers/geos/io/ParseException.h, - source/headers/geos/util/GEOSException.h, - source/headers/geos/util/IllegalArgumentException.h, - source/io/ParseException.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/util/GEOSException.cpp: Changed GEOSException hierarchy to - be derived from std::runtime_exception. - Removed the GEOSException::toString redundant method (use - ::what() instead) +2006-03-24 09:23 Sandro Santilli -2006-04-04 01:54 hobu + * [r1280] Bug #78 - Small fixes and cleaning - * source/Makefile.vc: Add in changes/missing from previous - rearranging. +2006-03-23 15:10 Sandro Santilli -2006-04-04 01:29 hobu + * [r1278] Dropped by-pointer TopologyException constructor, various + small cleanups - * capi/geos_c.cpp: GEOS_JTS_PORT is in version.h not platform.h +2006-03-23 13:31 Sandro Santilli -2006-04-04 01:28 hobu + * [r1277] Fixed to allow build with GEOS_DEBUG - * source/Makefile.vc: remove objects that no longer exist - default to MSVC_VER=1310 +2006-03-23 12:12 Sandro Santilli -2006-04-03 17:05 strk + * [r1276] Fixes to allow build with -DUSE_INLINE - * source/geomgraph/DirectedEdge.cpp, source/geomgraph/EdgeEnd.cpp, - source/geomgraph/Label.cpp, - source/headers/geos/geomgraph/EdgeEnd.h: Assertion checking, port - info, cleanups - -2006-04-03 15:54 strk - - * source/headers/geos/operation/GeometryGraphOperation.h, - source/operation/GeometryGraphOperation.cpp: - getArgGeometry() - parameter type changed from 'int' to 'unsigned int' - - Added port informations - - minor assertions checking - - minor cleanups +2006-03-23 10:55 Sandro Santilli -2006-04-03 14:07 strk + * [r1275] Temporarly excluded 'swig' extension from distribution, + to allow for + successufull 'dist' rule and distributed testing. - * source/headers/geos/geom/PrecisionModel.h: Commented out - obsoleted toInternal() method +2006-03-23 10:41 Sandro Santilli -2006-04-03 13:58 strk + * [r1274] Fixed automake files - * macros/ac_pkg_swig.m4, macros/ac_python_devel.m4, swig/geos.i, - swig/python/Makefile.am, swig/python/python.i, swig/ruby/ruby.i, - swig/ruby/test/geos_tests.rb, swig/ruby/test/test_helper.rb: - Applied patch by Charlie Savage: - - Fixes up the SWIG bindings to use the new GEOS namespaces - - Fixes a bug in the Python m4 macro - - Adds the -modern flag for SWIG when compiling a Python - extension +2006-03-23 10:09 Sandro Santilli -2006-04-03 13:56 strk + * [r1273] Fixed missing backslash - * source/headers/geos/precision/SimpleGeometryPrecisionReducer.h, - source/precision/SimpleGeometryPrecisionReducer.cpp: Made - externally-owned PrecisionModel const - -2006-04-03 10:56 strk - - * source/geom/CoordinateSequenceFactory.cpp, - source/geom/Makefile.am, - source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/Makefile.am, - source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp, - source/util/AssertionFailedException.cpp, - source/util/IllegalArgumentException.cpp, - source/util/Makefile.am, - source/util/UnsupportedOperationException.cpp: Removed - implementation files build spec for fully-inlined classes +2006-03-23 09:17 Sandro Santilli -2006-04-03 10:44 strk + * [r1272] precision.h header split, minor optimizations - * source/index/strtree/STRtree.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp: Added missing - headers +2006-03-22 18:12 Sandro Santilli -2006-04-03 10:16 strk + * [r1271] indexChain.h header split. - * configure.in, source/Makefile.am, - source/headers/geos/Makefile.am, source/headers/geos/simplify, - source/headers/geos/simplify/.cvsignore, - source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h, - source/headers/geos/simplify/Makefile.am, source/simplify, - source/simplify/.cvsignore, - source/simplify/DouglasPeuckerLineSimplifier.cpp, - source/simplify/Makefile.am: DouglasPeuckerLineSimplifier class - port - -2006-04-03 08:43 strk - - * source/headers/geos/index/strtree/STRtree.h, - source/index/strtree/STRtree.cpp: Added port info, minor cleanups - -2006-04-03 08:29 strk - - * source/headers/geos/index/quadtree/Quadtree.h, - source/index/quadtree/Quadtree.cpp: Added port info, cleaned up - log message, minor assertion checking. - -2006-03-31 17:51 strk - - * source/geom/GeometryFactory.cpp, - source/headers/geos/geom/GeometryFactory.h: A few assertion - checking, comments cleanup, use of initialization lists - in constructors, handled NULL parameters. +2006-03-22 16:59 Sandro Santilli -2006-03-31 16:55 strk + * [r1270] cleaned up - * NEWS, source/geom/LineString.cpp, - source/headers/geos/geom/LineString.h: Added many assertions - checking in LineString implementation. - Changed ::getCoordinate() to return NULL on empty geom. - Changed ::get{Start,End}Point() to return NULL on empty geom. +2006-03-22 16:58 Sandro Santilli -2006-03-31 16:53 strk + * [r1269] Removed (almost) all inclusions of geom.h. + Removed obsoleted .cpp files. + Fixed a bug in WKTReader not using the provided + CoordinateSequence + implementation, optimized out some memory allocations. - * source/headers/geos/geom/Geometry.h: Added comment about possible - NULL return from getCoordinate() +2006-03-22 16:01 Sandro Santilli -2006-03-31 11:03 strk + * [r1268] indexBintree.h header split, classes renamed to match JTS - * source/geom/Geometry.cpp: Fixed NULL-GeometryFactory constructor - to use INTERNAL_GEOMETRY_FACTORY - (should fix bug #81) +2006-03-22 14:28 Sandro Santilli -2006-03-30 09:26 strk + * [r1267] Filenames renamed to match class names (matching JTS) - * source/headers/geos/io/WKTReader.h: minor cleanup +2006-03-22 12:22 Sandro Santilli -2006-03-29 15:48 strk + * [r1266] indexQuadtree.h split - * capi/geos_c.cpp: Added missing 'const' in catch std::exception - statements +2006-03-22 11:19 Sandro Santilli -2006-03-29 15:23 strk + * [r1265] opPolygonize.h headers split. - * source/geomgraph/DirectedEdge.cpp, - source/geomgraph/GeometryGraph.cpp, - source/headers/geos/geomgraph/GeometryGraph.h, - source/headers/geos/geomgraph/GeometryGraph.inl, - source/headers/geos/geomgraph/Makefile.am: Moved GeometryGraph - inlines from .h to .inl file +2006-03-22 11:18 Sandro Santilli -2006-03-29 14:34 strk + * [r1264] Changed back 'unable to find edge to compute depths' from + assertion to TopologyException - * tests/xmltester/TestValid.xml: Sync'ed testfile with JTS head +2006-03-22 10:13 Sandro Santilli -2006-03-29 14:31 strk + * [r1263] opLinemerge.h split - * tests/unit/Makefile.am, tests/unit/algorithm, - tests/unit/algorithm/PointLocator.cpp, - tests/unit/io/WKBReader.cpp: Added PointLocator unit test +2006-03-21 21:42 Sandro Santilli -2006-03-29 13:53 strk + * [r1262] planargraph.h header split, planargraph:: classes renamed + to match JTS symbols - * source/geomgraph/EdgeRing.cpp, - source/headers/geos/geomgraph/EdgeRing.h, - source/headers/geos/operation/valid/IsValidOp.h, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp: EdgeRing equipped with - Invariant testing function and lots of exceptional assertions. - Removed useless heap allocations, and pointers usages. +2006-03-21 17:55 Sandro Santilli -2006-03-29 11:52 strk + * [r1261] opDistance.h header split - * source/algorithm/MCPointInRing.cpp, - source/headers/geos/algorithm/MCPointInRing.h: const correctness, - useless heap allocations removal +2006-03-21 17:11 Sandro Santilli -2006-03-29 11:48 strk + * [r1260] opPredicate.h header split - * source/headers/geos/operation/valid/QuadtreeNestedRingTester.h, - source/operation/valid/QuadtreeNestedRingTester.cpp: Removed - useless heap allocations in construction, enforced const - correctness +2006-03-21 13:11 Sandro Santilli -2006-03-28 16:49 strk + * [r1259] opRelate.h header split - * source/io/WKBReader.cpp: Reintroduced rewind of input parameter - in printHEX() [dropped by prev commit] +2006-03-21 11:20 Sandro Santilli -2006-03-28 16:33 strk + * [r1258] Changed expected result to the obtained one :) + We're not cheating, it's a 2-vertex linestring for + which an InteriorPoint is requested, both vertexes + are correct answer (equidistant from centroid). - * source/headers/geos/geom/GeometryFactory.h: Added note about args - responsibility in GeometryFactory constructor +2006-03-21 11:12 Sandro Santilli -2006-03-28 16:11 strk + * [r1257] Cleanups: headers inclusion and Log section - * tests/unit/io/WKBReader.cpp: swapped assert_equals() args to get - obtained/expected the right way. +2006-03-21 10:47 Sandro Santilli -2006-03-28 15:27 strk + * [r1256] indexStrtree.h split - * source/io/WKBReader.cpp: Simplified printHEX() implementation +2006-03-21 10:46 Sandro Santilli -2006-03-28 15:19 strk + * [r1255] streamlined header inclusion, put original copyright on + top - * doc/example.cpp: Added macros for sections skip (useful in - debugging) +2006-03-21 10:01 Sandro Santilli -2006-03-28 14:45 strk + * [r1254] indexSweepline.h header split - * tests/unit/Makefile.am, tests/unit/io, - tests/unit/io/WKBReader.cpp: Added simple test for WKB reader. +2006-03-20 18:18 Sandro Santilli -2006-03-28 14:02 strk + * [r1253] io.h header split - * source/io/WKBReader.cpp: added missing header for non-inlined - builds +2006-03-20 17:40 Sandro Santilli -2006-03-28 14:01 strk + * [r1252] included when appropriate - * source/io/ByteOrderDataInStream.cpp: forgot to add in previous - commit +2006-03-20 17:27 Sandro Santilli -2006-03-28 11:26 strk + * [r1251] Bug #72 - Missing header - * source/headers/geos/io/ByteOrderDataInStream.h, - source/headers/geos/io/ByteOrderDataInStream.inl, - source/headers/geos/io/Makefile.am, - source/headers/geos/io/WKBWriter.h, source/io/Makefile.am: - ByteOrderDataInStream inlines moved to .inl file, updated - implementation files includes. +2006-03-20 17:17 Sandro Santilli -2006-03-28 11:25 strk + * [r1250] Fixed geosdir - * source/io/WKBWriter.cpp: Assertion checking +2006-03-20 16:57 Sandro Santilli -2006-03-28 09:14 strk + * [r1249] spatialindex.h and opValid.h headers split - * source/headers/geos/geom/LineSegment.h, - source/headers/geos/geom/LineSegment.inl: Headers inclusion fix. +2006-03-20 16:08 Sandro Santilli -2006-03-28 08:57 strk + * [r1248] redirected find stderr to /dev/null - * source/headers/geos/geom/PrecisionModel.h, - source/headers/geos/geom/PrecisionModel.inl: Comments cleanup, - system headers included after project headers +2006-03-20 13:20 Sandro Santilli -2006-03-28 08:40 strk + * [r1247] Changed assertion to TopologyException for the "orphaned" + hole case + in order to allow for reduced precision ops to catch the case. - * configure.in: C-API lib version bumped to 1.1.1 (release 2.2.2 - will ship 1.1.0) +2006-03-20 12:33 Sandro Santilli -2006-03-27 17:59 strk + * [r1246] Simplified some privat methods to use refs instead of + pointers, added + debugging section for failiures of holes/shells associations - * source/operation/buffer/OffsetCurveBuilder.cpp: Fixed small leak. +2006-03-20 12:32 Sandro Santilli -2006-03-27 17:04 strk + * [r1245] Added note about responsibility of return from + ::toPolygon - * source/headers/geos/operation/buffer/OffsetCurveBuilder.h, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Cleanups and - explicit initializations +2006-03-20 12:03 Sandro Santilli -2006-03-27 16:02 strk + * [r1244] Added operator<< for Geometry, writing HEXWKB - * source/geomgraph/EdgeRing.cpp, - source/headers/geos/geomgraph/EdgeRing.h, - source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/overlay/MaximalEdgeRing.h, - source/headers/geos/operation/overlay/MinimalEdgeRing.h, - source/headers/geos/operation/overlay/MinimalEdgeRing.inl, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/valid/ConnectedInteriorTester.cpp: Added INL - file for MinimalEdgeRing, added many debugging blocks, - fixed memory leak in ConnectedInteriorTester (bug #59) +2006-03-20 11:42 Sandro Santilli -2006-03-27 15:57 strk + * [r1243] Added missing include - * source/headers/geos/geom/Coordinate.h, - source/headers/geos/geom/Coordinate.inl: Commented need for - platform.h include +2006-03-20 10:42 Sandro Santilli -2006-03-27 15:56 strk + * [r1242] Bug #61 - Disambiguated geom::Polygon use - * source/geom/Coordinate.cpp: Added missing platform.h include (for - ISNAN macro) +2006-03-20 10:14 Sandro Santilli -2006-03-27 14:20 strk + * [r1241] Bug #69 - Check for macro WIN32_LEAN_AND_MEAN - * source/headers/geos/operation/valid/ConnectedInteriorTester.h, - source/operation/valid/ConnectedInteriorTester.cpp: Added - paranoid assertion checking and a note in header about - responsibility of return from buildMaximalEdgeRings() +2006-03-20 10:13 Sandro Santilli -2006-03-27 10:37 strk + * [r1240] Bug #71 - Missing - * source/headers/geos/operation/valid/ConsistentAreaTester.h, - source/operation/valid/ConsistentAreaTester.cpp: Reduced heap - allocations and probability of error by making LineIntersector - and RelateNodeGraph part of ConsistentAreaTester class . +2006-03-20 10:12 Sandro Santilli -2006-03-27 10:36 strk + * [r1239] Bug #70 - Small fix in fwd decl. of CoordinateLessThen - * source/operation/valid/TopologyValidationError.cpp: added missing - space in exception message +2006-03-20 10:11 Sandro Santilli -2006-03-27 10:34 strk + * [r1238] Bug #67 - Debugging helpers in GeometryFactory class - * source/headers/geos/geom/Coordinate.inl: moved external includes - after internal ones +2006-03-17 16:48 Sandro Santilli -2006-03-27 09:50 strk + * [r1237] LineIntersector and PointLocator made complete components + of RelateComputer + (were statics const pointers before). Reduced inclusions from + opRelate.h + and opValid.h, updated .cpp files to allow build. - * tests/xmltester/Makefile.am, tests/xmltester/TestValid2-big.xml: - Added final isValid test from JTS (floating version) +2006-03-17 14:56 Sandro Santilli -2006-03-27 09:48 strk + * [r1236] Fixed filename normalizer for sql output - * tests/xmltester/Makefile.am, tests/xmltester/TestValid2.xml, - tests/xmltester/testLeaksBig.xml: Extracted TestValid2.xml from - testLeaksBig.xml (target file is taken from JTS source tree) +2006-03-17 13:24 Sandro Santilli -2006-03-27 09:45 strk + * [r1235] opOverlay.h header splitted. Reduced header inclusions in + operation/overlay implementation files. ElevationMatrixFilter + code moved from own file to ElevationMatrix.cpp (ideally a + class-private). - * tests/xmltester/Makefile.am, tests/xmltester/TestValid.xml, - tests/xmltester/testLeaksBig.xml: Added TestValid.xml test, taken - from JTS source tree, already present in testLeaksBig (from which - tests were removed) +2006-03-16 13:30 Sandro Santilli -2006-03-27 09:28 strk + * [r1234] Added missing testfile - * NEWS: added namespaces use and headers split +2006-03-16 13:29 Sandro Santilli -2006-03-27 09:05 strk + * [r1233] new unit test for LineSegment (adding tests would be + helpful) - * capi/geos_c.h.in: Added note about responsibility of return from - GEOSGeomType() +2006-03-16 13:28 Sandro Santilli -2006-03-27 09:00 strk + * [r1232] obsoleted getCoordinate(), replaced by operator[] - * source/geom/CoordinateArraySequence.cpp: Bug #79 - Small fix in - CoordinateArraySequence::toString() +2006-03-16 13:27 Sandro Santilli -2006-03-24 11:42 strk + * [r1231] Added notes about testing - * configure.in: reverted default of assertion checking +2006-03-16 10:47 Sandro Santilli -2006-03-24 11:11 strk + * [r1230] Bug #65 - Command line changes and EOL fixes Unit Test - * TODO, configure.in, tools/geos-config.in: Inlining enabled by - default, assertion checking disabled by default. - Added --enable-cassert and --disable-inline configure switches. - Had geos-config --cflags output appropriate inline flag if - required (-DGEOS_INLINE) +2006-03-16 10:42 Sandro Santilli -2006-03-24 11:04 strk + * [r1229] Bug #64 - Not all control paths return a value in + geos::geom::Geometry::getClassSortIndex - * source/operation/linemerge/LineSequencer.cpp: Changed assert() - with Assert::isTrue in addReverseSubpath +2006-03-16 10:38 Sandro Santilli -2006-03-24 10:44 strk + * [r1228] Bug #63 - Remove unreferenced local variable warning - * source/operation/linemerge/LineSequencer.cpp: Fixed to build with - -DNDEBUG - -2006-03-24 09:52 strk - - * TODO, capi/geos_c.cpp.bak, source/algorithm/ConvexHull.cpp, - source/geom/Coordinate.cpp, - source/geom/CoordinateArraySequenceFactory.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineSegment.cpp, - source/geom/MultiLineString.cpp, source/geom/MultiPolygon.cpp, - source/geom/PrecisionModel.cpp, - source/geomgraph/DirectedEdge.cpp, - source/headers/geos/algorithm/ConvexHull.h, - source/headers/geos/geom/Coordinate.h, - source/headers/geos/geom/CoordinateArraySequence.h, - source/headers/geos/geom/CoordinateArraySequenceFactory.h, - source/headers/geos/geom/CoordinateFilter.h, - source/headers/geos/geom/CoordinateSequence.h, - source/headers/geos/geom/CoordinateSequenceFactory.h, - source/headers/geos/geom/Dimension.h, - source/headers/geos/geom/Envelope.h, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/GeometryComponentFilter.h, - source/headers/geos/geom/GeometryFactory.h, - source/headers/geos/geom/GeometryFilter.h, - source/headers/geos/geom/IntersectionMatrix.h, - source/headers/geos/geom/LineSegment.h, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/LinearRing.h, - source/headers/geos/geom/Location.h, - source/headers/geos/geom/MultiLineString.h, - source/headers/geos/geom/MultiPoint.h, - source/headers/geos/geom/MultiPolygon.h, - source/headers/geos/geom/Point.h, - source/headers/geos/geom/Polygon.h, - source/headers/geos/geom/PrecisionModel.h, - source/headers/geos/geom/Triangle.h, - source/headers/geos/geom/util/CoordinateOperation.h, - source/headers/geos/geom/util/GeometryEditor.h, - source/headers/geos/geom/util/GeometryEditorOperation.h, - source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h, - source/headers/geos/geomgraph/Depth.h, - source/headers/geos/geomgraph/DirectedEdge.h, - source/headers/geos/geomgraph/DirectedEdgeStar.h, - source/headers/geos/geomgraph/Edge.h, - source/headers/geos/geomgraph/EdgeEnd.h, - source/headers/geos/geomgraph/EdgeEndStar.h, - source/headers/geos/geomgraph/EdgeIntersection.h, - source/headers/geos/geomgraph/EdgeIntersectionList.h, - source/headers/geos/geomgraph/EdgeList.h, - source/headers/geos/geomgraph/EdgeNodingValidator.h, - source/headers/geos/geomgraph/EdgeRing.h, - source/headers/geos/geomgraph/GeometryGraph.h, - source/headers/geos/geomgraph/GraphComponent.h, - source/headers/geos/geomgraph/Label.h, - source/headers/geos/geomgraph/Node.h, - source/headers/geos/geomgraph/NodeFactory.h, - source/headers/geos/geomgraph/NodeMap.h, - source/headers/geos/geomgraph/PlanarGraph.h, - source/headers/geos/geomgraph/Position.h, - source/headers/geos/geomgraph/Quadrant.h, - source/headers/geos/geomgraph/TopologyLocation.h, - source/headers/geos/inline.h, source/headers/geos/io/WKTReader.h, - source/headers/geos/noding/IntersectionAdder.h, - source/headers/geos/noding/IntersectionFinderAdder.h, - source/headers/geos/noding/IteratedNoder.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/noding/Noder.h, - source/headers/geos/noding/NodingValidator.h, - source/headers/geos/noding/Octant.h, - source/headers/geos/noding/ScaledNoder.h, - source/headers/geos/noding/SegmentIntersector.h, - source/headers/geos/noding/SegmentNode.h, - source/headers/geos/noding/SegmentNodeList.h, - source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SimpleNoder.h, - source/headers/geos/noding/SinglePassNoder.h, - source/headers/geos/noding/snapround/HotPixel.h, - source/headers/geos/noding/snapround/MCIndexPointSnapper.h, - source/headers/geos/noding/snapround/MCIndexSnapRounder.h, - source/headers/geos/noding/snapround/SimpleSnapRounder.h, - source/io/WKTReader.cpp, source/noding/MCIndexNoder.cpp, - source/noding/SegmentString.cpp, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/operation/distance/DistanceOp.cpp: USE_INLINE => - GEOS_INLINE - -2006-03-24 09:26 strk - - * capi/geos_c.cpp: Bug #77 - Missing platform.h - -2006-03-24 09:25 strk - - * source/noding/snapround/MCIndexPointSnapper.cpp, - source/operation/buffer/BufferBuilder.cpp: Bugs #77 and #76: - missing - -2006-03-24 09:23 strk - - * tests/unit/geos_unit.cpp: Bug #78 - Small fixes and cleaning - -2006-03-23 15:10 strk - - * source/geom/Coordinate.cpp, source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, - source/geomgraph/EdgeEndStar.cpp, source/geomgraph/EdgeRing.cpp, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geomgraph/DirectedEdge.inl, - source/headers/geos/geomgraph/DirectedEdgeStar.h, - source/headers/geos/util/TopologyException.h, - source/operation/overlay/OverlayOp.cpp: Dropped by-pointer - TopologyException constructor, various small cleanups - -2006-03-23 13:31 strk - - * source/geomgraph/Edge.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/quadtree/Node.cpp, - source/index/quadtree/NodeBase.cpp, - source/index/quadtree/Quadtree.cpp: Fixed to allow build with - GEOS_DEBUG +2006-03-16 09:37 Sandro Santilli -2006-03-23 12:12 strk + * [r1227] Initial unit tests - * source/geom/Geometry.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPolygon.cpp, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/Geometry.inl, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/GeometryCollection.inl, - source/headers/geos/geom/LineSegment.inl, - source/headers/geos/geom/MultiLineString.h, - source/headers/geos/geom/MultiLineString.inl, - source/headers/geos/geom/MultiPolygon.inl, - source/operation/distance/DistanceOp.cpp: Fixes to allow build - with -DUSE_INLINE +2006-03-15 18:59 Sandro Santilli -2006-03-23 10:55 strk + * [r1226] Bug #62: 'struct' CoordinateLessThen in forward + declaration - * Makefile.am, configure.in: Temporarly excluded 'swig' extension - from distribution, to allow for - successufull 'dist' rule and distributed testing. +2006-03-15 18:57 Sandro Santilli -2006-03-23 10:41 strk + * [r1225] small cleanup - * source/headers/geos/Makefile.am, - source/headers/geos/operation/relate/Makefile.am: Fixed automake - files - -2006-03-23 10:09 strk - - * source/headers/geos/operation/predicate/Makefile.am: Fixed - missing backslash - -2006-03-23 09:17 strk - - * configure.in, source/headers/geos/Makefile.am, - source/headers/geos/precision, source/headers/geos/precision.h, - source/headers/geos/precision/.cvsignore, - source/headers/geos/precision/CommonBits.h, - source/headers/geos/precision/CommonBitsOp.h, - source/headers/geos/precision/CommonBitsRemover.h, - source/headers/geos/precision/EnhancedPrecisionOp.h, - source/headers/geos/precision/Makefile.am, - source/headers/geos/precision/SimpleGeometryPrecisionReducer.h, - source/operation/buffer/BufferOp.cpp, - source/operation/overlay/OverlayOp.cpp, - source/precision/CommonBits.cpp, - source/precision/CommonBitsOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp: precision.h - header split, minor optimizations - -2006-03-22 18:12 strk - - * configure.in, source/algorithm/MCPointInRing.cpp, - source/geom/LineSegment.cpp, - source/headers/geos/algorithm/MCPointInRing.h, - source/headers/geos/index/Makefile.am, - source/headers/geos/index/chain, - source/headers/geos/index/chain/.cvsignore, - source/headers/geos/index/chain/Makefile.am, - source/headers/geos/index/chain/MonotoneChain.h, - source/headers/geos/index/chain/MonotoneChainBuilder.h, - source/headers/geos/index/chain/MonotoneChainOverlapAction.h, - source/headers/geos/index/chain/MonotoneChainSelectAction.h, - source/headers/geos/indexChain.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/noding/snapround/MCIndexPointSnapper.h, - source/index/bintree/NodeBase.cpp, - source/index/chain/Makefile.am, - source/index/chain/MonotoneChain.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/noding/MCIndexNoder.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/valid/IsValidOp.cpp: indexChain.h header split. - -2006-03-22 16:59 strk - - * source/headers/geos/geosAlgorithm.h: cleaned up - -2006-03-22 16:58 strk - - * source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateSequence.cpp, source/geom/Dimension.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/Location.cpp, - source/geom/Makefile.am, source/geom/MultiPoint.cpp, - source/geom/MultiPolygon.cpp, source/geom/Point.cpp, - source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, source/geom/Triangle.cpp, - source/geom/util/ShortCircuitedGeometryVisitor.cpp, - source/headers/geos/geom/PrecisionModel.h, - source/headers/geos/io/WKTReader.h, - source/headers/geos/io/WKTReader.inl, - source/headers/geos/io/WKTWriter.h, source/io/WKBReader.cpp, - source/io/WKBWriter.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/util/CoordinateArrayFiter.cpp, - source/util/GeometricShapeFactory.cpp, - source/util/UniqueCoordinateArrayFilter.cpp: Removed (almost) all - inclusions of geom.h. - Removed obsoleted .cpp files. - Fixed a bug in WKTReader not using the provided - CoordinateSequence - implementation, optimized out some memory allocations. +2006-03-15 18:57 Sandro Santilli -2006-03-22 16:01 strk + * [r1224] cleanups in DEBUG lines - * configure.in, source/algorithm/MCPointInRing.cpp, - source/headers/geos/algorithm/MCPointInRing.h, - source/headers/geos/index/bintree, - source/headers/geos/index/bintree/.cvsignore, - source/headers/geos/index/bintree/Bintree.h, - source/headers/geos/index/bintree/Interval.h, - source/headers/geos/index/bintree/Key.h, - source/headers/geos/index/bintree/Makefile.am, - source/headers/geos/index/bintree/Node.h, - source/headers/geos/index/bintree/NodeBase.h, - source/headers/geos/index/bintree/Root.h, - source/headers/geos/indexBintree.h, - source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, - source/index/bintree/Interval.cpp, source/index/bintree/Key.cpp, - source/index/bintree/Makefile.am, source/index/bintree/Node.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - tests/xmltester/XMLTester.cpp: indexBintree.h header split, - classes renamed to match JTS - -2006-03-22 14:28 strk - - * source/index/quadtree/Key.cpp, source/index/quadtree/Makefile.am, - source/index/quadtree/Node.cpp, - source/index/quadtree/NodeBase.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Root.cpp: Filenames renamed to match class - names (matching JTS) - -2006-03-22 12:22 strk - - * configure.in, source/geomgraph/EdgeList.cpp, - source/headers/geos/index/Makefile.am, - source/headers/geos/index/quadtree, - source/headers/geos/index/quadtree/.cvsignore, - source/headers/geos/index/quadtree/DoubleBits.h, - source/headers/geos/index/quadtree/IntervalSize.h, - source/headers/geos/index/quadtree/Key.h, - source/headers/geos/index/quadtree/Makefile.am, - source/headers/geos/index/quadtree/Node.h, - source/headers/geos/index/quadtree/NodeBase.h, - source/headers/geos/index/quadtree/Quadtree.h, - source/headers/geos/index/quadtree/Root.h, - source/headers/geos/indexQuadtree.h, - source/index/bintree/Key.cpp, source/index/bintree/Root.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp: - indexQuadtree.h split - -2006-03-22 11:19 strk - - * capi/geos_c.cpp, configure.in, - source/headers/geos/opPolygonize.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/polygonize, - source/headers/geos/operation/polygonize/.cvsignore, - source/headers/geos/operation/polygonize/EdgeRing.h, - source/headers/geos/operation/polygonize/Makefile.am, - source/headers/geos/operation/polygonize/PolygonizeDirectedEdge.h, - source/headers/geos/operation/polygonize/PolygonizeEdge.h, - source/headers/geos/operation/polygonize/PolygonizeGraph.h, - source/headers/geos/operation/polygonize/Polygonizer.h, - source/headers/geos/util/TopologyException.h, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp: - opPolygonize.h headers split. - -2006-03-22 11:18 strk - - * source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Changed back - 'unable to find edge to compute depths' from assertion to - TopologyException - -2006-03-22 10:13 strk - - * capi/geos_c.cpp, configure.in, source/headers/geos/opLinemerge.h, - source/headers/geos/operation/linemerge, - source/headers/geos/operation/linemerge/.cvsignore, - source/headers/geos/operation/linemerge/EdgeString.h, - source/headers/geos/operation/linemerge/LineMergeDirectedEdge.h, - source/headers/geos/operation/linemerge/LineMergeEdge.h, - source/headers/geos/operation/linemerge/LineMergeGraph.h, - source/headers/geos/operation/linemerge/LineMerger.h, - source/headers/geos/operation/linemerge/LineSequencer.h, - source/headers/geos/operation/linemerge/Makefile.am, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/linemerge/LineSequencer.cpp: opLinemerge.h split - -2006-03-21 21:42 strk - - * configure.in, source/headers/geos/Makefile.am, - source/headers/geos/planargraph, - source/headers/geos/planargraph.h, - source/headers/geos/planargraph/.cvsignore, - source/headers/geos/planargraph/DirectedEdge.h, - source/headers/geos/planargraph/DirectedEdgeStar.h, - source/headers/geos/planargraph/Edge.h, - source/headers/geos/planargraph/GraphComponent.h, - source/headers/geos/planargraph/Makefile.am, - source/headers/geos/planargraph/Node.h, - source/headers/geos/planargraph/NodeMap.h, - source/headers/geos/planargraph/PlanarGraph.h, - source/headers/geos/planargraph/Subgraph.h, - source/headers/geos/planargraph/algorithm, - source/headers/geos/planargraph/algorithm/.cvsignore, - source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h, - source/headers/geos/planargraph/algorithm/Makefile.am, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/linemerge/LineSequencer.cpp, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/planargraph/DirectedEdge.cpp, - source/planargraph/DirectedEdgeStar.cpp, - source/planargraph/Edge.cpp, source/planargraph/Makefile.am, - source/planargraph/Node.cpp, source/planargraph/NodeMap.cpp, - source/planargraph/PlanarGraph.cpp, - source/planargraph/Subgraph.cpp, - source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarEdge.cpp, - source/planargraph/planarGraphComponent.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp, - source/planargraph/planarSubgraph.cpp: planargraph.h header - split, planargraph:: classes renamed to match JTS symbols - -2006-03-21 17:55 strk - - * configure.in, source/geom/Geometry.cpp, - source/headers/geos/opDistance.h, - source/headers/geos/opOverlay.h, source/headers/geos/opRelate.h, - source/headers/geos/opValid.h, source/headers/geos/operation.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/distance, - source/headers/geos/operation/distance/.cvsignore, - source/headers/geos/operation/distance/ConnectedElementLocationFilter.h, - source/headers/geos/operation/distance/ConnectedElementPointFilter.h, - source/headers/geos/operation/distance/DistanceOp.h, - source/headers/geos/operation/distance/GeometryLocation.h, - source/headers/geos/operation/distance/Makefile.am, - source/operation/distance/ConnectedElementLocationFilter.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/GeometryLocation.cpp: opDistance.h - header split - -2006-03-21 17:11 strk - - * configure.in, source/geom/Geometry.cpp, - source/headers/geos/opPredicate.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/predicate, - source/headers/geos/operation/predicate/.cvsignore, - source/headers/geos/operation/predicate/Makefile.am, - source/headers/geos/operation/predicate/RectangleContains.h, - source/headers/geos/operation/predicate/RectangleIntersects.h, - source/headers/geos/operation/predicate/SegmentIntersectionTester.h, - source/operation/predicate/RectangleContains.cpp, - source/operation/predicate/RectangleIntersects.cpp, - source/operation/predicate/SegmentIntersectionTester.cpp: - opPredicate.h header split - -2006-03-21 13:11 strk - - * configure.in, source/geom/Geometry.cpp, - source/headers/geos/opRelate.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/relate, - source/headers/geos/operation/relate/.cvsignore, - source/headers/geos/operation/relate/EdgeEndBuilder.h, - source/headers/geos/operation/relate/EdgeEndBundle.h, - source/headers/geos/operation/relate/EdgeEndBundleStar.h, - source/headers/geos/operation/relate/Makefile.am, - source/headers/geos/operation/relate/RelateComputer.h, - source/headers/geos/operation/relate/RelateNode.h, - source/headers/geos/operation/relate/RelateNodeFactory.h, - source/headers/geos/operation/relate/RelateNodeGraph.h, - source/headers/geos/operation/relate/RelateOp.h, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConsistentAreaTester.cpp: opRelate.h - header split +2006-03-15 18:56 Sandro Santilli -2006-03-21 11:20 strk + * [r1223] Temporary hack to avoid snapround:: Noders (still using + ScaledNoder wrapper) + to allow for buffer_snapround.xml test to succeed - * tests/xmltester/TestInteriorPoint.xml: Changed expected result to - the obtained one :) - We're not cheating, it's a 2-vertex linestring for - which an InteriorPoint is requested, both vertexes - are correct answer (equidistant from centroid). +2006-03-15 18:55 Sandro Santilli -2006-03-21 11:12 strk + * [r1222] Added xml testfile showing bug in snapround:: noders - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/headers/geos/algorithm/SIRtreePointInRing.h: Cleanups: - headers inclusion and Log section - -2006-03-21 10:47 strk - - * configure.in, source/headers/geos/index/Makefile.am, - source/headers/geos/index/strtree, - source/headers/geos/index/strtree/.cvsignore, - source/headers/geos/index/strtree/AbstractNode.h, - source/headers/geos/index/strtree/AbstractSTRtree.h, - source/headers/geos/index/strtree/Boundable.h, - source/headers/geos/index/strtree/Interval.h, - source/headers/geos/index/strtree/ItemBoundable.h, - source/headers/geos/index/strtree/Makefile.am, - source/headers/geos/index/strtree/SIRtree.h, - source/headers/geos/index/strtree/STRtree.h, - source/headers/geos/indexStrtree.h, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp: indexStrtree.h split - -2006-03-21 10:46 strk - - * source/algorithm/RobustDeterminant.cpp: streamlined header - inclusion, put original copyright on top - -2006-03-21 10:01 strk - - * configure.in, source/headers/geos/index/Makefile.am, - source/headers/geos/index/sweepline, - source/headers/geos/index/sweepline/.cvsignore, - source/headers/geos/index/sweepline/Makefile.am, - source/headers/geos/index/sweepline/SweepLineEvent.h, - source/headers/geos/index/sweepline/SweepLineIndex.h, - source/headers/geos/index/sweepline/SweepLineInterval.h, - source/headers/geos/index/sweepline/SweepLineOverlapAction.h, - source/headers/geos/indexSweepline.h, - source/index/sweepline/Makefile.am, - source/index/sweepline/SweepLineEvent.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp: - indexSweepline.h header split - -2006-03-20 18:18 strk - - * capi/geos_c.cpp, configure.in, source/headers/geos/Makefile.am, - source/headers/geos/io, source/headers/geos/io.h, - source/headers/geos/io/.cvsignore, - source/headers/geos/io/ByteOrderDataInStream.h, - source/headers/geos/io/ByteOrderValues.h, - source/headers/geos/io/Makefile.am, - source/headers/geos/io/ParseException.h, - source/headers/geos/io/StringTokenizer.h, - source/headers/geos/io/WKBConstants.h, - source/headers/geos/io/WKBReader.h, - source/headers/geos/io/WKBWriter.h, - source/headers/geos/io/WKTReader.h, - source/headers/geos/io/WKTReader.inl, - source/headers/geos/io/WKTWriter.h, - source/headers/geos/io/Writer.h, source/io/ByteOrderValues.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/WKBReader.cpp, source/io/WKBWriter.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, source/operation/buffer/BufferSubgraph.cpp: - io.h header split +2006-03-15 18:44 Sandro Santilli -2006-03-20 17:40 strk + * [r1221] Bug #60 - Missing header in some files - * source/index/quadtree/DoubleBits.cpp: included when - appropriate +2006-03-15 17:33 Sandro Santilli -2006-03-20 17:27 strk + * [r1220] Changed operator<< to use operator<< for Nodes - * source/headers/geos/geom/CoordinateSequence.h, - source/headers/geos/geom/GeometryFactory.h: Bug #72 - Missing - header - -2006-03-20 17:17 strk - - * source/headers/geos/geomgraph/index/Makefile.am, - source/headers/geos/index/Makefile.am, - source/headers/geos/noding/snapround/Makefile.am, - source/headers/geos/operation/buffer/Makefile.am, - source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/valid/Makefile.am: Fixed geosdir - -2006-03-20 16:57 strk - - * configure.in, source/geom/Geometry.cpp, - source/headers/geos/Makefile.am, source/headers/geos/index, - source/headers/geos/index/.cvsignore, - source/headers/geos/index/ItemVisitor.h, - source/headers/geos/index/Makefile.am, - source/headers/geos/index/SpatialIndex.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/opValid.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/valid, - source/headers/geos/operation/valid/.cvsignore, - source/headers/geos/operation/valid/ConnectedInteriorTester.h, - source/headers/geos/operation/valid/ConsistentAreaTester.h, - source/headers/geos/operation/valid/IsValidOp.h, - source/headers/geos/operation/valid/Makefile.am, - source/headers/geos/operation/valid/QuadtreeNestedRingTester.h, - source/headers/geos/operation/valid/RepeatedPointTester.h, - source/headers/geos/operation/valid/SimpleNestedRingTester.h, - source/headers/geos/operation/valid/SweeplineNestedRingTester.h, - source/headers/geos/operation/valid/TopologyValidationError.h, - source/headers/geos/spatialIndex.h, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/STRtree.cpp, source/io/Unload.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp: - spatialindex.h and opValid.h headers split +2006-03-15 17:17 Sandro Santilli -2006-03-20 16:08 strk + * [r1219] Added missing forward declarations - * macros/ac_python_devel.m4: redirected find stderr to /dev/null +2006-03-15 17:16 Sandro Santilli -2006-03-20 13:20 strk + * [r1218] streamlined headers inclusion - * source/operation/overlay/PolygonBuilder.cpp: Changed assertion to - TopologyException for the "orphaned" hole case - in order to allow for reduced precision ops to catch the case. +2006-03-15 16:27 Sandro Santilli -2006-03-20 12:33 strk + * [r1217] operator<< for Node class - * source/headers/geos/operation/overlay/PolygonBuilder.h, - source/operation/overlay/PolygonBuilder.cpp: Simplified some - privat methods to use refs instead of pointers, added - debugging section for failiures of holes/shells associations +2006-03-15 15:50 Sandro Santilli -2006-03-20 12:32 strk + * [r1216] const correctness, cleanups - * source/headers/geos/geomgraph/EdgeRing.h: Added note about - responsibility of return from ::toPolygon +2006-03-15 15:27 Sandro Santilli -2006-03-20 12:03 strk + * [r1215] cleanups - * source/geom/Geometry.cpp, source/headers/geos/geom/Geometry.h: - Added operator<< for Geometry, writing HEXWKB +2006-03-15 15:26 Sandro Santilli -2006-03-20 11:42 strk + * [r1214] Cleanups - * source/noding/Octant.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Added missing - include +2006-03-15 13:03 Sandro Santilli -2006-03-20 10:42 strk + * [r1213] removed leftover debugging line - * source/operation/predicate/RectangleContains.cpp, - source/operation/predicate/RectangleIntersects.cpp: Bug #61 - - Disambiguated geom::Polygon use +2006-03-15 12:54 Sandro Santilli -2006-03-20 10:14 strk + * [r1212] Removed DepthSegment.h include - * source/headers/geos/timeval.h: Bug #69 - Check for macro - WIN32_LEAN_AND_MEAN +2006-03-15 12:54 Sandro Santilli -2006-03-20 10:13 strk + * [r1211] Removed public DepthSegment definition (moved inside + SubgraphDepthLocater implementation) - * source/operation/buffer/SubgraphDepthLocater.cpp: Bug #71 - - Missing +2006-03-15 12:52 Sandro Santilli -2006-03-20 10:12 strk + * [r1210] DepthSegment class moved inside SubgraphDepthLocator + implementaion + as it was private to this file in JTS. Also, changed to reduce + copies of LineSegment copies. - * source/headers/geos/geom/Coordinate.h: Bug #70 - Small fix in fwd - decl. of CoordinateLessThen +2006-03-15 11:45 Sandro Santilli -2006-03-20 10:11 strk + * [r1209] doxygen comments - * source/geom/GeometryFactory.cpp: Bug #67 - Debugging helpers in - GeometryFactory class +2006-03-15 11:44 Sandro Santilli -2006-03-17 16:48 strk + * [r1208] debug blocks, dumping SQL when GEOS_DEBUG > 1 - * source/headers/geos/opRelate.h, source/headers/geos/opValid.h, - source/io/Unload.cpp, source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp: - LineIntersector and PointLocator made complete components of - RelateComputer - (were statics const pointers before). Reduced inclusions from - opRelate.h - and opValid.h, updated .cpp files to allow build. +2006-03-15 11:42 Sandro Santilli -2006-03-17 14:56 strk + * [r1207] more debugging lines, with two levels of debugging + handled - * tests/xmltester/XMLTester.cpp: Fixed filename normalizer for sql - output +2006-03-15 11:39 Sandro Santilli -2006-03-17 13:24 strk + * [r1206] comments cleanup, changed computeDepths to use a list<> + rather then a vector (performance related) - * configure.in, source/geom/Geometry.cpp, - source/headers/geos/opOverlay.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/operation/overlay, - source/headers/geos/operation/overlay/.cvsignore, - source/headers/geos/operation/overlay/EdgeSetNoder.h, - source/headers/geos/operation/overlay/ElevationMatrix.h, - source/headers/geos/operation/overlay/ElevationMatrixCell.h, - source/headers/geos/operation/overlay/LineBuilder.h, - source/headers/geos/operation/overlay/Makefile.am, - source/headers/geos/operation/overlay/MaximalEdgeRing.h, - source/headers/geos/operation/overlay/MinimalEdgeRing.h, - source/headers/geos/operation/overlay/OverlayNodeFactory.h, - source/headers/geos/operation/overlay/OverlayOp.h, - source/headers/geos/operation/overlay/PointBuilder.h, - source/headers/geos/operation/overlay/PolygonBuilder.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixCell.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/Makefile.am, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp: opOverlay.h header - splitted. Reduced header inclusions in operation/overlay - implementation files. ElevationMatrixFilter code moved from own - file to ElevationMatrix.cpp (ideally a class-private). +2006-03-15 10:40 Sandro Santilli -2006-03-16 13:30 strk + * [r1205] Fixed to allow doxygen runs from external builddir - * tests/xmltester/linemerge.xml: Added missing testfile +2006-03-15 09:51 Sandro Santilli -2006-03-16 13:29 strk + * [r1204] streamlined header usage - * tests/unit/Makefile.am, tests/unit/geom/LineSegment.cpp: new unit - test for LineSegment (adding tests would be helpful) +2006-03-15 09:51 Sandro Santilli -2006-03-16 13:28 strk + * [r1203] streamlined headers usage - * source/geom/LineSegment.cpp, - source/headers/geos/geom/LineSegment.h, - source/headers/geos/geom/LineSegment.inl: obsoleted - getCoordinate(), replaced by operator[] +2006-03-15 09:13 Sandro Santilli -2006-03-16 13:27 strk + * [r1202] updated port info - * README: Added notes about testing +2006-03-15 09:12 Sandro Santilli -2006-03-16 10:47 strk + * [r1201] isSimple doc - * tests/tut/tut.h, tests/tut/tut_reporter.h, - tests/tut/tut_restartable.h, tests/unit/geom/Envelope.cpp, - tests/unit/geom/Geometry/isRectangle.cpp, - tests/unit/geos_unit.cpp: Bug #65 - Command line changes and EOL - fixes Unit Test +2006-03-14 17:46 Sandro Santilli -2006-03-16 10:42 strk + * [r1200] Removed unrequired include - * source/geom/Geometry.cpp: Bug #64 - Not all control paths return - a value in geos::geom::Geometry::getClassSortIndex +2006-03-14 17:10 Sandro Santilli -2006-03-16 10:38 strk + * [r1199] cleanups - * source/algorithm/LineIntersector.cpp: Bug #63 - Remove - unreferenced local variable warning +2006-03-14 17:08 Sandro Santilli -2006-03-16 09:37 strk + * [r1198] comments cleanup, integrity checks - * tests/tut, tests/tut/tut.h, tests/tut/tut_reporter.h, - tests/tut/tut_restartable.h, tests/unit/Makefile.am, - tests/unit/envelope_class_test.cpp, tests/unit/geom, - tests/unit/geom/Envelope.cpp, tests/unit/geom/Geometry, - tests/unit/geom/Geometry/isRectangle.cpp, - tests/unit/geos_unit.cpp: Initial unit tests +2006-03-14 16:55 Sandro Santilli -2006-03-15 18:59 strk + * [r1197] oops, GEOS_DEBUG default to 0 - * source/headers/geos/operation/IsSimpleOp.h: Bug #62: 'struct' - CoordinateLessThen in forward declaration +2006-03-14 16:55 Sandro Santilli -2006-03-15 18:57 strk + * [r1196] comments cleanup - * source/operation/buffer/SubgraphDepthLocater.cpp: small cleanup +2006-03-14 16:53 Sandro Santilli -2006-03-15 18:57 strk + * [r1195] removed endline from printing funx - * source/operation/buffer/BufferBuilder.cpp: cleanups in DEBUG - lines +2006-03-14 16:08 Sandro Santilli -2006-03-15 18:56 strk + * [r1194] changed buildSubgraphs signature to use refs rather then + pointers, made it const-correct. Reduced heap allocations in + createSubgraphs() - * source/operation/buffer/BufferOp.cpp: Temporary hack to avoid - snapround:: Noders (still using ScaledNoder wrapper) - to allow for buffer_snapround.xml test to succeed +2006-03-14 15:46 Sandro Santilli -2006-03-15 18:55 strk + * [r1193] Added PlanarGraph::getNodes(vector&) func, to reduce + useless heap allocations - * tests/xmltester/buffer_snapround.xml: Added xml testfile showing - bug in snapround:: noders +2006-03-14 15:32 Sandro Santilli -2006-03-15 18:44 strk + * [r1192] Cleaned up toString funx (more WKT friendly) - * doc/example.cpp, source/geom/Envelope.cpp, - source/geom/LineSegment.cpp, source/geom/PrecisionModel.cpp, - source/headers/geos/geom/Coordinate.inl, - source/index/bintree/Key.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/strtree/STRtree.cpp, - source/util/GeometricShapeFactory.cpp: Bug #60 - Missing - header in some files - -2006-03-15 17:33 strk - - * source/operation/buffer/BufferSubgraph.cpp: Changed operator<< to - use operator<< for Nodes - -2006-03-15 17:17 strk - - * source/headers/geos/geomgraph/DirectedEdgeStar.h, - source/headers/geos/geomgraph/EdgeRing.h, - source/headers/geos/geomgraph/index/SweepLineEvent.h: Added - missing forward declarations - -2006-03-15 17:16 strk - - * source/geomgraph/Depth.cpp, source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeNodingValidator.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/GraphComponent.cpp, - source/geomgraph/NodeFactory.cpp, - source/geomgraph/PlanarGraph.cpp, source/geomgraph/Position.cpp, - source/geomgraph/Quadrant.cpp, - source/geomgraph/TopologyLocation.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/geomgraph/index/SweepLineSegment.cpp: streamlined headers - inclusion +2006-03-14 14:16 Sandro Santilli -2006-03-15 16:27 strk + * [r1191] operator<< for BufferSubgraph, more debugging calls - * source/geomgraph/Node.cpp, source/headers/geos/geomgraph/Node.h: - operator<< for Node class +2006-03-14 12:55 Sandro Santilli -2006-03-15 15:50 strk + * [r1190] Headers split: geomgraphindex.h, nodingSnapround.h - * source/headers/geos/operation/buffer/SubgraphDepthLocater.h, - source/operation/buffer/SubgraphDepthLocater.cpp: const - correctness, cleanups +2006-03-14 11:03 Sandro Santilli -2006-03-15 15:27 strk + * [r1189] Added operator<< for Edge and EdgeList - * source/headers/geos/geomgraph/DirectedEdge.h, - source/headers/geos/geomgraph/EdgeEnd.h: cleanups +2006-03-14 00:37 Sandro Santilli -2006-03-15 15:26 strk + * [r1188] Fixed include filenames - * source/geomgraph/DirectedEdge.cpp, source/geomgraph/EdgeRing.cpp: - Cleanups +2006-03-14 00:36 Sandro Santilli -2006-03-15 13:03 strk + * [r1187] Reduced 'buffer' headers inclusion - * source/operation/buffer/BufferBuilder.cpp: removed leftover - debugging line +2006-03-14 00:19 Sandro Santilli -2006-03-15 12:54 strk + * [r1186] opBuffer.h split, streamlined headers in some (not all) + files in operation/buffer/ - * source/headers/geos/opBuffer.h: Removed DepthSegment.h include +2006-03-13 22:33 Sandro Santilli -2006-03-15 12:54 strk + * [r1185] Added missing forward declarations - * source/headers/geos/operation/buffer/DepthSegment.h, - source/headers/geos/operation/buffer/Makefile.am: Removed public - DepthSegment definition (moved inside SubgraphDepthLocater - implementation) +2006-03-13 21:54 Sandro Santilli -2006-03-15 12:52 strk + * [r1184] Streamlined headers inclusion. - * source/operation/buffer/DepthSegment.cpp, - source/operation/buffer/Makefile.am, - source/operation/buffer/SubgraphDepthLocater.cpp: DepthSegment - class moved inside SubgraphDepthLocator implementaion - as it was private to this file in JTS. Also, changed to reduce - copies of LineSegment copies. +2006-03-13 21:19 Sandro Santilli -2006-03-15 11:45 strk + * [r1183] Fixed bug in ScaledNoder scaling mechanism (hugly code, + due to CoordinateSequence visitor pattern design). Tests are + still failing so this possibly needs some other fix. Streamlined + includes by implementation file. - * source/headers/geos/operation/buffer/BufferSubgraph.h: doxygen - comments +2006-03-13 21:14 Sandro Santilli -2006-03-15 11:44 strk + * [r1182] Added missing forward declarations - * source/operation/overlay/PolygonBuilder.cpp: debug blocks, - dumping SQL when GEOS_DEBUG > 1 +2006-03-13 21:13 Sandro Santilli -2006-03-15 11:42 strk + * [r1181] Added comment about possible refactoring - * source/operation/buffer/BufferBuilder.cpp: more debugging lines, - with two levels of debugging handled +2006-03-11 16:58 Sandro Santilli -2006-03-15 11:39 strk + * [r1180] Fixed bug in OffsetCurveBuilder::getCoordinates. - * source/operation/buffer/BufferSubgraph.cpp: comments cleanup, - changed computeDepths to use a list<> rather then a vector - (performance related) +2006-03-10 15:50 Sandro Santilli -2006-03-15 10:40 strk + * [r1179] Changed 'found null Directed Edge' from an Assertion to a + TopologyException, to give 'precision-reducing' overlay operation + a chance to handle it (it seems to work) - * doc/Doxyfile.in: Fixed to allow doxygen runs from external - builddir +2006-03-10 13:07 Sandro Santilli -2006-03-15 09:51 strk + * [r1178] fine-tuned includes, reverted Assert=>assert due to + user-input based failure - * source/headers/geos/noding/SegmentString.inl, - source/headers/geos/noding/SimpleNoder.h: streamlined header - usage +2006-03-10 12:50 Sandro Santilli -2006-03-15 09:51 strk + * [r1177] boost detection code fix, first UTF source for testing + purposes - * source/noding/IntersectionAdder.cpp, - source/noding/IntersectionFinderAdder.cpp, - source/noding/IteratedNoder.cpp, source/noding/MCIndexNoder.cpp, - source/noding/NodingValidator.cpp, source/noding/Octant.cpp, - source/noding/ScaledNoder.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/SimpleSnapRounder.cpp: streamlined - headers usage +2006-03-10 12:43 Sandro Santilli -2006-03-15 09:13 strk + * [r1176] updated - * source/geom/Polygon.cpp: updated port info +2006-03-10 12:09 Sandro Santilli -2006-03-15 09:12 strk + * [r1175] Update configure script to work with new boost.m4 file - * source/headers/geos/geom/Polygon.h: isSimple doc +2006-03-10 11:49 Sandro Santilli -2006-03-14 17:46 strk + * [r1174] Updated boost detection macro - * source/headers/geos/util/Assert.h: Removed unrequired include +2006-03-10 11:41 Sandro Santilli -2006-03-14 17:10 strk + * [r1173] Added missing include (bug#56) - * source/operation/buffer/BufferSubgraph.cpp: cleanups +2006-03-10 11:10 Sandro Santilli -2006-03-14 17:08 strk + * [r1172] Initial boost detection code - * source/headers/geos/opOverlay.h, - source/operation/overlay/MaximalEdgeRing.cpp: comments cleanup, - integrity checks +2006-03-10 11:09 Sandro Santilli -2006-03-14 16:55 strk + * [r1171] Comments cleanup - * source/operation/overlay/PolygonBuilder.cpp: oops, GEOS_DEBUG - default to 0 +2006-03-10 10:48 Sandro Santilli -2006-03-14 16:55 strk + * [r1170] Bug #58 - Patch to makefile.vc after big refactoring + commit - * source/headers/geos/opOverlay.h, - source/operation/overlay/PolygonBuilder.cpp: comments cleanup +2006-03-10 10:44 Sandro Santilli -2006-03-14 16:53 strk + * [r1169] Unreferenced exception objects cleanup (#52) - * source/geomgraph/Edge.cpp: removed endline from printing funx +2006-03-10 10:37 Sandro Santilli -2006-03-14 16:08 strk + * [r1168] Added missing include (#55) - * source/headers/geos/operation/buffer/BufferBuilder.h, - source/operation/buffer/BufferBuilder.cpp: changed buildSubgraphs - signature to use refs rather then pointers, made it - const-correct. Reduced heap allocations in createSubgraphs() +2006-03-10 10:34 Sandro Santilli -2006-03-14 15:46 strk + * [r1167] Added missing include (#54) - * source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geomgraph/PlanarGraph.h: Added - PlanarGraph::getNodes(vector&) func, to reduce useless heap - allocations +2006-03-09 18:22 Sandro Santilli -2006-03-14 15:32 strk + * [r1166] Added isvalid test for latest validop patch - * source/geom/Coordinate.cpp, - source/geom/CoordinateArraySequence.cpp, - source/geomgraph/DirectedEdge.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/Node.cpp: Cleaned up toString funx (more WKT - friendly) +2006-03-09 18:18 Sandro Santilli -2006-03-14 14:16 strk + * [r1165] Added memory-friendly + MaximalEdgeRing::buildMinimalRings() implementation. + Applied patch to IsValid operation from JTS-1.7.1 - * source/headers/geos/operation/buffer/BufferSubgraph.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/overlay/PolygonBuilder.cpp: operator<< for - BufferSubgraph, more debugging calls +2006-03-09 17:40 Sandro Santilli -2006-03-14 12:55 strk + * [r1164] Fixed bug#33 (hopefully) - * configure.in, source/geom/Geometry.cpp, - source/geomgraph/Label.cpp, source/geomgraph/Node.cpp, - source/geomgraph/NodeMap.cpp, - source/headers/geos/geomgraph/Makefile.am, - source/headers/geos/geomgraph/index, - source/headers/geos/geomgraph/index/.cvsignore, - source/headers/geos/geomgraph/index/EdgeSetIntersector.h, - source/headers/geos/geomgraph/index/Makefile.am, - source/headers/geos/geomgraph/index/MonotoneChain.h, - source/headers/geos/geomgraph/index/MonotoneChainEdge.h, - source/headers/geos/geomgraph/index/MonotoneChainIndexer.h, - source/headers/geos/geomgraph/index/SegmentIntersector.h, - source/headers/geos/geomgraph/index/SimpleEdgeSetIntersector.h, - source/headers/geos/geomgraph/index/SimpleMCSweepLineIntersector.h, - source/headers/geos/geomgraph/index/SimpleSweepLineIntersector.h, - source/headers/geos/geomgraph/index/SweepLineEvent.h, - source/headers/geos/geomgraph/index/SweepLineEventObj.h, - source/headers/geos/geomgraph/index/SweepLineSegment.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/noding/IntersectionFinderAdder.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/noding/MCIndexNoder.inl, - source/headers/geos/noding/Makefile.am, - source/headers/geos/noding/snapround, - source/headers/geos/noding/snapround/.cvsignore, - source/headers/geos/noding/snapround/HotPixel.h, - source/headers/geos/noding/snapround/HotPixel.inl, - source/headers/geos/noding/snapround/MCIndexPointSnapper.h, - source/headers/geos/noding/snapround/MCIndexSnapRounder.h, - source/headers/geos/noding/snapround/MCIndexSnapRounder.inl, - source/headers/geos/noding/snapround/Makefile.am, - source/headers/geos/noding/snapround/SimpleSnapRounder.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/operation/Makefile.am, - source/index/chain/MonotoneChainBuilder.cpp, - source/noding/MCIndexNoder.cpp, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp: Headers split: - geomgraphindex.h, nodingSnapround.h - -2006-03-14 11:03 strk - - * source/geomgraph/Edge.cpp, source/geomgraph/EdgeList.cpp, - source/headers/geos/geomgraph/Edge.h, - source/headers/geos/geomgraph/EdgeList.h: Added operator<< for - Edge and EdgeList - -2006-03-14 00:37 strk - - * source/headers/geos/operation/buffer/Makefile.am: Fixed include - filenames - -2006-03-14 00:36 strk - - * source/operation/buffer/BufferOp.cpp: Reduced 'buffer' headers - inclusion - -2006-03-14 00:19 strk - - * source/headers/geos/opBuffer.h, - source/headers/geos/operation/buffer, - source/headers/geos/operation/buffer/.cvsignore, - source/headers/geos/operation/buffer/BufferBuilder.h, - source/headers/geos/operation/buffer/BufferOp.h, - source/headers/geos/operation/buffer/BufferSubgraph.h, - source/headers/geos/operation/buffer/DepthSegment.h, - source/headers/geos/operation/buffer/Makefile.am, - source/headers/geos/operation/buffer/OffsetCurveBuilder.h, - source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h, - source/headers/geos/operation/buffer/RightmostEdgeFinder.h, - source/headers/geos/operation/buffer/SubgraphDepthLocater.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/DepthSegment.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: opBuffer.h - split, streamlined headers in some (not all) files in - operation/buffer/ +2006-03-09 16:46 Sandro Santilli -2006-03-13 22:33 strk + * [r1163] geos::geom namespace definition, first pass at headers + split - * source/headers/geos/geom/LineSegment.h: Added missing forward - declarations +2006-03-09 16:18 Sandro Santilli -2006-03-13 21:54 strk + * [r1162] Fixed to allow tests from external build tree (thanks + Norman:) - * source/geom/Coordinate.cpp, source/geom/CoordinateSequence.cpp, - source/geom/CoordinateSequenceFactory.cpp, - source/geom/Geometry.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/Triangle.cpp: Streamlined headers inclusion. +2006-03-09 16:01 Sandro Santilli -2006-03-13 21:19 strk + * [r1161] Fixed debugging lines - * source/headers/geos/noding/ScaledNoder.h, - source/noding/ScaledNoder.cpp: Fixed bug in ScaledNoder scaling - mechanism (hugly code, due to CoordinateSequence visitor pattern - design). Tests are still failing so this possibly needs some - other fix. Streamlined includes by implementation file. +2006-03-09 15:50 Sandro Santilli -2006-03-13 21:14 strk + * [r1160] Fixed debugging lines, added missing header - * source/headers/geos/noding/SegmentString.h: Added missing forward - declarations +2006-03-09 15:47 Sandro Santilli -2006-03-13 21:13 strk + * [r1159] Fixed debugging lines - * source/headers/geos/geom/CoordinateFilter.h: Added comment about - possible refactoring +2006-03-09 15:39 Sandro Santilli -2006-03-11 16:58 strk + * [r1158] Fixed debugging lines - * source/headers/geos/opBuffer.h, - source/operation/buffer/OffsetCurveBuilder.cpp: Fixed bug in - OffsetCurveBuilder::getCoordinates. +2006-03-09 14:48 Sandro Santilli -2006-03-10 15:50 strk + * [r1157] Added missing INCLUDES line - * source/geomgraph/EdgeRing.cpp: Changed 'found null Directed Edge' - from an Assertion to a TopologyException, to give - 'precision-reducing' overlay operation a chance to handle it (it - seems to work) +2006-03-07 14:21 Sandro Santilli -2006-03-10 13:07 strk + * [r1156] Leak plugged, tweeked output to be nice with --sql-output - * source/geomgraph/EdgeRing.cpp: fine-tuned includes, reverted - Assert=>assert due to user-input based failure +2006-03-07 14:20 Sandro Santilli -2006-03-10 12:50 strk + * [r1155] Big deal of heap allocations reduction - * configure.in, tests/unit/Makefile.am, - tests/unit/envelope_class_test.cpp: boost detection code fix, - first UTF source for testing purposes +2006-03-07 14:18 Sandro Santilli -2006-03-10 12:43 strk + * [r1154] Profiler singleton implemented with a function-static + Profiler instance - * TODO: updated +2006-03-07 12:42 Sandro Santilli -2006-03-10 12:09 strk + * [r1153] addedvalidity test for a case with invalid input - * configure.in: Update configure script to work with new boost.m4 - file +2006-03-07 12:41 Sandro Santilli -2006-03-10 11:49 strk + * [r1152] Added --wkb-output and made --sql-output compatible with + -v - * macros/boost.m4: Updated boost detection macro +2006-03-07 11:22 Sandro Santilli -2006-03-10 11:41 strk + * [r1151] table name for sqlOutput normalized - * source/index/quadtree/QuadTreeNodeBase.cpp: Added missing - include (bug#56) +2006-03-07 11:06 Sandro Santilli -2006-03-10 11:10 strk + * [r1150] Added --sql-output switch for debugging - * configure.in, macros/boost.m4, tests/Makefile.am, tests/unit, - tests/unit/.cvsignore, tests/unit/Makefile.am: Initial boost - detection code +2006-03-07 10:46 Sandro Santilli -2006-03-10 11:09 strk + * [r1149] verbose validity errors - * source/operation/valid/ConnectedInteriorTester.cpp: Comments - cleanup +2006-03-06 21:27 Sandro Santilli -2006-03-10 10:48 strk + * [r1148] Cascading fixed after Unload definition moved to geos::io + namespace - * source/Makefile.vc: Bug #58 - Patch to makefile.vc after big - refactoring commit +2006-03-06 19:43 Sandro Santilli -2006-03-10 10:44 strk + * [r1147] Fixed Unload class definition namespace (geos::io) - * source/operation/buffer/BufferBuilder.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/precision/EnhancedPrecisionOp.cpp: Unreferenced exception - objects cleanup (#52) +2006-03-06 19:40 Sandro Santilli -2006-03-10 10:37 strk + * [r1146] geos::util namespace. New GeometryCollection::iterator + interface, many cleanups. - * source/geomgraph/index/SimpleSweepLineIntersector.cpp: Added - missing include (#55) +2006-03-06 15:23 Sandro Santilli -2006-03-10 10:34 strk + * [r1145] geos::io namespace - * source/geom/Polygon.cpp: Added missing include (#54) +2006-03-06 14:30 Sandro Santilli -2006-03-09 18:22 strk + * [r1143] Validity error include Coordinate - * tests/xmltester/Makefile.am, tests/xmltester/TestIsValid.xml: - Added isvalid test for latest validop patch +2006-03-06 13:27 Sandro Santilli -2006-03-09 18:18 strk + * [r1142] Cleaned up equalsExact - * source/headers/geos/opOverlay.h, source/headers/geos/opValid.h, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/valid/ConnectedInteriorTester.cpp: Added - memory-friendly MaximalEdgeRing::buildMinimalRings() - implementation. - Applied patch to IsValid operation from JTS-1.7.1 +2006-03-06 13:26 Sandro Santilli -2006-03-09 17:40 strk + * [r1141] Fixed equalsExact check, and also reduced tolerance - * source/headers/geos/opBuffer.h, - source/operation/buffer/OffsetCurveBuilder.cpp: Fixed bug#33 - (hopefully) - -2006-03-09 16:46 strk - - * configure.in, source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/geom/Coordinate.cpp, - source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateArraySequenceFactory.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateSequence.cpp, - source/geom/CoordinateSequenceFactory.cpp, - source/geom/Dimension.cpp, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, source/geom/Triangle.cpp, - source/geom/util/CoordinateOperation.cpp, - source/geom/util/GeometryEditor.cpp, - source/geom/util/Makefile.am, source/geomgraph/DirectedEdge.cpp, - source/geomgraph/Edge.cpp, source/geomgraph/EdgeEnd.cpp, - source/geomgraph/EdgeEndStar.cpp, source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/PlanarGraph.cpp, source/geomgraph/Quadrant.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineSegment.cpp, - source/headers/geos.h, source/headers/geos/Makefile.am, - source/headers/geos/algorithm, - source/headers/geos/algorithm/.cvsignore, - source/headers/geos/algorithm/CGAlgorithms.h, - source/headers/geos/algorithm/CentroidArea.h, - source/headers/geos/algorithm/CentroidLine.h, - source/headers/geos/algorithm/CentroidPoint.h, - source/headers/geos/algorithm/ConvexHull.h, - source/headers/geos/algorithm/ConvexHull.inl, - source/headers/geos/algorithm/HCoordinate.h, - source/headers/geos/algorithm/InteriorPointArea.h, - source/headers/geos/algorithm/InteriorPointLine.h, - source/headers/geos/algorithm/InteriorPointPoint.h, - source/headers/geos/algorithm/LineIntersector.h, - source/headers/geos/algorithm/MCPointInRing.h, - source/headers/geos/algorithm/Makefile.am, - source/headers/geos/algorithm/MinimumDiameter.h, - source/headers/geos/algorithm/NotRepresentableException.h, - source/headers/geos/algorithm/PointInRing.h, - source/headers/geos/algorithm/PointLocator.h, - source/headers/geos/algorithm/RobustDeterminant.h, - source/headers/geos/algorithm/SIRtreePointInRing.h, - source/headers/geos/algorithm/SimplePointInAreaLocator.h, - source/headers/geos/algorithm/SimplePointInRing.h, - source/headers/geos/geom, source/headers/geos/geom.h, - source/headers/geos/geom/.cvsignore, - source/headers/geos/geom/Coordinate.h, - source/headers/geos/geom/Coordinate.inl, - source/headers/geos/geom/CoordinateArraySequence.h, - source/headers/geos/geom/CoordinateArraySequenceFactory.h, - source/headers/geos/geom/CoordinateArraySequenceFactory.inl, - source/headers/geos/geom/CoordinateFilter.h, - source/headers/geos/geom/CoordinateSequence.h, - source/headers/geos/geom/CoordinateSequenceFactory.h, - source/headers/geos/geom/Dimension.h, - source/headers/geos/geom/Envelope.h, - source/headers/geos/geom/Envelope.inl, - source/headers/geos/geom/Geometry.h, - source/headers/geos/geom/Geometry.inl, - source/headers/geos/geom/GeometryCollection.h, - source/headers/geos/geom/GeometryCollection.inl, - source/headers/geos/geom/GeometryComponentFilter.h, - source/headers/geos/geom/GeometryFactory.h, - source/headers/geos/geom/GeometryFactory.inl, - source/headers/geos/geom/GeometryFilter.h, - source/headers/geos/geom/IntersectionMatrix.h, - source/headers/geos/geom/LineSegment.h, - source/headers/geos/geom/LineSegment.inl, - source/headers/geos/geom/LineString.h, - source/headers/geos/geom/LinearRing.h, - source/headers/geos/geom/Location.h, - source/headers/geos/geom/Makefile.am, - source/headers/geos/geom/MultiLineString.h, - source/headers/geos/geom/MultiLineString.inl, - source/headers/geos/geom/MultiPoint.h, - source/headers/geos/geom/MultiPolygon.h, - source/headers/geos/geom/MultiPolygon.inl, - source/headers/geos/geom/Point.h, - source/headers/geos/geom/Polygon.h, - source/headers/geos/geom/PrecisionModel.h, - source/headers/geos/geom/PrecisionModel.inl, - source/headers/geos/geom/Triangle.h, - source/headers/geos/geom/util, - source/headers/geos/geom/util/.cvsignore, - source/headers/geos/geom/util/CoordinateOperation.h, - source/headers/geos/geom/util/GeometryEditor.h, - source/headers/geos/geom/util/GeometryEditorOperation.h, - source/headers/geos/geom/util/LinearComponentExtracter.h, - source/headers/geos/geom/util/Makefile.am, - source/headers/geos/geom/util/PointExtracter.h, - source/headers/geos/geom/util/PolygonExtracter.h, - source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h, - source/headers/geos/geomUtil.h, source/headers/geos/geomgraph, - source/headers/geos/geomgraph.h, - source/headers/geos/geomgraph/.cvsignore, - source/headers/geos/geomgraph/Depth.h, - source/headers/geos/geomgraph/DirectedEdge.h, - source/headers/geos/geomgraph/DirectedEdge.inl, - source/headers/geos/geomgraph/DirectedEdgeStar.h, - source/headers/geos/geomgraph/Edge.h, - source/headers/geos/geomgraph/EdgeEnd.h, - source/headers/geos/geomgraph/EdgeEndStar.h, - source/headers/geos/geomgraph/EdgeIntersection.h, - source/headers/geos/geomgraph/EdgeIntersectionList.h, - source/headers/geos/geomgraph/EdgeList.h, - source/headers/geos/geomgraph/EdgeNodingValidator.h, - source/headers/geos/geomgraph/EdgeRing.h, - source/headers/geos/geomgraph/GeometryGraph.h, - source/headers/geos/geomgraph/GraphComponent.h, - source/headers/geos/geomgraph/Label.h, - source/headers/geos/geomgraph/Makefile.am, - source/headers/geos/geomgraph/Node.h, - source/headers/geos/geomgraph/NodeFactory.h, - source/headers/geos/geomgraph/NodeMap.h, - source/headers/geos/geomgraph/PlanarGraph.h, - source/headers/geos/geomgraph/Position.h, - source/headers/geos/geomgraph/Quadrant.h, - source/headers/geos/geomgraph/TopologyLocation.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, source/headers/geos/io.h, - source/headers/geos/noding, source/headers/geos/noding.h, - source/headers/geos/noding/.cvsignore, - source/headers/geos/noding/IntersectionAdder.h, - source/headers/geos/noding/IntersectionFinderAdder.h, - source/headers/geos/noding/IteratedNoder.h, - source/headers/geos/noding/MCIndexNoder.h, - source/headers/geos/noding/Makefile.am, - source/headers/geos/noding/Noder.h, - source/headers/geos/noding/NodingValidator.h, - source/headers/geos/noding/Octant.h, - source/headers/geos/noding/ScaledNoder.h, - source/headers/geos/noding/SegmentIntersector.h, - source/headers/geos/noding/SegmentNode.h, - source/headers/geos/noding/SegmentNodeList.h, - source/headers/geos/noding/SegmentString.h, - source/headers/geos/noding/SegmentString.inl, - source/headers/geos/noding/SimpleNoder.h, - source/headers/geos/noding/SinglePassNoder.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, - source/headers/geos/opOverlay.h, source/headers/geos/opRelate.h, - source/headers/geos/opValid.h, source/headers/geos/operation, - source/headers/geos/operation.h, - source/headers/geos/operation/.cvsignore, - source/headers/geos/operation/EndpointInfo.h, - source/headers/geos/operation/GeometryGraphOperation.h, - source/headers/geos/operation/IsSimpleOp.h, - source/headers/geos/operation/Makefile.am, - source/headers/geos/spatialIndex.h, source/headers/geos/util, - source/headers/geos/util.h, source/headers/geos/util/.cvsignore, - source/headers/geos/util/Assert.h, - source/headers/geos/util/AssertionFailedException.h, - source/headers/geos/util/CoordinateArrayFilter.h, - source/headers/geos/util/GEOSException.h, - source/headers/geos/util/GeometricShapeFactory.h, - source/headers/geos/util/IllegalArgumentException.h, - source/headers/geos/util/Makefile.am, - source/headers/geos/util/TopologyException.h, - source/headers/geos/util/UniqueCoordinateArrayFilter.h, - source/headers/geos/util/UnsupportedOperationException.h, - source/headers/geos/util/math.h, source/io/WKBReader.cpp, - source/io/WKBWriter.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/noding/SegmentString.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/util/Assert.cpp, tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/XMLTester.cpp, tests/xmltester/buffer.xml: - geos::geom namespace definition, first pass at headers split +2006-03-06 12:47 Sandro Santilli -2006-03-09 16:18 strk + * [r1140] TopologyValidationError error names (enum) renamed to + avoid conflicts. - * tests/xmltester/Makefile.am: Fixed to allow tests from external - build tree (thanks Norman:) +2006-03-06 12:16 Sandro Santilli -2006-03-09 16:01 strk + * [r1139] Added second case for Union - * source/geomgraph/Position.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp: Fixed - debugging lines +2006-03-06 12:11 Sandro Santilli -2006-03-09 15:50 strk + * [r1138] precision.h => geos/precision.h (#48) - * source/operation/overlay/OverlayOp.cpp: Fixed debugging lines, - added missing header +2006-03-06 11:39 Sandro Santilli -2006-03-09 15:47 strk + * [r1137] Added test extracted from data provided by Guillaume + Sueur - * source/operation/linemerge/LineMergeGraph.cpp: Fixed debugging - lines +2006-03-06 11:34 Sandro Santilli -2006-03-09 15:39 strk + * [r1136] Dropped unused/unmaintained/platform-problematic serial + version info for classes (#47) - * source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/noding/SegmentNodeList.cpp: Fixed debugging lines +2006-03-06 11:17 Sandro Santilli -2006-03-09 14:48 strk + * [r1135] added a compile-time option to get VERBOSE_EXCEPTION + (print args on exceptions) - * capi/Makefile.am: Added missing INCLUDES line +2006-03-06 11:17 Sandro Santilli -2006-03-07 14:21 strk + * [r1134] precision reducing overlayOp made compile-time optional - * tests/xmltester/XMLTester.cpp: Leak plugged, tweeked output to be - nice with --sql-output +2006-03-06 11:05 Sandro Santilli -2006-03-07 14:20 strk + * [r1133] Added input and output validity test facilities - * source/headers/geos/opBuffer.h, - source/operation/buffer/OffsetCurveBuilder.cpp: Big deal of heap - allocations reduction +2006-03-03 14:01 Sandro Santilli -2006-03-07 14:18 strk + * [r1132] Experimental precision-reducing overlayOp - * source/util/Profiler.cpp: Profiler singleton implemented with a - function-static Profiler instance +2006-03-03 13:50 Sandro Santilli -2006-03-07 12:42 strk + * [r1131] Cleaned up InteriorPointLine class - * tests/xmltester/buffer.xml: addedvalidity test for a case with - invalid input +2006-03-03 10:46 Sandro Santilli -2006-03-07 12:41 strk + * [r1130] Removed 'using namespace' from headers, added missing + headers in .cpp files, removed useless includes in headers + (bug#46) - * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Added - --wkb-output and made --sql-output compatible with -v +2006-03-02 18:17 Sandro Santilli -2006-03-07 11:22 strk + * [r1129] Added robustness testcases - * tests/xmltester/XMLTester.cpp: table name for sqlOutput - normalized +2006-03-02 16:22 Sandro Santilli -2006-03-07 11:06 strk + * [r1128] Updated copyright notice - * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Added - --sql-output switch for debugging +2006-03-02 16:21 Sandro Santilli -2006-03-07 10:46 strk + * [r1127] geos::precision namespace added - * tests/xmltester/XMLTester.cpp: verbose validity errors +2006-03-02 14:53 Sandro Santilli -2006-03-06 21:27 strk + * [r1126] SweepLineEvent::DELETE=>DELETE_EVENT, + INSERT=>INSERT_EVENT (#45) - * doc/example.cpp, source/headers/geos/geom.h, - source/headers/geos/opRelate.h, tests/xmltester/XMLTester.cpp: - Cascading fixed after Unload definition moved to geos::io - namespace +2006-03-02 14:34 Sandro Santilli -2006-03-06 19:43 strk + * [r1125] GeometryGraphOperation::li made a non-static member, and + not more a pointer - * source/headers/geos/unload.h: Fixed Unload class definition - namespace (geos::io) +2006-03-02 14:21 Sandro Santilli -2006-03-06 19:40 strk + * [r1124] DEBUG => GEOS_DEBUG [#44] - * capi/geos_c.cpp, doc/example.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/geom/Dimension.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/Makefile.am, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, - source/geom/util/GeometryEditor.cpp, - source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/GraphComponent.cpp, - source/geomgraph/PlanarGraph.cpp, source/geomgraph/Quadrant.cpp, - source/headers/geos/LineSegment.inl, - source/headers/geos/Makefile.am, source/headers/geos/geom, - source/headers/geos/geom.h, - source/headers/geos/geom/GeometryCollection.inl, - source/headers/geos/geom/LineSegment.inl, - source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, source/headers/geos/io.h, - source/headers/geos/opBuffer.h, source/headers/geos/profiler.h, - source/headers/geos/util.h, source/index/bintree/BinTreeNode.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, source/io/Unload.cpp, - source/io/WKBWriter.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/noding/IteratedNoder.cpp, - source/noding/NodingValidator.cpp, source/noding/Octant.cpp, - source/noding/SegmentNodeList.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineSequencer.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp, source/util/Assert.cpp, - source/util/AssertionFailedException.cpp, - source/util/CoordinateArrayFiter.cpp, - source/util/GEOSException.cpp, - source/util/GeometricShapeFactory.cpp, - source/util/IllegalArgumentException.cpp, - source/util/Profiler.cpp, - source/util/UniqueCoordinateArrayFilter.cpp, - source/util/UnsupportedOperationException.cpp, - tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/XMLTester.cpp: geos::util namespace. New - GeometryCollection::iterator interface, many cleanups. - -2006-03-06 15:23 strk - - * capi/geos_c.cpp, doc/example.cpp, source/geom/Geometry.cpp, - source/headers/geos/io.h, source/io/ByteOrderValues.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/Unload.cpp, source/io/WKBReader.cpp, - source/io/WKBWriter.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/io/Writer.cpp, - tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h, - tests/xmltester/buffer.xml: geos::io namespace - -2006-03-06 14:30 strk - - * capi/geos_c.cpp: Validity error include Coordinate - -2006-03-06 13:27 strk - - * source/geom/Polygon.cpp: Cleaned up equalsExact - -2006-03-06 13:26 strk - - * tests/xmltester/XMLTester.cpp: Fixed equalsExact check, and also - reduced tolerance - -2006-03-06 12:47 strk - - * source/headers/geos/opValid.h, - source/operation/valid/IsValidOp.cpp: TopologyValidationError - error names (enum) renamed to avoid conflicts. - -2006-03-06 12:16 strk - - * tests/xmltester/robustness.xml: Added second case for Union - -2006-03-06 12:11 strk - - * source/operation/overlay/OverlayOp.cpp: precision.h => - geos/precision.h (#48) - -2006-03-06 11:39 strk - - * tests/xmltester/robustness.xml: Added test extracted from data - provided by Guillaume Sueur - -2006-03-06 11:34 strk - - * source/headers/geos/geom.h: Dropped - unused/unmaintained/platform-problematic serial version info for - classes (#47) - -2006-03-06 11:17 strk - - * capi/geos_c.cpp: added a compile-time option to get - VERBOSE_EXCEPTION (print args on exceptions) - -2006-03-06 11:17 strk - - * source/operation/overlay/OverlayOp.cpp: precision reducing - overlayOp made compile-time optional - -2006-03-06 11:05 strk - - * tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: Added - input and output validity test facilities - -2006-03-03 14:01 strk - - * source/operation/overlay/OverlayOp.cpp: Experimental - precision-reducing overlayOp - -2006-03-03 13:50 strk - - * source/algorithm/InteriorPointLine.cpp, - source/headers/geos/geom.h, source/headers/geos/geosAlgorithm.h: - Cleaned up InteriorPointLine class - -2006-03-03 10:46 strk - - * capi/geos_c.cpp, doc/example.cpp, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/geom/Coordinate.cpp, - source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateSequence.cpp, source/geom/Dimension.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, - source/geom/util/GeometryEditor.cpp, source/geomgraph/Depth.cpp, - source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, source/geomgraph/Label.cpp, - source/geomgraph/Node.cpp, source/geomgraph/NodeMap.cpp, - source/geomgraph/PlanarGraph.cpp, source/geomgraph/Quadrant.cpp, - source/geomgraph/TopologyLocation.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/headers/geos/geom.h, source/headers/geos/geomUtil.h, - source/headers/geos/geomgraph.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, source/headers/geos/io.h, - source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, - source/headers/geos/opLinemerge.h, - source/headers/geos/opOverlay.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/opRelate.h, source/headers/geos/opValid.h, - source/headers/geos/operation.h, - source/headers/geos/planargraph.h, - source/headers/geos/profiler.h, source/headers/geos/util.h, - source/index/bintree/Bintree.cpp, - source/index/bintree/NodeBase.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, source/io/ByteOrderValues.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/Unload.cpp, source/io/WKBReader.cpp, - source/io/WKBWriter.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/io/Writer.cpp, - source/noding/IteratedNoder.cpp, source/noding/MCIndexNoder.cpp, - source/noding/NodingValidator.cpp, source/noding/Octant.cpp, - source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/noding/snapround/SimpleSnapRounder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance/ConnectedElementLocationFilter.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/linemerge/LineSequencer.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixCell.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp, - source/planargraph/planarSubgraph.cpp, - source/precision/CommonBitsOp.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp, - source/util/Assert.cpp, source/util/GEOSException.cpp, - source/util/GeometricShapeFactory.cpp, source/util/Profiler.cpp, - tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h: - Removed 'using namespace' from headers, added missing headers in - .cpp files, removed useless includes in headers (bug#46) - -2006-03-02 18:17 strk - - * tests/xmltester/Makefile.am, tests/xmltester/robustness.xml: - Added robustness testcases - -2006-03-02 16:22 strk - - * tests/xmltester/XMLTester.cpp: Updated copyright notice - -2006-03-02 16:21 strk - - * source/geomgraph/PlanarGraph.cpp, source/headers/geos/geomUtil.h, - source/headers/geos/precision.h, source/precision/CommonBits.cpp, - source/precision/CommonBitsOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp: - geos::precision namespace added - -2006-03-02 14:53 strk - - * source/geomgraph/index/SweepLineEvent.cpp, - source/headers/geos/geomgraphindex.h, - source/headers/geos/indexSweepline.h, - source/index/sweepline/indexSweepLineEvent.cpp: - SweepLineEvent::DELETE=>DELETE_EVENT, INSERT=>INSERT_EVENT (#45) - -2006-03-02 14:34 strk - - * source/headers/geos/geomgraph.h, source/headers/geos/operation.h, - source/io/Unload.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PolygonBuilder.cpp: - GeometryGraphOperation::li made a non-static member, and not more - a pointer - -2006-03-02 14:21 strk - - * capi/geos_c.cpp: DEBUG => GEOS_DEBUG [#44] - -2006-03-02 12:12 strk - - * source/algorithm/LineIntersector.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, - source/geomgraph/GeometryGraph.cpp, source/geomgraph/Node.cpp, - source/geomgraph/NodeMap.cpp, source/geomgraph/PlanarGraph.cpp, - source/geomgraph/Position.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/index/bintree/Bintree.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/noding/IteratedNoder.cpp, source/noding/MCIndexNoder.cpp, - source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/Polygonizer.cpp: Renamed DEBUG macros - to GEOS_DEBUG, all wrapped in #ifndef block to allow global - override (bug#43) +2006-03-02 12:12 Sandro Santilli + + * [r1123] Renamed DEBUG macros to GEOS_DEBUG, all wrapped in + #ifndef block to allow global override (bug#43) -2006-03-02 11:03 strk +2006-03-02 11:03 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Added assertion in relate test - handler + * [r1122] Added assertion in relate test handler -2006-03-02 11:00 strk +2006-03-02 11:00 Sandro Santilli - * source/geom/IntersectionMatrix.cpp, source/headers/geos/geom.h: - Changed IntersectionMatrix funx taking strings to take const - string& instead + * [r1121] Changed IntersectionMatrix funx taking strings to take + const string& instead -2006-03-02 10:25 strk +2006-03-02 10:25 Sandro Santilli - * tests/xmltester/XMLTester.cpp, tests/xmltester/buffer.xml: Added - support for FLOATING_SINGLE precisionmodel in XML tests + * [r1120] Added support for FLOATING_SINGLE precisionmodel in XML + tests -2006-03-02 10:03 strk +2006-03-02 10:03 Sandro Santilli - * capi/Makefile.am, capi/geos_c.cpp: Removed use of strdup, changed - GEOSjtsport() to return const char* instead of char* (is not - advertised in headerfile, so no compatibility problems) + * [r1119] Removed use of strdup, changed GEOSjtsport() to return + const char* instead of char* (is not advertised in headerfile, so + no compatibility problems) -2006-03-02 09:51 strk +2006-03-02 09:51 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Fixes in DEBUG lines - (bug#42) + * [r1118] Fixes in DEBUG lines (bug#42) -2006-03-02 09:49 strk +2006-03-02 09:49 Sandro Santilli - * source/headers/geos/LineSegment.inl: Changed LineSegment output - to use 'LINESEGMENT' label rather then 'LINESTRING' + * [r1117] Changed LineSegment output to use 'LINESEGMENT' label + rather then 'LINESTRING' -2006-03-02 09:49 strk +2006-03-02 09:49 Sandro Santilli - * source/headers/geos/timeval.h: WINCE implmentation of - gettimeofday (bug#40) + * [r1116] WINCE implmentation of gettimeofday (bug#40) -2006-03-02 09:46 strk +2006-03-02 09:46 Sandro Santilli - * source/operation/buffer/SubgraphDepthLocater.cpp: cleaned up - debugging lines + * [r1115] cleaned up debugging lines -2006-03-01 18:44 strk +2006-03-01 18:44 Sandro Santilli - * NEWS: added note about getInteriorPoint() possibly returning NULL + * [r1114] added note about getInteriorPoint() possibly returning + NULL -2006-03-01 18:43 strk +2006-03-01 18:43 Sandro Santilli - * capi/geos_c.cpp: Handled new NULL return from - Geometry::getInteriorPoint() + * [r1113] Handled new NULL return from Geometry::getInteriorPoint() -2006-03-01 18:37 strk +2006-03-01 18:37 Sandro Santilli - * source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/headers/geos/geom.h: - Geometry::createPointFromInternalCoord dropped (it's a + * [r1112] Geometry::createPointFromInternalCoord dropped (it's a duplication of GeometryFactory::createPointFromInternalCoord). Fixed bugs in InteriorPoint* and getCentroid() inserted by previous commits. -2006-03-01 18:19 strk +2006-03-01 18:19 Sandro Santilli + + * [r1111] getCentroid() test moved from testLeaksBig.xml to + TestCentroid.xml (synced with JTS-1.7) + +2006-03-01 18:15 Sandro Santilli + + * [r1110] Extracted getInteriorPoint() tests out of + testLeaksBig.xml and into TestInteriorPoint.xml (synced with + JTS-1.7). + +2006-03-01 18:14 Sandro Santilli + + * [r1109] Handled NULL return from Geometry::getInteriorPoint() + +2006-03-01 17:16 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/TestCentroid.xml, - tests/xmltester/testLeaksBig.xml: getCentroid() test moved from - testLeaksBig.xml to TestCentroid.xml (synced with JTS-1.7) - -2006-03-01 18:15 strk - - * tests/xmltester/Makefile.am, - tests/xmltester/TestInteriorPoint.xml, - tests/xmltester/testLeaksBig.xml: Extracted getInteriorPoint() - tests out of testLeaksBig.xml and into TestInteriorPoint.xml - (synced with JTS-1.7). - -2006-03-01 18:14 strk - - * tests/xmltester/XMLTester.cpp: Handled NULL return from - Geometry::getInteriorPoint() - -2006-03-01 17:16 strk - - * source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/MinimumDiameter.cpp, source/geom/Geometry.cpp, - source/geom/LineSegment.cpp, source/headers/geos/LineSegment.inl, - source/headers/geos/Makefile.am, source/headers/geos/geom.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/inline.h, source/headers/geos/opBuffer.h, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance/DistanceOp.cpp: LineSegment class made - final and optionally (compile-time) inlined. + * [r1108] LineSegment class made final and optionally + (compile-time) inlined. Reduced heap allocations in Centroid{Area,Line,Point} and InteriorPoint{Area,Line,Point}. -2006-03-01 16:42 strk +2006-03-01 16:42 Sandro Santilli - * source/Makefile.vc: Fixed include name (Bug#41) + * [r1107] Fixed include name (Bug#41) -2006-03-01 16:01 strk +2006-03-01 16:01 Sandro Santilli - * source/noding/SegmentNodeList.cpp: Fixed const correctness of - operator<<(ostream&, SegmentNodeList&) [bug#37] + * [r1106] Fixed const correctness of operator<<(ostream&, + SegmentNodeList&) [bug#37] -2006-03-01 13:49 strk +2006-03-01 13:49 Sandro Santilli - * source/index/quadtree/Quadtree.cpp: Fixed debug lines (bug#36) + * [r1105] Fixed debug lines (bug#36) -2006-03-01 13:48 strk +2006-03-01 13:48 Sandro Santilli - * tests/xmltester/Stackwalker.cpp: Fixed missing type specifier - (bug#35) + * [r1104] Fixed missing type specifier (bug#35) -2006-03-01 13:06 strk +2006-03-01 13:06 Sandro Santilli - * tests/xmltester/Makefile.am, tests/xmltester/XMLTester.cpp, - tests/xmltester/buffer.xml: Used FLOATING precision model in - buffer.xml test, added expected results, + * [r1103] Used FLOATING precision model in buffer.xml test, added + expected results, changed XMLTester.cpp to use a tolerance when comparing expected and obtained results from buffer operations. -2006-03-01 12:12 strk +2006-03-01 12:12 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Fixed a bug in verbose output - preventing geometry arg 'A' from being properly printed + * [r1102] Fixed a bug in verbose output preventing geometry arg 'A' + from being properly printed -2006-03-01 11:47 strk +2006-03-01 11:47 Sandro Santilli - * source/Makefile.vc: Applied patch by Mateusz Loskot (Bug #39) + * [r1101] Applied patch by Mateusz Loskot (Bug #39) -2006-03-01 10:48 strk +2006-03-01 10:48 Sandro Santilli - * source/headers/geos/opValid.h, - source/operation/valid/TopologyValidationError.cpp: Changed - static TopologyValidationError::errMsg[] from 'string' to 'const - char*' + * [r1100] Changed static TopologyValidationError::errMsg[] from + 'string' to 'const char*' to reduce dynamic memory allocations. -2006-03-01 10:39 strk +2006-03-01 10:39 Sandro Santilli - * source/headers/geos/unload.h, source/io/Unload.cpp: ctor and dtor - made private and inlined + * [r1099] ctor and dtor made private and inlined -2006-03-01 09:56 strk +2006-03-01 09:56 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Case insensitive operation names - and geometry arguments names (a/b) + * [r1098] Case insensitive operation names and geometry arguments + names (a/b) -2006-03-01 09:43 strk +2006-03-01 09:43 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Unrecognized tests always printed - (was only printed when verbose before) + * [r1097] Unrecognized tests always printed (was only printed when + verbose before) -2006-03-01 08:52 strk +2006-03-01 08:52 Sandro Santilli - * source/dirlist.mk: File to be included by Makefile.vc + * [r1096] File to be included by Makefile.vc -2006-02-28 19:22 strk +2006-02-28 19:22 Sandro Santilli - * source/headers/geos/opBuffer.h, - source/operation/buffer/OffsetCurveBuilder.cpp: Fixed in-place - definition of static members in OffsetCurveBuilder (bug#33) + * [r1095] Fixed in-place definition of static members in + OffsetCurveBuilder (bug#33) -2006-02-28 19:18 strk +2006-02-28 19:18 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Added cctype include (bug #34) + * [r1094] Added cctype include (bug #34) -2006-02-28 17:44 strk +2006-02-28 17:44 Sandro Santilli - * source/geom/Coordinate.cpp, source/headers/geos/geom.h, - source/headers/geos/noding.h, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, - source/operation/buffer/BufferBuilder.cpp: Added a check in - SegmentNode::addSplitEdge to prevent attempts + * [r1093] Added a check in SegmentNode::addSplitEdge to prevent + attempts to build SegmentString with less then 2 points. This is a temporary fix for the buffer.xml assertion failure, temporary as Martin Davis review would really be needed there. -2006-02-28 15:34 strk +2006-02-28 15:34 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Fix for VC++ builds (Bug #32) + * [r1092] Fix for VC++ builds (Bug #32) -2006-02-28 14:34 strk +2006-02-28 14:34 Sandro Santilli - * source/geom/Coordinate.cpp, - source/geom/CoordinateArraySequence.cpp, - source/geom/PrecisionModel.cpp, - source/geomgraph/DirectedEdge.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeList.cpp, - source/geomgraph/PlanarGraph.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/noding.h, source/headers/geos/opBuffer.h, - source/noding/MCIndexNoder.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - tests/xmltester/buffer.xml: Added many assertions and debugging - output hunting for a bug in BufferOp + * [r1091] Added many assertions and debugging output hunting for a + bug in BufferOp -2006-02-28 14:05 strk +2006-02-28 14:05 Sandro Santilli - * source/geomgraph/Edge.cpp: Fixed a bug in a debugging line + * [r1090] Fixed a bug in a debugging line -2006-02-28 13:08 strk +2006-02-28 13:08 Sandro Santilli - * source/headers/geos/noding.h: Added missing definition of - IteratedNoder::MAX_ITER, moving it to private access level + * [r1089] Added missing definition of IteratedNoder::MAX_ITER, + moving it to private access level -2006-02-28 11:15 strk +2006-02-28 11:15 Sandro Santilli - * tests/xmltester/markup/MarkupSTL.cpp: Fixed strchr use (Bug #30) + * [r1088] Fixed strchr use (Bug #30) -2006-02-28 11:11 strk +2006-02-28 11:11 Sandro Santilli - * capi/geos_c.cpp: Fixed typo in GEOSLenght function + * [r1087] Fixed typo in GEOSLenght function -2006-02-28 05:03 sgillies +2006-02-28 05:03 Sean Gillies - * NEWS, capi/geos_c.cpp, capi/geos_c.h.in: added GEOSLength(), - GEOSEnvelope() to the C API + * [r1085] added GEOSLength(), GEOSEnvelope() to the C API -2006-02-27 14:41 strk +2006-02-27 14:41 Sandro Santilli - * tests/xmltester/XMLTester.cpp: More verbose handling of - exceptions + * [r1076] More verbose handling of exceptions -2006-02-27 11:53 strk +2006-02-27 11:53 Sandro Santilli - * source/geomgraph/DirectedEdgeStar.cpp, - source/headers/geos/geomgraph.h: DirectedEdgeStar made more safe - trough assert(), use of standard iterator and + * [r1075] DirectedEdgeStar made more safe trough assert(), use of + standard iterator and dynamic casts substituting static ones. -2006-02-27 09:05 strk +2006-02-27 09:05 Sandro Santilli + + * [r1074] Doxygen comments, a few inlines and general cleanups - * source/algorithm/LineIntersector.cpp, - source/geom/PrecisionModel.cpp, - source/geomgraph/DirectedEdgeStar.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/opOverlay.h, source/headers/geos/operation.h, - source/operation/GeometryGraphOperation.cpp, - source/operation/overlay/OverlayOp.cpp: Doxygen comments, a few - inlines and general cleanups - -2006-02-24 16:20 strk - - * source/geom/PrecisionModel.cpp, - source/headers/geos/nodingSnapround.h, - source/headers/geos/util.h, source/util/Makefile.am, - source/util/math.cpp, tests/xmltester/testLeaksBig.xml: Added - Mateusz implementation of round() in a new math.cpp file +2006-02-24 16:20 Sandro Santilli + + * [r1073] Added Mateusz implementation of round() in a new math.cpp + file named sym_round(). Changed use of rint_vc to sym_round in PrecisionModel. Moved rint_vc to math.cpp (geos::util namespace), to be renamed to something more meaningful -2006-02-24 15:39 strk +2006-02-24 15:39 Sandro Santilli - * source/geom/Coordinate.cpp, source/headers/geos/geom.h, - source/headers/geos/opLinemerge.h, - source/headers/geos/planargraph.h, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/planargraph/planarEdge.cpp, - source/planargraph/planarNode.cpp, tests/xmltester/Makefile.am: - - operator>> for Coordinate, planarNode and planarEdge + * [r1072] - operator>> for Coordinate, planarNode and planarEdge - Fixed bug in planarGraphComponent::setMarked - Added linemerge.xml test (single test, should grow a bit) -2006-02-24 12:19 strk +2006-02-24 12:19 Sandro Santilli - * doc/Doxyfile.in: Fixed typo in config file + * [r1071] Fixed typo in config file -2006-02-23 23:17 strk +2006-02-23 23:17 Sandro Santilli - * source/geom/Coordinate.cpp, source/geom/Envelope.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineSegment.cpp, - source/geom/PrecisionModel.cpp, source/headers/geos/geom.h, - source/headers/geos/indexSweepline.h, - source/headers/geos/opLinemerge.h, - source/noding/MCIndexNoder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/util/GeometricShapeFactory.cpp: - - Coordinate::nullCoordinate made private + * [r1070] - Coordinate::nullCoordinate made private - Simplified Coordinate inline definitions - LMGeometryComponentFilter definition moved to LineMerger.cpp file - Misc cleanups -2006-02-23 20:32 strk +2006-02-23 20:32 Sandro Santilli - * tests/xmltester/XMLTester.cpp: Added support for LineMerge tests. - Exception printed on stderr. + * [r1069] Added support for LineMerge tests. Exception printed on + stderr. -2006-02-23 20:05 strk +2006-02-23 20:05 Sandro Santilli - * source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/noding/MCIndexNoder.cpp, - source/noding/SimpleNoder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp: Fixed bug in MCIndexNoder - constructor making memory checker go crazy, more + * [r1068] Fixed bug in MCIndexNoder constructor making memory + checker go crazy, more doxygen-friendly comments, miscellaneous cleanups -2006-02-23 20:03 strk +2006-02-23 20:03 Sandro Santilli - * doc/Doxyfile.in: updated to also show undocumented methods + * [r1067] updated to also show undocumented methods -2006-02-23 11:54 strk +2006-02-23 11:54 Sandro Santilli - * source/geom/MultiLineString.cpp, - source/geom/TopologyException.cpp, source/geom/Triangle.cpp, - source/geomgraph/Edge.cpp, source/geomgraph/EdgeList.cpp, - source/geomgraph/GeometryGraph.cpp, source/geomgraph/NodeMap.cpp, - source/geomgraph/PlanarGraph.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, - source/headers/geos/spatialIndex.h, source/headers/geos/util.h, - source/index/bintree/BinTreeNode.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, source/io/Unload.cpp, - source/noding/MCIndexNoder.cpp, source/noding/ScaledNoder.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/util/Assert.cpp, source/util/AssertionFailedException.cpp, - source/util/GEOSException.cpp, - source/util/IllegalArgumentException.cpp, - source/util/Makefile.am, - source/util/UnsupportedOperationException.cpp, - tests/xmltester/buffer.xml: - MCIndexPointSnapper + * [r1066] - MCIndexPointSnapper - MCIndexSnapRounder - SnapRounding BufferOp - ScaledNoder @@ -8764,252 +7875,30 @@ - Added an XML test for snaprounding buffer (shows leaks, working on it) -2006-02-21 16:53 strk +2006-02-21 16:53 Sandro Santilli + + * [r1065] MCIndexPointSnapper, MCIndexSnapRounder + +2006-02-20 21:04 Sandro Santilli - * source/algorithm/MCPointInRing.cpp, - source/headers/geos/indexChain.h, source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/noding/MCIndexNoder.cpp, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/noding/snapround/SimpleSnapRounder.cpp: - MCIndexPointSnapper, MCIndexSnapRounder - -2006-02-20 21:04 strk - - * source/headers/geos/geomgraph.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, source/headers/geos/noding.h, - source/headers/geos/spatialIndex.h, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/STRtree.cpp: - namespace geos::index + * [r1064] - namespace geos::index - SpatialIndex interface synced -2006-02-20 10:14 strk +2006-02-20 10:14 Sandro Santilli - * ChangeLog, doc/Doxyfile.in, source/algorithm/MCPointInRing.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/geom/Geometry.cpp, source/geomgraph/EdgeList.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexBintree.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/indexSweepline.h, source/headers/geos/io.h, - source/headers/geos/noding.h, source/headers/geos/opBuffer.h, - source/headers/geos/opDistance.h, - source/headers/geos/opOverlay.h, source/headers/geos/opRelate.h, - source/headers/geos/opValid.h, source/headers/geos/operation.h, - source/headers/geos/planargraph.h, - source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, source/index/bintree/Key.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/io/Unload.cpp, source/noding/MCIndexNoder.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp: - - namespaces geos::index::* + * [r1063] - namespaces geos::index::* - Doxygen documentation cleanup -2006-02-19 19:46 strk +2006-02-19 19:46 Sandro Santilli - * NEWS, capi/geos_c.cpp, configure.in, doc/example.cpp, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/geom/Coordinate.cpp, source/geom/Geometry.cpp, - source/geom/LineSegment.cpp, source/geom/LineString.cpp, - source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, - source/geom/Polygon.cpp, source/geomgraph/Depth.cpp, - source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, - source/geomgraph/EdgeNodingValidator.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/GraphComponent.cpp, source/geomgraph/Label.cpp, - source/geomgraph/Node.cpp, source/geomgraph/NodeFactory.cpp, - source/geomgraph/NodeMap.cpp, source/geomgraph/PlanarGraph.cpp, - source/geomgraph/Position.cpp, source/geomgraph/Quadrant.cpp, - source/geomgraph/TopologyLocation.cpp, - source/geomgraph/index/Makefile.am, - source/geomgraph/index/MonotoneChain.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/geomgraph/index/SweepLineSegment.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, - source/headers/geos/opLinemerge.h, - source/headers/geos/opOverlay.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/opPredicate.h, - source/headers/geos/opRelate.h, source/headers/geos/opValid.h, - source/headers/geos/operation.h, - source/headers/geos/planargraph.h, source/index/Makefile.am, - source/index/bintree, source/index/bintree/.cvsignore, - source/index/bintree/Makefile.am, source/index/chain, - source/index/chain/.cvsignore, source/index/chain/Makefile.am, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/quadtree, source/index/quadtree/.cvsignore, - source/index/quadtree/Makefile.am, source/index/strtree, - source/index/strtree/.cvsignore, - source/index/strtree/Makefile.am, source/index/sweepline, - source/index/sweepline/.cvsignore, - source/index/sweepline/Makefile.am, source/io/Unload.cpp, - source/noding/IntersectionAdder.cpp, - source/noding/IntersectionFinderAdder.cpp, - source/noding/IteratedNoder.cpp, source/noding/MCIndexNoder.cpp, - source/noding/NodingValidator.cpp, source/noding/Octant.cpp, - source/noding/ScaledNoder.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/noding/snapround/SimpleSnapRounder.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/DepthSegment.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance/ConnectedElementLocationFilter.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/GeometryLocation.cpp, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/linemerge/LineSequencer.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixCell.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/predicate/RectangleIntersects.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarEdge.cpp, - source/planargraph/planarGraphComponent.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp, - source/planargraph/planarSubgraph.cpp, - tests/xmltester/XMLTester.cpp: Packages <-> namespaces mapping - for most GEOS internal code (uncomplete, but working). Dir-level - libs for index/ subdirs. - -2006-02-18 21:08 strk - - * NEWS, source/geom/Geometry.cpp, - source/geomgraph/EdgeNodingValidator.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/noding/MCIndexNoder.cpp, - source/noding/Makefile.am, source/noding/NodingValidator.cpp, - source/noding/ScaledNoder.cpp, source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/noding/snapround/SimpleSnapRounder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: - new - CoordinateSequence::applyCoordinateFilter method (slow but - useful) + * [r1062] Packages <-> namespaces mapping for most GEOS internal + code (uncomplete, but working). Dir-level libs for index/ + subdirs. + +2006-02-18 21:08 Sandro Santilli + + * [r1061] - new CoordinateSequence::applyCoordinateFilter method + (slow but useful) - SegmentString::getCoordinates() doesn't return a clone anymore. - SegmentString::getCoordinatesRO() obsoleted. - SegmentString constructor does not promises constness of passed @@ -9019,169 +7908,79 @@ - Simplified internal interaces of OffsetCurveBuilder and OffsetCurveSetBuilder -2006-02-16 08:41 strk +2006-02-16 08:41 Sandro Santilli - * source/noding/NodingValidator.cpp: Fixed include: "util.h" => - "geos/util.h" + * [r1060] Fixed include: "util.h" => "geos/util.h" -2006-02-16 08:41 strk +2006-02-16 08:41 Sandro Santilli - * source/headers/geos/nodingSnapround.h: added include for - round() + * [r1059] added include for round() -2006-02-16 08:19 strk +2006-02-16 08:19 Sandro Santilli - * source/noding/IntersectionAdder.cpp: Missed from last commit + * [r1058] Missed from last commit -2006-02-15 22:48 sgillies +2006-02-15 22:48 Sean Gillies - * capi/geos_c.h.in: added GEOSGeomType + * [r1057] added GEOSGeomType -2006-02-15 17:19 strk +2006-02-15 17:19 Sandro Santilli - * NEWS, source/geomgraph/EdgeNodingValidator.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/noding.h, source/noding/NodingValidator.cpp, - source/noding/snapround/SimpleSnapRounder.cpp: NodingValidator - synced with JTS-1.7, added CoordinateSequence::operator[] + * [r1056] NodingValidator synced with JTS-1.7, added + CoordinateSequence::operator[] and size() to easy port maintainance. -2006-02-15 14:59 strk +2006-02-15 14:59 Sandro Santilli - * source/headers/geos/noding.h, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp: JTS-1.7 sync for: + * [r1055] JTS-1.7 sync for: noding/SegmentNode.cpp noding/SegmentNodeList.cpp noding/SegmentString.cpp -2006-02-14 13:28 strk +2006-02-14 13:28 Sandro Santilli - * NEWS, configure.in, source/algorithm/LineIntersector.cpp, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexChain.h, source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, - source/headers/geos/spatialIndex.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/noding/IntersectionFinderAdder.cpp, - source/noding/IteratedNoder.cpp, source/noding/MCIndexNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, source/noding/Makefile.am, - source/noding/Noder.cpp, source/noding/NodingValidator.cpp, - source/noding/Octant.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/nodingSegmentIntersector.cpp, - source/noding/snapround, source/noding/snapround/.cvsignore, - source/noding/snapround/HotPixel.cpp, - source/noding/snapround/MCIndexPointSnapper.cpp, - source/noding/snapround/MCIndexSnapRounder.cpp, - source/noding/snapround/Makefile.am, - source/noding/snapround/SegmentSnapper.cpp, - source/noding/snapround/SimpleSegmentStringsSnapper.cpp, - source/noding/snapround/SimpleSnapRounder.cpp, - source/noding/snapround/SnapRounder.cpp, - source/operation/buffer/BufferBuilder.cpp, - tests/xmltester/XMLTester.cpp: New SnapRounding code ported from - JTS-1.7 (not complete yet). + * [r1054] New SnapRounding code ported from JTS-1.7 (not complete + yet). Buffer op optimized by using new snaprounding code. Leaks fixed in XMLTester. -2006-02-09 15:52 strk +2006-02-09 15:52 Sandro Santilli - * capi/geos_c.cpp, capi/geos_c.cpp.bak, configure.in, - doc/example.cpp, source/algorithm/CGAlgorithms.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/examples/CoordinateSequencesExample.cpp, - source/examples/CustomCoordinateSequenceExample.cpp, - source/examples/CustomPointCoordinateSequence.cpp, - source/geom/Dimension.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/Location.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, - source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, - source/geomgraph/EdgeEndStar.cpp, source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/Quadrant.cpp, - source/headers/geos/geosAlgorithm.h, source/headers/geos/io.h, - source/headers/geos/opBuffer.h, source/headers/geos/util.h, - source/index/quadtree/DoubleBits.cpp, - source/io/ParseException.cpp, source/io/WKBReader.cpp, - source/io/WKBWriter.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/noding/IteratedNoder.cpp, - source/noding/NodingValidator.cpp, - source/noding/SegmentNodeList.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp, source/util/Assert.cpp, - source/util/AssertionFailedException.cpp, - source/util/GEOSException.cpp, - source/util/IllegalArgumentException.cpp, - source/util/UnsupportedOperationException.cpp, - tests/xmltester/CTS.cpp, tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/XMLTester.cpp: GEOSException derived from - std::exception; always thrown and cought by const ref. + * [r1053] GEOSException derived from std::exception; always thrown + and cought by const ref. -2006-02-09 15:41 sgillies +2006-02-09 15:41 Sean Gillies - * configure.in: incrementing C API patch level + * [r1052] incrementing C API patch level -2006-02-09 14:49 sgillies +2006-02-09 14:49 Sean Gillies - * capi/geos_c.cpp, capi/geos_c.h.in, capi/geostest.c: added - GEOSArea() to the C API + * [r1051] added GEOSArea() to the C API -2006-02-09 13:44 strk +2006-02-09 13:44 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geos/geom.h, - source/io/WKBReader.cpp: Added support for SRID in input WKB, - undeprecated Geometry::setSRID + * [r1050] Added support for SRID in input WKB, undeprecated + Geometry::setSRID and Geometry::getSRID 2006-02-09 01:47 frank - * source/io/WKBReader.cpp: Botched last fix. Hopefully this is - better. + * [r1049] Botched last fix. Hopefully this is better. -2006-02-09 01:13 strk +2006-02-09 01:13 Sandro Santilli - * ChangeLog, source/operation/linemerge/LineSequencer.cpp: Added - missing include + * [r1048] Added missing include 2006-02-09 00:06 frank - * ChangeLog, source/io/WKBReader.cpp: Fixed support for consuming - WKB for 'POLYGON EMPTY' with numRings==0. + * [r1047] Fixed support for consuming WKB for 'POLYGON EMPTY' with + numRings==0. http://bugzilla.remotesensing.org/show_bug.cgi?id=1064 -2006-02-08 17:18 strk +2006-02-08 17:18 Sandro Santilli - * NEWS, source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/LineString.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/headers/geos/geom.h, - source/headers/geos/io.h, source/headers/geos/opBuffer.h, - source/headers/geos/opValid.h, source/io/WKTWriter.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/valid/IsValidOp.cpp: - New - WKTWriter::toLineString and ::toPoint convenience methods + * [r1046] - New WKTWriter::toLineString and ::toPoint convenience + methods - New IsValidOp::setSelfTouchingRingFormingHoleValid method - New Envelope::centre() - New Envelope::intersection(Envelope) @@ -9192,20 +7991,13 @@ - Obsoleted toInternalGeometry/fromInternalGeometry - More const-correctness in Buffer "package" -2006-02-08 13:07 strk +2006-02-08 13:07 Sandro Santilli - * NEWS: Added note about new LineSequencer class + * [r1045] Added note about new LineSequencer class -2006-02-08 12:59 strk +2006-02-08 12:59 Sandro Santilli - * source/headers/geos/geom.h, source/headers/geos/opLinemerge.h, - source/headers/geos/planargraph.h, - source/operation/linemerge/LineSequencer.cpp, - source/operation/linemerge/Makefile.am, - source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarSubgraph.cpp: - NEW - Geometry::applyComponentFilter() templated method + * [r1044] - NEW Geometry::applyComponentFilter() templated method - Changed Geometry::getGeometryN() to take unsigned int and getNumGeometries to return unsigned int. @@ -9219,240 +8011,80 @@ - Added const versions of some planarDirectedEdgeStar methods. - Added containers typedefs for planarDirectedEdgeStar -2006-02-07 13:26 strk +2006-02-07 13:26 Sandro Santilli - * source/Makefile.am: Added missing geomgraph SUBDIR + * [r1043] Added missing geomgraph SUBDIR -2006-02-07 12:02 strk +2006-02-07 12:02 Sandro Santilli - * tests/xmltester/Makefile.am: Removed TestConvexHull.xml file - (already included in testLeaksBig.xml + * [r1042] Removed TestConvexHull.xml file (already included in + testLeaksBig.xml -2006-02-06 11:27 strk +2006-02-06 11:27 Sandro Santilli - * tests, tests/.cvsignore: new entry + * [r1041] new entry -2006-02-05 17:14 strk +2006-02-05 17:14 Sandro Santilli - * NEWS, source/headers/geos/planargraph.h, - source/planargraph/Makefile.am, source/planargraph/algorithm, - source/planargraph/algorithm/ConnectedSubgraphFinder.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp: - New - ConnectedSubgraphFinder class. + * [r1040] - New ConnectedSubgraphFinder class. - More iterators returning methods, inlining and cleanups in planargraph. -2006-02-04 00:54 strk +2006-02-04 00:54 Sandro Santilli - * ChangeLog, NEWS, source/headers/geos/geom.h, - source/headers/geos/geomgraph.h, - source/headers/geos/planargraph.h, - source/planargraph/planarSubgraph.cpp, swig/ruby/Makefile.am, - tests/xmltester/Makefile.am: - Doxygen dox updated + * [r1039] - Doxygen dox updated - LineStringLT struct moved from geomgraph.h to geom.h - New planarSubgraph class - Fixed ruby Makefiles to avoid running tests when disabled - Renamed TESTS variable to XMLTESTS to not confuse 'make check' rule -2006-02-03 09:26 strk +2006-02-03 09:26 Sandro Santilli - * source/geom/util/ShortCircuitedGeometryVisitor.cpp: Added missing - file + * [r1038] Added missing file -2006-02-02 02:20 strk +2006-02-02 02:20 Sandro Santilli - * source/geom/Polygon.cpp: Fixed bug in isRectangle() failing to - detect rectangles. + * [r1037] Fixed bug in isRectangle() failing to detect rectangles. -2006-02-01 22:22 strk +2006-02-01 22:22 Sandro Santilli - * NEWS: updated + * [r1036] updated -2006-02-01 22:21 strk +2006-02-01 22:21 Sandro Santilli - * source/geom/Geometry.cpp, source/geom/Polygon.cpp, - source/geom/util/Makefile.am, source/headers/geos/geom.h, - source/headers/geos/geomUtil.h, - source/headers/geos/opPredicate.h, - source/headers/geos/planargraph.h, source/operation/Makefile.am, - source/operation/predicate/Makefile.am, - source/planargraph/planarGraphComponent.cpp: - Added - rectangle-based optimizations of intersects() and contains() ops + * [r1035] - Added rectangle-based optimizations of intersects() and + contains() ops - Inlined all planarGraphComponent class -2006-01-31 21:42 strk +2006-01-31 21:42 Sandro Santilli - * source/Makefile.vc: Added DepthSegment object + * [r1034] Added DepthSegment object -2006-01-31 21:36 strk +2006-01-31 21:36 Sandro Santilli - * swig/geos.i: Fixes error in calling read_hex from scripting - languages. + * [r1033] Fixes error in calling read_hex from scripting languages. -2006-01-31 21:35 strk - - * capi/Makefile.in: Erroneusly ended in CVS - -2006-01-31 21:17 strk - - * source/operation/predicate/RectangleContains.cpp: Added missing - file from last commits - -2006-01-31 19:11 strk - - * source/bigtest: Another left-over from cleanups - -2006-01-31 19:10 strk - - * source/capi, source/test: Removed leftover files in obsoleted - dirs - -2006-01-31 19:07 strk - - * Makefile.am, NEWS, README, capi, capi/.cvsignore, - capi/Makefile.am, capi/Makefile.in, capi/geos_c.cpp, - capi/geos_c.cpp.bak, capi/geos_c.h.in, capi/geostest.c, - capi/test.wkt, configure.in, doc/Doxyfile.in, doc/Makefile.am, - doc/example.cpp, source, source/.cvsignore, source/Makefile.am, - source/algorithm, source/algorithm/.cvsignore, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/MCPointInRing.cpp, source/algorithm/Makefile.am, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/bigtest/Makefile.am, - source/bigtest/TestSweepLineSpeed.cpp, source/bigtest/bigtest.h, - source/capi/Makefile.am, source/capi/geos_c.cpp, - source/capi/geos_c.h.in, source/capi/geostest.c, - source/capi/test.wkt, source/examples/CPCLException.cpp, - source/examples/CoordinateSequencesExample.cpp, - source/geom/Coordinate.cpp, - source/geom/CoordinateArraySequence.cpp, - source/geom/CoordinateArraySequenceFactory.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateSequence.cpp, - source/geom/DefaultCoordinateSequence.cpp, - source/geom/DefaultCoordinateSequenceFactory.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Makefile.am, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, source/geom/util, - source/geom/util/.cvsignore, source/geom/util/GeometryEditor.cpp, - source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/Makefile.am, - source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp, source/geomgraph, - source/geomgraph/.cvsignore, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, source/geomgraph/Makefile.am, - source/geomgraph/PlanarGraph.cpp, source/geomgraph/index, - source/geomgraph/index/.cvsignore, - source/geomgraph/index/Makefile.am, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/headers/geos/Makefile.am, source/headers/geos/geom.h, - source/headers/geos/geomUtil.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/opDistance.h, - source/headers/geos/opPredicate.h, - source/headers/geos/precision.h, source/headers/geos/util.h, - source/index, source/index/.cvsignore, source/index/Makefile.am, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/indexMonotoneChain.cpp, source/io, - source/io/.cvsignore, source/io/Makefile.am, - source/io/Unload.cpp, source/io/WKTReader.cpp, source/io/markup, - source/noding, source/noding/.cvsignore, - source/noding/MCQuadtreeNoder.cpp, source/noding/Makefile.am, - source/noding/NodingValidator.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/nodingSegmentIntersector.cpp, - source/noding/snapround/SimpleSegmentStringsSnapper.cpp, - source/operation, source/operation/.cvsignore, - source/operation/Makefile.am, source/operation/buffer, - source/operation/buffer/.cvsignore, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/Makefile.am, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance, source/operation/distance/.cvsignore, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/Makefile.am, - source/operation/linemerge, - source/operation/linemerge/.cvsignore, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/Makefile.am, source/operation/overlay, - source/operation/overlay/.cvsignore, - source/operation/overlay/Makefile.am, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize, - source/operation/polygonize/.cvsignore, - source/operation/polygonize/Makefile.am, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/predicate, - source/operation/predicate/.cvsignore, - source/operation/predicate/Makefile.am, - source/operation/predicate/RectangleIntersects.cpp, - source/operation/predicate/SegmentIntersectionTester.cpp, - source/operation/relate, source/operation/relate/.cvsignore, - source/operation/relate/Makefile.am, source/operation/valid, - source/operation/valid/.cvsignore, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/Makefile.am, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/planargraph, source/planargraph/.cvsignore, - source/planargraph/Makefile.am, source/precision, - source/precision/.cvsignore, source/precision/Makefile.am, - source/precision/SimpleGeometryPrecisionReducer.cpp, - source/test/CTS.cpp, source/test/Makefile.am, - source/test/SimpleWKTTester.cpp, source/test/Stackwalker.cpp, - source/test/Stackwalker.h, source/test/WKTIn, source/test/WKTOut, - source/test/XMLTester.cpp, source/test/XMLTester.h, - source/test/hexwkb.xml, source/test/test.xml, - source/test/testLeaksBig.xml, source/util, - source/util/.cvsignore, source/util/CoordinateArrayFiter.cpp, - source/util/GeometricShapeFactory.cpp, source/util/Makefile.am, - source/util/UniqueCoordinateArrayFilter.cpp, tests, - tests/Makefile.am, tests/bigtest, tests/bigtest/.cvsignore, - tests/bigtest/GeometryTestFactory.cpp, tests/bigtest/Makefile.am, - tests/bigtest/TestSweepLineSpeed.cpp, tests/bigtest/bigtest.h, - tests/xmltester, tests/xmltester/.cvsignore, - tests/xmltester/CTS.cpp, tests/xmltester/Makefile.am, - tests/xmltester/SimpleWKTTester.cpp, - tests/xmltester/Stackwalker.cpp, tests/xmltester/Stackwalker.h, - tests/xmltester/WKTIn, tests/xmltester/WKTOut, - tests/xmltester/XMLTester.cpp, tests/xmltester/XMLTester.h, - tests/xmltester/hexwkb.xml, tests/xmltester/markup, - tests/xmltester/markup/MarkupSTL.cpp, - tests/xmltester/markup/MarkupSTL.h, tests/xmltester/test.xml, - tests/xmltester/testLeaksBig.xml: - Renamed - DefaultCoordinateSequence to CoordinateArraySequence. +2006-01-31 21:35 Sandro Santilli + + * [r1032] Erroneusly ended in CVS + +2006-01-31 21:17 Sandro Santilli + + * [r1031] Added missing file from last commits + +2006-01-31 19:11 Sandro Santilli + + * [r1030] Another left-over from cleanups + +2006-01-31 19:10 Sandro Santilli + + * [r1029] Removed leftover files in obsoleted dirs + +2006-01-31 19:07 Sandro Santilli + + * [r1028] - Renamed DefaultCoordinateSequence to + CoordinateArraySequence. - Moved GetNumGeometries() and GetGeometryN() interfaces from GeometryCollection to Geometry class. - Added getAt(int pos, Coordinate &to) funtion to @@ -9478,31 +8110,25 @@ 2006-01-30 21:59 frank - * source/algorithm/LineIntersector.cpp: yikes! comment out debug - define again + * [r1027] yikes! comment out debug define again 2006-01-30 21:58 frank - * ChangeLog, source/algorithm/LineIntersector.cpp: fixed up some - debug messages + * [r1026] fixed up some debug messages -2006-01-30 16:55 strk +2006-01-30 16:55 Sandro Santilli - * macros/ac_python_devel.m4, swig/python/Makefile.am, - swig/python/example.py, swig/python/geos.pth, - swig/python/python.i, swig/ruby/test/geos_tests.rb: More patches - from Charlie Savage + * [r1025] More patches from Charlie Savage -2006-01-27 08:58 strk +2006-01-27 08:58 Sandro Santilli - * configure.in: Python and Ruby build disable by default (until - we've properly tested it) + * [r1024] Python and Ruby build disable by default (until we've + properly tested it) -2006-01-27 08:25 strk +2006-01-27 08:25 Sandro Santilli - * macros/ac_python_devel.m4, swig/python/Makefile.am, - swig/ruby/ruby.i: * Ruby - removes dependency on renames.i file - which is no longer deleted + * [r1023] * Ruby - removes dependency on renames.i file which is no + longer deleted and was removed from CVS last week * Python - fixes autoconf search for Python include path * Python - fixes autoconf search for Python lib directory on @@ -9511,552 +8137,410 @@ extension can be built -2006-01-22 22:48 strk +2006-01-22 22:48 Sandro Santilli - * TODO: Added Safe's performance improvement idea for + * [r1022] Added Safe's performance improvement idea for CoordinateSequence -2006-01-21 16:11 strk +2006-01-21 16:11 Sandro Santilli - * NEWS: updated + * [r1021] updated -2006-01-21 16:08 strk +2006-01-21 16:08 Sandro Santilli - * source/io/ByteOrderValues.cpp: Fixed integer conversion bug - (ported from JTS-1.7). + * [r1020] Fixed integer conversion bug (ported from JTS-1.7). Added last port information. -2006-01-21 16:04 strk +2006-01-21 16:04 Sandro Santilli - * source/test/hexwkb.xml: Added endian specification to case - descriptions. + * [r1019] Added endian specification to case descriptions. All tests are Little Endian, should add the same tests with Big Endian format. -2006-01-20 19:28 strk +2006-01-20 19:28 Sandro Santilli - * source/operation/overlay/PolygonBuilder.cpp: Updated port - information + * [r1018] Updated port information -2006-01-20 19:21 strk +2006-01-20 19:21 Sandro Santilli - * source/operation/overlay/PolygonBuilder.cpp: Fixed bug #13 + * [r1017] Fixed bug #13 -2006-01-20 19:11 strk +2006-01-20 19:11 Sandro Santilli - * source/operation/valid/IsValidOp.cpp, - source/operation/valid/TopologyValidationError.cpp: Updated last - port info + * [r1016] Updated last port info -2006-01-20 17:20 strk +2006-01-20 17:20 Sandro Santilli - * configure.in, macros/ruby.m4, swig/python/Makefile.am, - swig/ruby/Makefile.am, swig/ruby/example.rb, swig/ruby/renames.i, - swig/ruby/test/Makefile.am, swig/ruby/test/example.rb, - swig/ruby/test/test_envelope.rb: More SWIG/python/ruby patches + * [r1015] More SWIG/python/ruby patches -2006-01-20 00:59 strk +2006-01-20 00:59 Sandro Santilli - * source/io/WKBReader.cpp: Better debugging + * [r1014] Better debugging -2006-01-20 00:59 strk +2006-01-20 00:59 Sandro Santilli - * source/test/hexwkb.xml: PrecisionModel made FLOATING + * [r1013] PrecisionModel made FLOATING -2006-01-18 17:49 strk +2006-01-18 17:49 Sandro Santilli - * source/test/XMLTester.cpp, source/test/XMLTester.h: Reworked - XMLTester to be quiet by default. Use -v switch to make it - verbose. + * [r1012] Reworked XMLTester to be quiet by default. Use -v switch + to make it verbose. -2006-01-18 17:47 strk +2006-01-18 17:47 Sandro Santilli - * source/test/hexwkb.xml: Added GEOMETRYCOLLECTION test + * [r1011] Added GEOMETRYCOLLECTION test -2006-01-18 17:47 strk +2006-01-18 17:47 Sandro Santilli - * source/test/Makefile.am: Added another local test to the test - rule + * [r1010] Added another local test to the test rule -2006-01-18 17:46 strk +2006-01-18 17:46 Sandro Santilli - * source/io/WKTWriter.cpp: Fixed leak in ::writeFormatted(Geometry - *) + * [r1009] Fixed leak in ::writeFormatted(Geometry *) -2006-01-18 17:45 strk +2006-01-18 17:45 Sandro Santilli - * source/io/WKBReader.cpp: more debugging lines + * [r1008] more debugging lines -2006-01-18 13:23 strk +2006-01-18 13:23 Sandro Santilli - * source/io/WKBReader.cpp: Set binary flag for stringstream used in - ::readHEX() + * [r1007] Set binary flag for stringstream used in ::readHEX() -2006-01-18 12:54 strk +2006-01-18 12:54 Sandro Santilli - * source/test/Makefile.am, source/test/XMLTester.cpp, - source/test/XMLTester.h, source/test/hexwkb.xml: Added HEXWKB - support in XMLTester. Added a simple test in HEXWKB form + * [r1006] Added HEXWKB support in XMLTester. Added a simple test in + HEXWKB form and a 'test' rule running the locally-available tests and showing result summay. -2006-01-18 10:02 strk +2006-01-18 10:02 Sandro Santilli - * macros/ac_python_devel.m4: Added missing macro file + * [r1005] Added missing macro file -2006-01-17 12:03 strk +2006-01-17 12:03 Sandro Santilli - * configure.in, macros/ac_pkg_swig.m4: Modified AC_PROG_SWIG macro - to set SWIG to the empty string + * [r1004] Modified AC_PROG_SWIG macro to set SWIG to the empty + string on error (rather then making it echo an error and return false). SWIG version 1.3.28 or up required in order to build SWIG-based extensions. -2006-01-16 18:34 strk +2006-01-16 18:34 Sandro Santilli - * autogen.sh, configure.in, macros/ac_pkg_swig.m4, - macros/python.m4, swig/python, swig/python/.cvsignore, - swig/python/Makefile.am, swig/python/python.i, - swig/ruby/Makefile.am: Added initial conditional build of python - and ruby wrappers + * [r1003] Added initial conditional build of python and ruby + wrappers -2006-01-15 23:01 strk +2006-01-15 23:01 Sandro Santilli - * NEWS, configure.in, swig/Makefile.am, swig/geos.i, swig/ruby, - swig/ruby/.cvsignore, swig/ruby/Makefile, swig/ruby/Makefile.am, - swig/ruby/renames.i, swig/ruby/ruby.i, swig/ruby/test, - swig/ruby/test/.cvsignore, swig/ruby/test/Makefile.am: Added bare - build/install/dist scripts support for ruby interface + * [r1001] Added bare build/install/dist scripts support for ruby + interface -2006-01-15 21:23 strk +2006-01-15 21:23 Sandro Santilli - * swig/ruby/test, swig/ruby/test/geos_tests.rb, - swig/ruby/test/test_combinations.rb, - swig/ruby/test/test_helper.rb, swig/ruby/test/test_io.rb, - swig/ruby/test/test_operations.rb, - swig/ruby/test/test_relations.rb, swig/ruby/test/test_simple.rb: - Initial import of ruby unit tests + * [r1000] Initial import of ruby unit tests -2006-01-15 21:22 strk +2006-01-15 21:22 Sandro Santilli - * source/geom/Envelope.cpp, source/headers/geos/geom.h: Added - Envelope constructor by string (accepting what's returned by - ::toString) + * [r999] Added Envelope constructor by string (accepting what's + returned by ::toString) -2006-01-15 21:19 strk +2006-01-15 21:19 Sandro Santilli - * source/headers/geos/io.h, source/io/WKBReader.cpp, - source/io/WKBWriter.cpp: Added WKBWriter::writeHEX() and - WKBReader::readHEX() + * [r998] Added WKBWriter::writeHEX() and WKBReader::readHEX() -2006-01-12 11:44 strk +2006-01-12 11:44 Sandro Santilli - * NEWS: synced after 2.2.1 release + * [r997] synced after 2.2.1 release -2006-01-12 11:44 strk +2006-01-12 11:44 Sandro Santilli - * source/capi/geos_c.cpp: Removed double call to ::isValid + * [r996] Removed double call to ::isValid -2006-01-08 15:39 strk +2006-01-08 15:39 Sandro Santilli - * source/capi/geos_c.cpp: Changed finite() function call with - FINITE() macro. + * [r994] Changed finite() function call with FINITE() macro. -2006-01-08 15:24 strk +2006-01-08 15:24 Sandro Santilli - * source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/GeometryGraph.cpp, source/geomgraph/NodeMap.cpp, - source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geomgraph.h, source/operation/IsSimpleOp.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/valid/IsValidOp.cpp, - source/util/GeometricShapeFactory.cpp: Changed container-related - typedef to class-scoped STL-like typedefs. + * [r993] Changed container-related typedef to class-scoped STL-like + typedefs. Fixed const correctness of EdgeIntersectionList::begin() and ::end() consts; defined M_PI when undef as suggested by Charlie Savage. Removed include from GeometricShapeFactory.cpp. -2005-12-22 12:46 strk +2005-12-22 12:46 Sandro Santilli - * swig/README.txt, swig/geos.i, swig/ruby, swig/ruby/Makefile, - swig/ruby/README.txt, swig/ruby/example.rb, swig/ruby/renames.i, - swig/ruby/ruby.i: Imported Charlie Savage new ruby wrapper and - swig changes + * [r992] Imported Charlie Savage new ruby wrapper and swig changes -2005-12-14 11:22 strk +2005-12-14 11:22 Sandro Santilli - * HOWTO_RELEASE: Added a note about the need to *always* increment - CAPI version + * [r991] Added a note about the need to *always* increment CAPI + version -2005-12-14 02:32 strk +2005-12-14 02:32 Sandro Santilli - * HOWTO_RELEASE, source/algorithm/ConvexHull.cpp: New entry + * [r990] New entry -2005-12-13 23:59 strk +2005-12-13 23:59 Sandro Santilli - * source/capi/geos_c.h.in: Removed INTERFACE_* defines (obsoleted). + * [r989] Removed INTERFACE_* defines (obsoleted). Made GEOSCoordSeq_clone() arg const (won't change ABI, it's C world, lucky ;) -2005-12-13 23:03 strk +2005-12-13 23:03 Sandro Santilli - * source/capi/geos_c.cpp: Removed conditional blocks based on GEOS - version (we're always + * [r988] Removed conditional blocks based on GEOS version (we're + always in sync). This fixed an annoying problem introduced since INTERFACE_LAST and INTERFACE_CURREN were taken off geos/version.h -2005-12-12 09:32 strk +2005-12-12 09:32 Sandro Santilli - * configure.in, source/geom/Makefile.am, - source/headers/geos/version.h.in: Switched to -release mode for - C++ library versioning. + * [r987] Switched to -release mode for C++ library versioning. Every release will be binary-incompatible with previous. Removed GEOS_FIRST_INTERFACE and GEOS_LAST_INTERFACE defines from geos/version.h. -2005-12-11 10:41 strk +2005-12-11 10:41 Sandro Santilli - * source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp: Fixed - premature initialization of average Z value in + * [r984] Fixed premature initialization of average Z value in ElevationMatrixFilter -2005-12-11 10:38 strk +2005-12-11 10:38 Sandro Santilli - * configure.in: Fixed mungled versions (1.0.0/3.0.1 => 1.0.1/3.0.0) + * [r983] Fixed mungled versions (1.0.0/3.0.1 => 1.0.1/3.0.0) -2005-12-10 16:07 strk +2005-12-10 16:07 Sandro Santilli - * source/capi/geos_c.cpp: Unkown -> Unknown typo fix + * [r981] Unkown -> Unknown typo fix -2005-12-09 13:24 strk +2005-12-09 13:24 Sandro Santilli - * configure.in: Capi lib version set to 1.0.1 (due to leak fix in + * [r980] Capi lib version set to 1.0.1 (due to leak fix in GEOSHasZ) -2005-12-09 11:36 strk +2005-12-09 11:36 Sandro Santilli - * NEWS, source/capi/geos_c.cpp, - source/operation/polygonize/PolygonizeGraph.cpp: Small leak - plugged in CAPI::GEOSHasZ() and in + * [r977] Small leak plugged in CAPI::GEOSHasZ() and in invalid input to PolygonizeGraph (again) -2005-12-09 10:32 strk +2005-12-09 10:32 Sandro Santilli - * source/operation/polygonize/Polygonizer.cpp: Cleaned up debugging - line left over from previous commit + * [r974] Cleaned up debugging line left over from previous commit -2005-12-09 10:03 strk +2005-12-09 10:03 Sandro Santilli - * NEWS, source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp: Fixed a bug making - PolygonizeGraph choking on invalid LineStrings. + * [r972] Fixed a bug making PolygonizeGraph choking on invalid + LineStrings. Minor optimizations in Polygonizer loops. -2005-12-08 14:14 strk +2005-12-08 14:14 Sandro Santilli - * NEWS, source/geom/DefaultCoordinateSequence.cpp, - source/geom/GeometryCollection.cpp, source/geom/LineString.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/headers/geos/geom.h, source/headers/geos/opOverlay.h, - source/headers/geos/precision.h, source/headers/geos/util.h, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/precision/CommonBitsRemover.cpp, - source/util/CoordinateArrayFiter.cpp, - source/util/UniqueCoordinateArrayFilter.cpp: - ElevationMatrixFilter used for both elevation and Matrix fill, + * [r971] ElevationMatrixFilter used for both elevation and Matrix + fill, thus removing CoordinateSequence copy in ElevetaionMatrix::add(Geometry *). Changed CoordinateFilter::filter_rw to be a const method: updated all apply_rw() methods to take a const CoordinateFilter. -2005-12-08 01:39 strk +2005-12-08 01:39 Sandro Santilli - * NEWS, source/headers/geos/noding.h, source/noding/Noder.cpp, - source/noding/SegmentString.cpp: SegmentString::eiList made a - real object rather then a pointer. + * [r970] SegmentString::eiList made a real object rather then a + pointer. Adde getter for const and non-const references of it (dropping get by pointer) -2005-12-08 01:11 strk +2005-12-08 01:11 Sandro Santilli - * source/geomgraph/EdgeIntersectionList.cpp: minor optimizations in - loops + * [r969] minor optimizations in loops -2005-12-08 00:24 strk +2005-12-08 00:24 Sandro Santilli - * source/geomgraph/EdgeIntersectionList.cpp: Reduced coordinate - assignments in ::createSplitEdge + * [r968] Reduced coordinate assignments in ::createSplitEdge -2005-12-08 00:03 strk +2005-12-08 00:03 Sandro Santilli - * NEWS, source/headers/geos/opOverlay.h, - source/operation/overlay/LineBuilder.cpp: - LineBuilder::lineEdgesList made a real vector, rather then + * [r967] LineBuilder::lineEdgesList made a real vector, rather then pointer (private member). Small optimizations in LineBuilder loops, cleanups in LineBuilder class dox. -2005-12-07 23:36 strk +2005-12-07 23:36 Sandro Santilli - * source/geomgraph/EdgeIntersection.cpp: standard indentation + * [r966] standard indentation -2005-12-07 22:52 strk +2005-12-07 22:52 Sandro Santilli - * NEWS, source/geom/DefaultCoordinateSequence.cpp, - source/geom/LineString.cpp, source/headers/geos/geom.h: Added - CoordinateSequence::apply_rw(CoordinateFilter *) and + * [r965] Added CoordinateSequence::apply_rw(CoordinateFilter *) and CoordinateSequence::apply_ro(CoordinateFilter *) const to reduce coordinate copies on read-write CoordinateFilter applications (previously required getAt()/setAt() calls). Undefined PROFILE_COORDINATE_COPIES (erroneously left defined by previous commit) -2005-12-07 21:55 strk +2005-12-07 21:55 Sandro Santilli - * source/geom/CoordinateSequence.cpp: Optimized memory allocations - in ::removeRepeatedPoints + * [r964] Optimized memory allocations in ::removeRepeatedPoints -2005-12-07 20:52 strk +2005-12-07 20:52 Sandro Santilli - * source/geomgraph/GeometryGraph.cpp: minor container methods call - reduction + * [r963] minor container methods call reduction -2005-12-07 20:51 strk +2005-12-07 20:51 Sandro Santilli - * source/geomgraph/EdgeEndStar.cpp: removed dead code + * [r962] removed dead code -2005-12-07 20:51 strk +2005-12-07 20:51 Sandro Santilli - * source/geomgraph/DirectedEdgeStar.cpp: minor cleanups + * [r961] minor cleanups -2005-12-07 20:49 strk +2005-12-07 20:49 Sandro Santilli - * source/geomgraph/Edge.cpp: Oops, removed Coordinate copies - introduced by recent code cleanups + * [r960] Oops, removed Coordinate copies introduced by recent code + cleanups -2005-12-07 19:18 strk +2005-12-07 19:18 Sandro Santilli - * NEWS, source/geomgraph/EdgeList.cpp, - source/geomgraph/PlanarGraph.cpp, source/headers/geos/geom.h, - source/headers/geos/geomgraph.h, - source/operation/overlay/OverlayOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp: Changed - PlanarGraph::addEdges and EdgeList::addAll to take + * [r959] Changed PlanarGraph::addEdges and EdgeList::addAll to take a const vector by reference rather then a non-const vector by pointer. Optimized polygon vector allocations in OverlayOp::computeOverlay. -2005-12-06 10:24 strk +2005-12-06 10:24 Sandro Santilli - * Makefile.am, NEWS, configure.in, source/capi/Makefile.am, - source/geom/Makefile.am: Added acsite.m4 to distribution. + * [r958] Added acsite.m4 to distribution. Added macros and flags required to build on mingw arch. -2005-11-30 16:07 strk +2005-11-30 16:07 Sandro Santilli - * source/capi, source/capi/.cvsignore: Added geos_c.h + * [r955] Added geos_c.h -2005-11-30 16:03 strk +2005-11-30 16:03 Sandro Santilli - * tools/geos-config.in: Added --ldflags + * [r951] Added --ldflags -2005-11-30 16:01 strk +2005-11-30 16:01 Sandro Santilli - * README: Updated with C-API usage + * [r949] Updated with C-API usage -2005-11-30 11:27 strk +2005-11-30 11:27 Sandro Santilli - * doc/example.cpp: catch std::exception by ref + * [r945] catch std::exception by ref -2005-11-30 11:25 strk +2005-11-30 11:25 Sandro Santilli - * doc/example.cpp: includes cleanup + * [r944] includes cleanup -2005-11-29 23:01 strk +2005-11-29 23:01 Sandro Santilli - * NEWS: updated moving some items to 2.2.0 + * [r942] updated moving some items to 2.2.0 -2005-11-29 15:45 strk +2005-11-29 15:45 Sandro Santilli - * source/geomgraph/TopologyLocation.cpp, - source/headers/geos/geomgraph.h: Fixed signedness of - TopologyLocation methods, cleanups. + * [r936] Fixed signedness of TopologyLocation methods, cleanups. -2005-11-29 15:16 strk +2005-11-29 15:16 Sandro Santilli - * ChangeLog, source/algorithm/MinimumDiameter.cpp, - source/headers/geos/geosAlgorithm.h: Fixed sign-related warnings - and signatures. + * [r935] Fixed sign-related warnings and signatures. -2005-11-29 14:49 strk +2005-11-29 14:49 Sandro Santilli - * NEWS: More info + * [r934] More info -2005-11-29 14:44 strk +2005-11-29 14:44 Sandro Santilli - * NEWS: Updated + * [r933] Updated -2005-11-29 14:39 strk +2005-11-29 14:39 Sandro Santilli - * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: - Removed number of points cache in Edge, replaced with local - caches. + * [r932] Removed number of points cache in Edge, replaced with + local caches. -2005-11-29 14:39 strk +2005-11-29 14:39 Sandro Santilli - * source/geom/CoordinateSequence.cpp, - source/geom/DefaultCoordinateSequence.cpp: More signed/unsigned - fixes + * [r931] More signed/unsigned fixes -2005-11-29 13:39 strk +2005-11-29 13:39 Sandro Santilli - * source/headers/geos/geom.h, source/headers/geos/io.h: Moved byte - typedef from geom.h to io.h. + * [r930] Moved byte typedef from geom.h to io.h. Removed useless commas at inlined funx end. Changed CoordinateSequenceFactory::create(siz,dims) to use unsigned for dims. -2005-11-29 11:18 strk +2005-11-29 11:18 Sandro Santilli - * NEWS: organized changes info + * [r929] organized changes info -2005-11-29 00:48 strk +2005-11-29 00:48 Sandro Santilli - * source/geomgraph/DirectedEdgeStar.cpp, - source/geomgraph/EdgeEndStar.cpp, source/geomgraph/Node.cpp, - source/headers/geos/geomgraph.h, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/valid/ConsistentAreaTester.cpp: Removed edgeList - cache from EdgeEndRing. edgeMap is enough. + * [r928] Removed edgeList cache from EdgeEndRing. edgeMap is + enough. Restructured iterated access by use of standard ::iterator abstraction with scoped typedefs. -2005-11-28 18:37 strk +2005-11-28 18:37 Sandro Santilli - * source/geom/LineString.cpp: Minor warning removal + * [r927] Minor warning removal -2005-11-25 12:22 strk +2005-11-25 12:22 Sandro Santilli - * NEWS, source/test/XMLTester.cpp, source/test/XMLTester.h: Made - XMLTester able to run multiple test files and keep overall + * [r926] Made XMLTester able to run multiple test files and keep + overall counters. -2005-11-25 11:40 strk +2005-11-25 11:40 Sandro Santilli - * source/precision/SimpleGeometryPrecisionReducer.cpp: Another - getSize in for loop, another int-unsigned int warning + * [r925] Another getSize in for loop, another int-unsigned int + warning -2005-11-25 11:31 strk +2005-11-25 11:31 Sandro Santilli - * source/algorithm/InteriorPointArea.cpp, - source/noding/NodingValidator.cpp, source/noding/SimpleNoder.cpp, - source/noding/snapround/SimpleSegmentStringsSnapper.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/RepeatedPointTester.cpp: Removed all - CoordinateSequence::getSize() calls embedded in for loops. + * [r924] Removed all CoordinateSequence::getSize() calls embedded + in for loops. -2005-11-25 11:30 strk +2005-11-25 11:30 Sandro Santilli - * source/geomgraph/Edge.cpp: Fix in ::equals() - this finally - passes testLeaksBig.xml tests + * [r923] Fix in ::equals() - this finally passes testLeaksBig.xml + tests -2005-11-25 09:57 strk +2005-11-25 09:57 Sandro Santilli - * source/geom/GeometryCollection.cpp: Fixed bug in getCoordinates() - [ introduced by previous commit ] + * [r922] Fixed bug in getCoordinates() [ introduced by previous + commit ] -2005-11-24 23:43 strk +2005-11-24 23:43 Sandro Santilli - * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: Yes - another fix, sorry. Missing const-correctness. + * [r921] Yes another fix, sorry. Missing const-correctness. -2005-11-24 23:24 strk +2005-11-24 23:24 Sandro Santilli - * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: Fixed - equals() function [ optimized in previous commit, but unchecked ] + * [r920] Fixed equals() function [ optimized in previous commit, + but unchecked ] -2005-11-24 23:24 strk +2005-11-24 23:24 Sandro Santilli - * NEWS: Added note about CoordinateSequence signed->unsigned change - in API + * [r919] Added note about CoordinateSequence signed->unsigned + change in API -2005-11-24 23:09 strk +2005-11-24 23:09 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/geom/CoordinateSequence.cpp, - source/geom/DefaultCoordinateSequence.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/Polygon.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/headers/geos/geom.h, - source/noding/snapround/SimpleSegmentStringsSnapper.cpp: - CoordinateSequence indexes switched from int to the more + * [r918] CoordinateSequence indexes switched from int to the more the correct unsigned int. Optimizations here and there to avoid calling getSize() in loops. Update of all callers is not complete yet. -2005-11-24 23:07 strk +2005-11-24 23:07 Sandro Santilli - * source/algorithm/CentroidLine.cpp, - source/headers/geos/geosAlgorithm.h: CentroidLine made concrete - class (only destructor was virtual) - avoided heap allocation for - owned Coordinate centSum - -2005-11-21 16:03 strk - - * source/algorithm/CentroidArea.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/LineIntersector.cpp, source/geom/Coordinate.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/LineSegment.cpp, source/geom/Polygon.cpp, - source/geomgraph/DirectedEdgeStar.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/Node.cpp, source/geomgraph/NodeFactory.cpp, - source/geomgraph/NodeMap.cpp, source/geomgraph/PlanarGraph.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/opOverlay.h, source/headers/geos/opRelate.h, - source/headers/geos/opValid.h, source/headers/geos/operation.h, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp: Coordinate interface - change: + * [r917] CentroidLine made concrete class (only destructor was + virtual) - avoided heap allocation for owned Coordinate centSum + +2005-11-21 16:03 Sandro Santilli + + * [r916] Coordinate interface change: Removed setCoordinate call, use assignment operator instead. Provided a compile-time switch to make copy ctor and assignment operators non-inline @@ -10092,14 +8576,9 @@ storage. LineIntersector changed to reflect the above change. -2005-11-18 00:55 strk +2005-11-18 00:55 Sandro Santilli - * source/geomgraph/EdgeRing.cpp, source/headers/geos/geomgraph.h, - source/headers/geos/opOverlay.h, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/PolygonBuilder.cpp: Fixed a bug in - EdgeRing::containsPoint(). + * [r915] Fixed a bug in EdgeRing::containsPoint(). Changed EdgeRing::getLinearRing() to avoid LinearRing copy and updated usages from PolygonBuilder. @@ -10109,823 +8588,627 @@ Removed heap allocations for EdgeRing containers. Initialization lists and cleanups. -2005-11-16 22:21 strk +2005-11-16 22:21 Sandro Santilli - * source/geomgraph/EdgeEnd.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geomgraph.h, - source/operation/valid/IsValidOp.cpp: enforced const-correctness - and use of initializer lists. - -2005-11-16 15:49 strk - - * source/geomgraph/Edge.cpp, source/geomgraph/GeometryGraph.cpp, - source/geomgraph/GraphComponent.cpp, - source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geomgraph.h, source/headers/geos/opValid.h, - source/operation/IsSimpleOp.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/valid/IsValidOp.cpp: Reduced gratuitous heap - allocations. - -2005-11-15 18:30 strk - - * source/algorithm/LineIntersector.cpp, source/geomgraph/Label.cpp, - source/geomgraph/TopologyLocation.cpp, - source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h: Removed dead code - -2005-11-15 12:14 strk - - * source/headers/geos/opOverlay.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/planargraph.h, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp: Reduced heap - allocations, made use of references when appropriate, + * [r913] enforced const-correctness and use of initializer lists. + +2005-11-16 15:49 Sandro Santilli + + * [r912] Reduced gratuitous heap allocations. + +2005-11-15 18:30 Sandro Santilli + + * [r911] Removed dead code + +2005-11-15 12:14 Sandro Santilli + + * [r909] Reduced heap allocations, made use of references when + appropriate, small optimizations here and there. -2005-11-15 10:04 strk +2005-11-15 10:04 Sandro Santilli - * source/geomgraph/index/MonotoneChain.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineSegment.cpp, - source/headers/geos/geomgraphindex.h: Reduced heap allocations - (vectors, mostly). + * [r908] Reduced heap allocations (vectors, mostly). Enforced const-correctness, changed some interfaces to use references rather then pointers when appropriate. -2005-11-15 10:02 strk +2005-11-15 10:02 Sandro Santilli - * source/geom/LineString.cpp: optimized envelope computation - reducing virtual calls + * [r907] optimized envelope computation reducing virtual calls -2005-11-14 18:14 strk +2005-11-14 18:14 Sandro Santilli - * source/geomgraph/Depth.cpp, source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/GraphComponent.cpp, source/geomgraph/Label.cpp, - source/geomgraph/Node.cpp, source/geomgraph/TopologyLocation.cpp, - source/headers/geos/geomgraph.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp: Reduced heap - allocations made by TopologyLocation and Label objects. + * [r906] Reduced heap allocations made by TopologyLocation and + Label objects. Enforced const-correctness on GraphComponent. Cleanups. -2005-11-10 16:26 strk +2005-11-10 16:26 Sandro Santilli - * source/io/WKBReader.cpp: Fixed printHEX (was printing one char - past the WKB) + * [r904] Fixed printHEX (was printing one char past the WKB) -2005-11-10 15:20 strk +2005-11-10 15:20 Sandro Santilli - * source/headers/geos/geomUtil.h, source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexStrtree.h, source/headers/geos/noding.h, - source/headers/geos/precision.h: Made virtual overloads explicit. + * [r903] Made virtual overloads explicit. -2005-11-10 10:47 strk +2005-11-10 10:47 Sandro Santilli - * source/geom/MultiPoint.cpp, source/headers/geos/geom.h: Renamed - MultiPoint::getCoordinate(int) to MultiPoint::getCoordinateN(int) + * [r902] Renamed MultiPoint::getCoordinate(int) to + MultiPoint::getCoordinateN(int) to avoid hiding of Geometry::getCoordinate(). -2005-11-10 10:24 strk +2005-11-10 10:24 Sandro Santilli - * source/headers/geos/util.h, source/util/CoordinateArrayFiter.cpp: - Fixed virtual overload of CoordinateArrayFilter::filter* + * [r901] Fixed virtual overload of CoordinateArrayFilter::filter* -2005-11-10 09:33 strk +2005-11-10 09:33 Sandro Santilli - * source/geom/LineString.cpp, source/headers/geos/geom.h: Removed - virtual overloading LineString::compareTo(LineString *) + * [r900] Removed virtual overloading + LineString::compareTo(LineString *) -2005-11-09 15:14 strk +2005-11-09 15:14 Sandro Santilli - * source/operation/buffer/DepthSegment.cpp: Forgot to add this + * [r899] Forgot to add this -2005-11-09 13:44 strk +2005-11-09 13:44 Sandro Santilli - * source/geomgraph/Node.cpp, source/geomgraph/NodeMap.cpp, - source/headers/geos/geomgraph.h: Cleanups in Node and NodeMap. + * [r898] Cleanups in Node and NodeMap. Optimization of EdgeIntersectionLessThen. -2005-11-09 08:57 strk +2005-11-09 08:57 Sandro Santilli - * source/geom/IntersectionMatrix.cpp, source/headers/geos/geom.h: - IntersectionMatrix made a concrete and final type. + * [r897] IntersectionMatrix made a concrete and final type. Cleanups in class definition. -2005-11-08 20:12 strk +2005-11-08 20:12 Sandro Santilli - * NEWS, source/geom/Makefile.am, source/headers/geos/geom.h, - source/headers/geos/opBuffer.h, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: Memory overhead - reductions in buffer operations. + * [r896] Memory overhead reductions in buffer operations. -2005-11-08 12:32 strk +2005-11-08 12:32 Sandro Santilli - * source/geom/DefaultCoordinateSequence.cpp: Cleanups, ::setPoint - small improvement + * [r895] Cleanups, ::setPoint small improvement -2005-11-08 11:33 strk +2005-11-08 11:33 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: comments cleanup + * [r894] comments cleanup -2005-11-08 10:26 strk +2005-11-08 10:26 Sandro Santilli - * configure.in: Library versioning took back to 3.0.0 + * [r893] Library versioning took back to 3.0.0 -2005-11-08 10:03 strk +2005-11-08 10:03 Sandro Santilli - * configure.in, doc/Doxyfile.in, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/headers/geos/geom.h: Set library - version to 2.2.0. + * [r892] Set library version to 2.2.0. Cleaned up Doxygen warnings. Inlined more Envelope methods. Dropped deprecated Envelope::overlaps methods. -2005-11-07 18:07 strk +2005-11-07 18:07 Sandro Santilli - * configure.in: Removed VisualStudio knowledge from configure - script + * [r890] Removed VisualStudio knowledge from configure script -2005-11-07 18:05 strk +2005-11-07 18:05 Sandro Santilli - * source/geomgraph/EdgeIntersectionList.cpp, - source/headers/geos/noding.h, source/noding/SegmentNodeList.cpp: - Reduced set<> lookups + * [r889] Reduced set<> lookups 2005-11-07 13:17 frank - * VisualStudio: no longer used + * [r888] no longer used 2005-11-07 13:17 frank - * Makefile.am: removed VisualStudio, no longer distributed + * [r887] removed VisualStudio, no longer distributed 2005-11-07 13:16 frank - * VisualStudio/.cvsignore: obsolete + * [r886] obsolete -2005-11-07 12:31 strk +2005-11-07 12:31 Sandro Santilli - * NEWS, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/headers/geos/geomgraph.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/opValid.h, source/operation/IsSimpleOp.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/valid/IsValidOp.cpp: Changed - EdgeIntersectionList to use a set<> rathern then a vector<>, and + * [r885] Changed EdgeIntersectionList to use a set<> rathern then a + vector<>, and to avoid dynamic allocation of initial header. Inlined short SweepLineEvent methods. -2005-11-07 11:32 strk +2005-11-07 11:32 Sandro Santilli - * source/capi/geos_c.h.in: Added const qualifiers to function to - reflect paradigm of immutable + * [r884] Added const qualifiers to function to reflect paradigm of + immutable Geometry objects. -2005-11-04 15:42 strk +2005-11-04 15:42 Sandro Santilli - * source/geomgraph/index/SweepLineEvent.cpp: Fixed bug in - SweepLineEventLessThen functor + * [r883] Fixed bug in SweepLineEventLessThen functor (didn't conform to strict weak ordering). Note: this was introduced by previous commit. -2005-11-04 11:06 strk +2005-11-04 11:06 Sandro Santilli - * NEWS: updated + * [r882] updated -2005-11-04 11:04 strk +2005-11-04 11:04 Sandro Santilli - * source/headers/geos/opValid.h, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp: Ported - revision 1.38 of IsValidOp.java (adding closed Ring checks). + * [r881] Ported revision 1.38 of IsValidOp.java (adding closed Ring + checks). Changed NestedRingTester classes to use Coorinate pointers rather then actual objects, to speedup NULL tests. Added JTS port revision when applicable. -2005-11-04 08:28 strk +2005-11-04 08:28 Sandro Santilli - * NEWS, source/operation/overlay/OverlayOp.cpp: Ported speedup of - OverlayOp::insertUniqueEdge() from JTS-1.7 (rev 1.23) + * [r880] Ported speedup of OverlayOp::insertUniqueEdge() from + JTS-1.7 (rev 1.23) Updated NEWS file. -2005-11-03 21:28 strk +2005-11-03 21:28 Sandro Santilli - * source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp: Fixed - constructors broke by previous commit + * [r878] Fixed constructors broke by previous commit -2005-11-03 19:51 strk +2005-11-03 19:51 Sandro Santilli - * source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/headers/geos/geomgraphindex.h: Indentation changes, small - vector memory allocation optimization. + * [r877] Indentation changes, small vector memory allocation + optimization. -2005-11-03 09:15 strk +2005-11-03 09:15 Sandro Santilli - * source/headers/geos/geom.h: Removed declaration of - PointCoordinateSequence and PointCoordinateSequenceFactory + * [r876] Removed declaration of PointCoordinateSequence and + PointCoordinateSequenceFactory -2005-11-01 09:40 strk +2005-11-01 09:40 Sandro Santilli - * source/operation/valid/IsValidOp.cpp: Replaced finite() with - FINITE() calls. + * [r875] Replaced finite() with FINITE() calls. -2005-10-27 14:05 strk +2005-10-27 14:05 Sandro Santilli - * source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/headers/geos/geomgraphindex.h: Added a - SweepLineEventLessThen functor to be used by sort algorithm. + * [r873] Added a SweepLineEventLessThen functor to be used by sort + algorithm. -2005-10-24 13:28 strk +2005-10-24 13:28 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h.in, - source/capi/geostest.c: Changed constructors to take ownership of - GEOSGeom and GEOSCoordSeq objects. + * [r872] Changed constructors to take ownership of GEOSGeom and + GEOSCoordSeq objects. Changed inspectors to retain ownership of GEOSGeom and GEOSCoordSeq objects. Added GEOSGeom_clone() method. -2005-10-21 15:13 strk +2005-10-21 15:13 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h.in: Added - GEOSGeom_clone() function + * [r871] Added GEOSGeom_clone() function -2005-10-21 12:14 strk +2005-10-21 12:14 Sandro Santilli - * source/capi/geos_c.h.in: Added missing GEOS_DLL specifiers + * [r870] Added missing GEOS_DLL specifiers -2005-10-21 12:07 strk +2005-10-21 12:07 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h.in, - source/capi/geostest.c: Added fine-grained geometry constructors - and GEOSCoordSeq abstract data type. + * [r869] Added fine-grained geometry constructors and GEOSCoordSeq + abstract data type. Renamed GEOSmakeCollection to GEOSGeom_createCollection -2005-10-21 09:02 strk +2005-10-21 09:02 Sandro Santilli - * configure.in: typo fixed + * [r868] typo fixed 2005-10-21 02:46 frank - * AUTHORS: added myself to authors - isn't that cheeky! + * [r867] added myself to authors - isn't that cheeky! 2005-10-21 02:45 frank - * README: added note on source\makefile.vc + * [r866] added note on source\makefile.vc 2005-10-21 02:44 frank - * source/Makefile.vc: added a wee readme + * [r865] added a wee readme 2005-10-21 02:41 frank - * source/Makefile.vc: added DLL building, and geostest.exe + * [r864] added DLL building, and geostest.exe 2005-10-21 02:41 frank - * source/capi/geos_c.h.in: need to DLL export C API + * [r863] need to DLL export C API 2005-10-21 02:37 frank - * source/capi/geos_c.cpp: DLL Export functions + * [r862] DLL Export functions 2005-10-21 02:37 frank - * source/capi/geostest.c: avoid non-portable vasprintf, make big - buffer static + * [r861] avoid non-portable vasprintf, make big buffer static 2005-10-21 01:57 frank - * source/Makefile.vc: updated for 3.0.0 and added C API + * [r860] updated for 3.0.0 and added C API 2005-10-20 20:37 frank - * source/headers/geos/platform.h.vc: added getMachineByteOrder(), - convert to unix text mode + * [r859] added getMachineByteOrder(), convert to unix text mode -2005-10-19 13:07 strk +2005-10-19 13:07 Sandro Santilli - * source/io/WKBReader.cpp: Added support for SRID flag in WKB (full - EWKB is accepted now) + * [r858] Added support for SRID flag in WKB (full EWKB is accepted + now) -2005-10-19 12:59 strk +2005-10-19 12:59 Sandro Santilli - * source/headers/geos/io.h: Added input stream checks in - ByteOrderDataInStream, throwing ParseException on unexpected EOF + * [r857] Added input stream checks in ByteOrderDataInStream, + throwing ParseException on unexpected EOF -2005-10-17 15:55 strk +2005-10-17 15:55 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h.in: Added - GetGeometryN, GetInteriorRingN, GetExteriorRing + * [r856] Added GetGeometryN, GetInteriorRingN, GetExteriorRing -2005-10-17 14:37 strk +2005-10-17 14:37 Sandro Santilli - * source/capi/geos_c.h.in: Added comments on exception returns for - Geometry info functions + * [r855] Added comments on exception returns for Geometry info + functions -2005-10-17 14:33 strk +2005-10-17 14:33 Sandro Santilli - * source/capi/geos_c.cpp: Added missing exception handlers from - previous commit. + * [r854] Added missing exception handlers from previous commit. Fixed GEOSGeomTypeId signatures. -2005-10-17 12:56 strk +2005-10-17 12:56 Sandro Santilli - * source/geom/Makefile.am: Removed GEOS_VERSION define - (Geometry.cpp, the only file using this will use the one in - version.h) + * [r853] Removed GEOS_VERSION define (Geometry.cpp, the only file + using this will use the one in version.h) -2005-10-17 12:55 strk +2005-10-17 12:55 Sandro Santilli - * source/capi/geos_c.h.in: Fixed GEOSGeom typedef to be accepted by - C++ compilers, added extern "C" namespace for inclusion by C++ - code (really needed?) + * [r852] Fixed GEOSGeom typedef to be accepted by C++ compilers, + added extern "C" namespace for inclusion by C++ code (really + needed?) -2005-10-17 09:38 strk +2005-10-17 09:38 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h.in, - source/capi/geostest.c: Added GEOSDistance() function. + * [r851] Added GEOSDistance() function. Trapped all exceptions and reported using ERROR_MESSAGE rather then NOTICE_MESSAGE. Changed WKB functions to use 'unsigned char' rather then 'char' Added missing GEOS_setWKBOutputDims() function in header file. -2005-09-28 16:33 strk +2005-09-28 16:33 Sandro Santilli - * source/capi/geos_c.cpp: Added GEOS_setWKBOutputDims(int) function - to specify coordinate + * [r850] Added GEOS_setWKBOutputDims(int) function to specify + coordinate dimension in WKB output. -2005-09-28 10:15 strk +2005-09-28 10:15 Sandro Santilli - * source/headers/geos/io.h, source/io/WKBWriter.cpp: WKBWriter ctor - out-lined (will require changes in the near future, for higher - dimensions support), added support for 3d WKB output + * [r849] WKBWriter ctor out-lined (will require changes in the near + future, for higher dimensions support), added support for 3d WKB + output -2005-09-28 09:36 strk +2005-09-28 09:36 Sandro Santilli - * source/io/WKBReader.cpp: Cleanups in the printHEX function + * [r848] Cleanups in the printHEX function -2005-09-27 16:29 strk +2005-09-27 16:29 Sandro Santilli - * source/io/WKBReader.cpp: Ported JTS-1.7 use of PrecisionModel in - WKBReader + * [r847] Ported JTS-1.7 use of PrecisionModel in WKBReader -2005-09-27 16:20 strk +2005-09-27 16:20 Sandro Santilli - * doc/example.cpp, source/capi/geos_c.cpp, - source/headers/geos/io.h, source/io/WKBReader.cpp: Reverted - previous change, fixed the bug by turning WKBReader.factory + * [r846] Reverted previous change, fixed the bug by turning + WKBReader.factory into a reference rather then a real object. ABI still breaks, but API at least is safe (we didn't release any WKB-aware package so breaking ABI is not a big deal at this stage). -2005-09-27 16:00 strk +2005-09-27 16:00 Sandro Santilli - * doc/example.cpp, source/capi/geos_c.cpp, - source/headers/geos/io.h, source/io/WKBReader.cpp: Fixed bug in - WKBReader destroying the GeometryFactory used in Geometry + * [r845] Fixed bug in WKBReader destroying the GeometryFactory used + in Geometry construction. Changed it's definition to *require* a GeometryFactory pointer parameter. -2005-09-27 08:51 strk +2005-09-27 08:51 Sandro Santilli - * source/test/Makefile.am: Added XMLTester.h in XMLTester_SOURCES - list + * [r844] Added XMLTester.h in XMLTester_SOURCES list -2005-09-26 14:40 strk +2005-09-26 14:40 Sandro Santilli - * source/io/WKBReader.cpp: Fixed handling of higher dimensional WKB - streams + * [r843] Fixed handling of higher dimensional WKB streams -2005-09-26 13:46 strk +2005-09-26 13:46 Sandro Santilli - * source/capi/Makefile.am: Modified GEOS_CAPI_VERSION to include - underlying GEOS version + * [r842] Modified GEOS_CAPI_VERSION to include underlying GEOS + version -2005-09-26 13:42 strk +2005-09-26 13:42 Sandro Santilli - * configure.in, source/capi/Makefile.am, source/capi/geos_c.cpp, - source/capi/geos_c.h, source/capi/geos_c.h.in: Moved C-api - versioning to top-level configure.in + * [r841] Moved C-api versioning to top-level configure.in Added version info in geos_c.h -2005-09-26 12:25 strk +2005-09-26 12:25 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h, - source/capi/geostest.c: Changed LineMerge interface to accept a - single Geometry and return the simpler Geometry obtainable with - the set of merger LineStrings. Fixed leaks in geostest, fixed a - leak in GEOSRelate(). + * [r840] Changed LineMerge interface to accept a single Geometry + and return the simpler Geometry obtainable with the set of merger + LineStrings. Fixed leaks in geostest, fixed a leak in + GEOSRelate(). -2005-09-26 12:23 strk +2005-09-26 12:23 Sandro Santilli - * source/geom/PrecisionModel.cpp: Initializzation lists in - PrecisionModel ctors + * [r839] Initializzation lists in PrecisionModel ctors -2005-09-26 11:04 strk +2005-09-26 11:04 Sandro Santilli - * NEWS: Added changes in LineMerger + * [r838] Added changes in LineMerger -2005-09-26 11:01 strk +2005-09-26 11:01 Sandro Santilli - * source/headers/geos/opLinemerge.h, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp: Const correctness - changes in LineMerger package, and a few speedups. + * [r837] Const correctness changes in LineMerger package, and a few + speedups. -2005-09-26 08:18 strk +2005-09-26 08:18 Sandro Santilli - * source/capi, source/capi/.cvsignore: Added .lo, .la and geostest + * [r836] Added .lo, .la and geostest -2005-09-26 08:17 strk +2005-09-26 08:17 Sandro Santilli - * doc/example.cpp: Removed memory leak from WKB tester + * [r835] Removed memory leak from WKB tester -2005-09-23 17:20 strk +2005-09-23 17:20 Sandro Santilli - * source/headers/geos/opLinemerge.h, - source/operation/linemerge/LineMerger.cpp: Made LineMerger graph - be a real object (rather then a pointer to it) + * [r834] Made LineMerger graph be a real object (rather then a + pointer to it) -2005-09-23 16:07 strk +2005-09-23 16:07 Sandro Santilli - * source/capi/geos_c.cpp: Fixed export of GEOSPolygonize() and - GEOSMakeCollection() + * [r833] Fixed export of GEOSPolygonize() and GEOSMakeCollection() -2005-09-23 09:49 strk +2005-09-23 09:49 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h: Added - GEOSMakeCollection. + * [r832] Added GEOSMakeCollection. Changed GEOSGetCentroid to return an EmptyGeometry when no Centroid can be computed (Empty input, for example). -2005-09-19 08:16 strk +2005-09-19 08:16 Sandro Santilli - * NEWS: Added C api + * [r831] Added C api -2005-09-14 15:11 strk +2005-09-14 15:11 Sandro Santilli - * source/capi/geos_c.h: Removed functions returning not-new - GEOSGeom objects to avoid ambiguity + * [r830] Removed functions returning not-new GEOSGeom objects to + avoid ambiguity whereas when to destroy returns. Added not about memory management. -2005-09-14 14:55 strk +2005-09-14 14:55 Sandro Santilli - * source/capi/geos_c.cpp, source/capi/geos_c.h, - source/capi/geostest.c: Added copyright notices and usage notes + * [r829] Added copyright notices and usage notes -2005-09-14 14:28 strk +2005-09-14 14:28 Sandro Santilli - * source/io/WKBWriter.cpp: Fixed bug writing WKB for all Multi* - geoms as Collections. + * [r828] Fixed bug writing WKB for all Multi* geoms as Collections. -2005-09-14 13:58 strk +2005-09-14 13:58 Sandro Santilli - * configure.in, source/Makefile.am, source/capi, - source/capi/.cvsignore, source/capi/Makefile.am, - source/capi/geos_c.cpp, source/capi/geos_c.h, - source/capi/geostest.c, source/capi/test.wkt: Initial abstract C - api. + * [r827] Initial abstract C api. -2005-09-14 13:56 strk +2005-09-14 13:56 Sandro Santilli - * source/io/WKBReader.cpp: Typo fixed + * [r826] Typo fixed -2005-09-03 21:26 strk +2005-09-03 21:26 Sandro Santilli - * doc/example.cpp, source/geom/Makefile.am, - source/headers/geos/ByteOrderDataInStreamT.h, - source/headers/geos/Makefile.am, - source/headers/geos/WKBReaderT.h, - source/headers/geos/WKBWriterT.h, source/headers/geos/io.h, - source/io/WKBReader.cpp, source/io/WKBWriter.cpp: Reworked WKB - I/O to avoid use of templates and make better use of STL + * [r825] Reworked WKB I/O to avoid use of templates and make better + use of STL -2005-08-22 13:34 strk +2005-08-22 13:34 Sandro Santilli - * NEWS: Added 2.1.4 section + * [r822] Added 2.1.4 section -2005-08-22 13:31 strk +2005-08-22 13:31 Sandro Santilli - * source/geom/Geometry.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/planargraph/planarDirectedEdgeStar.cpp: Fixed comparator - functions used with STL sort() algorithm to + * [r821] Fixed comparator functions used with STL sort() algorithm + to implement StrictWeakOrdering semantic. -2005-07-12 14:33 strk +2005-07-12 14:33 Sandro Santilli - * NEWS: updated + * [r819] updated -2005-07-11 16:21 strk +2005-07-11 16:21 Sandro Santilli - * source/headers/geos/ByteOrderDataInStreamT.h, - source/headers/geos/WKBReaderT.h, - source/headers/geos/WKBWriterT.h: Removed '_' prefix from header - guards + * [r818] Removed '_' prefix from header guards -2005-07-11 12:17 strk +2005-07-11 12:17 Sandro Santilli - * source/headers/geos/io.h, source/headers/geos/opOverlay.h, - source/headers/geos/platform.h.in: Cleaned up syntax + * [r817] Cleaned up syntax -2005-07-11 12:17 strk +2005-07-11 12:17 Sandro Santilli - * doc/example.cpp: Commented out useless include + * [r816] Commented out useless include -2005-07-11 10:50 strk +2005-07-11 10:50 Sandro Santilli - * source/geom/Geometry.cpp: Added parens suggested by compiler + * [r815] Added parens suggested by compiler -2005-07-11 10:27 strk +2005-07-11 10:27 Sandro Santilli - * source/geomgraph/Edge.cpp, source/headers/geos/WKBReaderT.h: - Cleaned up signed/unsigned mismatches + * [r814] Cleaned up signed/unsigned mismatches -2005-07-11 10:27 strk +2005-07-11 10:27 Sandro Santilli - * source/geomgraph/DirectedEdge.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: Fixed - initializzazion lists + * [r813] Fixed initializzazion lists -2005-07-11 10:26 strk +2005-07-11 10:26 Sandro Santilli - * source/headers/geos/geom.h: Made CoordinateSequence::getDimension - return unsigned int instead of int + * [r812] Made CoordinateSequence::getDimension return unsigned int + instead of int -2005-07-11 10:23 strk +2005-07-11 10:23 Sandro Santilli - * source/geom/Geometry.cpp: removed useless assignment + * [r811] removed useless assignment -2005-06-30 18:31 strk +2005-06-30 18:31 Sandro Santilli - * source/headers/geos/opBuffer.h, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: Ported - SubgraphDepthLocator optimizations from JTS code + * [r807] Ported SubgraphDepthLocator optimizations from JTS code -2005-06-28 21:13 strk +2005-06-28 21:13 Sandro Santilli - * source/operation/buffer/SubgraphDepthLocater.cpp: Fixed a bug - introduced by LineSegment skip - made LineSegment skip a - compile-time optione + * [r803] Fixed a bug introduced by LineSegment skip - made + LineSegment skip a compile-time optione -2005-06-28 16:52 strk +2005-06-28 16:52 Sandro Santilli - * source/test/XMLTester.cpp: Added number of points count as a - debugging aid + * [r802] Added number of points count as a debugging aid -2005-06-28 11:22 strk +2005-06-28 11:22 Sandro Santilli - * NEWS: Added DepthSegmentLT bugfix + * [r801] Added DepthSegmentLT bugfix -2005-06-28 01:07 strk +2005-06-28 01:07 Sandro Santilli - * source/headers/geos/opOverlay.h, - source/operation/overlay/PointBuilder.cpp: improved extraction of - result points in overlay op + * [r796] improved extraction of result points in overlay op -2005-06-28 00:04 strk +2005-06-28 00:04 Sandro Santilli - * source/geomgraph/Node.cpp: improved ::isIncidentEdgeInResult() - method + * [r794] improved ::isIncidentEdgeInResult() method -2005-06-27 21:58 strk +2005-06-27 21:58 Sandro Santilli - * source/operation/buffer/SubgraphDepthLocater.cpp: Bugfix in - DepthSegmentLT as suggested by Graeme Hiebert + * [r793] Bugfix in DepthSegmentLT as suggested by Graeme Hiebert -2005-06-27 21:24 strk +2005-06-27 21:24 Sandro Santilli - * source/operation/buffer/SubgraphDepthLocater.cpp: Fixed bug - just-introduced with optimization. + * [r790] Fixed bug just-introduced with optimization. -2005-06-27 21:21 strk +2005-06-27 21:21 Sandro Santilli - * NEWS, source/operation/buffer/SubgraphDepthLocater.cpp: Reduced - Coordinate copies due to LineSegment overuse + * [r789] Reduced Coordinate copies due to LineSegment overuse -2005-06-25 10:20 strk +2005-06-25 10:20 Sandro Santilli - * NEWS, source/geomgraph/Node.cpp, source/headers/geos/geomgraph.h, - source/operation/overlay/PointBuilder.cpp: OverlayOp speedup (JTS - port) + * [r787] OverlayOp speedup (JTS port) -2005-06-24 11:12 strk +2005-06-24 11:12 Sandro Santilli - * NEWS: Added LineIntersector concrete type note + * [r786] Added LineIntersector concrete type note -2005-06-24 11:09 strk +2005-06-24 11:09 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/PointLocator.cpp, source/geom/LineSegment.cpp, - source/geom/Makefile.am, source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/noding.h, source/noding/IteratedNoder.cpp, - source/noding/NodingValidator.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp: Dropped - RobustLineIntersector, made LineIntersector a concrete class. + * [r785] Dropped RobustLineIntersector, made LineIntersector a + concrete class. Added LineIntersector::hasIntersection(Coordinate&,Coordinate&,Coordinate&) to avoid computing intersection point (Z) when it's not necessary. -2005-06-23 14:22 strk +2005-06-23 14:22 Sandro Santilli - * NEWS, source/geom/GeometryCollection.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/headers/geos/geom.h: Inlined and added missing ::clone() - for Geometry subclasses + * [r784] Inlined and added missing ::clone() for Geometry + subclasses -2005-06-23 11:23 strk +2005-06-23 11:23 Sandro Santilli - * NEWS, source/algorithm/CGAlgorithms.cpp: performance improvement - for CGAlgorithms::isOnLine() + * [r782] performance improvement for CGAlgorithms::isOnLine() -2005-06-22 00:46 strk +2005-06-22 00:46 Sandro Santilli - * NEWS, source/geom/Geometry.cpp: Shortcircuit tests for Union + * [r779] Shortcircuit tests for Union -2005-06-22 00:46 strk +2005-06-22 00:46 Sandro Santilli - * source/geom/GeometryFactory.cpp: Fixed bugus handling of - collections in ::buildGeometry + * [r777] Fixed bugus handling of collections in ::buildGeometry -2005-06-21 12:22 strk +2005-06-21 12:22 Sandro Santilli - * NEWS, source/test/XMLTester.cpp, source/test/XMLTester.h: - XMLTester code cleanups + * [r773] XMLTester code cleanups -2005-06-20 10:23 strk +2005-06-20 10:23 Sandro Santilli - * NEWS, source/test/Makefile.am: XMLTester installed by default + * [r772] XMLTester installed by default -2005-06-17 15:17 strk +2005-06-17 15:17 Sandro Santilli - * ., .cvsignore, ltmain.sh: Removed ltmain.sh from repository, will - be created by autogen.sh + * [r770] Removed ltmain.sh from repository, will be created by + autogen.sh -2005-06-17 15:08 strk +2005-06-17 15:08 Sandro Santilli - * NEWS, source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp: Polygonizer - segfault fix + * [r766] Polygonizer segfault fix -2005-06-17 14:58 strk +2005-06-17 14:58 Sandro Santilli - * source/geom/GeometryFactory.cpp: Fixed segfault in LinearRing and - LineString constructors + * [r764] Fixed segfault in LinearRing and LineString constructors -2005-06-14 11:57 strk +2005-06-14 11:57 Sandro Santilli - * NEWS, source/test/XMLTester.cpp: Added workaround for mingw - Polygon name clash + * [r761] Added workaround for mingw Polygon name clash -2005-06-10 14:04 strk +2005-06-10 14:04 Sandro Santilli - * autogen.sh: Added libtoolize call + * [r760] Added libtoolize call -2005-06-10 13:24 strk +2005-06-10 13:24 Sandro Santilli - * source/test/XMLTester.cpp: Added use declaration to make MingW - build work + * [r758] Added use declaration to make MingW build work -2005-06-08 09:38 strk +2005-06-08 09:38 Sandro Santilli - * INSTALL: Added GCC version requirement note + * [r754] Added GCC version requirement note -2005-06-05 10:41 strk +2005-06-05 10:41 Sandro Santilli - * CHANGES, NEWS: Changes file renamed back to NEWS, automake - insists on finding it. + * [r752] Changes file renamed back to NEWS, automake insists on + finding it. 2005-05-30 16:20 autorun - * NEWS: Blank news file to molfify new versions of autoconf + * [r750] Blank news file to molfify new versions of autoconf -2005-05-24 08:42 strk +2005-05-24 08:42 Sandro Santilli - * NEWS: Info moved into CHANGES file + * [r749] Info moved into CHANGES file -2005-05-24 08:42 strk +2005-05-24 08:42 Sandro Santilli - * CHANGES: Filled in section from 2.0.0 to 2.1.1 + * [r748] Filled in section from 2.0.0 to 2.1.1 -2005-05-24 07:48 strk +2005-05-24 07:48 Sandro Santilli - * CHANGES: Initial import + * [r744] Initial import -2005-05-23 16:42 strk +2005-05-23 16:42 Sandro Santilli - * source/geom/Point.cpp: Added Refractions copyright + * [r728] Added Refractions copyright -2005-05-23 15:13 strk +2005-05-23 15:13 Sandro Santilli - * source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: Added debugging - output + * [r717] Added debugging output -2005-05-23 15:04 strk +2005-05-23 15:04 Sandro Santilli - * source/geom/LineSegment.cpp: Fixed bug in ::reverse() + * [r716] Fixed bug in ::reverse() -2005-05-22 17:45 strk +2005-05-22 17:45 Sandro Santilli - * source/operation/buffer/BufferSubgraph.cpp: Fixed initialization - list order + * [r715] Fixed initialization list order -2005-05-22 17:42 strk +2005-05-22 17:42 Sandro Santilli - * ChangeLog, source/headers/geos/Makefile.am: Added missing - WKBWriterT.h + * [r714] Added missing WKBWriterT.h -2005-05-20 16:15 strk +2005-05-20 16:15 Sandro Santilli - * source/geomgraph/Position.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: Code cleanups + * [r713] Code cleanups -2005-05-20 16:14 strk +2005-05-20 16:14 Sandro Santilli - * source/operation/buffer/OffsetCurveSetBuilder.cpp: Fixed a bug in - addPolygonRing setting wrong depths on Edges + * [r712] Fixed a bug in addPolygonRing setting wrong depths on + Edges -2005-05-19 10:29 strk +2005-05-19 10:29 Sandro Santilli - * source/algorithm/CentroidArea.cpp, - source/geomgraph/DirectedEdge.cpp, source/geomgraph/EdgeEnd.cpp, - source/geomgraph/EdgeRing.cpp, source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/opBuffer.h, source/headers/geos/opOverlay.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/PolygonBuilder.cpp: Removed some - CGAlgorithms instances substituting them with direct calls + * [r711] Removed some CGAlgorithms instances substituting them with + direct calls to the static functions. Interfaces accepting CGAlgorithms pointers kept for backward compatibility but modified to make the argument @@ -10934,1845 +9217,1216 @@ Inlined some smaller functions encountered during bug hunting. Updated Copyright notices in the touched files. -2005-05-19 10:26 strk +2005-05-19 10:26 Sandro Santilli - * source/test/testLeaksBig.xml: Added bogus multipolygon buffering - test + * [r710] Added bogus multipolygon buffering test -2005-05-13 18:06 strk +2005-05-13 18:06 Sandro Santilli - * source/headers/geos/geom.h: Added default tolerance parameter for - equalsExact + * [r709] Added default tolerance parameter for equalsExact -2005-05-13 17:15 strk +2005-05-13 17:15 Sandro Santilli - * source/geom/Point.cpp: cleanups and indentations + * [r708] cleanups and indentations -2005-05-13 17:14 strk +2005-05-13 17:14 Sandro Santilli - * source/geom/Geometry.cpp: Added comment about 2D-only comparison - of ::equal(Coordinate, Coordinate, double) + * [r707] Added comment about 2D-only comparison of + ::equal(Coordinate, Coordinate, double) -2005-05-09 21:17 strk +2005-05-09 21:17 Sandro Santilli - * source/headers/geos/WKBWriterT.h: Second argument to ::write made - mandatory. + * [r706] Second argument to ::write made mandatory. -2005-05-09 10:35 strk +2005-05-09 10:35 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp, - source/headers/geos/geosAlgorithm.h: Ported JTS robustness - patches made by Martin on suggestions by Kevin. + * [r705] Ported JTS robustness patches made by Martin on + suggestions by Kevin. -2005-05-03 15:30 strk +2005-05-03 15:30 Sandro Santilli - * TODO: Added WKB TODOs + * [r704] Added WKB TODOs -2005-04-29 17:40 strk +2005-04-29 17:40 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geos.h, - source/headers/geos/WKBReaderT.h, - source/headers/geos/WKBWriterT.h, source/headers/geos/geom.h, - source/headers/geos/io.h, source/headers/geos/opOverlay.h, - source/io/ByteOrderValues.cpp, - source/operation/overlay/OverlayOp.cpp: Updated Doxygen - documentation and some Copyright headers. + * [r703] Updated Doxygen documentation and some Copyright headers. -2005-04-29 16:36 strk +2005-04-29 16:36 Sandro Santilli - * source/headers/geos/io.h: Fixed biostringstream stream output. + * [r702] Fixed biostringstream stream output. -2005-04-29 16:36 strk +2005-04-29 16:36 Sandro Santilli - * doc/example.cpp: Made WKBReader use global_factory, for having - WKB reads produce + * [r701] Made WKBReader use global_factory, for having WKB reads + produce same context of input geoms. -2005-04-29 15:34 strk +2005-04-29 15:34 Sandro Santilli - * doc/example.cpp, source/headers/geos/WKBReaderT.h, - source/headers/geos/WKBWriterT.h, source/headers/geos/io.h, - source/io/ByteOrderValues.cpp: Typedef'ed biostringstream, - preferred parameter for + * [r700] Typedef'ed biostringstream, preferred parameter for WKB parser templates. Added << operator for biostringstream. Typedef'ed WKBWriter and WKBReader to be parametrized by biostringstream. Added WKBtest in doc/example.cpp -2005-04-29 11:52 strk +2005-04-29 11:52 Sandro Santilli - * source/geom/CoordinateSequence.cpp, - source/geom/DefaultCoordinateSequence.cpp, - source/geom/DefaultCoordinateSequenceFactory.cpp, - source/geom/Makefile.am, source/geom/PointCoordinateSequence.cpp, - source/geom/PointCoordinateSequenceFactory.cpp, - source/headers/geos/ByteOrderDataInStreamT.h, - source/headers/geos/WKBReaderT.h, - source/headers/geos/WKBWriterT.h, source/headers/geos/geom.h, - source/headers/geos/io.h: Added new JTS interfaces for - CoordinateSequence and factories, + * [r699] Added new JTS interfaces for CoordinateSequence and + factories, removed example implementations to reduce maintainance costs. Added first implementation of WKBWriter, made ByteOrderDataInStream a template class. -2005-04-29 11:50 strk +2005-04-29 11:50 Sandro Santilli - * source/headers/geos/platform.h.in: Added machine byte order - extractor + * [r698] Added machine byte order extractor -2005-04-21 15:13 strk +2005-04-21 15:13 Sandro Santilli - * configure.in: library version bumped to 3.0.0 + * [r697] library version bumped to 3.0.0 -2005-04-21 13:43 strk +2005-04-21 13:43 Sandro Santilli - * ChangeLog, NEWS: Updated chage logs + * [r696] Updated chage logs -2005-04-21 11:16 strk +2005-04-21 11:16 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Removed useless - Coordinate copies in mergeZ() - patch by Safe Software + * [r695] Removed useless Coordinate copies in mergeZ() - patch by + Safe Software -2005-04-20 17:56 strk +2005-04-20 17:56 Sandro Santilli - * source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/RobustCGAlgorithms.cpp, source/geom/Makefile.am: - Removed NonRobustCGAlgorithms and RobustCGAlgorithms, already + * [r694] Removed NonRobustCGAlgorithms and RobustCGAlgorithms, + already unused (CGAlgorithms replaces both with robust implementation). -2005-04-20 17:22 strk +2005-04-20 17:22 Sandro Santilli - * source/geom/Makefile.am, - source/headers/geos/ByteOrderDataInStreamT.h, - source/headers/geos/Makefile.am, - source/headers/geos/WKBReaderT.h, source/headers/geos/geom.h, - source/headers/geos/io.h, source/io/ByteOrderValues.cpp, - source/io/WKBReader.cpp: Added initial implementation of - WKBReaderT and ByteOrderDataInStreamT + * [r693] Added initial implementation of WKBReaderT and + ByteOrderDataInStreamT class templates and ByteOrderValues class. Work is unfinished as WKBReader requires new interface of CoordinateSequence taking higher dimensions into account. -2005-04-20 17:18 strk +2005-04-20 17:18 Sandro Santilli - * source/headers/geos.h: Added standard copyright header + * [r692] Added standard copyright header -2005-04-19 11:49 strk +2005-04-19 11:49 Sandro Santilli - * source/geom/Point.cpp: Fixed segfault in ::isEmpty + * [r691] Fixed segfault in ::isEmpty -2005-04-14 11:49 strk +2005-04-14 11:49 Sandro Santilli - * source/headers/geos/io.h, source/io/StringTokenizer.cpp, - source/io/WKTReader.cpp: Applied slightly modified patch by Cheng - Shan to speedup WKT parsing. + * [r690] Applied slightly modified patch by Cheng Shan to speedup + WKT parsing. -2005-04-07 18:43 strk +2005-04-07 18:43 Sandro Santilli - * source/operation/valid/IsValidOp.cpp: Fixed bug throwing an - exception when a result could be returned instead + * [r689] Fixed bug throwing an exception when a result could be + returned instead (ported JTS patch) -2005-04-06 11:09 strk +2005-04-06 11:09 Sandro Santilli - * ChangeLog, ltmain.sh, source/algorithm/CGAlgorithms.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/RobustDeterminant.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/geomgraph/DirectedEdge.cpp, source/geomgraph/EdgeEnd.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/headers/geos/platform.h.in, - source/noding/snapround/SegmentSnapper.cpp, - source/planargraph/planarDirectedEdge.cpp: Applied patch from Jon - Schlueter (math.h => cmath; ieeefp.h in "C" block) + * [r688] Applied patch from Jon Schlueter (math.h => cmath; + ieeefp.h in "C" block) -2005-04-02 17:07 sgillies +2005-04-02 17:07 Sean Gillies - * swig/python/setup.py: now supporting the win32 platform, thanks - to Howard Butler + * [r687] now supporting the win32 platform, thanks to Howard Butler -2005-03-26 08:19 strk +2005-03-26 08:19 Sandro Santilli - * source/headers/geos/opPolygonize.h: Commented out - Polygonizer::LineStringAdder friendship + * [r686] Commented out Polygonizer::LineStringAdder friendship -2005-03-10 17:27 strk +2005-03-10 17:27 Sandro Santilli - * source/io/WKBReader.cpp: ported from current JTS + * [r685] ported from current JTS -2005-03-04 07:48 strk +2005-03-04 07:48 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp: Removed useless copy from - ::isOnLine() - suggested by Dale Lutz + * [r684] Removed useless copy from ::isOnLine() - suggested by Dale + Lutz -2005-03-02 08:14 strk +2005-03-02 08:14 Sandro Santilli - * source/headers/Makefile.am: Removed commented line, cousing - strange behaviours with autotools. + * [r683] Removed commented line, cousing strange behaviours with + autotools. -2005-02-22 18:21 strk +2005-02-22 18:21 Sandro Santilli - * source/headers/geos/noding.h, source/index/strtree/STRtree.cpp, - source/noding/SegmentNode.cpp, source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp: Changed SegmentNode to contain a - *real* Coordinate (not a pointer) to reduce + * [r682] Changed SegmentNode to contain a *real* Coordinate (not a + pointer) to reduce construction costs. -2005-02-22 17:10 strk +2005-02-22 17:10 Sandro Santilli - * source/geom/CoordinateSequence.cpp, source/geom/LineString.cpp, - source/noding/MCQuadtreeNoder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp: Reduced - CoordinateSequence::getSize() calls. + * [r681] Reduced CoordinateSequence::getSize() calls. -2005-02-22 16:24 strk +2005-02-22 16:24 Sandro Santilli - * source/geomgraph/Edge.cpp, source/headers/geos/geomgraph.h: - cached number of points in Edge + * [r680] cached number of points in Edge -2005-02-22 16:23 strk +2005-02-22 16:23 Sandro Santilli - * source/headers/geos/noding.h, source/noding/SegmentString.cpp: - Cached number of points in CoordinateSequence. + * [r679] Cached number of points in CoordinateSequence. -2005-02-22 15:49 strk +2005-02-22 15:49 Sandro Santilli - * source/noding/SegmentString.cpp: Reduced calls to - DefaultCoordinateSequence->getSize(). + * [r678] Reduced calls to DefaultCoordinateSequence->getSize(). -2005-02-22 15:16 strk +2005-02-22 15:16 Sandro Santilli - * source/headers/geos/indexStrtree.h, - source/index/strtree/STRtree.cpp: STRtree::avg() and - STRtree::centreY() inlined. + * [r677] STRtree::avg() and STRtree::centreY() inlined. -2005-02-22 10:55 strk +2005-02-22 10:55 Sandro Santilli - * source/geomgraph/Edge.cpp: Optimized Edge::equals(Edge *e) + * [r676] Optimized Edge::equals(Edge *e) -2005-02-18 08:20 strk +2005-02-18 08:20 Sandro Santilli - * source/test/XMLTester.cpp: Added support for point-per-quadrant - argument in buffer tests (using arg2). + * [r675] Added support for point-per-quadrant argument in buffer + tests (using arg2). -2005-02-17 09:56 strk +2005-02-17 09:56 Sandro Santilli - * source/operation/buffer/OffsetCurveBuilder.cpp: Commented out - unused variable. + * [r674] Commented out unused variable. -2005-02-17 09:56 strk +2005-02-17 09:56 Sandro Santilli - * source/headers/geos/geom.h: Applied patch from Jon Schlueter - using instead of + * [r673] Applied patch from Jon Schlueter using instead of + -2005-02-15 17:15 strk +2005-02-15 17:15 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp, - source/geom/Envelope.cpp, source/geom/LineSegment.cpp, - source/headers/geos/geom.h, source/headers/geos/indexChain.h, - source/headers/geos/indexStrtree.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/noding/MCQuadtreeNoder.cpp: Inlined most Envelope methods, - reserved() memory for some vectors when + * [r672] Inlined most Envelope methods, reserved() memory for some + vectors when the usage was known a priori. -2005-02-11 08:58 strk +2005-02-11 08:58 Sandro Santilli - * source/geom/Makefile.am, source/headers/Makefile.am, - source/headers/geos/Makefile.am: Applied patch from Curtis - Barrett handling --includedir and --libdir + * [r671] Applied patch from Curtis Barrett handling --includedir + and --libdir params for configure. -2005-02-05 05:44 strk +2005-02-05 05:44 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/GeometryGraph.cpp, source/geomgraph/NodeMap.cpp, - source/geomgraph/PlanarGraph.cpp, source/geomgraph/Quadrant.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/opRelate.h, source/headers/geos/operation.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/noding/MCQuadtreeNoder.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/operation/IsSimpleOp.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp: Changed geomgraph nodeMap - to use Coordinate pointers as keys, reduces + * [r670] Changed geomgraph nodeMap to use Coordinate pointers as + keys, reduces lots of other Coordinate copies. -2005-02-04 23:55 strk +2005-02-04 23:55 Sandro Santilli - * source/headers/geos/geom.h: Envelope destructor made non-virtual - to give compiler more static + * [r669] Envelope destructor made non-virtual to give compiler more + static binding options. -2005-02-04 18:49 strk +2005-02-04 18:49 Sandro Santilli - * source/headers/geos/opBuffer.h, - source/operation/buffer/BufferSubgraph.cpp: Changed - ::computeDepths to use a set instead of a vector for checking + * [r668] Changed ::computeDepths to use a set instead of a vector + for checking visited Edges. -2005-02-04 14:49 strk +2005-02-04 14:49 Sandro Santilli - * source/test/Makefile.am: Added rule to build staticXMLTester (for - profiling with gprof) + * [r667] Added rule to build staticXMLTester (for profiling with + gprof) -2005-02-03 09:17 strk +2005-02-03 09:17 Sandro Santilli - * source/geom/CoordinateSequence.cpp: more profiling label + * [r666] more profiling label -2005-02-01 16:09 strk +2005-02-01 16:09 Sandro Santilli - * source/noding/MCQuadtreeNoder.cpp, source/noding/Noder.cpp: more - profiling labels + * [r665] more profiling labels -2005-02-01 16:06 strk +2005-02-01 16:06 Sandro Santilli - * source/geom/Envelope.cpp, - source/index/chain/indexMonotoneChain.cpp: Small optimizations. + * [r664] Small optimizations. -2005-02-01 14:18 strk +2005-02-01 14:18 Sandro Santilli - * source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp: More profiler labels + * [r663] More profiler labels -2005-02-01 14:18 strk +2005-02-01 14:18 Sandro Santilli - * source/headers/geos/profiler.h, source/util/Profiler.cpp: Made - profiler start/stop inline + * [r662] Made profiler start/stop inline -2005-02-01 13:44 strk +2005-02-01 13:44 Sandro Santilli - * source/geom/LineSegment.cpp, source/geomgraph/EdgeList.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/noding/IteratedNoder.cpp, - source/noding/SegmentNodeList.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/util/Profiler.cpp: More profiling labels. + * [r661] More profiling labels. -2005-01-31 15:41 strk +2005-01-31 15:41 Sandro Santilli - * source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/STRtree.cpp, - source/noding/MCQuadtreeNoder.cpp: Small optimizations. + * [r660] Small optimizations. -2005-01-28 10:01 strk +2005-01-28 10:01 Sandro Santilli - * source/io/ParseException.cpp: substituted sprintf calls with use - of ostringstream + * [r659] substituted sprintf calls with use of ostringstream -2005-01-28 09:47 strk +2005-01-28 09:47 Sandro Santilli - * source/examples/CustomPointCoordinateSequence.cpp, - source/geom/Dimension.cpp, source/geom/Envelope.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/Location.cpp, - source/geom/PointCoordinateSequence.cpp, - source/geom/PrecisionModel.cpp, source/geomgraph/Depth.cpp, - source/geomgraph/EdgeEnd.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/Quadrant.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/noding/SegmentNode.cpp, - source/planargraph/planarDirectedEdge.cpp: Replaced sprintf uses - with ostringstream. + * [r658] Replaced sprintf uses with ostringstream. -2005-01-28 08:47 strk +2005-01-28 08:47 Sandro Santilli - * source/geom/Coordinate.cpp: Removed sprintf usage, replaced with - sstream + * [r657] Removed sprintf usage, replaced with sstream -2005-01-28 07:58 strk +2005-01-28 07:58 Sandro Santilli - * source/geom/DefaultCoordinateSequence.cpp: removed sprintf usage, - ad ::toString call Coordinate::toString + * [r656] removed sprintf usage, ad ::toString call + Coordinate::toString -2005-01-18 17:22 strk +2005-01-18 17:22 Sandro Santilli - * source/algorithm/LineIntersector.cpp: reverted previous change, - sign was actually stored in zgap + * [r655] reverted previous change, sign was actually stored in zgap -2005-01-18 17:09 strk +2005-01-18 17:09 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp: Fixed interpolateZ - call using final intersection point instead of HCoordinate. + * [r654] Fixed interpolateZ call using final intersection point + instead of HCoordinate. -2005-01-14 08:04 strk +2005-01-14 08:04 Sandro Santilli - * source/algorithm/LineIntersector.cpp: Fixed Z interpolation to - use the correct sign + * [r653] Fixed Z interpolation to use the correct sign -2005-01-03 16:06 strk +2005-01-03 16:06 Sandro Santilli - * source/test/XMLTester.cpp: Changed polygonize op to return a - GeometryCollection + * [r652] Changed polygonize op to return a GeometryCollection -2005-01-03 15:56 strk +2005-01-03 15:56 Sandro Santilli - * source/test/XMLTester.cpp: Fixed memory leaks just introduced for - Polygonizer test case. + * [r651] Fixed memory leaks just introduced for Polygonizer test + case. -2005-01-03 15:49 strk +2005-01-03 15:49 Sandro Santilli - * source/test/XMLTester.cpp: Added Polygonize test handling + * [r650] Added Polygonize test handling -2004-12-30 13:32 strk +2004-12-30 13:32 Sandro Santilli - * source/test/XMLTester.cpp: Handled NULL result from getCentroid() + * [r649] Handled NULL result from getCentroid() -2004-12-30 13:31 strk +2004-12-30 13:31 Sandro Santilli - * source/geom/Geometry.cpp: Fixed a segfault on - EMPTYGEOM->getCeontroid() + * [r648] Fixed a segfault on EMPTYGEOM->getCeontroid() -2004-12-30 10:14 strk +2004-12-30 10:14 Sandro Santilli - * source/geom/Polygon.cpp: never return LinearRing or - MultiLinearRing from getBoundary + * [r647] never return LinearRing or MultiLinearRing from + getBoundary -2004-12-30 10:14 strk +2004-12-30 10:14 Sandro Santilli - * source/geom/GeometryFactory.cpp: input checking and class - promoting in createMultiLineString() + * [r646] input checking and class promoting in + createMultiLineString() -2004-12-22 09:42 strk +2004-12-22 09:42 Sandro Santilli - * source/geom/util/GeometryEditor.cpp: Fixed a premature Geometry - destruction, Avoided CoordinateSequence copies + * [r645] Fixed a premature Geometry destruction, Avoided + CoordinateSequence copies when possible. -2004-12-16 18:29 pramsey +2004-12-16 18:29 Paul Ramsey - * configure.in: Bumped minor version number for 2.1.1 release. + * [r644] Bumped minor version number for 2.1.1 release. -2004-12-16 16:27 strk +2004-12-16 16:27 Sandro Santilli - * source/geom/LinearRing.cpp, source/headers/geos/geom.h: Fixed - LinearRing::clone() to return LinearRing instead of LineString + * [r643] Fixed LinearRing::clone() to return LinearRing instead of + LineString -2004-12-16 16:08 strk +2004-12-16 16:08 Sandro Santilli - * swig/geos.i, swig/python/example.py: New patches from Niki - Spahiev + * [r642] New patches from Niki Spahiev (still unstable) -2004-12-16 09:05 strk +2004-12-16 09:05 Sandro Santilli - * swig/python/example.py: Added python example by Niki Spahiev + * [r641] Added python example by Niki Spahiev -2004-12-16 08:56 strk +2004-12-16 08:56 Sandro Santilli - * swig/geos.i: Applyed patches by Niki Spahiev - + * [r640] Applyed patches by Niki Spahiev -2004-12-14 10:35 strk +2004-12-14 10:35 Sandro Santilli - * source/headers/geos/opPolygonize.h, - source/headers/geos/planargraph.h, - source/operation/polygonize/PolygonizeGraph.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarDirectedEdgeStar.cpp: Comments cleanup. - PolygonizeGraph keeps track of generated CoordinateSequence + * [r638] Comments cleanup. PolygonizeGraph keeps track of generated + CoordinateSequence for delayed destruction. -2004-12-13 13:54 strk +2004-12-13 13:54 Sandro Santilli - * source/headers/geos/opPolygonize.h: Added a not about gcc 2.95.4 - required friendship + * [r637] Added a not about gcc 2.95.4 required friendship -2004-12-13 13:53 strk +2004-12-13 13:53 Sandro Santilli - * source/geom/TopologyException.cpp: Fixed uninitialized - Coordinate. + * [r636] Fixed uninitialized Coordinate. -2004-12-12 17:22 strk +2004-12-12 17:22 Sandro Santilli - * source/headers/geos/Makefile.am: version.h and platform.h - installed again (missed when removed from dist) + * [r635] version.h and platform.h installed again (missed when + removed from dist) -2004-12-08 14:33 strk +2004-12-08 14:33 Sandro Santilli - * source/geom/MultiPolygon.cpp: Checked inner polys getBoundary - return for the single LineString case. + * [r634] Checked inner polys getBoundary return for the single + LineString case. -2004-12-08 14:32 strk +2004-12-08 14:32 Sandro Santilli - * source/geom/GeometryCollection.cpp: cleanups + * [r633] cleanups -2004-12-08 14:31 strk +2004-12-08 14:31 Sandro Santilli - * source/test/testLeaksBig.xml: adjusted getBoundary expected - returns to match OGC specs + * [r632] adjusted getBoundary expected returns to match OGC specs -2004-12-08 14:31 strk +2004-12-08 14:31 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: elevationMatrix deleted - by destructor + * [r631] elevationMatrix deleted by destructor -2004-12-08 14:30 strk +2004-12-08 14:30 Sandro Santilli - * source/io/Unload.cpp: Added default profiler instance cleanup + * [r630] Added default profiler instance cleanup -2004-12-08 13:54 strk +2004-12-08 13:54 Sandro Santilli - * doc/example.cpp, source/algorithm/RobustLineIntersector.cpp, - source/bigtest/GeometryTestFactory.cpp, source/geom/Polygon.cpp, - source/geom/util/GeometryEditor.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/Node.cpp, source/headers/geos/opBuffer.h, - source/headers/geos/opOverlay.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/noding/SegmentString.cpp, - source/noding/snapround/SegmentSnapper.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/valid/IsValidOp.cpp, source/test/XMLTester.cpp, - source/util/GeometricShapeFactory.cpp: gcc warnings checked and - fixed, general cleanups. + * [r629] gcc warnings checked and fixed, general cleanups. -2004-12-06 10:54 strk +2004-12-06 10:54 Sandro Santilli - * source/headers/geos/Makefile.am: Added timeval.h in distribution. + * [r628] Added timeval.h in distribution. -2004-12-05 10:54 strk +2004-12-05 10:54 Sandro Santilli - * VisualStudio, VisualStudio/.cvsignore: initial revision + * [r627] initial revision -2004-12-05 10:50 strk +2004-12-05 10:50 Sandro Santilli - * VisualStudio/Makefile.am: forgot to add + * [r626] forgot to add -2004-12-05 10:48 strk +2004-12-05 10:48 Sandro Santilli - * debian/control, debian/libgeos-doc.doc-base, debian/rules: - Modifications by Alex Bodnaru + * [r625] Modifications by Alex Bodnaru -2004-12-05 10:44 strk +2004-12-05 10:44 Sandro Santilli - * configure.in, doc/Makefile.am, source/bigtest/Makefile.am, - source/examples/Makefile.am, source/test/Makefile.am: Applied - Norman Vine patches for cleaner win32 build. + * [r624] Applied Norman Vine patches for cleaner win32 build. -2004-12-04 15:56 strk +2004-12-04 15:56 Sandro Santilli - * source/Makefile.am, source/headers/geos/Makefile.am: Added - source/Makefile.vc and source/headers/geos/platform.h.in in - distribution + * [r623] Added source/Makefile.vc and + source/headers/geos/platform.h.in in distribution -2004-12-04 15:31 strk +2004-12-04 15:31 Sandro Santilli - * Makefile.am, configure.in, source/headers/geos/Makefile.am: Added - VisualStudio dir in distribution, removed platform.h and - version.h from it. + * [r622] Added VisualStudio dir in distribution, removed platform.h + and version.h from it. 2004-12-04 01:20 frank - * source/Makefile.vc: removed dll delete + * [r621] removed dll delete -2004-12-03 22:52 strk +2004-12-03 22:52 Sandro Santilli - * source/geom/CoordinateSequence.cpp, - source/geom/DefaultCoordinateSequence.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/PointCoordinateSequence.cpp, - source/headers/geos/geom.h, source/util/Profiler.cpp: enforced - const return of CoordinateSequence::toVector() method to derivate - classes. + * [r620] enforced const return of CoordinateSequence::toVector() + method to derivate classes. 2004-12-03 16:26 frank - * source/headers/geos/platform.h.vc: added headers + * [r619] added headers 2004-12-03 16:25 frank - * source/Makefile.vc: New + * [r618] New 2004-12-03 16:22 frank - * source/headers/geos/geom.h: update to use I64 on MSVC for 64 bit - integer constants, also toVector chg. + * [r617] update to use I64 on MSVC for 64 bit integer constants, + also toVector chg. 2004-12-03 16:21 frank - * source/headers/geos/profiler.h: dont try for sys/time.h with MSVC + * [r616] dont try for sys/time.h with MSVC 2004-12-03 16:19 frank - * source/headers/geos/platform.h.vc: New + * [r615] New -2004-11-30 16:44 strk +2004-11-30 16:44 Sandro Santilli - * source/headers/geos/profiler.h, source/headers/geos/timeval.h: - Added gettimeofday implementation for win32, curtesy of Wu + * [r614] Added gettimeofday implementation for win32, curtesy of Wu Yongwei. -2004-11-30 13:05 strk +2004-11-30 13:05 Sandro Santilli - * source/headers/geos/platform.h.in: Removed inclusion of stdio.h, - which should now be useless. + * [r613] Removed inclusion of stdio.h, which should now be useless. -2004-11-30 13:04 strk +2004-11-30 13:04 Sandro Santilli - * configure.in, source/headers/geos/platform.h.in: Added optional - inclusion of ieeefp.h on platform providing it. - -2004-11-29 16:05 strk - - * source/algorithm/HCoordinate.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geom/Coordinate.cpp, source/geomgraph/Node.cpp, - source/headers/geos/geom.h, source/headers/geos/platform.h.in, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixCell.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp: Fixed a bug in - LineIntersector::interpolateZ causing NaN values + * [r612] Added optional inclusion of ieeefp.h on platform providing + it. + +2004-11-29 16:05 Sandro Santilli + + * [r611] Fixed a bug in LineIntersector::interpolateZ causing NaN + values to come out. Handled dimensional collapses in ElevationMatrix. Added ISNAN macro and changed ISNAN/FINITE macros to avoid dispendious isnan() and finite() calls. -2004-11-27 11:36 strk +2004-11-27 11:36 Sandro Santilli + + * [r610] Updated scripts by Alex Bodnaru, added Makefile + +2004-11-26 09:53 Sandro Santilli - * debian/Makefile, debian/README.Debian, debian/changelog, - debian/control, debian/libgeos-dev.install, - debian/libgeos-dev.manpages, debian/rules, debian/shlibs.local: - Updated scripts by Alex Bodnaru, added Makefile - -2004-11-26 09:53 strk - - * source/algorithm/LineIntersector.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geomgraph/Node.cpp, source/headers/geos/platform.h.in: - Added more FINITE calls, and added inf and -inf to FINITE checks - -2004-11-26 09:22 strk - - * source/headers/geos/platform.h.in, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixCell.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/OverlayOp.cpp: Added FINITE(x) macro and - its use. + * [r609] Added more FINITE calls, and added inf and -inf to FINITE + checks + +2004-11-26 09:22 Sandro Santilli + + * [r608] Added FINITE(x) macro and its use. Made input geoms average Z computation optional in OverlayOp. -2004-11-24 18:10 strk +2004-11-24 18:10 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Stricter handling of - USE_ELEVATION_MATRIX define + * [r607] Stricter handling of USE_ELEVATION_MATRIX define -2004-11-24 18:10 strk +2004-11-24 18:10 Sandro Santilli - * source/algorithm/LineIntersector.cpp: Cleanup of interpolateZ + * [r606] Cleanup of interpolateZ -2004-11-24 12:29 strk +2004-11-24 12:29 Sandro Santilli - * source/operation/overlay/ElevationMatrix.cpp: Handled boundary - cases in ::getCell + * [r605] Handled boundary cases in ::getCell -2004-11-24 11:32 strk +2004-11-24 11:32 Sandro Santilli - * source/operation/overlay/LineBuilder.cpp: Re-enabled Z - propagation in output lines. + * [r604] Re-enabled Z propagation in output lines. -2004-11-23 19:53 strk +2004-11-23 19:53 Sandro Santilli - * source/algorithm/LineIntersector.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geomgraph/Edge.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/headers/geos/geosAlgorithm.h, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp: Had LineIntersector - compute Z by interpolation. + * [r603] Had LineIntersector compute Z by interpolation. -2004-11-23 16:22 strk +2004-11-23 16:22 Sandro Santilli - * source/geom/DefaultCoordinateSequence.cpp, - source/geom/LineString.cpp, source/geom/Makefile.am, - source/geom/Point.cpp, source/headers/geos/geom.h, - source/headers/geos/opOverlay.h, - source/operation/overlay/ElevationMatrix.cpp, - source/operation/overlay/ElevationMatrixCell.cpp, - source/operation/overlay/ElevationMatrixFilter.cpp, - source/operation/overlay/OverlayOp.cpp: Added ElevationMatrix - class and components to do post-processing draping of overlayed - geometries. + * [r602] Added ElevationMatrix class and components to do + post-processing draping of overlayed geometries. -2004-11-22 15:51 strk +2004-11-22 15:51 Sandro Santilli - * source/headers/geos/opOverlay.h, - source/operation/overlay/OverlayOp.cpp: Added interpolation of - containing geometry's average Z for point_in_poly case. + * [r601] Added interpolation of containing geometry's average Z for + point_in_poly case. -2004-11-22 13:02 strk +2004-11-22 13:02 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp: Fixed a bug in - Collinear intersection Z computation + * [r600] Fixed a bug in Collinear intersection Z computation -2004-11-22 13:02 strk +2004-11-22 13:02 Sandro Santilli - * source/geomgraph/EdgeIntersectionList.cpp: Forced use if computed - intersection point in ::createSplitEdge (for Z computation) + * [r599] Forced use if computed intersection point in + ::createSplitEdge (for Z computation) -2004-11-22 12:59 strk +2004-11-22 12:59 Sandro Santilli - * source/geomgraph/Edge.cpp: Added debugging lines + * [r598] Added debugging lines -2004-11-22 11:34 strk +2004-11-22 11:34 Sandro Santilli - * source/geomgraph/EdgeEndStar.cpp, source/geomgraph/EdgeList.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/operation/overlay/OverlayOp.cpp: More debugging lines and - comments/indentation cleanups + * [r597] More debugging lines and comments/indentation cleanups -2004-11-22 11:34 strk +2004-11-22 11:34 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp: Added Z computation - for CollinearIntersections + * [r596] Added Z computation for CollinearIntersections -2004-11-20 18:54 strk +2004-11-20 18:54 Sandro Santilli - * debian/README.Debian, debian/control, debian/libgeos-dev.install, - debian/rules: Scripts updates from Alex Bodnaru + * [r595] Scripts updates from Alex Bodnaru -2004-11-20 18:17 strk +2004-11-20 18:17 Sandro Santilli - * source/headers/geos/opOverlay.h, - source/operation/overlay/LineBuilder.cpp: Added Z propagation for - overlay lines output. + * [r594] Added Z propagation for overlay lines output. -2004-11-20 17:16 strk +2004-11-20 17:16 Sandro Santilli - * source/headers/geos/opOverlay.h, - source/operation/overlay/OverlayOp.cpp: Handled Z merging for - point on polygon boundary case. + * [r593] Handled Z merging for point on polygon boundary case. -2004-11-20 16:25 strk +2004-11-20 16:25 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Added Z computation for - point on line case. + * [r592] Added Z computation for point on line case. -2004-11-20 15:46 strk +2004-11-20 15:46 Sandro Santilli - * source/headers/geos/geomgraph.h: Added composing Z management - functions and elements for class Node + * [r591] Added composing Z management functions and elements for + class Node -2004-11-20 15:45 strk +2004-11-20 15:45 Sandro Santilli - * source/geomgraph/NodeMap.cpp: Fixed Z merging in addNode(Node *) + * [r590] Fixed Z merging in addNode(Node *) -2004-11-20 15:41 strk +2004-11-20 15:41 Sandro Santilli - * source/geomgraph/NodeMap.cpp: Added Z merging in ::addNode + * [r589] Added Z merging in ::addNode -2004-11-20 15:41 strk +2004-11-20 15:41 Sandro Santilli - * source/geomgraph/Node.cpp: Added management of vector of - composing Z values. + * [r588] Added management of vector of composing Z values. -2004-11-20 15:40 strk +2004-11-20 15:40 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp: Added Z computation - in point-segment intersection. + * [r587] Added Z computation in point-segment intersection. -2004-11-20 15:39 strk +2004-11-20 15:39 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp: Reduced HEAP allocations. + * [r586] Reduced HEAP allocations. -2004-11-19 16:35 strk +2004-11-19 16:35 Sandro Santilli - * debian, debian/changelog, debian/compat, debian/control, - debian/copyright, debian/geos-config.1, debian/libgeos-dev.dirs, - debian/libgeos-dev.docs, debian/libgeos-dev.install, - debian/libgeos-doc.doc-base, debian/libgeos-doc.docs, - debian/libgeos.dirs, debian/libgeos.docs, debian/libgeos.install, - debian/makedoc, debian/rules, debian/shlibs.local, debian/watch: - Added debian package builder scripts. + * [r585] Added debian package builder scripts. -2004-11-19 16:15 strk +2004-11-19 16:15 Sandro Santilli - * source/index/quadtree/QuadTreeNode.cpp: Completely removed - sprintf usage, substituted by stringstream. + * [r584] Completely removed sprintf usage, substituted by + stringstream. -2004-11-19 16:09 strk +2004-11-19 16:09 Sandro Santilli - * source/index/quadtree/QuadTreeNode.cpp: Added include - for sprintf recognition. + * [r583] Added include for sprintf recognition. -2004-11-19 10:10 strk +2004-11-19 10:10 Sandro Santilli - * source/geomgraph/Node.cpp: COMPUTE_Z re-enabled by default + * [r582] COMPUTE_Z re-enabled by default -2004-11-19 09:33 strk +2004-11-19 09:33 Sandro Santilli - * source/geomgraph/GeometryGraph.cpp: removed useless - CoordinateSequence copy in ::addLineString + * [r581] removed useless CoordinateSequence copy in ::addLineString -2004-11-17 15:09 strk +2004-11-17 15:09 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp, - source/geomgraph/Node.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp: Changed COMPUTE_Z - defaults to be more conservative + * [r580] Changed COMPUTE_Z defaults to be more conservative -2004-11-17 08:41 strk +2004-11-17 08:41 Sandro Santilli - * source/algorithm/RobustLineIntersector.cpp, - source/geomgraph/index/SegmentIntersector.cpp: Fixed a bug in Z - computation and removed debugging output by default. - -2004-11-17 08:13 strk - - * source/algorithm/PointLocator.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geom/Geometry.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/Label.cpp, source/geomgraph/Node.cpp, - source/geomgraph/PlanarGraph.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/operation.h, - source/operation/GeometryGraphOperation.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp: Indentation changes. + * [r579] Fixed a bug in Z computation and removed debugging output + by default. + +2004-11-17 08:13 Sandro Santilli + + * [r578] Indentation changes. Some Z_COMPUTATION activated by default. -2004-11-12 18:12 strk +2004-11-12 18:12 Sandro Santilli - * source/geom/Polygon.cpp: Changed ::getBoundary() to return - LineString if polygon has no holes. + * [r576] Changed ::getBoundary() to return LineString if polygon + has no holes. (has required to pass OGC conformance test T20) -2004-11-09 20:22 strk +2004-11-09 20:22 Sandro Santilli - * tools/geos-config.in: Removed -g -O2 from geos-config --cflags - output + * [r575] Removed -g -O2 from geos-config --cflags output -2004-11-08 18:33 strk +2004-11-08 18:33 Sandro Santilli - * source/index/strtree/STRtree.cpp: Just another small improvement. + * [r574] Just another small improvement. -2004-11-08 15:58 strk +2004-11-08 15:58 Sandro Santilli - * source/headers/geos/indexStrtree.h, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/STRtree.cpp, - source/noding/MCQuadtreeNoder.cpp, - source/operation/buffer/BufferOp.cpp: More performance tuning. + * [r573] More performance tuning. -2004-11-08 13:12 strk +2004-11-08 13:12 Sandro Santilli - * source/headers/geos/Makefile.am: Added profiler.h + * [r572] Added profiler.h -2004-11-08 12:15 strk +2004-11-08 12:15 Sandro Santilli - * source/util/Profiler.cpp: Added number of gathered timings in - output. + * [r571] Added number of gathered timings in output. -2004-11-08 11:19 strk +2004-11-08 11:19 Sandro Santilli - * source/util/Profiler.cpp: Profiler::get() always return a Profile - (new if not existant). + * [r570] Profiler::get() always return a Profile (new if not + existant). -2004-11-08 10:58 strk +2004-11-08 10:58 Sandro Santilli - * source/geom/Envelope.cpp: Optimized the ::intersect function to - avoid nested function calls. + * [r569] Optimized the ::intersect function to avoid nested + function calls. -2004-11-08 10:57 strk +2004-11-08 10:57 Sandro Santilli - * source/headers/geos/geom.h: Moved Log lines at the bottom, and - cut oldest + * [r568] Moved Log lines at the bottom, and cut oldest -2004-11-06 08:16 strk +2004-11-06 08:16 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp, - source/headers/geos/geosAlgorithm.h, - source/operation/valid/IsValidOp.cpp: Fixed CGAlgorithms::isCCW - from JTS port. + * [r567] Fixed CGAlgorithms::isCCW from JTS port. Code cleanup in IsValidOp. -2004-11-05 12:18 strk +2004-11-05 12:18 Sandro Santilli - * TODO: updated + * [r566] updated -2004-11-05 11:41 strk +2004-11-05 11:41 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp, - source/geomgraph/GeometryGraph.cpp, - source/headers/geos/opValid.h, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/TopologyValidationError.cpp: Made - IsValidOp handle IllegalArgumentException throw from + * [r565] Made IsValidOp handle IllegalArgumentException throw from GeometryGraph as a sign of invalidity (just for Polygon geometries). Removed leaks generated by this specific exception. -2004-11-04 19:08 strk +2004-11-04 19:08 Sandro Santilli - * source/algorithm/MinimumDiameter.cpp, - source/geom/CoordinateSequence.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/headers/geos/indexChain.h, - source/headers/geos/indexStrtree.h, source/headers/geos/noding.h, - source/headers/geos/opBuffer.h, - source/index/chain/indexMonotoneChain.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/noding/IteratedNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, source/noding/Noder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/test/XMLTester.cpp: Cleanups, initializers list, - profiling. + * [r564] Cleanups, initializers list, profiling. -2004-11-04 08:49 strk +2004-11-04 08:49 Sandro Santilli - * source/headers/geos/indexQuadtree.h, - source/headers/geos/profiler.h, - source/index/quadtree/DoubleBits.cpp: Unlinked new documentation. + * [r563] Unlinked new documentation. -2004-11-03 08:22 strk +2004-11-03 08:22 Sandro Santilli - * source/index/quadtree/DoubleBits.cpp: Slightly modified log/log2 - based algo to better handle numbers in the + * [r562] Slightly modified log/log2 based algo to better handle + numbers in the range 0-1. -2004-11-02 16:38 strk +2004-11-02 16:38 Sandro Santilli - * source/headers/geos/indexQuadtree.h: Fixed ieee-754 detection - switch + * [r561] Fixed ieee-754 detection switch -2004-11-02 16:31 strk +2004-11-02 16:31 Sandro Santilli - * TODO: updated + * [r560] updated -2004-11-02 16:05 strk +2004-11-02 16:05 Sandro Santilli - * source/headers/geos/indexQuadtree.h: Autodetect availability of - IEEE-754 FP + * [r559] Autodetect availability of IEEE-754 FP -2004-11-02 15:49 strk +2004-11-02 15:49 Sandro Santilli - * source/headers/geos/indexQuadtree.h, - source/index/quadtree/DoubleBits.cpp: Moved ASSUME_IEEE_DOUBLE - define from DoubleBits.cpp to indexQuadtree.h. + * [r558] Moved ASSUME_IEEE_DOUBLE define from DoubleBits.cpp to + indexQuadtree.h. Fixed a bug in powerOf2(). Made the !IEEE version less prone to round-offs (still has approximation errors). -2004-11-02 14:13 strk +2004-11-02 14:13 Sandro Santilli - * source/index/quadtree/DoubleBits.cpp: Fixed bug in IEEE-based - exponent and PowerOf2 computation, but disabled + * [r557] Fixed bug in IEEE-based exponent and PowerOf2 computation, + but disabled at compile time. -2004-11-02 14:11 strk +2004-11-02 14:11 Sandro Santilli - * source/noding/MCQuadtreeNoder.cpp: Added more profiling. + * [r556] Added more profiling. -2004-11-02 09:38 strk +2004-11-02 09:38 Sandro Santilli - * source/test/XMLTester.cpp: Added timer for buffer test. + * [r555] Added timer for buffer test. -2004-11-01 16:43 strk - - * source/geom/Coordinate.cpp, source/geom/Envelope.cpp, - source/geom/Makefile.am, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEndStar.cpp, source/geomgraph/EdgeList.cpp, - source/geomgraph/PlanarGraph.cpp, - source/headers/geos/indexQuadtree.h, - source/headers/geos/noding.h, source/headers/geos/opBuffer.h, - source/headers/geos/profiler.h, source/headers/geos/util.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/STRtree.cpp, - source/noding/IteratedNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, source/noding/Noder.cpp, - source/noding/NodingValidator.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, - source/noding/nodingSegmentIntersector.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, source/util/Profiler.cpp: - Added Profiler code. +2004-11-01 16:43 Sandro Santilli + + * [r554] Added Profiler code. Temporarly patched a bug in DoubleBits (must check drawbacks). Various cleanups and speedups. -2004-10-27 13:57 strk +2004-10-27 13:57 Sandro Santilli - * source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp: Added some - debugging lines (disabled by default) + * [r553] Added some debugging lines (disabled by default) -2004-10-27 11:05 strk +2004-10-27 11:05 Sandro Santilli - * TODO: updated + * [r552] updated -2004-10-26 17:46 strk +2004-10-26 17:46 Sandro Santilli - * source/headers/geos/indexBintree.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/spatialIndex.h: Removed slash-stars in - comments to remove annoying compiler warnings. + * [r551] Removed slash-stars in comments to remove annoying + compiler warnings. -2004-10-26 17:14 strk +2004-10-26 17:14 Sandro Santilli - * NEWS, configure.in: current:revision:age set to 3.0.1 (will be - release 2.1.0). + * [r550] current:revision:age set to 3.0.1 (will be release 2.1.0). added news. -2004-10-26 16:22 strk +2004-10-26 16:22 Sandro Santilli - * TODO: updated + * [r549] updated -2004-10-26 16:09 strk +2004-10-26 16:09 Sandro Santilli - * source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp: Some more - intentation and envelope equality check fix. - -2004-10-21 22:29 strk - - * source/algorithm/LineIntersector.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geom/Coordinate.cpp, source/geomgraph/EdgeEnd.cpp, - source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/GeometryGraph.cpp, source/geomgraph/Node.cpp, - source/geomgraph/NodeMap.cpp, source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geomgraph.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/opOverlay.h, source/io/WKTWriter.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp: Indentation changes - and some more COMPUTE_Z rules + * [r548] Some more intentation and envelope equality check fix. -2004-10-21 17:13 strk +2004-10-21 22:29 Sandro Santilli - * source/io/WKTReader.cpp: Fixed bug introduced by previous patch. + * [r547] Indentation changes and some more COMPUTE_Z rules -2004-10-21 07:03 strk +2004-10-21 17:13 Sandro Santilli - * source/io/WKTReader.cpp: Removed leak in ::readPolygonText - reported by Carlos A. Rueda - -2004-10-20 17:32 strk - - * source/algorithm/HCoordinate.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geomgraph/Edge.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/PlanarGraph.cpp, - source/geomgraph/index/MonotoneChain.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/io/WKTWriter.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp: Initial approach to - 2.5d intersection() + * [r546] Fixed bug introduced by previous patch. -2004-10-19 21:04 strk +2004-10-21 07:03 Sandro Santilli - * TODO: updated + * [r545] Removed leak in ::readPolygonText reported by Carlos A. + Rueda -2004-10-19 19:51 strk +2004-10-20 17:32 Sandro Santilli - * source/geomgraph/GeometryGraph.cpp, - source/headers/geos/opPolygonize.h, - source/headers/geos/planargraph.h, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/valid/IsValidOp.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp: Fixed many leaks and bugs - in Polygonizer. + * [r544] Initial approach to 2.5d intersection() + +2004-10-19 21:04 Sandro Santilli + + * [r543] updated + +2004-10-19 19:51 Sandro Santilli + + * [r542] Fixed many leaks and bugs in Polygonizer. Output still bogus. -2004-10-18 12:43 strk +2004-10-18 12:43 Sandro Santilli - * Makefile.am, configure.in, swig, swig/.cvsignore, - swig/Makefile.am, swig/python, swig/python/.cvsignore, - swig/python/Makefile.am, swig/python/tests, - swig/python/tests/.cvsignore, swig/python/tests/Makefile.am, - swig/python/tests/cases, swig/python/tests/cases/.cvsignore, - swig/python/tests/cases/Makefile.am: swig interface added to - distribution. + * [r541] swig interface added to distribution. -2004-10-13 10:03 strk +2004-10-13 10:03 Sandro Santilli - * doc/example.cpp, source/geom/CoordinateSequence.cpp, - source/geom/Makefile.am, source/geomgraph/PlanarGraph.cpp, - source/headers/geos/geom.h, source/headers/geos/opLinemerge.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/planargraph.h, source/io/Unload.cpp, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarEdge.cpp, - source/planargraph/planarGraphComponent.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp: Added missing linemerge - and polygonize operation. + * [r540] Added missing linemerge and polygonize operation. Bug fixes and leaks removal from the newly added modules and planargraph (used by them). Some comments and indentation changes. -2004-09-23 21:36 strk +2004-09-23 21:36 Sandro Santilli - * source/geom/CoordinateSequence.cpp: Fixed a bug in ::reverse - (thanks to Elliott Edwards) + * [r539] Fixed a bug in ::reverse (thanks to Elliott Edwards) -2004-09-23 21:28 pramsey +2004-09-23 21:28 Paul Ramsey - * configure.in: Back minor version back to 2.0.1 + * [r538] Back minor version back to 2.0.1 -2004-09-23 04:30 pramsey +2004-09-23 04:30 Paul Ramsey - * configure.in: Bumped minor version to 2.0.2 after 2.0.1 release. + * [r537] Bumped minor version to 2.0.2 after 2.0.1 release. -2004-09-21 09:47 strk +2004-09-21 09:47 Sandro Santilli - * source/precision/SimpleGeometryPrecisionReducer.cpp: fixed a - mis-initialization bug in ::reduce + * [r536] fixed a mis-initialization bug in ::reduce -2004-09-21 09:47 strk +2004-09-21 09:47 Sandro Santilli - * source/index/quadtree/DoubleBits.cpp: Removed useless auto_ptr - usage in ::exponent + * [r535] Removed useless auto_ptr usage in ::exponent -2004-09-16 09:50 strk +2004-09-16 09:50 Sandro Santilli - * TODO: updated + * [r534] updated -2004-09-16 09:48 strk +2004-09-16 09:48 Sandro Santilli - * source/geom/Geometry.cpp: Finer short-circuit tests for equals, - within, contains. + * [r533] Finer short-circuit tests for equals, within, contains. -2004-09-16 09:48 strk +2004-09-16 09:48 Sandro Santilli - * source/geom/Envelope.cpp, source/headers/geos/geom.h: Added - Envelope::equals + * [r532] Added Envelope::equals -2004-09-16 07:32 strk +2004-09-16 07:32 Sandro Santilli - * TODO: updated + * [r531] updated -2004-09-16 07:32 strk +2004-09-16 07:32 Sandro Santilli - * source/geom/Geometry.cpp: Added short-circuit tests. Can be - disabled at compile-time + * [r530] Added short-circuit tests. Can be disabled at compile-time -2004-09-13 12:50 strk +2004-09-13 12:50 Sandro Santilli - * source/operation/valid/IsValidOp.cpp: comments cleanup + * [r529] comments cleanup -2004-09-13 12:40 strk +2004-09-13 12:40 Sandro Santilli - * TODO: updated + * [r528] updated -2004-09-13 12:40 strk +2004-09-13 12:40 Sandro Santilli - * configure.in: Updated version number + * [r527] Updated version number -2004-09-13 12:39 strk +2004-09-13 12:39 Sandro Santilli - * source/test/XMLTester.cpp: Added missing newline at end of output + * [r526] Added missing newline at end of output -2004-09-13 12:39 strk +2004-09-13 12:39 Sandro Santilli - * source/geom/MultiPoint.cpp, source/geom/Point.cpp, - source/headers/geos/geom.h, source/headers/geos/opValid.h, - source/operation/valid/IsValidOp.cpp: Made Point and MultiPoint - subject to Validity tests. + * [r525] Made Point and MultiPoint subject to Validity tests. -2004-09-13 10:14 strk +2004-09-13 10:14 Sandro Santilli - * source/operation/valid/TopologyValidationError.cpp: Added - INVALID_COORDINATE code num and error message. + * [r524] Added INVALID_COORDINATE code num and error message. -2004-09-13 10:12 strk +2004-09-13 10:12 Sandro Santilli - * TODO, source/headers/geos/geosAlgorithm.h, - source/headers/geos/opValid.h, - source/operation/valid/IsValidOp.cpp: Added invalid coordinates - checks in IsValidOp. + * [r523] Added invalid coordinates checks in IsValidOp. Cleanups. -2004-09-13 09:18 strk +2004-09-13 09:18 Sandro Santilli + + * [r522] Added IsValidOp::isValid(Coordinate &) - * source/headers/geos/opValid.h, - source/operation/valid/IsValidOp.cpp: Added - IsValidOp::isValid(Coordinate &) - -2004-09-13 09:07 strk - - * source/geom/LineString.cpp: Ported fix in - LineString::isCoordinate - -2004-09-12 03:51 pramsey - - * source/geom/LineString.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp: Casting changes to allow OS/X - compilation. - -2004-09-07 08:29 strk - - * source/headers/geos/geom.h: Fixed doxygen malformed comment for - Coordinate class - -2004-08-20 03:20 pramsey - - * source/bigtest/Makefile.am: Added reference to bigtest.h so 'make - dist' includes it properly. - -2004-08-20 01:55 pramsey - - * configure.in: Removed examples from build directories for release - (they don't build now). - -2004-08-04 08:26 strk - - * source/operation/relate/RelateComputer.cpp: comments lift, stack - allocation reduced - -2004-07-27 16:35 strk - - * source/algorithm/InteriorPointArea.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/Polygon.cpp, - source/geomgraph/EdgeRing.cpp, source/headers/geos/geom.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/opRelate.h, - source/headers/geos/spatialIndex.h, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp: - Geometry::getEnvelopeInternal() changed to return a const +2004-09-13 09:07 Sandro Santilli + + * [r521] Ported fix in LineString::isCoordinate + +2004-09-12 03:51 Paul Ramsey + + * [r520] Casting changes to allow OS/X compilation. + +2004-09-07 08:29 Sandro Santilli + + * [r519] Fixed doxygen malformed comment for Coordinate class + +2004-08-20 03:20 Paul Ramsey + + * [r517] Added reference to bigtest.h so 'make dist' includes it + properly. + +2004-08-20 01:55 Paul Ramsey + + * [r516] Removed examples from build directories for release (they + don't build now). + +2004-08-04 08:26 Sandro Santilli + + * [r515] comments lift, stack allocation reduced + +2004-07-27 16:35 Sandro Santilli + + * [r514] Geometry::getEnvelopeInternal() changed to return a const Envelope *. This should reduce object copies as once computed the envelope of a geometry remains the same. -2004-07-26 19:28 sgillies +2004-07-26 19:28 Sean Gillies - * AUTHORS: added to AUTHORS + * [r513] added to AUTHORS -2004-07-26 18:53 sgillies +2004-07-26 18:53 Sean Gillies - * swig/geos.i, swig/python/tests/cases/pointtest.py, - swig/python/tests/cases/wkttest.py: added simple exception - handling on all method calls + * [r512] added simple exception handling on all method calls -2004-07-26 16:35 strk +2004-07-26 16:35 Sandro Santilli - * source/headers/geos/geom.h: Removed dangling - MultiPoint::isClosed() method definition. + * [r511] Removed dangling MultiPoint::isClosed() method definition. -2004-07-26 15:40 sgillies +2004-07-26 15:40 Sean Gillies - * swig/geos.i, swig/python/setup.py, - swig/python/tests/cases/wkttest.py, - swig/python/tests/runtests.py: wrapped up WKT reader and writer - and added two test cases to check that it works. found a bug - where the WKT reader crashes the program in the case of poorly - formatted WKT string. + * [r510] wrapped up WKT reader and writer and added two test cases + to check that it works. found a bug where the WKT reader crashes + the program in the case of poorly formatted WKT string. -2004-07-25 23:45 sgillies +2004-07-25 23:45 Sean Gillies - * swig, swig/README.txt, swig/geos.i, swig/python, - swig/python/README.txt, swig/python/setup.py, swig/python/tests, - swig/python/tests/TESTING.txt, swig/python/tests/cases, - swig/python/tests/cases/__init__.py, - swig/python/tests/cases/pointtest.py, - swig/python/tests/cases/testing.py, - swig/python/tests/runtests.py: SWIG interface for high level - language modules, Python setup script, and beginning of a unit - testing framework under swig/python/tests. The build works for - today's CVS GEOS, and the test passes -- means that a module can - be built, installed, and imported. + * [r509] SWIG interface for high level language modules, Python + setup script, and beginning of a unit testing framework under + swig/python/tests. The build works for today's CVS GEOS, and the + test passes -- means that a module can be built, installed, and + imported. -2004-07-22 16:58 strk +2004-07-22 16:58 Sandro Santilli - * TODO, doc/example.cpp, source/geom/Geometry.cpp, - source/headers/geos/geom.h: runtime version extractor functions - split. geos::version() is now + * [r508] runtime version extractor functions split. geos::version() + is now geos::geosversion() and geos::jtsport() -2004-07-22 08:45 strk +2004-07-22 08:45 Sandro Santilli - * TODO, source/geom/GeometryCollection.cpp, - source/geom/LineString.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/headers/geos/geom.h: - Documentation updates, memory leaks fixed. + * [r507] Documentation updates, memory leaks fixed. -2004-07-22 07:19 strk +2004-07-22 07:19 Sandro Santilli - * source/headers/geos/geom.h: Changed getCoordinatesRO description. + * [r506] Changed getCoordinatesRO description. -2004-07-22 07:04 strk +2004-07-22 07:04 Sandro Santilli - * source/geom/Coordinate.cpp, source/geom/GeometryCollection.cpp, - source/geom/Polygon.cpp, source/headers/geos/geom.h: Documented - missing geometry functions. + * [r505] Documented missing geometry functions. -2004-07-21 09:55 strk +2004-07-21 09:55 Sandro Santilli - * source/geom/Coordinate.cpp, source/geom/CoordinateList.cpp, - source/geom/CoordinateSequence.cpp, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/LineSegment.cpp, - source/geom/PrecisionModel.cpp, source/geomgraph/Edge.cpp, - source/headers/geos.h, source/headers/geos/geom.h: - CoordinateSequence::atLeastNCoordinatesOrNothing definition fix. + * [r504] CoordinateSequence::atLeastNCoordinatesOrNothing + definition fix. Documentation fixes. -2004-07-21 09:11 strk +2004-07-21 09:11 Sandro Santilli - * NEWS, README, TODO: Updated + * [r503] Updated -2004-07-20 08:35 strk +2004-07-20 08:35 Sandro Santilli - * doc/README: Updated doxygen rule + * [r502] Updated doxygen rule -2004-07-20 08:34 strk +2004-07-20 08:34 Sandro Santilli - * doc/Doxyfile.in, source/geom/CoordinateList.cpp, - source/geom/Geometry.cpp, source/headers/geos/geom.h, - source/headers/geos/opDistance.h: Fixed a bug in opDistance.h. + * [r501] Fixed a bug in opDistance.h. Removed doxygen tags from obsoleted CoordinateList.cpp. Got doxygen to run with no warnings. -2004-07-19 19:37 pramsey +2004-07-19 19:37 Paul Ramsey + + * [r500] Changed doxygen target to be more "make dist" friendly. + (and allow autogeneration of CVS snapshot to work again.) + +2004-07-19 13:19 Sandro Santilli + + * [r499] Documentation fixes - * doc/Makefile.am: Changed doxygen target to be more "make dist" - friendly. (and allow autogeneration of CVS snapshot to work - again.) - -2004-07-19 13:19 strk - - * doc/Doxyfile.in, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/geom/LineString.cpp, source/headers/geos/geom.h, - source/headers/geos/geomUtil.h, source/headers/geos/geomgraph.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexBintree.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/indexSweepline.h, - source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, - source/headers/geos/opLinemerge.h, - source/headers/geos/opOverlay.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/opRelate.h, source/headers/geos/opValid.h, - source/headers/geos/operation.h, - source/headers/geos/planargraph.h, - source/headers/geos/precision.h, - source/headers/geos/spatialIndex.h, source/io/WKTWriter.cpp: - Documentation fixes - -2004-07-19 10:38 strk - - * doc, doc/.cvsignore: Added Doxyfile - -2004-07-19 10:38 strk - - * TODO: updated +2004-07-19 10:38 Sandro Santilli -2004-07-19 10:37 strk + * [r498] Added Doxyfile - * doc/Makefile.am: Doxygen doc added to default build rules +2004-07-19 10:38 Sandro Santilli -2004-07-19 10:37 strk + * [r497] updated - * source/geom/DefaultCoordinateSequenceFactory.cpp: - defaultCoordinateSequenceFactory made module-static (use +2004-07-19 10:37 Sandro Santilli + + * [r496] Doxygen doc added to default build rules + +2004-07-19 10:37 Sandro Santilli + + * [r495] defaultCoordinateSequenceFactory made module-static (use DefaultCoordinateSequenceFactory::instance() instead) -2004-07-19 10:35 strk +2004-07-19 10:35 Sandro Santilli - * source/bigtest/GeometryTestFactory.cpp, - source/bigtest/TestSweepLineSpeed.cpp, source/bigtest/bigtest.h, - source/headers/geos/bigtest.h: bigtest.h moved to local dir + * [r494] bigtest.h moved to local dir -2004-07-19 10:34 strk +2004-07-19 10:34 Sandro Santilli - * source/headers/geos/geom.h: removed doxygen documentation of - removed feature + * [r493] removed doxygen documentation of removed feature -2004-07-19 10:33 strk +2004-07-19 10:33 Sandro Santilli - * source/headers/geos/io.h: Class documentation changed to report - geos.h as WKT writer/parser header file + * [r492] Class documentation changed to report geos.h as WKT + writer/parser header file -2004-07-19 10:30 strk +2004-07-19 10:30 Sandro Santilli - * source/headers/acconfig.h, source/headers/geos/Makefile.am, - source/headers/geos/acconfig.h: acconfig.h moved one directory up + * [r491] acconfig.h moved one directory up -2004-07-19 10:28 strk +2004-07-19 10:28 Sandro Santilli - * doc/Doxyfile.in: Excluded example and test dirs from input set + * [r490] Excluded example and test dirs from input set -2004-07-17 10:48 strk +2004-07-17 10:48 Sandro Santilli - * TODO: updated + * [r489] updated -2004-07-17 10:48 strk +2004-07-17 10:48 Sandro Santilli - * doc, doc/.cvsignore: added Doxyfile (generated) + * [r488] added Doxyfile (generated) -2004-07-17 10:48 strk +2004-07-17 10:48 Sandro Santilli - * source/geom/Geometry.cpp: fixed typo in documentation + * [r487] fixed typo in documentation -2004-07-17 10:47 strk +2004-07-17 10:47 Sandro Santilli - * configure.in, doc/Doxyfile, doc/Doxyfile.in: Doxygen - configuration created at ./configure time, for versioning. + * [r486] Doxygen configuration created at ./configure time, for + versioning. -2004-07-17 09:19 strk +2004-07-17 09:19 Sandro Santilli - * doc/example.cpp: added GEOS version report + * [r485] added GEOS version report -2004-07-17 09:18 strk +2004-07-17 09:18 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geos/geom.h: Added - geos::version() + * [r484] Added geos::version() -2004-07-17 09:07 strk +2004-07-17 09:07 Sandro Santilli - * tools/geos-config.in: Added --jtsport + * [r483] Added --jtsport -2004-07-17 09:06 strk +2004-07-17 09:06 Sandro Santilli - * source/headers/geos/version.h.in: Added GEOS_FIRST_INTERFACE, - GEOS_LAST_INTERFACE and GEOS_JTS_PORT + * [r482] Added GEOS_FIRST_INTERFACE, GEOS_LAST_INTERFACE and + GEOS_JTS_PORT -2004-07-17 09:05 strk +2004-07-17 09:05 Sandro Santilli - * configure.in: Added JTS_PORT variable. + * [r481] Added JTS_PORT variable. Simplified versioning settings: comments added, major/minor/patchlevel extracted by CURRENT,AGE,REVISION. -2004-07-16 17:02 strk +2004-07-16 17:02 Sandro Santilli - * TODO: updated + * [r480] updated -2004-07-16 16:20 strk +2004-07-16 16:20 Sandro Santilli - * configure.in, source/geom/Makefile.am: Libtool versioning scheme - adopted. + * [r479] Libtool versioning scheme adopted. -2004-07-16 16:09 strk +2004-07-16 16:09 Sandro Santilli - * doc/Makefile.am: removed useless Includedir + * [r478] removed useless Includedir -2004-07-16 15:57 strk +2004-07-16 15:57 Sandro Santilli - * source/headers/geos.h: made includes use <> + * [r477] made includes use <> -2004-07-16 13:27 strk +2004-07-16 13:27 Sandro Santilli - * TODO: updated + * [r476] updated -2004-07-16 10:28 strk +2004-07-16 10:28 Sandro Santilli - * source/headers/geos/util.h, - source/util/GeometricShapeFactory.cpp: Dimesions object allocated - on the heap + * [r475] Dimesions object allocated on the heap -2004-07-16 10:00 strk +2004-07-16 10:00 Sandro Santilli - * doc/example.cpp: Bug fixed in GeometricShapeFactory examples. + * [r474] Bug fixed in GeometricShapeFactory examples. Added example of GeometricShapeFactory::createArc. -2004-07-16 09:58 strk +2004-07-16 09:58 Sandro Santilli - * TODO: updated + * [r473] updated -2004-07-16 09:58 strk +2004-07-16 09:58 Sandro Santilli - * doc/example.tosql: Added LINEARRING to LINESTRING conversion + * [r472] Added LINEARRING to LINESTRING conversion -2004-07-16 09:57 strk +2004-07-16 09:57 Sandro Santilli - * source/geom/Makefile.am: Modified library version to 1.4.0 + * [r471] Modified library version to 1.4.0 -2004-07-15 13:41 strk +2004-07-15 13:41 Sandro Santilli - * doc/example.cpp: Added createRectangle example. + * [r470] Added createRectangle example. -2004-07-15 13:40 strk +2004-07-15 13:40 Sandro Santilli - * source/util/GeometricShapeFactory.cpp: Memory leaks fixed, - CoordinateSequence use made JTS - compatible. + * [r469] Memory leaks fixed, CoordinateSequence use made JTS - + compatible. -2004-07-14 21:21 strk +2004-07-14 21:21 Sandro Santilli - * TODO: updated + * [r468] updated -2004-07-14 21:20 strk +2004-07-14 21:20 Sandro Santilli - * source/geom/Geometry.cpp: Added GeometricShapeFactory note on - doxygen mainpage + * [r467] Added GeometricShapeFactory note on doxygen mainpage -2004-07-14 21:20 strk +2004-07-14 21:20 Sandro Santilli - * source/headers/geos.h: added geos/io.h and geos/unload.h + * [r466] added geos/io.h and geos/unload.h -2004-07-14 21:19 strk +2004-07-14 21:19 Sandro Santilli - * source/headers/geos/util.h, - source/util/GeometricShapeFactory.cpp: GeometricShapeFactory - first pass of bug fixes + * [r465] GeometricShapeFactory first pass of bug fixes -2004-07-14 21:17 strk +2004-07-14 21:17 Sandro Santilli - * source/geom/Makefile.am: added missing GeometricShapeFactory.cpp + * [r464] added missing GeometricShapeFactory.cpp -2004-07-14 21:17 strk +2004-07-14 21:17 Sandro Santilli - * source/geom/Coordinate.cpp, source/headers/geos/geom.h: added - inequality operator for Coordinate + * [r463] added inequality operator for Coordinate -2004-07-14 21:15 strk +2004-07-14 21:15 Sandro Santilli - * doc/example.cpp, doc/example.tosql: Added GeometricShapeFactory - example: createCircle. + * [r462] Added GeometricShapeFactory example: createCircle. Added simple filter to send example output to a postgis table. -2004-07-13 08:33 strk +2004-07-13 08:33 Sandro Santilli - * source/geom/GeometryFactory.cpp, source/geom/Polygon.cpp, - source/headers/geos/geom.h, source/headers/geos/geomgraph.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/planargraph.h, - source/index/bintree/Bintree.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/noding/MCQuadtreeNoder.cpp, - source/noding/SegmentNodeList.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/distance/DistanceOp.cpp, - source/planargraph/planarGraphComponent.cpp: Added missing - virtual destructor to virtual classes. + * [r461] Added missing virtual destructor to virtual classes. Fixed implicit unsigned int -> int casts -2004-07-12 19:16 strk +2004-07-12 19:16 Sandro Santilli - * source/headers/geos/geom.h: Commented out CoordinateList class - definition. + * [r460] Commented out CoordinateList class definition. -2004-07-12 15:42 strk +2004-07-12 15:42 Sandro Santilli - * source/geom/PrecisionModel.cpp: Fixed maximumPreciseValue scope + * [r459] Fixed maximumPreciseValue scope -2004-07-09 08:01 strk - - * TODO: updated - -2004-07-08 19:41 strk - - * source/examples/CoordinateListsExample.cpp, - source/examples/CoordinateSequencesExample.cpp, - source/examples/CustomCoordinateListExample.cpp, - source/examples/CustomCoordinateListExample.h, - source/examples/CustomCoordinateSequenceExample.cpp, - source/examples/CustomCoordinateSequenceExample.h, - source/examples/CustomPointCoordinateList.cpp, - source/examples/CustomPointCoordinateSequence.cpp: renamed to - reflect JTS API. - -2004-07-08 19:38 strk - - * source/geom/CoordinateSequence.cpp, - source/geom/CoordinateSequenceFactory.cpp, - source/geom/DefaultCoordinateSequence.cpp, - source/geom/DefaultCoordinateSequenceFactory.cpp, - source/geom/PointCoordinateSequence.cpp, - source/geom/PointCoordinateSequenceFactory.cpp: renamed from - *List* equivalents - -2004-07-08 19:37 strk - - * source/geom/PointCoordinateList.cpp: Renamed to - PointCoordinateSequence.cpp - -2004-07-08 19:37 strk - - * source/geom/CoordinateListFactory.cpp: Renamed to - CoordinateSequenceFactory.cpp - -2004-07-08 19:36 strk - - * source/geom/BasicCoordinateList.cpp: Renamed to - DefaultCoordinateSequence.cpp - -2004-07-08 19:34 strk - - * TODO, doc/example.cpp, source/Makefile.am, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/examples/CPCLException.cpp, - source/examples/CoordinateListsExample.cpp, - source/examples/Makefile.am, source/geom/CoordinateList.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Makefile.am, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/util/GeometryEditor.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/PlanarGraph.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/headers/geos/bigtest.h, source/headers/geos/geom.h, - source/headers/geos/geomUtil.h, source/headers/geos/geomgraph.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexChain.h, source/headers/geos/io.h, - source/headers/geos/noding.h, source/headers/geos/opBuffer.h, - source/headers/geos/opDistance.h, - source/headers/geos/opLinemerge.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/opValid.h, source/headers/geos/precision.h, - source/headers/geos/util.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/indexMonotoneChain.cpp, source/io/Unload.cpp, - source/io/WKTReader.cpp, source/noding/MCQuadtreeNoder.cpp, - source/noding/NodingValidator.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/nodingSegmentIntersector.cpp, - source/noding/snapround/SimpleSegmentStringsSnapper.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp, - source/util/CoordinateArrayFiter.cpp, - source/util/GeometricShapeFactory.cpp, - source/util/UniqueCoordinateArrayFilter.cpp: Mirrored JTS - interface of CoordinateSequence, factory and +2004-07-09 08:01 Sandro Santilli + + * [r458] updated + +2004-07-08 19:41 Sandro Santilli + + * [r457] renamed to reflect JTS API. + +2004-07-08 19:38 Sandro Santilli + + * [r456] renamed from *List* equivalents + +2004-07-08 19:37 Sandro Santilli + + * [r455] Renamed to PointCoordinateSequence.cpp + +2004-07-08 19:37 Sandro Santilli + + * [r454] Renamed to CoordinateSequenceFactory.cpp + +2004-07-08 19:36 Sandro Santilli + + * [r453] Renamed to DefaultCoordinateSequence.cpp + +2004-07-08 19:34 Sandro Santilli + + * [r452] Mirrored JTS interface of CoordinateSequence, factory and default implementations. Added DefaultCoordinateSequenceFactory::instance() function. -2004-07-07 18:54 strk +2004-07-07 18:54 Sandro Santilli - * TODO: updated + * [r451] updated -2004-07-07 10:29 strk +2004-07-07 10:29 Sandro Santilli - * source/algorithm/NotRepresentableException.cpp, - source/headers/geos/geosAlgorithm.h, source/headers/geos/io.h, - source/headers/geos/util.h: Adjusted exceptions documentation. + * [r450] Adjusted exceptions documentation. -2004-07-07 09:38 strk +2004-07-07 09:38 Sandro Santilli - * NEWS, source/geom/Geometry.cpp, source/headers/geos/geom.h, - source/headers/geos/geosAlgorithm.h, source/headers/geos/io.h, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/test/XMLTester.cpp: Dropped WKTWriter::stringOfChars - (implemented by std::string). + * [r449] Dropped WKTWriter::stringOfChars (implemented by + std::string). Dropped WKTWriter default constructor (internally created GeometryFactory). Updated XMLTester to respect the changes. Main documentation page made nicer. -2004-07-07 07:52 strk +2004-07-07 07:52 Sandro Santilli - * TODO, source/operation/buffer/BufferSubgraph.cpp: Removed note - about required speedup in BufferSubgraph. + * [r448] Removed note about required speedup in BufferSubgraph. I've made tests with 'sets' and there is actually a big slow down.. -2004-07-06 17:58 strk +2004-07-06 17:58 Sandro Santilli - * source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, - source/geom/MultiPolygon.cpp, source/geom/Point.cpp, - source/geom/Polygon.cpp, source/headers/geos/geom.h, - source/headers/geos/precision.h, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp: Removed - deprecated Geometry constructors based on PrecisionModel and + * [r447] Removed deprecated Geometry constructors based on + PrecisionModel and SRID specification. Removed SimpleGeometryPrecisionReducer capability of changing Geometry's factory. Reverted Geometry::factory member to be a reference to external factory. -2004-07-05 19:40 strk +2004-07-05 19:40 Sandro Santilli - * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/headers/geos/geom.h: Added - GeometryFactory::destroyGeometry(Geometry *) + * [r446] Added GeometryFactory::destroyGeometry(Geometry *) -2004-07-05 15:20 strk +2004-07-05 15:20 Sandro Santilli - * TODO, source/geom/Geometry.cpp, source/headers/geos/geom.h: - Documentation again. + * [r445] Documentation again. -2004-07-05 14:23 strk +2004-07-05 14:23 Sandro Santilli - * NEWS, source/geom/CoordinateList.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/PrecisionModel.cpp, source/headers/geos/geom.h, - source/headers/geos/util.h: More documentation cleanups. + * [r444] More documentation cleanups. -2004-07-05 11:50 strk +2004-07-05 11:50 Sandro Santilli - * doc/README: initial import + * [r443] initial import -2004-07-05 10:50 strk +2004-07-05 10:50 Sandro Santilli - * NEWS, doc/Doxyfile, source/geom/BasicCoordinateList.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/Polygon.cpp, source/headers/geos.h, - source/headers/geos/geom.h, source/headers/geos/util.h, - source/io/WKTReader.cpp: deep-dopy construction taken out of - Geometry and implemented only + * [r442] deep-dopy construction taken out of Geometry and + implemented only in GeometryFactory. Deep-copy geometry construction takes care of cleaning up copies on exception. @@ -12781,898 +10435,507 @@ copy semantic (by-ref instead of by-pointer). Cleaned up documentation. -2004-07-03 12:54 strk +2004-07-03 12:54 Sandro Santilli - * source/headers/geos, source/headers/geos/.cvsignore: more entries + * [r441] more entries -2004-07-03 12:51 strk +2004-07-03 12:51 Sandro Santilli - * source/algorithm/NotRepresentableException.cpp, - source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/geom/LineString.cpp, source/geom/PrecisionModel.cpp, - source/headers/geos.h, source/headers/geos/geom.h: Documentation - cleanups for DoxyGen. - -2004-07-02 17:22 strk - - * doc/Doxyfile, doc/Makefile.am, doc/geosDoxygen.conf: Doxygen - configuration file renamed. - -2004-07-02 14:27 strk - - * source/geom/GeometryFactory.cpp, source/geom/Point.cpp, - source/headers/geos/geom.h: Added deep-copy / take-ownerhship for - Point type. - -2004-07-02 13:28 strk - - * ChangeLog, README, configure.in, doc/Makefile.am, - doc/example.cpp, source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/bigtest/TestSweepLineSpeed.cpp, - source/examples/CPCLException.cpp, - source/examples/CoordinateListsExample.cpp, - source/examples/CustomCoordinateListExample.cpp, - source/examples/CustomCoordinateListExample.h, - source/examples/CustomPointCoordinateList.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateListFactory.cpp, source/geom/Dimension.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, source/geom/Triangle.cpp, - source/geom/util/GeometryEditor.cpp, - source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp, - source/geomgraph/Depth.cpp, source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, - source/geomgraph/EdgeNodingValidator.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/GraphComponent.cpp, source/geomgraph/Label.cpp, - source/geomgraph/Node.cpp, source/geomgraph/NodeFactory.cpp, - source/geomgraph/NodeMap.cpp, source/geomgraph/PlanarGraph.cpp, - source/geomgraph/Position.cpp, source/geomgraph/Quadrant.cpp, - source/geomgraph/TopologyLocation.cpp, - source/geomgraph/index/MonotoneChain.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/geomgraph/index/SweepLineSegment.cpp, - source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, source/index/bintree/Key.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/Unload.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/io/Writer.cpp, - source/io/markup/MarkupSTL.cpp, source/noding/IteratedNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, source/noding/Noder.cpp, - source/noding/NodingValidator.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/nodingSegmentIntersector.cpp, - source/noding/snapround/SegmentSnapper.cpp, - source/noding/snapround/SimpleSegmentStringsSnapper.cpp, - source/noding/snapround/SnapRounder.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/distance/ConnectedElementLocationFilter.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/GeometryLocation.cpp, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarEdge.cpp, - source/planargraph/planarGraphComponent.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp, - source/precision/CommonBits.cpp, - source/precision/CommonBitsOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp, - source/test/CTS.cpp, source/test/SimpleWKTTester.cpp, - source/test/XMLTester.cpp, source/util/Assert.cpp, - source/util/AssertionFailedException.cpp, - source/util/CoordinateArrayFiter.cpp, - source/util/GEOSException.cpp, - source/util/GeometricShapeFactory.cpp, - source/util/IllegalArgumentException.cpp, - source/util/UniqueCoordinateArrayFilter.cpp, - source/util/UnsupportedOperationException.cpp: Fixed all #include - lines to reflect headers layout change. + * [r440] Documentation cleanups for DoxyGen. + +2004-07-02 17:22 Sandro Santilli + + * [r439] Doxygen configuration file renamed. + +2004-07-02 14:27 Sandro Santilli + + * [r438] Added deep-copy / take-ownerhship for Point type. + +2004-07-02 13:28 Sandro Santilli + + * [r437] Fixed all #include lines to reflect headers layout change. Added client application build tips in README. -2004-07-02 13:21 strk +2004-07-02 13:21 Sandro Santilli - * source/headers/geos_version.h.in: renamed to geos/version.h.in + * [r436] renamed to geos/version.h.in -2004-07-02 13:20 strk +2004-07-02 13:20 Sandro Santilli - * source/headers, source/headers/.cvsignore, - source/headers/Makefile.am, source/headers/acconfig.h, - source/headers/bigtest.h, source/headers/geom.h, - source/headers/geomUtil.h, source/headers/geomgraph.h, - source/headers/geomgraphindex.h, source/headers/geos, - source/headers/geos.h, source/headers/geos/.cvsignore, - source/headers/geos/Makefile.am, source/headers/geos/acconfig.h, - source/headers/geos/bigtest.h, source/headers/geos/config.h, - source/headers/geos/geom.h, source/headers/geos/geomUtil.h, - source/headers/geos/geomgraph.h, - source/headers/geos/geomgraphindex.h, - source/headers/geos/geosAlgorithm.h, - source/headers/geos/indexBintree.h, - source/headers/geos/indexChain.h, - source/headers/geos/indexQuadtree.h, - source/headers/geos/indexStrtree.h, - source/headers/geos/indexSweepline.h, source/headers/geos/io.h, - source/headers/geos/noding.h, - source/headers/geos/nodingSnapround.h, - source/headers/geos/opBuffer.h, source/headers/geos/opDistance.h, - source/headers/geos/opLinemerge.h, - source/headers/geos/opOverlay.h, - source/headers/geos/opPolygonize.h, - source/headers/geos/opRelate.h, source/headers/geos/opValid.h, - source/headers/geos/operation.h, - source/headers/geos/planargraph.h, - source/headers/geos/platform.h.in, - source/headers/geos/precision.h, - source/headers/geos/spatialIndex.h, source/headers/geos/unload.h, - source/headers/geos/util.h, source/headers/geos/version.h.in, - source/headers/geosAlgorithm.h, source/headers/indexBintree.h, - source/headers/indexChain.h, source/headers/indexQuadtree.h, - source/headers/indexStrtree.h, source/headers/indexSweepline.h, - source/headers/io.h, source/headers/noding.h, - source/headers/nodingSnapround.h, source/headers/opBuffer.h, - source/headers/opDistance.h, source/headers/opLinemerge.h, - source/headers/opOverlay.h, source/headers/opPolygonize.h, - source/headers/opRelate.h, source/headers/opValid.h, - source/headers/operation.h, source/headers/planargraph.h, - source/headers/platform.h.in, source/headers/precision.h, - source/headers/spatialIndex.h, source/headers/unload.h, - source/headers/util.h: Header files moved under geos/ dir. + * [r435] Header files moved under geos/ dir. -2004-07-01 17:34 strk +2004-07-01 17:34 Sandro Santilli - * source/geom/Geometry.cpp: GeometryFactory argument in Geometry - constructor reverted + * [r434] GeometryFactory argument in Geometry constructor reverted to its copy-and-destroy semantic. -2004-07-01 17:07 strk +2004-07-01 17:07 Sandro Santilli - * doc, doc/.cvsignore, doc/Makefile.am: Added doxygen_docs - generation rule + * [r433] Added doxygen_docs generation rule -2004-07-01 16:49 strk +2004-07-01 16:49 Sandro Santilli - * doc/geosDoxygen.conf: re-generated with doxygen 1.2.15 + * [r432] re-generated with doxygen 1.2.15 2004-07-01 15:47 cvs - * doc/geosDoxygen.conf: Added doxygen file for better doco - generation. + * [r431] Added doxygen file for better doco generation. -2004-07-01 14:12 strk +2004-07-01 14:12 Sandro Santilli - * ChangeLog, NEWS, TODO, doc/example.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/InteriorPointArea.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/util/GeometryEditor.cpp, - source/geomgraph/EdgeRing.cpp, source/headers/geom.h, - source/headers/io.h, source/headers/noding.h, - source/headers/opBuffer.h, source/headers/opOverlay.h, - source/io/WKTReader.cpp, source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/linemerge/EdgeString.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp, - source/util/GeometricShapeFactory.cpp: Geometry constructors come - now in two flavors: + * [r430] Geometry constructors come now in two flavors: - deep-copy args (pass-by-reference) - take-ownership of args (pass-by-pointer) Same functionality is available through GeometryFactory, including buildGeometry(). -2004-06-30 20:59 strk +2004-06-30 20:59 Sandro Santilli - * source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geomgraph/EdgeRing.cpp, source/headers/geom.h, - source/headers/geomgraph.h, source/headers/geosAlgorithm.h, - source/headers/opBuffer.h, source/headers/opOverlay.h, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp: Removed - GeoemtryFactory copy from geometry constructors. + * [r429] Removed GeoemtryFactory copy from geometry constructors. Enforced const-correctness on GeometryFactory arguments. -2004-06-28 21:58 strk +2004-06-28 21:58 Sandro Santilli - * source/geom/Polygon.cpp: Constructors speedup. + * [r428] Constructors speedup. -2004-06-28 21:11 strk +2004-06-28 21:11 Sandro Santilli - * source/geom/GeometryCollection.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/headers/geom.h: Moved getGeometryTypeId() definitions from - geom.h to each geometry module. + * [r427] Moved getGeometryTypeId() definitions from geom.h to each + geometry module. Added holes argument check in Polygon.cpp. -2004-06-25 14:26 strk +2004-06-25 14:26 Sandro Santilli - * tools/geos-config.in: fixed --includes + * [r426] fixed --includes -2004-06-22 16:57 strk +2004-06-22 16:57 Sandro Santilli - * NEWS: Written down some news + * [r425] Written down some news -2004-06-22 16:56 strk +2004-06-22 16:56 Sandro Santilli - * source/headers/Makefile.am, source/headers/geos.h: Added geos.h - file. + * [r424] Added geos.h file. -2004-06-21 22:14 strk +2004-06-21 22:14 Sandro Santilli - * source/headers, source/headers/.cvsignore: added geos_version.h + * [r423] added geos_version.h -2004-06-21 22:13 strk +2004-06-21 22:13 Sandro Santilli - * TODO: updated + * [r422] updated -2004-06-21 22:13 strk +2004-06-21 22:13 Sandro Santilli - * configure.in, source/headers/Makefile.am, - source/headers/geos_version.h.in: Added VERSION defines + * [r421] Added VERSION defines -2004-06-16 13:13 strk +2004-06-16 13:13 Sandro Santilli - * TODO, source/geom/BasicCoordinateList.cpp, - source/geom/GeometryFactory.cpp, source/geom/MultiPolygon.cpp, - source/geomgraph/Edge.cpp, source/headers/noding.h, - source/noding/MCQuadtreeNoder.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, - source/noding/nodingSegmentIntersector.cpp: Changed interface of - SegmentString, now copying CoordinateList argument. + * [r420] Changed interface of SegmentString, now copying + CoordinateList argument. Fixed memory leaks associated with this and MultiGeometry constructors. Other associated fixes. -2004-06-15 21:35 strk +2004-06-15 21:35 Sandro Santilli - * source/geom/GeometryFactory.cpp: fixed buildGeometry to always - return a newly allocated geometry + * [r419] fixed buildGeometry to always return a newly allocated + geometry -2004-06-15 20:42 strk +2004-06-15 20:42 Sandro Santilli - * doc/example.cpp, source/geom/LineString.cpp, - source/geom/MultiPolygon.cpp, source/geom/Polygon.cpp: updated to - respect deep-copy GeometryCollection interface + * [r418] updated to respect deep-copy GeometryCollection interface -2004-06-15 20:30 strk +2004-06-15 20:30 Sandro Santilli - * source/io/WKTReader.cpp: fixed a typo + * [r417] fixed a typo -2004-06-15 20:20 strk +2004-06-15 20:20 Sandro Santilli - * source/geom/util/GeometryEditor.cpp, source/io/WKTReader.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/overlay/OverlayOp.cpp: updated to respect - deep-copy GeometryCollection interface + * [r416] updated to respect deep-copy GeometryCollection interface -2004-06-15 20:07 strk +2004-06-15 20:07 Sandro Santilli - * source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/headers/geom.h: - GeometryCollections constructors make a deep copy of Geometry - vector argument. + * [r415] GeometryCollections constructors make a deep copy of + Geometry vector argument. -2004-06-15 20:01 strk +2004-06-15 20:01 Sandro Santilli - * source/operation/buffer/BufferBuilder.cpp: Empty geometry - creation call made using NULL instead of newly created empty - vector (will be faster) + * [r414] Empty geometry creation call made using NULL instead of + newly created empty vector (will be faster) -2004-06-15 19:24 strk +2004-06-15 19:24 Sandro Santilli - * tools/geos-config.in: Fixed a bug preventing geos-config from - giving correct version info + * [r413] Fixed a bug preventing geos-config from giving correct + version info -2004-06-15 07:40 strk +2004-06-15 07:40 Sandro Santilli - * source/noding/SegmentNode.cpp, - source/planargraph/planarDirectedEdge.cpp: Added missing - include + * [r412] Added missing include -2004-06-15 07:40 strk +2004-06-15 07:40 Sandro Santilli - * TODO: Updated + * [r411] Updated -2004-05-28 18:16 ybychkov +2004-05-28 18:16 Yury Bychkov - * source/geom/PrecisionModel.cpp: Changed rounding method to make - compilable with VC++ + * [r410] Changed rounding method to make compilable with VC++ -2004-05-27 12:09 strk +2004-05-27 12:09 Sandro Santilli - * source/test/testLeaksBig.xml: added one buffer test + * [r409] added one buffer test -2004-05-27 10:27 strk +2004-05-27 10:27 Sandro Santilli - * source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp: Memory leaks fixed. + * [r408] Memory leaks fixed. -2004-05-27 10:26 strk +2004-05-27 10:26 Sandro Santilli - * source/noding/nodingSegmentIntersector.cpp: set (useless?) - recordIsolated member in constructor + * [r407] set (useless?) recordIsolated member in constructor -2004-05-27 09:53 strk +2004-05-27 09:53 Sandro Santilli - * source/headers/indexChain.h: - MonotoneChainOverlapAction::overlap(*) funx made virtual + * [r406] MonotoneChainOverlapAction::overlap(*) funx made virtual as they are supposed to be. -2004-05-27 08:40 strk +2004-05-27 08:40 Sandro Santilli - * source/test/XMLTester.cpp: Fixed a memleak in buffer test. + * [r405] Fixed a memleak in buffer test. -2004-05-27 08:37 strk +2004-05-27 08:37 Sandro Santilli - * source/headers/opBuffer.h, - source/operation/buffer/OffsetCurveBuilder.cpp: Fixed a bug - preventing OffsetCurveBuilder point list from being reset. + * [r404] Fixed a bug preventing OffsetCurveBuilder point list from + being reset. -2004-05-26 19:48 strk +2004-05-26 19:48 Sandro Santilli - * source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Changed abs() - to fabs() when working with doubles. + * [r403] Changed abs() to fabs() when working with doubles. Used dynamic_cast<> instead of typeid() when JTS uses instanceof. -2004-05-26 13:12 strk +2004-05-26 13:12 Sandro Santilli - * source/operation/buffer/BufferBuilder.cpp: Removed try/catch - block from ::buildSubgraphs + * [r402] Removed try/catch block from ::buildSubgraphs -2004-05-26 09:50 strk +2004-05-26 09:50 Sandro Santilli - * source/headers/geomgraph.h: Added comments about - OverlayNodeFactory() ownership in NodeMap and PlanarGraph - constuctors + * [r401] Added comments about OverlayNodeFactory() ownership in + NodeMap and PlanarGraph constuctors -2004-05-26 09:49 strk +2004-05-26 09:49 Sandro Santilli - * source/headers/opBuffer.h, - source/operation/buffer/BufferBuilder.cpp: PlanarGraph made local - to ::buffer instead of Class private. + * [r400] PlanarGraph made local to ::buffer instead of Class + private. -2004-05-21 14:17 strk +2004-05-21 14:17 Sandro Santilli - * TODO: updated + * [r399] updated -2004-05-21 13:58 strk +2004-05-21 13:58 Sandro Santilli - * source/geom/Geometry.cpp: ::intersection missed to invalidate - geometryCollection inputs + * [r398] ::intersection missed to invalidate geometryCollection + inputs -2004-05-21 13:55 strk +2004-05-21 13:55 Sandro Santilli - * TODO: updated + * [r397] updated -2004-05-21 13:39 strk +2004-05-21 13:39 Sandro Santilli - * source/geom/PrecisionModel.cpp: ::makePrecise make use of - nearbyint() now, to be compatible with JTS + * [r396] ::makePrecise make use of nearbyint() now, to be + compatible with JTS -2004-05-21 13:37 strk +2004-05-21 13:37 Sandro Santilli - * source/test/testLeaksBig.xml: first import + * [r395] first import -2004-05-20 09:14 strk +2004-05-20 09:14 Sandro Santilli - * TODO: updated + * [r394] updated -2004-05-19 19:39 ybychkov +2004-05-19 19:39 Yury Bychkov - * source/geom/PrecisionModel.cpp: Changed rounding method to make - compilable with VC++ + * [r393] Changed rounding method to make compilable with VC++ -2004-05-19 13:40 strk +2004-05-19 13:40 Sandro Santilli - * source/operation/buffer/OffsetCurveBuilder.cpp: Fixed bug in - ::addCircle + * [r392] Fixed bug in ::addCircle -2004-05-19 13:18 strk +2004-05-19 13:18 Sandro Santilli - * source/geom/BasicCoordinateList.cpp, - source/geom/PointCoordinateList.cpp, source/headers/geom.h: made - CoordinateList::toString() a const member function + * [r391] made CoordinateList::toString() a const member function -2004-05-19 13:01 strk +2004-05-19 13:01 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: avoided assignment operator - calls for BufferBuilder + * [r390] avoided assignment operator calls for BufferBuilder -2004-05-19 12:50 strk +2004-05-19 12:50 Sandro Santilli - * source/operation/buffer/BufferSubgraph.cpp: Removed all try/catch - blocks transforming stack allocated-vectors to - auto-heap-allocations + * [r389] Removed all try/catch blocks transforming stack + allocated-vectors to auto-heap-allocations -2004-05-19 09:57 ybychkov +2004-05-19 09:57 Yury Bychkov - * source/operation/buffer/OffsetCurveSetBuilder.cpp: Bugfix in - OffsetCurveSetBuilder::addPolygon (JTS 1.4.1) + * [r388] Bugfix in OffsetCurveSetBuilder::addPolygon (JTS 1.4.1) -2004-05-18 13:49 strk +2004-05-18 13:49 Sandro Santilli - * source/test/XMLTester.cpp: Output made more neat (geometry B is - not printed if not existent). + * [r387] Output made more neat (geometry B is not printed if not + existent). Added support for buffer tests. -2004-05-18 13:15 strk +2004-05-18 13:15 Sandro Santilli - * source/geom/CoordinateList.cpp: made ::scroll handle already - scrolled vect and more readable + * [r386] made ::scroll handle already scrolled vect and more + readable -2004-05-18 00:02 ybychkov +2004-05-18 00:02 Yury Bychkov - * source/headers/opValid.h, source/operation/valid/IsValidOp.cpp: - IsValidOp::checkShellNotNested() bugfix from JTS 1.4.1 (not - released yet) has been added. + * [r385] IsValidOp::checkShellNotNested() bugfix from JTS 1.4.1 + (not released yet) has been added. -2004-05-17 21:14 ybychkov +2004-05-17 21:14 Yury Bychkov - * source/geom/GeometryCollection.cpp, source/headers/geom.h: - JavaDoc updated + * [r384] JavaDoc updated -2004-05-17 21:09 ybychkov +2004-05-17 21:09 Yury Bychkov - * source/geom/BasicCoordinateList.cpp, - source/geom/PointCoordinateList.cpp: toString() performance - enhancement + * [r383] toString() performance enhancement -2004-05-17 21:03 ybychkov +2004-05-17 21:03 Yury Bychkov - * source/geom/CoordinateList.cpp, source/headers/geom.h: JavaDoc - updated + * [r382] JavaDoc updated -2004-05-17 12:54 strk +2004-05-17 12:54 Sandro Santilli - * source/io/markup/MarkupSTL.cpp: Added tab in list of blank chars + * [r381] Added tab in list of blank chars -2004-05-17 12:53 strk +2004-05-17 12:53 Sandro Santilli - * source/test/XMLTester.cpp: Expected result string trimmed for - blanks + * [r380] Expected result string trimmed for blanks -2004-05-17 12:37 strk +2004-05-17 12:37 Sandro Santilli - * source/io/StringTokenizer.cpp: Added carriage returns and tabs in - set of blanks chars + * [r379] Added carriage returns and tabs in set of blanks chars -2004-05-17 12:36 strk +2004-05-17 12:36 Sandro Santilli - * source/io/ParseException.cpp: ParseException message made more - readable + * [r378] ParseException message made more readable -2004-05-17 10:45 strk +2004-05-17 10:45 Sandro Santilli - * source/geom/PrecisionModel.cpp: Fixed bogus FIXED coordinate - rounding + * [r377] Fixed bogus FIXED coordinate rounding -2004-05-17 08:34 strk +2004-05-17 08:34 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: reduced stack - allocations, try/catch blocks in ::overlayOp + * [r376] reduced stack allocations, try/catch blocks in ::overlayOp -2004-05-17 07:42 strk +2004-05-17 07:42 Sandro Santilli - * source/algorithm/CentroidArea.cpp: CentroidArea::add(const - Geometry *geom) uses dynamic_cast + * [r375] CentroidArea::add(const Geometry *geom) uses dynamic_cast -2004-05-17 07:23 strk +2004-05-17 07:23 Sandro Santilli - * source/geom/Geometry.cpp: ::getCeontroid(): reduced dynamic - allocations, added missing check for isEmpty + * [r374] ::getCeontroid(): reduced dynamic allocations, added + missing check for isEmpty -2004-05-14 14:47 strk +2004-05-14 14:47 Sandro Santilli - * source/operation/distance/ConnectedElementLocationFilter.cpp: - Added LinearRing support + * [r373] Added LinearRing support -2004-05-14 14:45 strk +2004-05-14 14:45 Sandro Santilli - * source/headers/geomUtil.h: Fixed bogus inheritance of - LinearComponentExtracter + * [r372] Fixed bogus inheritance of LinearComponentExtracter -2004-05-14 13:42 strk +2004-05-14 13:42 Sandro Santilli - * source/geom/LineSegment.cpp, - source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp, source/headers/geomUtil.h, - source/headers/opDistance.h, - source/operation/distance/ConnectedElementLocationFilter.cpp, - source/operation/distance/DistanceOp.cpp: DistanceOp bug removed, - cascading errors fixed. + * [r371] DistanceOp bug removed, cascading errors fixed. -2004-05-14 12:14 strk +2004-05-14 12:14 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geom.h: const - correctness + * [r370] const correctness -2004-05-14 12:10 strk +2004-05-14 12:10 Sandro Santilli - * source/io/WKTReader.cpp: avoided leaks on malformed LinearRing + * [r369] avoided leaks on malformed LinearRing -2004-05-14 09:20 strk +2004-05-14 09:20 Sandro Santilli - * source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp: Mem leaks fixed + * [r368] Mem leaks fixed -2004-05-14 07:19 strk +2004-05-14 07:19 Sandro Santilli - * source/test/XMLTester.cpp: Changed the algorythm for finding - precisionModel type (current way did + * [r367] Changed the algorythm for finding precisionModel type + (current way did not work): now if you specify a scale precisionModel will be FIXED, otherwise it will be FLOATING. -2004-05-07 14:15 strk +2004-05-07 14:15 Sandro Santilli - * source/io/StringTokenizer.cpp: fixed peekNextToken to avoid - incrementing string pointer + * [r366] fixed peekNextToken to avoid incrementing string pointer -2004-05-07 14:13 strk +2004-05-07 14:13 Sandro Santilli - * source/index/bintree/Bintree.cpp: Fixed segfault in ::insert + * [r365] Fixed segfault in ::insert -2004-05-07 14:12 strk +2004-05-07 14:12 Sandro Santilli - * source/algorithm/InteriorPointArea.cpp: Fixed segfault in - destructor + * [r364] Fixed segfault in destructor -2004-05-07 13:23 strk +2004-05-07 13:23 Sandro Santilli - * source/io/WKTReader.cpp, source/test/XMLTester.cpp: Memory leaks - fixed. + * [r363] Memory leaks fixed. -2004-05-07 13:04 strk +2004-05-07 13:04 Sandro Santilli - * source/geom/MultiLineString.cpp: leak removed in - MultiLineString::getBoundary() + * [r362] leak removed in MultiLineString::getBoundary() -2004-05-07 09:05 strk +2004-05-07 09:05 Sandro Santilli - * source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, - source/geom/MultiPolygon.cpp, source/headers/geom.h: Some const - correctness added. Fixed bug in GeometryFactory::createMultiPoint + * [r361] Some const correctness added. Fixed bug in + GeometryFactory::createMultiPoint to handle NULL CoordinateList. -2004-05-07 07:57 strk +2004-05-07 07:57 Sandro Santilli - * source/geom/Makefile.am, source/headers/noding.h, - source/headers/opBuffer.h, source/noding/SegmentString.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Added missing - EdgeNodingValidator to build scripts. + * [r360] Added missing EdgeNodingValidator to build scripts. Changed SegmentString constructor back to its original form (takes const void *), implemented local tracking of "contexts" in caller objects for proper destruction. -2004-05-06 16:30 strk +2004-05-06 16:30 Sandro Santilli - * source/headers/indexBintree.h, source/headers/indexQuadtree.h, - source/index/bintree/Bintree.cpp, - source/index/quadtree/Quadtree.cpp: Kept track of newly allocated - objects by ensureExtent for Bintree and Quadtree, + * [r359] Kept track of newly allocated objects by ensureExtent for + Bintree and Quadtree, deleted at destruction time. doc/example.cpp runs with no leaks. -2004-05-06 15:54 strk +2004-05-06 15:54 Sandro Santilli - * source/headers/noding.h, source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: - SegmentNodeList keeps track of created splitEdges for later - destruction. + * [r358] SegmentNodeList keeps track of created splitEdges for + later destruction. SegmentString constructor copies given Label. Buffer operation does no more leaks for doc/example.cpp -2004-05-06 15:00 strk +2004-05-06 15:00 Sandro Santilli - * source/headers/indexStrtree.h, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp: Boundable destructor made - virtual. + * [r357] Boundable destructor made virtual. Added vector *nodes member in AbstractSTRTree, used to keep track of created node to cleanly delete them at destruction time. -2004-05-06 13:58 strk +2004-05-06 13:58 Sandro Santilli - * source/index/strtree/STRtree.cpp: leak removed from - createParentBoundablesFromVerticalSlices + * [r356] leak removed from createParentBoundablesFromVerticalSlices -2004-05-06 08:59 strk +2004-05-06 08:59 Sandro Santilli - * source/index/strtree/AbstractSTRtree.cpp: memory leak fixed + * [r355] memory leak fixed -2004-05-05 17:42 strk +2004-05-05 17:42 Sandro Santilli - * source/headers/indexStrtree.h, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp: AbstractNode destructor made - virtual. AbstractNode::bounds made protected. + * [r354] AbstractNode destructor made virtual. AbstractNode::bounds + made protected. SIRAbstractNode and STRAbstractNode destructors added to get rid of AbstractNode::bounds in the right way (is a void * casted to appropriate Class in the subClasses). -2004-05-05 16:57 strk +2004-05-05 16:57 Sandro Santilli - * source/headers/opBuffer.h, - source/operation/buffer/BufferBuilder.cpp: Rewritten static cga - allocation to avoid copy constructor calls. + * [r353] Rewritten static cga allocation to avoid copy constructor + calls. -2004-05-05 16:51 strk +2004-05-05 16:51 Sandro Santilli - * source/geom/Geometry.cpp: avoided copy constructor in + * [r352] avoided copy constructor in Geometry::geometryChangedFilter initializzazion -2004-05-05 16:39 strk +2004-05-05 16:39 Sandro Santilli - * source/noding/MCQuadtreeNoder.cpp: reduced explicit local objects - allocation + * [r351] reduced explicit local objects allocation -2004-05-05 16:36 strk +2004-05-05 16:36 Sandro Santilli - * source/operation/buffer/BufferBuilder.cpp: Avoid use of copy - c'tors on local objects initializzation + * [r350] Avoid use of copy c'tors on local objects initializzation -2004-05-05 15:51 strk +2004-05-05 15:51 Sandro Santilli - * source/noding/MCQuadtreeNoder.cpp: Fixed big leak in - intersectChains() + * [r349] Fixed big leak in intersectChains() -2004-05-05 13:08 strk +2004-05-05 13:08 Sandro Santilli - * source/algorithm/MinimumDiameter.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Leaks fixed, - explicit allocations/deallocations reduced. + * [r348] Leaks fixed, explicit allocations/deallocations reduced. -2004-05-05 12:29 strk +2004-05-05 12:29 Sandro Santilli - * source/operation/buffer/SubgraphDepthLocater.cpp: memleak fixed - in ::getDepth + * [r347] memleak fixed in ::getDepth -2004-05-05 12:20 strk +2004-05-05 12:20 Sandro Santilli - * source/geom/util/GeometryEditor.cpp: Memory leak plugged in - editGeometryCollection + * [r346] Memory leak plugged in editGeometryCollection -2004-05-05 10:54 strk +2004-05-05 10:54 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geom.h, - source/headers/opBuffer.h, source/io/Unload.cpp, - source/operation/buffer/BufferBuilder.cpp: Removed some private - static heap explicit allocation, less cleanup done by + * [r345] Removed some private static heap explicit allocation, less + cleanup done by the unloader. -2004-05-05 10:44 strk +2004-05-05 10:44 Sandro Santilli - * TODO: updated + * [r344] updated -2004-05-05 10:22 strk +2004-05-05 10:22 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Removed dynamic - allocations. + * [r343] Removed dynamic allocations. -2004-05-05 10:03 strk +2004-05-05 10:03 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Reduced dynamic allocations - in bufferOriginalPrecision and bufferFixedPrecision. + * [r342] Reduced dynamic allocations in bufferOriginalPrecision and + bufferFixedPrecision. -2004-05-03 22:56 strk +2004-05-03 22:56 Sandro Santilli - * source/geomgraph/EdgeList.cpp, source/headers/noding.h, - source/index/strtree/AbstractSTRtree.cpp, - source/noding/IteratedNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, source/noding/Noder.cpp, - source/noding/SegmentNodeList.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp: leaks fixed, - exception specification omitted. + * [r341] leaks fixed, exception specification omitted. -2004-05-03 20:49 strk +2004-05-03 20:49 Sandro Santilli - * source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/PointExtracter.cpp, - source/noding/SegmentNodeList.cpp: Some more leaks fixed + * [r340] Some more leaks fixed -2004-05-03 17:15 strk +2004-05-03 17:15 Sandro Santilli - * source/geom/util/GeometryEditor.cpp, source/headers/precision.h, - source/index/strtree/STRtree.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/precision/CommonBitsOp.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp: leaks on - exception fixed. + * [r339] leaks on exception fixed. -2004-05-03 16:29 strk +2004-05-03 16:29 Sandro Santilli - * source/headers/indexStrtree.h, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp: Added sortBoundables(const - vector) pure virtual in AbstractSTRtree, + * [r338] Added sortBoundables(const vector) pure + virtual in AbstractSTRtree, implemented in SIRtree and STRtree. Comparator funx made static in STRtree.cpp and SIRtree.cpp. -2004-05-03 13:17 strk +2004-05-03 13:17 Sandro Santilli - * source/headers/indexStrtree.h, - source/index/strtree/AbstractSTRtree.cpp: Fixed comparator - function to express StrictWeakOrdering. + * [r337] Fixed comparator function to express StrictWeakOrdering. -2004-05-03 12:09 strk +2004-05-03 12:09 Sandro Santilli - * source/noding/Noder.cpp, source/noding/SegmentNode.cpp, - source/noding/nodingSegmentIntersector.cpp, - source/planargraph/planarNodeMap.cpp: newline added at end of - file + * [r336] newline added at end of file -2004-05-03 10:43 strk +2004-05-03 10:43 Sandro Santilli - * source/geomgraph/DirectedEdgeStar.cpp, - source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/PlanarGraph.cpp, source/headers/geomgraph.h, - source/headers/opBuffer.h, source/headers/opOverlay.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/planargraph/planarDirectedEdge.cpp: Exception - specification considered harmful - left as comment. - -2004-04-30 09:15 strk - - * source/geom/Geometry.cpp, source/headers/noding.h, - source/headers/opBuffer.h, source/noding/IteratedNoder.cpp, - source/operation/buffer/BufferBuilder.cpp: Enlarged exception - specifications to allow for AssertionFailedException. + * [r335] Exception specification considered harmful - left as + comment. + +2004-04-30 09:15 Sandro Santilli + + * [r334] Enlarged exception specifications to allow for + AssertionFailedException. Added missing initializers. -2004-04-28 14:58 strk +2004-04-28 14:58 Sandro Santilli - * source/index/strtree/AbstractSTRtree.cpp: Made - AbstractSTRtree::query use dynamic_cast<> to simulate java's + * [r333] Made AbstractSTRtree::query use dynamic_cast<> to simulate + java's instanceof. Previous typeid(*) use missed to catch an STRAbstractNode as a class derived from AbstractNode. Still have to check if this @@ -13680,2929 +10943,1320 @@ SIGABORT are no more raised. -2004-04-26 22:00 pramsey +2004-04-26 22:00 Paul Ramsey - * configure.in: Bump version number to 1.4 to indicate new changes. + * [r332] Bump version number to 1.4 to indicate new changes. -2004-04-26 12:37 strk +2004-04-26 12:37 Sandro Santilli - * source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/STRtree.cpp: Some leaks fixed. + * [r331] Some leaks fixed. -2004-04-23 00:02 strk +2004-04-23 00:02 Sandro Santilli - * source/headers/noding.h, source/headers/opBuffer.h, - source/noding/IteratedNoder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp: const-correctness changes + * [r330] const-correctness changes -2004-04-21 14:14 strk +2004-04-21 14:14 Sandro Santilli - * source/geomgraph/DirectedEdgeStar.cpp: Fixed bug in computeDepths + * [r329] Fixed bug in computeDepths -2004-04-20 13:24 strk +2004-04-20 13:24 Sandro Santilli - * source/algorithm/ConvexHull.cpp, - source/algorithm/MinimumDiameter.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/Polygon.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/overlay/OverlayOp.cpp: More leaks removed. + * [r328] More leaks removed. -2004-04-20 12:47 strk +2004-04-20 12:47 Sandro Santilli - * source/algorithm/MinimumDiameter.cpp, - source/headers/geosAlgorithm.h: MinimumDiameter leaks plugged. + * [r327] MinimumDiameter leaks plugged. -2004-04-20 10:58 strk +2004-04-20 10:58 Sandro Santilli - * source/headers/opBuffer.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: More memory - leaks removed. + * [r326] More memory leaks removed. -2004-04-20 10:14 strk +2004-04-20 10:14 Sandro Santilli - * source/algorithm/MinimumDiameter.cpp, source/geom/Geometry.cpp, - source/geom/util/GeometryEditor.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp: Memory leaks - removed. + * [r325] Memory leaks removed. -2004-04-20 08:52 strk +2004-04-20 08:52 Sandro Santilli - * source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Polygon.cpp, source/geom/Triangle.cpp, - source/geom/util/GeometryEditor.cpp, source/headers/geom.h, - source/headers/geomUtil.h, source/headers/precision.h, - source/precision/SimpleGeometryPrecisionReducer.cpp: - GeometryFactory and Geometry const correctness. + * [r324] GeometryFactory and Geometry const correctness. Memory leaks removed from SimpleGeometryPrecisionReducer and GeometryFactory. -2004-04-19 16:14 strk +2004-04-19 16:14 Sandro Santilli + + * [r323] Some memory leaks plugged in noding algorithms. - * source/headers/noding.h, source/noding/IteratedNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, - source/noding/SegmentString.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Some memory - leaks plugged in noding algorithms. - -2004-04-19 15:14 strk - - * source/geomgraph/PlanarGraph.cpp, source/headers/indexQuadtree.h, - source/headers/opBuffer.h, source/headers/spatialIndex.h, - source/index/quadtree/Quadtree.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp: Added missing - virtual destructor in SpatialIndex class. +2004-04-19 15:14 Sandro Santilli + + * [r322] Added missing virtual destructor in SpatialIndex class. Memory leaks fixes. Const and throw specifications added. -2004-04-19 12:51 strk +2004-04-19 12:51 Sandro Santilli - * source/headers/noding.h, source/headers/opBuffer.h, - source/noding/IteratedNoder.cpp, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferOp.cpp: Memory leaks fixes. Throw - specifications added. + * [r321] Memory leaks fixes. Throw specifications added. -2004-04-16 14:12 strk +2004-04-16 14:12 Sandro Santilli - * source/geom/Point.cpp: Memory leak fix in copy constructor + * [r320] Memory leak fix in copy constructor -2004-04-16 14:09 strk +2004-04-16 14:09 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Leaks fixes + * [r319] Leaks fixes -2004-04-16 13:03 strk +2004-04-16 13:03 Sandro Santilli - * source/operation/buffer/OffsetCurveBuilder.cpp: More leaks fixed + * [r318] More leaks fixed -2004-04-16 12:48 strk +2004-04-16 12:48 Sandro Santilli - * source/noding/IteratedNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp: Leak fixes. + * [r317] Leak fixes. -2004-04-16 11:04 strk +2004-04-16 11:04 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Memory leaks plugged on - exception thrown + * [r316] Memory leaks plugged on exception thrown -2004-04-16 10:00 strk +2004-04-16 10:00 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Memory leak fixed. + * [r315] Memory leak fixed. -2004-04-16 09:01 strk +2004-04-16 09:01 Sandro Santilli - * source/algorithm/CGAlgorithms.cpp: Removed memory leak in - CGAlgorithms::isOnline + * [r314] Removed memory leak in CGAlgorithms::isOnline -2004-04-16 08:52 strk +2004-04-16 08:52 Sandro Santilli - * source/headers/planargraph.h, source/io/Unload.cpp: - Unload::Release final delete (static heap allocations should be - gone now) + * [r313] Unload::Release final delete (static heap allocations + should be gone now) -2004-04-16 08:35 strk +2004-04-16 08:35 Sandro Santilli - * source/geom/GeometryFactory.cpp, source/geom/Point.cpp, - source/headers/geom.h: Memory leaks fixed and const correctness - applied for Point class. + * [r312] Memory leaks fixed and const correctness applied for Point + class. -2004-04-16 07:42 strk +2004-04-16 07:42 Sandro Santilli - * source/geom/PrecisionModel.cpp, source/headers/geom.h, - source/io/Unload.cpp: PrecisionModel::Type made an enum instead - of a Type. + * [r311] PrecisionModel::Type made an enum instead of a Type. -2004-04-15 15:11 strk +2004-04-15 15:11 Sandro Santilli - * source/io/Unload.cpp: Commented out deletion that seems to cause - segfaults + * [r310] Commented out deletion that seems to cause segfaults -2004-04-15 14:00 strk +2004-04-15 14:00 Sandro Santilli - * source/headers/geom.h, source/headers/opBuffer.h, - source/io/Unload.cpp: Added new cleanup to Unload::Release + * [r309] Added new cleanup to Unload::Release -2004-04-14 13:56 strk +2004-04-14 13:56 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geom.h: All geometries - returned by {from,to}InternalGeometry calls are + * [r308] All geometries returned by {from,to}InternalGeometry calls + are now deleted after use (unless NOT new). Some 'commented' throw specifications in geom.h -2004-04-14 13:14 strk +2004-04-14 13:14 Sandro Santilli - * source/operation/overlay/OverlayOp.cpp: Removed deletion of - externally pointed GeometryFactory from OverlayOp destructor + * [r307] Removed deletion of externally pointed GeometryFactory + from OverlayOp destructor -2004-04-14 12:28 strk +2004-04-14 12:28 Sandro Santilli - * source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, - source/index/strtree/AbstractSTRtree.cpp: shouldNeverReachHere - exceptions made more verbose + * [r306] shouldNeverReachHere exceptions made more verbose -2004-04-14 11:05 strk +2004-04-14 11:05 Sandro Santilli - * source/geom/util/GeometryEditor.cpp: Added support for LinearRing - in GeometryEditor + * [r305] Added support for LinearRing in GeometryEditor -2004-04-14 10:56 strk +2004-04-14 10:56 Sandro Santilli - * source/operation/distance/DistanceOp.cpp: Uncommented - initializzazion and destruction of + * [r304] Uncommented initializzazion and destruction of DistanceOp::minDistanceLocation -2004-04-14 09:38 strk +2004-04-14 09:38 Sandro Santilli - * source/geom/PrecisionModel.cpp: PrecisionModel(double newScale) - missed to set the scale + * [r303] PrecisionModel(double newScale) missed to set the scale -2004-04-14 09:30 strk +2004-04-14 09:30 Sandro Santilli - * source/headers/noding.h, source/noding/IteratedNoder.cpp: Private - iterated noding funx now use int* instead of vector to know + * [r302] Private iterated noding funx now use int* instead of + vector to know when it's time to stop. -2004-04-14 09:11 strk +2004-04-14 09:11 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: endCapStyle was never set - in BufferOp contructor + * [r301] endCapStyle was never set in BufferOp contructor -2004-04-14 08:38 strk +2004-04-14 08:38 Sandro Santilli - * source/operation/buffer/BufferBuilder.cpp: BufferBuilder - constructor missed to initialize workingPrecisionModel + * [r300] BufferBuilder constructor missed to initialize + workingPrecisionModel -2004-04-14 08:38 strk +2004-04-14 08:38 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: BufferOp constructor missed - to set argGeom + * [r299] BufferOp constructor missed to set argGeom -2004-04-14 07:29 strk +2004-04-14 07:29 Sandro Santilli - * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/headers/geom.h: Fixed GeometryFactory constructors to copy - given PrecisionModel. Added GeometryFactory copy constructor. - Fixed Geometry constructors to copy GeometryFactory. + * [r298] Fixed GeometryFactory constructors to copy given + PrecisionModel. Added GeometryFactory copy constructor. Fixed + Geometry constructors to copy GeometryFactory. -2004-04-14 06:04 ybychkov +2004-04-14 06:04 Yury Bychkov - * source/geomgraph/index, source/geomgraph/index/MonotoneChain.cpp, - source/geomgraph/index/MonotoneChainEdge.cpp, - source/geomgraph/index/MonotoneChainIndexer.cpp, - source/geomgraph/index/SegmentIntersector.cpp, - source/geomgraph/index/SimpleEdgeSetIntersector.cpp, - source/geomgraph/index/SimpleMCSweepLineIntersector.cpp, - source/geomgraph/index/SimpleSweepLineIntersector.cpp, - source/geomgraph/index/SweepLineEvent.cpp, - source/geomgraph/index/SweepLineSegment.cpp: "geomgraph/index" - committ problem fixed. + * [r297] "geomgraph/index" committ problem fixed. -2004-04-13 14:45 strk +2004-04-13 14:45 Sandro Santilli - * source/geom/Point.cpp: Removed faulty assert in constructor + * [r296] Removed faulty assert in constructor -2004-04-13 14:33 strk +2004-04-13 14:33 Sandro Santilli - * source/geom/Makefile.am: Added more source files + * [r295] Added more source files -2004-04-13 14:28 strk +2004-04-13 14:28 Sandro Santilli - * doc/example.cpp: Removed spurious line + * [r294] Removed spurious line -2004-04-13 13:31 strk +2004-04-13 13:31 Sandro Santilli - * source/headers/precision.h: prototype mismatch fixed + * [r293] prototype mismatch fixed -2004-04-13 12:29 strk +2004-04-13 12:29 Sandro Santilli - * source/headers/opDistance.h, - source/operation/distance/GeometryLocation.cpp: GeometryLocation - const-correctness. + * [r292] GeometryLocation const-correctness. -2004-04-13 11:04 strk +2004-04-13 11:04 Sandro Santilli - * source/headers/Makefile.am: Added lost opDistance.h + * [r291] Added lost opDistance.h -2004-04-13 11:03 strk +2004-04-13 11:03 Sandro Santilli - * source/headers/Makefile.am: Added new header files + * [r290] Added new header files -2004-04-13 10:58 strk +2004-04-13 10:58 Sandro Santilli - * source/geom/Makefile.am: Added new source files + * [r289] Added new source files -2004-04-13 10:05 strk +2004-04-13 10:05 Sandro Santilli - * source/headers/opDistance.h, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/GeometryLocation.cpp: GeometryLocation - constructor made const-correct. + * [r288] GeometryLocation constructor made const-correct. Fixed erroneus down-casting in DistanceOp::computeMinDistancePoints. -2004-04-13 08:15 strk +2004-04-13 08:15 Sandro Santilli - * source/headers/geom.h: Changed all 'long long' with int64. + * [r287] Changed all 'long long' with int64. Changed all 'long long' constants to end with two Ls. -2004-04-10 22:41 ybychkov +2004-04-10 22:41 Yury Bychkov - * VisualStudio/GEOS.vcproj, source/geom/LineString.cpp, - source/geom/Point.cpp, source/headers/geom.h, - source/headers/precision.h, source/headers/util.h, - source/operation/buffer/BufferOp.cpp, source/precision, - source/precision/CommonBits.cpp, - source/precision/CommonBitsOp.cpp, - source/precision/CommonBitsRemover.cpp, - source/precision/EnhancedPrecisionOp.cpp, - source/precision/SimpleGeometryPrecisionReducer.cpp, - source/util/UniqueCoordinateArrayFilter.cpp: "precision" upgraded - to JTS 1.4 - -2004-04-10 08:40 ybychkov - - * VisualStudio/GEOS.vcproj, source/geomgraph/PlanarGraph.cpp, - source/headers/geomgraph.h, source/headers/opBuffer.h, - source/headers/opOverlay.h, - source/operation/buffer/BufferBuilder.cpp, - source/operation/buffer/BufferEdgeBuilder.cpp, - source/operation/buffer/BufferLineBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/LoopFilter.cpp, - source/operation/buffer/OffsetCurveBuilder.cpp, - source/operation/buffer/OffsetCurveSetBuilder.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/buffer/SubgraphDepthLocater.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PolygonBuilder.cpp: "operation/buffer" - upgraded to JTS 1.4 + * [r286] "precision" upgraded to JTS 1.4 -2004-04-08 04:53 ybychkov +2004-04-10 08:40 Yury Bychkov - * VisualStudio/GEOS.vcproj, source/headers/opPolygonize.h, - source/operation/polygonize, - source/operation/polygonize/PolygonizeDirectedEdge.cpp, - source/operation/polygonize/PolygonizeEdge.cpp, - source/operation/polygonize/PolygonizeGraph.cpp, - source/operation/polygonize/Polygonizer.cpp, - source/operation/polygonize/polygonizeEdgeRing.cpp: - "operation/polygonize" ported from JTS 1.4 - -2004-04-07 06:55 ybychkov - - * VisualStudio/GEOS.vcproj, source/geom/CoordinateList.cpp, - source/headers/geom.h, source/headers/opLinemerge.h, - source/headers/planargraph.h, source/operation/linemerge, - source/operation/linemerge/EdgeString.cpp, - source/operation/linemerge/LineMergeDirectedEdge.cpp, - source/operation/linemerge/LineMergeEdge.cpp, - source/operation/linemerge/LineMergeGraph.cpp, - source/operation/linemerge/LineMerger.cpp, - source/planargraph/PlanarGraph.cpp, - source/planargraph/planarNodeMap.cpp, - source/planargraph/planarPlanarGraph.cpp: "operation/linemerge" - ported from JTS 1.4 - -2004-04-05 06:35 ybychkov - - * VisualStudio/GEOS.vcproj, source/algorithm/CGAlgorithms.cpp, - source/geom/LineSegment.cpp, source/headers/indexStrtree.h, - source/headers/opDistance.h, source/index/strtree/STRtree.cpp, - source/operation/distance/ConnectedElementLocationFilter.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/GeometryLocation.cpp, - source/operation/distance/LineExtracterFilter.cpp, - source/operation/distance/PointExtracterFilter.cpp, - source/operation/distance/PolygonExtracterFilter.cpp: - "operation/distance" upgraded to JTS 1.4 - -2004-04-04 06:29 ybychkov - - * VisualStudio/GEOS.vcproj, source/geom/GeometryFactory.cpp, - source/geom/util, source/geom/util/GeometryEditor.cpp, - source/geom/util/LinearComponentExtracter.cpp, - source/geom/util/PointExtracter.cpp, - source/geom/util/PolygonExtracter.cpp, source/headers/geom.h, - source/headers/geomUtil.h, source/headers/geomgraph.h, - source/headers/geomgraphindex.h, source/headers/planargraph.h, - source/planargraph, source/planargraph/PlanarGraph.cpp, - source/planargraph/planarDirectedEdge.cpp, - source/planargraph/planarDirectedEdgeStar.cpp, - source/planargraph/planarEdge.cpp, - source/planargraph/planarGraphComponent.cpp, - source/planargraph/planarNode.cpp, - source/planargraph/planarNodeMap.cpp: "planargraph" and - "geom/utill" upgraded to JTS 1.4 - -2004-04-01 10:44 ybychkov - - * source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/Polygon.cpp, - source/headers/geom.h, source/io/Unload.cpp: All "geom" classes - from JTS 1.3 upgraded to JTS 1.4 - -2004-03-31 07:50 ybychkov - - * source/geom/LineString.cpp, source/geom/MultiPoint.cpp, - source/geom/MultiPolygon.cpp, source/geom/Point.cpp, - source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, - source/geomgraph/EdgeNodingValidator.cpp, source/headers/geom.h: - "geom" partially upgraded to JTS 1.4 - -2004-03-29 06:59 ybychkov - - * VisualStudio/GEOS.vcproj, source/geom/LineSegment.cpp, - source/headers/geom.h, source/headers/nodingSnapround.h, - source/headers/opOverlay.h, source/headers/opRelate.h, - source/headers/opValid.h, source/headers/operation.h, - source/io/Unload.cpp, source/noding/snapround, - source/noding/snapround/SegmentSnapper.cpp, - source/noding/snapround/SimpleSegmentStringsSnapper.cpp, - source/noding/snapround/SnapRounder.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp: - "noding/snapround" package ported (JTS 1.4); + * [r285] "operation/buffer" upgraded to JTS 1.4 + +2004-04-08 04:53 Yury Bychkov + + * [r284] "operation/polygonize" ported from JTS 1.4 + +2004-04-07 06:55 Yury Bychkov + + * [r283] "operation/linemerge" ported from JTS 1.4 + +2004-04-05 06:35 Yury Bychkov + + * [r282] "operation/distance" upgraded to JTS 1.4 + +2004-04-04 06:29 Yury Bychkov + + * [r281] "planargraph" and "geom/utill" upgraded to JTS 1.4 + +2004-04-01 10:44 Yury Bychkov + + * [r280] All "geom" classes from JTS 1.3 upgraded to JTS 1.4 + +2004-03-31 07:50 Yury Bychkov + + * [r279] "geom" partially upgraded to JTS 1.4 + +2004-03-29 06:59 Yury Bychkov + + * [r278] "noding/snapround" package ported (JTS 1.4); "operation", "operation/valid", "operation/relate" and "operation/overlay" upgraded to JTS 1.4; "geom" partially upgraded. -2004-03-26 07:48 ybychkov +2004-03-26 07:48 Yury Bychkov - * VisualStudio/GEOS.vcproj, source/headers/noding.h, source/noding, - source/noding/IteratedNoder.cpp, - source/noding/MCQuadtreeNoder.cpp, source/noding/Noder.cpp, - source/noding/NodingValidator.cpp, source/noding/SegmentNode.cpp, - source/noding/SegmentNodeList.cpp, - source/noding/SegmentString.cpp, source/noding/SimpleNoder.cpp, - source/noding/nodingSegmentIntersector.cpp: "noding" package - ported (JTS 1.4) - -2004-03-25 02:23 ybychkov - - * source/algorithm/RobustLineIntersector.cpp, source/graph, - source/headers/indexBintree.h, source/headers/indexChain.h, - source/headers/indexQuadtree.h, source/headers/indexStrtree.h, - source/headers/spatialIndex.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp: All "index/*" packages upgraded - to JTS 1.4 - -2004-03-19 09:49 ybychkov - - * VisualStudio/GEOS.vcproj, source/algorithm/PointLocator.cpp, - source/geomgraph, source/geomgraph/Depth.cpp, - source/geomgraph/DirectedEdge.cpp, - source/geomgraph/DirectedEdgeStar.cpp, source/geomgraph/Edge.cpp, - source/geomgraph/EdgeEnd.cpp, source/geomgraph/EdgeEndStar.cpp, - source/geomgraph/EdgeIntersection.cpp, - source/geomgraph/EdgeIntersectionList.cpp, - source/geomgraph/EdgeList.cpp, - source/geomgraph/EdgeNodingValidator.cpp, - source/geomgraph/EdgeRing.cpp, - source/geomgraph/GeometryGraph.cpp, - source/geomgraph/GraphComponent.cpp, source/geomgraph/Label.cpp, - source/geomgraph/Node.cpp, source/geomgraph/NodeFactory.cpp, - source/geomgraph/NodeMap.cpp, source/geomgraph/PlanarGraph.cpp, - source/geomgraph/Position.cpp, source/geomgraph/Quadrant.cpp, - source/geomgraph/TopologyLocation.cpp, - source/graph/index/MonotoneChain.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleEdgeSetIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SimpleSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, - source/headers/geomgraph.h, source/headers/geomgraphindex.h, - source/headers/graph.h, source/headers/graphindex.h, - source/headers/noding.h, source/headers/opOverlay.h, - source/headers/opRelate.h, source/headers/operation.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/io/Unload.cpp, source/operation/buffer/BufferOp.cpp, - source/operation/overlay/OverlayOp.cpp, - source/test/XMLTester.cpp: "geomgraph" and "geomgraph/indexl" - upgraded to JTS 1.4 + * [r277] "noding" package ported (JTS 1.4) + +2004-03-25 02:23 Yury Bychkov + + * [r276] All "index/*" packages upgraded to JTS 1.4 + +2004-03-19 09:49 Yury Bychkov -2004-03-18 10:42 ybychkov + * [r275] "geomgraph" and "geomgraph/indexl" upgraded to JTS 1.4 - * VisualStudio/GEOS.vcproj, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, source/geom/Envelope.cpp, - source/geom/Triangle.cpp, source/headers/geom.h, - source/headers/io.h, source/headers/util.h, - source/io/StringTokenizer.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/util/GeometricShapeFactory.cpp: - "IO" and "Util" upgraded to JTS 1.4 +2004-03-18 10:42 Yury Bychkov + + * [r274] "IO" and "Util" upgraded to JTS 1.4 "Geometry" partially upgraded. -2004-03-17 02:00 ybychkov +2004-03-17 02:00 Yury Bychkov + + * [r273] "Algorithm" upgraded to JTS 1.4 + +2004-03-01 22:04 Sandro Santilli + + * [r272] applied const correctness changes by Manuel Prieto + Villegas - * VisualStudio/GEOS.sln, VisualStudio/GEOS.vcproj, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MinimumDiameter.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, source/geom/Geometry.cpp, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/test/Stackwalker.h: "Algorithm" upgraded to JTS 1.4 - -2004-03-01 22:04 strk - - * source/geom/Geometry.cpp, source/headers/geom.h, - source/headers/opBuffer.h, source/headers/opRelate.h, - source/operation/buffer/BufferOp.cpp, - source/operation/relate/RelateOp.cpp: applied const correctness - changes by Manuel Prieto Villegas - - -2004-02-27 17:43 strk - - * source/geom/Polygon.cpp: memory leak fix in Polygon::getArea() - - reported by 'Manuel Prieto Villegas' - -2004-02-27 17:42 strk - - * source/algorithm/CGAlgorithms.cpp, - source/headers/geosAlgorithm.h: made CGAlgorithms::signedArea() - and CGAlgorithms::length() arguments const-correct +2004-02-27 17:43 Sandro Santilli -2004-02-20 05:44 pramsey + * [r271] memory leak fix in Polygon::getArea() - reported by + 'Manuel Prieto Villegas' - * ltmain.sh: Changed to new version of ltmain, that matches the - version of libtool +2004-02-27 17:42 Sandro Santilli + + * [r270] made CGAlgorithms::signedArea() and CGAlgorithms::length() + arguments const-correct + +2004-02-20 05:44 Paul Ramsey + + * [r269] Changed to new version of ltmain, that matches the version + of libtool on build box -2004-01-20 05:51 pramsey +2004-01-20 05:51 Paul Ramsey - * configure.in: Change platform.h back to AM_CONFIG_HEADER. + * [r268] Change platform.h back to AM_CONFIG_HEADER. -2004-01-20 05:10 pramsey +2004-01-20 05:10 Paul Ramsey - * configure.in: Change AM_CONFIG_HEADER to AC_CONFIG_HEADERS to - allow autoheader to work + * [r267] Change AM_CONFIG_HEADER to AC_CONFIG_HEADERS to allow + autoheader to work its magic. -2003-12-11 17:01 strk +2003-12-11 17:01 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: made buffer(0) back to its - *correct* semantic (empy collection) + * [r266] made buffer(0) back to its *correct* semantic (empy + collection) -2003-12-11 16:01 strk +2003-12-11 16:01 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: made buffer operation - return a cloned input geom when called with 0 as distance + * [r265] made buffer operation return a cloned input geom when + called with 0 as distance -2003-12-11 15:53 strk +2003-12-11 15:53 Sandro Santilli - * source/geom/GeometryCollection.cpp: Fixed bogus copy constructor - (making clone bogus) + * [r264] Fixed bogus copy constructor (making clone bogus) -2003-11-13 11:57 strk +2003-11-13 11:57 Sandro Santilli - * doc/example.cpp: bug fixed in relate call + * [r263] bug fixed in relate call -2003-11-12 22:03 strk +2003-11-12 22:03 Sandro Santilli - * doc/example.cpp: added relational operators + * [r262] added relational operators -2003-11-12 18:02 strk +2003-11-12 18:02 Sandro Santilli - * source/graph/PlanarGraph.cpp, source/headers/graph.h, - source/headers/opOverlay.h, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PolygonBuilder.cpp: Added throw - specification. Fixed leaks on exceptions. + * [r261] Added throw specification. Fixed leaks on exceptions. -2003-11-12 17:15 strk +2003-11-12 17:15 Sandro Santilli - * source/geom/PrecisionModel.cpp: made sure PrecisionModel scale is - never 0 + * [r260] made sure PrecisionModel scale is never 0 -2003-11-12 17:10 strk +2003-11-12 17:10 Sandro Santilli - * source/test/XMLTester.cpp: added missing initialization + * [r259] added missing initialization -2003-11-12 16:14 strk +2003-11-12 16:14 Sandro Santilli - * source/headers/opOverlay.h, - source/operation/overlay/OverlayOp.cpp: Added some more throw - specifications and cleanup on exception (leaks removed). + * [r258] Added some more throw specifications and cleanup on + exception (leaks removed). -2003-11-12 15:43 strk +2003-11-12 15:43 Sandro Santilli - * source/graph/DirectedEdgeStar.cpp, source/graph/EdgeEndStar.cpp, - source/graph/GeometryGraph.cpp, source/headers/graph.h: Added - some more throw specifications + * [r257] Added some more throw specifications -2003-11-12 15:02 strk +2003-11-12 15:02 Sandro Santilli - * source/test/XMLTester.cpp: more cleanup on exception + * [r256] more cleanup on exception -2003-11-12 11:08 strk +2003-11-12 11:08 Sandro Santilli - * doc/example.cpp: removed old changelog, moved comments in the - nice standard frame + * [r255] removed old changelog, moved comments in the nice standard + frame -2003-11-12 11:05 strk +2003-11-12 11:05 Sandro Santilli - * autogen.sh: added autoheader call + * [r254] added autoheader call -2003-11-07 17:51 strk +2003-11-07 17:51 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Memory leak fix in - insertEdge() + * [r253] Memory leak fix in insertEdge() -2003-11-07 17:49 pramsey +2003-11-07 17:49 Paul Ramsey - * ChangeLog: Added current ChangeLog + * [r252] Added current ChangeLog -2003-11-07 17:45 strk +2003-11-07 17:45 Sandro Santilli - * source/headers/config.h.in: will be generated with ./autogen.sh + * [r251] will be generated with ./autogen.sh -2003-11-07 14:21 strk +2003-11-07 14:21 Sandro Santilli - * Makefile.am, configure.in, doc, doc/.cvsignore, doc/Makefile, - doc/Makefile.am: Made doc/ directory part of distribution. - Uniformed doc build script to + * [r250] Made doc/ directory part of distribution. Uniformed doc + build script to autotools. -2003-11-07 14:19 strk +2003-11-07 14:19 Sandro Santilli - * source/headers, source/headers/.cvsignore: added config.h.in - (missed before) + * [r249] added config.h.in (missed before) -2003-11-07 14:18 strk +2003-11-07 14:18 Sandro Santilli - * source/headers, source/headers/.cvsignore: added config.h.in + * [r248] added config.h.in -2003-11-07 01:58 pramsey - - * AUTHORS: Added people! - -2003-11-07 01:23 pramsey - - * doc/example.cpp, source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/bigtest/TestSweepLineSpeed.cpp, - source/examples/CPCLException.cpp, - source/examples/CoordinateListsExample.cpp, - source/examples/CustomCoordinateListExample.cpp, - source/examples/CustomCoordinateListExample.h, - source/examples/CustomPointCoordinateList.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateListFactory.cpp, source/geom/Dimension.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, source/graph/Depth.cpp, - source/graph/DirectedEdge.cpp, source/graph/DirectedEdgeStar.cpp, - source/graph/Edge.cpp, source/graph/EdgeEnd.cpp, - source/graph/EdgeEndStar.cpp, source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, - source/graph/GraphComponent.cpp, source/graph/Label.cpp, - source/graph/Node.cpp, source/graph/NodeFactory.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/Position.cpp, source/graph/Quadrant.cpp, - source/graph/TopologyLocation.cpp, - source/graph/index/MonotoneChain.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleEdgeSetIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SimpleSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, - source/headers/acconfig.h, source/headers/bigtest.h, - source/headers/config.h.in, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, source/headers/indexBintree.h, - source/headers/indexChain.h, source/headers/indexQuadtree.h, - source/headers/indexStrtree.h, source/headers/indexSweepline.h, - source/headers/io.h, source/headers/opBuffer.h, - source/headers/opDistance.h, source/headers/opOverlay.h, - source/headers/opRelate.h, source/headers/opValid.h, - source/headers/operation.h, source/headers/spatialIndex.h, - source/headers/unload.h, source/headers/util.h, - source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, source/index/bintree/Key.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/Unload.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, source/io/Writer.cpp, - source/io/markup/MarkupSTL.h, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferEdgeBuilder.cpp, - source/operation/buffer/BufferLineBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/LoopFilter.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/LineExtracterFilter.cpp, - source/operation/distance/PointExtracterFilter.cpp, - source/operation/distance/PolygonExtracterFilter.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/test/CTS.cpp, source/test/SimpleWKTTester.cpp, - source/test/Stackwalker.h, source/test/XMLTester.cpp, - source/util/Assert.cpp, source/util/AssertionFailedException.cpp, - source/util/CoordinateArrayFiter.cpp, - source/util/GEOSException.cpp, - source/util/IllegalArgumentException.cpp, - source/util/UniqueCoordinateArrayFilter.cpp, - source/util/UnsupportedOperationException.cpp: Add standard CVS - headers licence notices and copyrights to all cpp and h +2003-11-07 01:58 Paul Ramsey + + * [r247] Added people! + +2003-11-07 01:23 Paul Ramsey + + * [r245] Add standard CVS headers licence notices and copyrights to + all cpp and h files. -2003-11-06 19:04 strk +2003-11-06 19:04 Sandro Santilli - * source/graph/EdgeIntersectionList.cpp: removed useless Coordinate - copy in ::createSplitEdge() + * [r244] removed useless Coordinate copy in ::createSplitEdge() -2003-11-06 18:50 strk +2003-11-06 18:50 Sandro Santilli - * doc, doc/.cvsignore: first import + * [r243] first import -2003-11-06 18:48 strk +2003-11-06 18:48 Sandro Santilli - * TODO: updated + * [r242] updated -2003-11-06 18:48 strk +2003-11-06 18:48 Sandro Santilli - * source/operation/overlay/PolygonBuilder.cpp: added throw - information comment in PolygonBuilder + * [r241] added throw information comment in PolygonBuilder -2003-11-06 18:47 strk +2003-11-06 18:47 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Added throw specification - for BufferOp's ::buildSubgraphs() and ::computeBuffer(). Cleanup - on exception in computeBuffer(). + * [r240] Added throw specification for BufferOp's + ::buildSubgraphs() and ::computeBuffer(). Cleanup on exception in + computeBuffer(). -2003-11-06 18:46 strk +2003-11-06 18:46 Sandro Santilli - * source/headers/opBuffer.h: Added throw specification for - BufferOp's ::buildSubgraphs() and ::computeBuffer() + * [r239] Added throw specification for BufferOp's + ::buildSubgraphs() and ::computeBuffer() -2003-11-06 18:45 strk +2003-11-06 18:45 Sandro Santilli - * source/graph/DirectedEdgeStar.cpp, source/headers/graph.h: Added - throw specification for DirectEdgeStar::linkResultDirectedEdges() + * [r238] Added throw specification for + DirectEdgeStar::linkResultDirectedEdges() -2003-11-06 18:00 strk +2003-11-06 18:00 Sandro Santilli - * source/operation/buffer/BufferOp.cpp: Cleanup on exception in - ::bufferOp() + * [r237] Cleanup on exception in ::bufferOp() -2003-11-06 17:59 strk +2003-11-06 17:59 Sandro Santilli - * source/graph/EdgeRing.cpp: Memory leaks fixed in - ::containsPoint() + * [r236] Memory leaks fixed in ::containsPoint() -2003-11-06 17:48 strk +2003-11-06 17:48 Sandro Santilli - * source/operation/buffer/BufferLineBuilder.cpp: Fixed memory leaks - in ::closePt() and ::addLineEndCap() + * [r235] Fixed memory leaks in ::closePt() and ::addLineEndCap() -2003-11-06 17:47 strk +2003-11-06 17:47 Sandro Santilli - * source/operation/buffer/BufferEdgeBuilder.cpp: Added support for - LinearRing, removed memory leaks in ::addLineString + * [r234] Added support for LinearRing, removed memory leaks in + ::addLineString -2003-11-06 17:41 strk +2003-11-06 17:41 Sandro Santilli - * doc/example.cpp: Added Buffer,Intersection,Difference and - Symdifference. Exception cleanup + * [r233] Added Buffer,Intersection,Difference and Symdifference. + Exception cleanup -2003-11-06 17:33 pramsey +2003-11-06 17:33 Paul Ramsey - * INSTALL: Small addition of into about LD_LIBRARY_PATH + * [r232] Small addition of into about LD_LIBRARY_PATH -2003-11-05 21:52 strk +2003-11-05 21:52 Sandro Santilli - * doc/Makefile, doc/example.cpp: Modified example.cpp to make use - of vectors instead of Geometry * / int + * [r231] Modified example.cpp to make use of vectors instead of + Geometry * / int couples. Added LineString creation example. Added Makefile to compile it. -2003-11-03 16:09 strk +2003-11-03 16:09 Sandro Santilli - * doc/example.cpp: Removed comments about segfaults, made the - simple collection creation call + * [r230] Removed comments about segfaults, made the simple + collection creation call cleaner by use of the clone() method. -2003-10-31 16:36 strk +2003-10-31 16:36 Sandro Santilli - * source/geom/GeometryCollection.cpp, source/geom/LineString.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/headers/geom.h: Re-introduced clone() method. Copy - constructor could not really replace it. + * [r229] Re-introduced clone() method. Copy constructor could not + really replace it. -2003-10-29 10:38 strk +2003-10-29 10:38 Sandro Santilli - * doc/example.cpp: Added centroid computation example + * [r228] Added centroid computation example -2003-10-29 10:38 strk +2003-10-29 10:38 Sandro Santilli - * source/algorithm/CentroidLine.cpp: Added support for LinearRing - types (treated as LineString) + * [r227] Added support for LinearRing types (treated as LineString) -2003-10-24 21:27 strk +2003-10-24 21:27 Sandro Santilli - * source/headers/geom.h: Added GeometryTypeId enum and - getGeometryTypeId abstract Geometry method. + * [r226] Added GeometryTypeId enum and getGeometryTypeId abstract + Geometry method. -2003-10-23 09:17 strk +2003-10-23 09:17 Sandro Santilli - * source/headers, source/headers/.cvsignore: Added stamp-h2 and - platform.h + * [r225] Added stamp-h2 and platform.h -2003-10-23 09:12 strk +2003-10-23 09:12 Sandro Santilli - * source/headers/util.h: Made CoordinateArrayFilter destructor - virtual. + * [r224] Made CoordinateArrayFilter destructor virtual. -2003-10-22 23:58 strk +2003-10-22 23:58 Sandro Santilli - * configure.in, source/headers/platform.h, - source/headers/platform.h.in: Made platform.h be created by - configure. In this way we will not have + * [r223] Made platform.h be created by configure. In this way we + will not have problems of installed headers trying to include phantom config.h. -2003-10-22 00:44 strk +2003-10-22 00:44 Sandro Santilli - * source/headers/indexQuadtree.h, source/headers/platform.h, - source/index/quadtree/DoubleBits.cpp: Quadtree bitfield - operations made using type int64. Type int64 typedef'ed based + * [r222] Quadtree bitfield operations made using type int64. Type + int64 typedef'ed based on autoconf detected int type (long or long long). If long is not 64bits int64 will be really 32 bits and INT64_IS_REALLY32 will be defined. -2003-10-21 23:51 strk +2003-10-21 23:51 Sandro Santilli - * acsite.m4, configure.in, source/headers/acconfig.h, - source/headers/config.h.in: Added macros to find 64bit integer. + * [r221] Added macros to find 64bit integer. -2003-10-21 16:16 strk +2003-10-21 16:16 Sandro Santilli - * doc/example.cpp: Uncommented point creation lines. Updated - comments about segfaults. + * [r220] Uncommented point creation lines. Updated comments about + segfaults. -2003-10-21 05:35 pramsey +2003-10-21 05:35 Paul Ramsey - * source/test/Makefile.am: Added test.xml so it gets picked up by - 'make dist' + * [r219] Added test.xml so it gets picked up by 'make dist' -2003-10-21 05:09 pramsey +2003-10-21 05:09 Paul Ramsey - * INSTALL: Added simple installation directions. + * [r218] Added simple installation directions. -2003-10-21 04:55 pramsey +2003-10-21 04:55 Paul Ramsey - * source/examples/Makefile.am, source/geom/Makefile.am, - source/test/Makefile.am: Fix up references to header files to - 'make dist' works. + * [r217] Fix up references to header files to 'make dist' works. -2003-10-20 17:50 strk +2003-10-20 17:50 Sandro Santilli - * doc/example.cpp: added Union example + * [r216] added Union example -2003-10-20 15:41 strk +2003-10-20 15:41 Sandro Santilli - * source/geom/Geometry.cpp, source/headers/geom.h: - Geometry::checkNotGeometryCollection made static and + * [r215] Geometry::checkNotGeometryCollection made static and non-distructive. -2003-10-20 14:02 strk +2003-10-20 14:02 Sandro Santilli - * source/graph/EdgeRing.cpp, - source/operation/valid/ConnectedInteriorTester.cpp: more explicit - exception thrown on null Directed Edge detection + * [r214] more explicit exception thrown on null Directed Edge + detection -2003-10-20 13:56 strk +2003-10-20 13:56 Sandro Santilli - * source/util/AssertionFailedException.cpp: fixed typo + * [r213] fixed typo -2003-10-20 13:53 strk +2003-10-20 13:53 Sandro Santilli - * source/graph/GeometryGraph.cpp: LinearRing handled as a - LineString in GeometryGraph::add(const Geometry *) - more - explicit exception thrown for unknown geometries + * [r212] LinearRing handled as a LineString in + GeometryGraph::add(const Geometry *) - more explicit exception + thrown for unknown geometries -2003-10-17 05:51 ybychkov +2003-10-17 05:51 Yury Bychkov - * VisualStudio/GEOS.vcproj, source/geom/Polygon.cpp, - source/headers/indexQuadtree.h, - source/index/quadtree/DoubleBits.cpp, source/test/XMLTester.cpp: - Fixed a small memory leak. + * [r211] Fixed a small memory leak. -2003-10-16 17:41 strk +2003-10-16 17:41 Sandro Santilli - * source/util/GEOSException.cpp, - source/util/UnsupportedOperationException.cpp: Fixed a bug in - GEOSException that prevented print of the type of exception - thrown. + * [r210] Fixed a bug in GEOSException that prevented print of the + type of exception thrown. -2003-10-16 17:33 strk +2003-10-16 17:33 Sandro Santilli - * source/operation/valid/RepeatedPointTester.cpp: dropped useless - string() cast + * [r209] dropped useless string() cast -2003-10-16 17:05 strk +2003-10-16 17:05 Sandro Santilli - * source/geom/TopologyException.cpp, source/headers/geom.h, - source/headers/util.h, source/util/IllegalArgumentException.cpp: - Made TopologyException inherit from GEOSException. Adjusted - IllegalArgumentException subclassing. + * [r208] Made TopologyException inherit from GEOSException. + Adjusted IllegalArgumentException subclassing. -2003-10-16 13:01 strk +2003-10-16 13:01 Sandro Santilli - * source/test/XMLTester.cpp: Added call to Unload::Release() + * [r207] Added call to Unload::Release() -2003-10-16 12:09 strk +2003-10-16 12:09 Sandro Santilli - * source/test/XMLTester.cpp: bug fixed in exception handling + * [r206] bug fixed in exception handling -2003-10-16 08:50 strk +2003-10-16 08:50 Sandro Santilli - * source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/geom/LineString.cpp, source/geom/MultiPolygon.cpp, - source/geom/Polygon.cpp, source/headers/geosAlgorithm.h, - source/operation/distance/DistanceOp.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp: Memory leak - fixes. Improved performance by mean of more calls to new - getCoordinatesRO() when applicable. + * [r205] Memory leak fixes. Improved performance by mean of more + calls to new getCoordinatesRO() when applicable. -2003-10-16 08:48 strk +2003-10-16 08:48 Sandro Santilli - * source/test/XMLTester.cpp: Exceptions handled + * [r204] Exceptions handled -2003-10-15 16:39 strk +2003-10-15 16:39 Sandro Santilli - * source/geom/GeometryFactory.cpp, source/graph/Edge.cpp, - source/graph/EdgeList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/PlanarGraph.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleEdgeSetIntersector.cpp, - source/graph/index/SimpleSweepLineIntersector.cpp, - source/headers/geom.h, source/headers/graph.h, - source/headers/graphindex.h, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/overlay/LineBuilder.cpp: Made - Edge::getCoordinates() return a 'const' value. Adapted code set. + * [r203] Made Edge::getCoordinates() return a 'const' value. + Adapted code set. -2003-10-15 15:47 strk +2003-10-15 15:47 Sandro Santilli - * source/algorithm/MCPointInRing.cpp, - source/algorithm/PointLocator.cpp: Adapted to new - getCoordinatesRO() interface + * [r202] Adapted to new getCoordinatesRO() interface -2003-10-15 15:30 strk +2003-10-15 15:30 Sandro Santilli - * source/graph/index/MonotoneChain.cpp, - source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, - source/headers/graphindex.h: Declared a SweepLineEventOBJ from - which MonotoneChain and SweepLineSegment + * [r201] Declared a SweepLineEventOBJ from which MonotoneChain and + SweepLineSegment derive to abstract SweepLineEvent object previously done on void * pointers. No more compiler warnings... -2003-10-15 11:24 strk +2003-10-15 11:24 Sandro Santilli + + * [r200] Use getCoordinatesRO() introduced. - * source/graph/GeometryGraph.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp: Use getCoordinatesRO() - introduced. - -2003-10-15 11:23 strk - - * source/geom/BasicCoordinateList.cpp, - source/geom/CoordinateList.cpp, - source/geom/PointCoordinateList.cpp, source/headers/geom.h: - Formalized const nature of toVector() method and of first +2003-10-15 11:23 Sandro Santilli + + * [r199] Formalized const nature of toVector() method and of first argument to static removeRepeatedPoints(). -2003-10-15 10:17 strk +2003-10-15 10:17 Sandro Santilli - * source/geom/BasicCoordinateList.cpp, - source/geom/PointCoordinateList.cpp, source/headers/geom.h: Made - setPoints() get a const vector. + * [r198] Made setPoints() get a const vector. -2003-10-15 09:54 strk +2003-10-15 09:54 Sandro Santilli - * source/geom/LineString.cpp, source/headers/geom.h: Added - getCoordinatesRO() public method. + * [r197] Added getCoordinatesRO() public method. -2003-10-15 08:52 strk +2003-10-15 08:52 Sandro Santilli - * source/io/WKTReader.cpp: Memory leaks fixed. + * [r196] Memory leaks fixed. -2003-10-15 08:51 strk +2003-10-15 08:51 Sandro Santilli - * TODO: Initial import + * [r195] Initial import -2003-10-15 08:08 strk +2003-10-15 08:08 Sandro Santilli - * source/geom/Polygon.cpp: Memory leaks fixed. Partially due to - getCoordinates() and GeometryCollection() + * [r194] Memory leaks fixed. Partially due to getCoordinates() and + GeometryCollection() changes, partially old dated. -2003-10-14 15:58 strk +2003-10-14 15:58 Sandro Santilli - * source/geom/GeometryFactory.cpp: Useless vector - leaking allocations removed + * [r193] Useless vector leaking allocations removed -2003-10-13 21:26 strk +2003-10-13 21:26 Sandro Santilli - * ., .cvsignore, macros, macros/.cvsignore, source/bigtest, - source/bigtest/.cvsignore, source/examples, - source/examples/.cvsignore, source/geom, source/geom/.cvsignore, - source/headers, source/headers/.cvsignore, source/test, - source/test/.cvsignore: Added build time created files to - cvsignore lists - -2003-10-13 17:54 strk - - * source/headers/opValid.h, source/operation/valid/IsValidOp.cpp: - IsValidOp constructor used same name for the arg and a private - element. Fixed. - -2003-10-13 17:47 strk - - * source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/PolygonBuilder.cpp: delete statement - removed - -2003-10-13 15:39 strk - - * source/algorithm/CentroidArea.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/headers/geosAlgorithm.h: Fixed some leak or fault flips - (forced copy of a single coordinate) - -2003-10-13 15:02 strk - - * source/test/XMLTester.cpp: accept input file as first argument on - cmdline - -2003-10-13 12:51 strk - - * source/geom/Geometry.cpp, source/headers/geom.h: removed - sortedClasses strings array from all geometries. - -2003-10-13 09:24 strk - - * source/headers/indexQuadtree.h, - source/index/quadtree/DoubleBits.cpp: long -> long long - enlargement of types to allow for left/rigth shift of 53 bits - -2003-10-11 03:23 strk - - * source/geom/LineString.cpp, source/geom/LinearRing.cpp: fixed - spurious typos - -2003-10-11 01:56 strk - - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, - source/geom/MultiPolygon.cpp, source/geom/Point.cpp, - source/geom/PointCoordinateList.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, source/graph/Edge.cpp, - source/graph/EdgeEnd.cpp, source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/GraphComponent.cpp, - source/graph/Label.cpp, source/graph/Node.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/Quadrant.cpp, source/graph/TopologyLocation.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/io.h, source/headers/opBuffer.h, - source/headers/opDistance.h, source/headers/opOverlay.h, - source/headers/opRelate.h, source/headers/opValid.h, - source/headers/operation.h, source/headers/util.h, - source/index/chain/indexMonotoneChain.cpp, - source/io/WKTWriter.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferEdgeBuilder.cpp, - source/operation/buffer/BufferLineBuilder.cpp, - source/operation/buffer/LoopFilter.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/LineExtracterFilter.cpp, - source/operation/distance/PointExtracterFilter.cpp, - source/operation/distance/PolygonExtracterFilter.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/util/Assert.cpp, source/util/CoordinateArrayFiter.cpp, - source/util/UniqueCoordinateArrayFilter.cpp: Code base padded - with 'const' keywords ;) + * [r192] Added build time created files to cvsignore lists -2003-10-09 15:35 strk +2003-10-13 17:54 Sandro Santilli - * source/geom/GeometryFactory.cpp, source/headers/geom.h: added - 'const' keyword to GeometryFactory constructor, Log on top of - geom.h + * [r191] IsValidOp constructor used same name for the arg and a + private element. Fixed. -2003-10-09 11:20 strk +2003-10-13 17:47 Sandro Santilli - * doc/example.cpp: moved Log to a better place + * [r190] delete statement removed -2003-10-09 11:19 strk +2003-10-13 15:39 Sandro Santilli - * doc/example.cpp: added convexHull and PrecisionModel + * [r189] Fixed some leak or fault flips (forced copy of a single + coordinate) -2003-10-09 10:14 strk +2003-10-13 15:02 Sandro Santilli - * source/geom/GeometryFactory.cpp: just a style change in top Log - comment. + * [r188] accept input file as first argument on cmdline + +2003-10-13 12:51 Sandro Santilli + + * [r187] removed sortedClasses strings array from all geometries. + +2003-10-13 09:24 Sandro Santilli + + * [r186] long -> long long enlargement of types to allow for + left/rigth shift of 53 bits -2003-10-09 10:10 strk +2003-10-11 03:23 Sandro Santilli - * source/geom/PrecisionModel.cpp: Throw an exception if scale is 0. - Added Log entry. + * [r185] fixed spurious typos -2003-10-09 09:42 strk +2003-10-11 01:56 Sandro Santilli - * source/geom/GeometryFactory.cpp: Tried to "formalize" constant - nature of the first argument given to constructor by - PrecisionModel and SRID specification. Added CVS Log on top. + * [r184] Code base padded with 'const' keywords ;) -2003-10-09 08:58 strk +2003-10-09 15:35 Sandro Santilli - * doc/example.cpp, source/algorithm/ConvexHull.cpp: Added - convexHull() call to example, fixed leaks in ConvexHull + * [r183] added 'const' keyword to GeometryFactory constructor, Log + on top of geom.h -2003-10-09 00:11 strk +2003-10-09 11:20 Sandro Santilli - * doc, doc/example.cpp: First reference-by-example file. + * [r182] moved Log to a better place -2003-10-08 16:51 strk +2003-10-09 11:19 Sandro Santilli - * source/geom/Makefile.am, source/headers/Makefile.am, - source/headers/geom.h, source/headers/graph.h, - source/headers/indexQuadtree.h, source/headers/opRelate.h, - source/headers/opValid.h, source/headers/operation.h, - source/headers/unload.h, source/io/Unload.cpp: Added xie's Unload - class with some fixes. + * [r181] added convexHull and PrecisionModel -2003-10-08 13:18 strk +2003-10-09 10:14 Sandro Santilli - * source/headers/io.h, source/io/WKTWriter.cpp: added missing - LinearRing writing capabilities. + * [r180] just a style change in top Log comment. -2003-10-08 10:36 strk +2003-10-09 10:10 Sandro Santilli - * source/geom/GeometryCollection.cpp: Constructor by - vector * now makes a copy of the vector so that call + * [r179] Throw an exception if scale is 0. Added Log entry. + +2003-10-09 09:42 Sandro Santilli + + * [r178] Tried to "formalize" constant nature of the first argument + given to constructor by PrecisionModel and SRID specification. + Added CVS Log on top. + +2003-10-09 08:58 Sandro Santilli + + * [r177] Added convexHull() call to example, fixed leaks in + ConvexHull + +2003-10-09 00:11 Sandro Santilli + + * [r176] First reference-by-example file. + +2003-10-08 16:51 Sandro Santilli + + * [r175] Added xie's Unload class with some fixes. + +2003-10-08 13:18 Sandro Santilli + + * [r174] added missing LinearRing writing capabilities. + +2003-10-08 10:36 Sandro Santilli + + * [r173] Constructor by vector * now makes a copy of + the vector so that call ers can safely delete it when done. -2003-10-07 21:47 strk +2003-10-07 21:47 Sandro Santilli - * source/algorithm/SimplePointInAreaLocator.cpp, - source/geom/Polygon.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, - source/operation/overlay/PolygonBuilder.cpp: had all - getCoordinates() callers free returned value. - -2003-10-07 18:58 strk - - * source/algorithm/PointLocator.cpp, - source/geom/CoordinateList.cpp, - source/geom/GeometryCollection.cpp, source/geom/LineString.cpp, - source/graph/GeometryGraph.cpp, source/headers/config.h.in: - LineString constructor now creates its own copy of given + * [r172] had all getCoordinates() callers free returned value. + +2003-10-07 18:58 Sandro Santilli + + * [r171] LineString constructor now creates its own copy of given CoordinateList object, and returns a new copy with getCoordinates(). will be easier to remove by anyone else. -2003-10-03 01:20 ybychkov +2003-10-03 01:20 Yury Bychkov - * source/geom/MultiPolygon.cpp, source/test/XMLTester.cpp: Memory - leak in Overlay fixed. + * [r170] Memory leak in Overlay fixed. -2003-09-29 16:25 strk +2003-09-29 16:25 Sandro Santilli - * macros, macros/.cvsignore, source/bigtest, - source/bigtest/.cvsignore, source/examples, - source/examples/.cvsignore, source/headers, - source/headers/.cvsignore: Some more cvsignore files. Some - entries should probably not be + * [r169] Some more cvsignore files. Some entries should probably + not be in the local copy -2003-09-29 15:07 strk +2003-09-29 15:07 Sandro Santilli - * ., .cvsignore: Added config.sub, config.guess and autom4te.cache + * [r168] Added config.sub, config.guess and autom4te.cache -2003-09-29 13:15 strk +2003-09-29 13:15 Sandro Santilli - * tools, tools/.cvsignore: Don't wonder about Makefile.in, - Makefile, gdal-config + * [r167] Don't wonder about Makefile.in, Makefile, gdal-config -2003-09-26 17:31 strk +2003-09-26 17:31 Sandro Santilli - * source/algorithm/ConvexHull.cpp: getConvexHull() made check value - returned by reduce() before deleting + * [r166] getConvexHull() made check value returned by reduce() + before deleting it (might be the untouched input). -2003-09-26 09:17 ybychkov +2003-09-26 09:17 Yury Bychkov - * source/index/bintree/NodeBase.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/test/XMLTester.cpp: isValid segfault fixed. Overlay still - leaks a bit. - -2003-09-24 02:16 ybychkov - - * source/geom/MultiPolygon.cpp, source/graph/EdgeEndStar.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - source/operation/buffer/BufferEdgeBuilder.cpp, - source/operation/buffer/BufferLineBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/test/XMLTester.cpp: All reported bugs fiexd. Small leak in - Overlay remains. - -2003-09-06 08:24 ybychkov - - * source/geom/Geometry.cpp, source/headers/opDistance.h, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/LineExtracterFilter.cpp, - source/operation/distance/PointExtracterFilter.cpp, - source/operation/distance/PolygonExtracterFilter.cpp, - source/test/XMLTester.cpp: isWithinDistance fixed and tested. - -2003-09-06 00:01 ybychkov - - * source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/geom/Geometry.cpp, source/graph/DirectedEdge.cpp, - source/graph/DirectedEdgeStar.cpp, - source/graph/GeometryGraph.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/operation/overlay/OverlayOp.cpp, - source/test/XMLTester.cpp: getInteriorPoint bugs fixed. + * [r165] isValid segfault fixed. Overlay still leaks a bit. -2003-09-01 06:32 ybychkov +2003-09-24 02:16 Yury Bychkov - * source/algorithm/ConvexHull.cpp, source/geom/Geometry.cpp, - source/geom/Polygon.cpp, source/test/XMLTester.cpp: Some - ConvexHull bugs fixed. - -2003-08-30 07:55 ybychkov - - * source/algorithm/CentroidArea.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, source/geom/Polygon.cpp, - source/graph/GeometryGraph.cpp, source/operation/IsSimpleOp.cpp, - source/test/XMLTester.cpp: Some bugfixes. XMLTester expanded to - accomodate getBoundary, getCentroid, isSimple. - -2003-08-18 23:40 pramsey - - * source/algorithm/ConvexHull.java: Removed java source file from - archive. - -2003-08-18 22:34 pramsey - - * configure.in: Change it back :/ - -2003-08-18 22:33 pramsey - - * configure.in: Change version number. - -2003-08-18 20:42 pramsey - - * ltmain.sh: Return ltmain to distro (oops) - -2003-08-18 20:36 pramsey - - * mkinstalldirs: Remove more autoconf files - -2003-08-18 20:34 pramsey - - * acinclude.m4, config.guess, config.sub, install-sh, ltmain.sh: - Removed more autoconf files... - -2003-08-18 20:27 pramsey - - * missing: Removed 'missing' script. - -2003-08-18 16:38 pramsey - - * source/headers/Makefile.am: Fixed up to treat headers as headers. - -2003-08-17 18:40 pramsey - - * Makefile.am, source/Makefile.am, - source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/bigtest/Makefile.am, - source/examples/CustomCoordinateListExample.h, - source/examples/Makefile.am, source/geom/BasicCoordinateList.cpp, - source/geom/Coordinate.cpp, source/geom/CoordinateList.cpp, - source/geom/CoordinateListFactory.cpp, source/geom/Dimension.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/Makefile.am, - source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, - source/geom/MultiPolygon.cpp, source/geom/Point.cpp, - source/geom/PointCoordinateList.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, source/graph/Depth.cpp, - source/graph/DirectedEdge.cpp, source/graph/DirectedEdgeStar.cpp, - source/graph/Edge.cpp, source/graph/EdgeEnd.cpp, - source/graph/EdgeEndStar.cpp, source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, - source/graph/GraphComponent.cpp, source/graph/Label.cpp, - source/graph/Node.cpp, source/graph/NodeFactory.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/Position.cpp, source/graph/Quadrant.cpp, - source/graph/TopologyLocation.cpp, - source/graph/index/MonotoneChain.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleEdgeSetIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SimpleSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, - source/headers/Makefile.am, source/headers/geom.h, - source/headers/geosAlgorithm.h, - source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, source/index/bintree/Key.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferEdgeBuilder.cpp, - source/operation/buffer/BufferLineBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/LoopFilter.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/LineExtracterFilter.cpp, - source/operation/distance/PointExtracterFilter.cpp, - source/operation/distance/PolygonExtracterFilter.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/test/Makefile.am, source/test/XMLTester.cpp, - source/util/Assert.cpp, source/util/AssertionFailedException.cpp, - source/util/CoordinateArrayFiter.cpp, - source/util/GEOSException.cpp, - source/util/IllegalArgumentException.cpp, - source/util/UniqueCoordinateArrayFilter.cpp, - source/util/UnsupportedOperationException.cpp: Norman's patch + - global removal of "no newline" + small changes + * [r164] All reported bugs fiexd. Small leak in Overlay remains. + +2003-09-06 08:24 Yury Bychkov + + * [r163] isWithinDistance fixed and tested. + +2003-09-06 00:01 Yury Bychkov + + * [r162] getInteriorPoint bugs fixed. + +2003-09-01 06:32 Yury Bychkov + + * [r161] Some ConvexHull bugs fixed. + +2003-08-30 07:55 Yury Bychkov + + * [r160] Some bugfixes. XMLTester expanded to accomodate + getBoundary, getCentroid, isSimple. + +2003-08-18 23:40 Paul Ramsey + + * [r159] Removed java source file from archive. + +2003-08-18 22:34 Paul Ramsey + + * [r158] Change it back :/ + +2003-08-18 22:33 Paul Ramsey + + * [r157] Change version number. + +2003-08-18 20:42 Paul Ramsey + + * [r156] Return ltmain to distro (oops) + +2003-08-18 20:36 Paul Ramsey + + * [r155] Remove more autoconf files + +2003-08-18 20:34 Paul Ramsey + + * [r154] Removed more autoconf files... + +2003-08-18 20:27 Paul Ramsey + + * [r153] Removed 'missing' script. + +2003-08-18 16:38 Paul Ramsey + + * [r152] Fixed up to treat headers as headers. + +2003-08-17 18:40 Paul Ramsey + + * [r151] Norman's patch + global removal of "no newline" + small + changes to make Norman's patch work in the linux build environment. -2003-08-17 18:01 pramsey +2003-08-17 18:01 Paul Ramsey - * libtool: Removed more configuration files per Norman's request. + * [r150] Removed more configuration files per Norman's request. -2003-08-17 17:56 pramsey +2003-08-17 17:56 Paul Ramsey - * aclocal.m4, configure: Removed more configure files per Norman's - request. + * [r149] Removed more configure files per Norman's request. -2003-08-17 17:55 pramsey - - * Makefile.in, macros/Makefile.in, source/Makefile.in, - source/bigtest/Makefile.in, source/geom/Coordinate.cpp, - source/geom/Makefile.in, source/headers/Makefile.in, - source/test/Makefile.in, tools/Makefile.in: Removed Makefile.in - files, per Norman's request. - -2003-08-16 06:33 ybychkov - - * VisualStudio/GEOS.vcproj, source/algorithm/ConvexHull.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/bigtest/TestSweepLineSpeed.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, source/geom/Dimension.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/Location.cpp, - source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/Polygon.cpp, source/geom/TopologyException.cpp, - source/graph/Depth.cpp, source/graph/DirectedEdge.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/Edge.cpp, - source/graph/EdgeEnd.cpp, source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, - source/graph/GraphComponent.cpp, source/graph/Label.cpp, - source/graph/Node.cpp, source/graph/NodeMap.cpp, - source/graph/PlanarGraph.cpp, source/graph/TopologyLocation.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SimpleSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, source/headers/bigtest.h, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/graphindex.h, - source/headers/indexBintree.h, source/headers/indexChain.h, - source/headers/indexQuadtree.h, source/headers/indexStrtree.h, - source/headers/indexSweepline.h, source/headers/io.h, - source/headers/opBuffer.h, source/headers/opDistance.h, - source/headers/opOverlay.h, source/headers/opRelate.h, - source/headers/opValid.h, source/headers/operation.h, - source/headers/spatialIndex.h, source/headers/util.h, - source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, source/index/bintree/Key.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, source/io/WKTReader.cpp, - source/io/WKTWriter.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/test/Stackwalker.cpp, source/test/Stackwalker.h, - source/test/XMLTester.cpp, source/util/CoordinateArrayFiter.cpp, - source/util/UniqueCoordinateArrayFilter.cpp: Memory leak fixes. - -2003-06-21 22:17 pramsey - - * source/geom/Makefile.am: GNU compile fixes from nvine. - -2003-06-19 20:54 ybychkov - - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/bigtest/TestSweepLineSpeed.cpp, - source/examples/CPCLException.cpp, - source/examples/CoordinateListsExample.cpp, - source/examples/CustomCoordinateListExample.cpp, - source/examples/CustomCoordinateListExample.h, - source/examples/CustomPointCoordinateList.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateListFactory.cpp, source/geom/Dimension.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, - source/geom/TopologyException.cpp, source/graph/Depth.cpp, - source/graph/DirectedEdge.cpp, source/graph/DirectedEdgeStar.cpp, - source/graph/Edge.cpp, source/graph/EdgeEnd.cpp, - source/graph/EdgeEndStar.cpp, source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, - source/graph/GraphComponent.cpp, source/graph/Label.cpp, - source/graph/Node.cpp, source/graph/NodeFactory.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/Position.cpp, source/graph/Quadrant.cpp, - source/graph/TopologyLocation.cpp, - source/graph/index/MonotoneChain.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleEdgeSetIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SimpleSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, - source/headers/bigtest.h, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, source/headers/indexBintree.h, - source/headers/indexChain.h, source/headers/indexQuadtree.h, - source/headers/indexStrtree.h, source/headers/indexSweepline.h, - source/headers/io.h, source/headers/opBuffer.h, - source/headers/opDistance.h, source/headers/opOverlay.h, - source/headers/opRelate.h, source/headers/opValid.h, - source/headers/operation.h, source/headers/spatialIndex.h, - source/headers/util.h, source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, source/index/bintree/Key.cpp, - source/index/bintree/NodeBase.cpp, source/index/bintree/Root.cpp, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/index/strtree/SIRtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/buffer/BufferEdgeBuilder.cpp, - source/operation/buffer/BufferLineBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/LoopFilter.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/LineExtracterFilter.cpp, - source/operation/distance/PointExtracterFilter.cpp, - source/operation/distance/PolygonExtracterFilter.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/test/CTS.cpp, source/test/SimpleWKTTester.cpp, - source/test/XMLTester.cpp, source/util/Assert.cpp, - source/util/AssertionFailedException.cpp, - source/util/GEOSException.cpp, - source/util/IllegalArgumentException.cpp, - source/util/UnsupportedOperationException.cpp: 'geos' namespace - added. +2003-08-17 17:55 Paul Ramsey -2003-06-18 20:08 ybychkov + * [r148] Removed Makefile.in files, per Norman's request. - * source/headers/opBuffer.h, source/operation/buffer, - source/operation/buffer/BufferEdgeBuilder.cpp, - source/operation/buffer/BufferLineBuilder.cpp, - source/operation/buffer/BufferOp.cpp, - source/operation/buffer/BufferSubgraph.cpp, - source/operation/buffer/LoopFilter.cpp, - source/operation/buffer/RightmostEdgeFinder.cpp: Buffer is almost - fully debugged. +2003-08-16 06:33 Yury Bychkov -2003-05-29 00:05 pramsey + * [r147] Memory leak fixes. - * source/bigtest/Makefile.am, source/geom/Makefile.am: Final GNU - build adjustments. +2003-06-21 22:17 Paul Ramsey -2003-05-28 23:55 pramsey + * [r146] GNU compile fixes from nvine. - * source/examples/Makefile.am: Added new exception class. +2003-06-19 20:54 Yury Bychkov -2003-05-28 23:39 pramsey + * [r145] 'geos' namespace added. - * source/headers/Makefile.am: Change reference to spatialIndex.h +2003-06-18 20:08 Yury Bychkov -2003-05-28 23:22 pramsey + * [r144] Buffer is almost fully debugged. - * source/geom/Makefile.am: Removed obsolete build entries for - removed classes. +2003-05-29 00:05 Paul Ramsey -2003-05-28 22:22 ybychkov + * [r143] Final GNU build adjustments. - * source/headers/indexStrtree.h, source/index/strtree/Interval.cpp: - Some bugfixes. +2003-05-28 23:55 Paul Ramsey -2003-05-28 22:11 ybychkov + * [r142] Added new exception class. - * source/index/bintree/Interval.cpp, source/index/bintree/Node.cpp, - source/test/XMLTester.cpp: no message +2003-05-28 23:39 Paul Ramsey -2003-05-28 05:02 pramsey + * [r141] Change reference to spatialIndex.h - * source/index/strtree/Interval.cpp, - source/index/strtree/SIRtree.cpp: Changed __max/__min to max/min +2003-05-28 23:22 Paul Ramsey -2003-05-28 05:01 pramsey + * [r140] Removed obsolete build entries for removed classes. - * source/index/quadtree/IntervalSize.cpp: Change __max to max +2003-05-28 22:22 Yury Bychkov -2003-05-27 23:56 pramsey + * [r139] Some bugfixes. - * source/geom/Makefile.am: Changed from mistaken cpp file names. +2003-05-28 22:11 Yury Bychkov -2003-05-27 23:54 pramsey + * [r138] no message - * source/algorithm/CentroidArea.cpp: Added include for +2003-05-28 05:02 Paul Ramsey -2003-05-27 23:45 pramsey + * [r137] Changed __max/__min to max/min - * source/headers/indexStrtree.h: GNU build support +2003-05-28 05:01 Paul Ramsey -2003-05-27 23:42 pramsey + * [r136] Change __max to max - * source/headers/indexQuadtree.h: Fix reference to spatialIndex - header +2003-05-27 23:56 Paul Ramsey -2003-05-27 23:41 pramsey + * [r135] Changed from mistaken cpp file names. - * source/headers/Makefile.in, source/headers/SpatialIndex.h, - source/headers/geom.h, source/headers/indexStrtree.h, - source/headers/spatialIndex.h: Build updates. +2003-05-27 23:54 Paul Ramsey -2003-05-27 23:33 pramsey + * [r134] Added include for - * source/geom/Makefile.am: Add new files into build support +2003-05-27 23:45 Paul Ramsey -2003-05-27 23:17 pramsey + * [r133] GNU build support - * source/headers/Makefile.am: Add all new headers into the build - process. +2003-05-27 23:42 Paul Ramsey -2003-05-27 23:11 pramsey + * [r132] Fix reference to spatialIndex header - * source/geom/Makefile.am, source/headers/Makefile.am: Some updates - to synch build with devel. +2003-05-27 23:41 Paul Ramsey -2003-05-21 23:28 ybychkov + * [r131] Build updates. - * source/algorithm/MCPointInRing.cpp, - source/geom/PrecisionModel.cpp, source/graph/GeometryGraph.cpp, - source/index/bintree/Key.cpp, - source/operation/relate/RelateOp.cpp: Several bugs fixed. +2003-05-27 23:33 Paul Ramsey -2003-05-19 06:18 ybychkov + * [r130] Add new files into build support - * source/algorithm/HCoordinate.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/examples/CPCLException.cpp, - source/examples/CoordinateListsExample.cpp, - source/examples/CustomCoordinateListExample.cpp, - source/examples/CustomCoordinateListExample.h, - source/examples/CustomPointCoordinateList.cpp, - source/geom/CoordinateList.cpp, source/geom/Dimension.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/Location.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/TopologyException.cpp, - source/graph/GeometryGraph.cpp, source/graph/Quadrant.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/io.h, source/headers/util.h, - source/index/quadtree/DoubleBits.cpp, - source/io/ParseException.cpp, source/io/WKTReader.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/test/CTS.cpp, source/test/SimpleWKTTester.cpp, - source/util/Assert.cpp, source/util/AssertionFailedException.cpp, - source/util/GEOSException.cpp, - source/util/IllegalArgumentException.cpp, - source/util/UnsupportedOperationException.cpp: All exceptions are - now classes. - -2003-05-17 07:47 ybychkov - - * source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp: Last fix for CVS. - -2003-05-17 06:08 ybychkov - - * source/algorithm/MCPointInRing.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/graph/GeometryGraph.cpp, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/graphindex.h, - source/headers/indexQuadtree.h, source/headers/indexStrtree.h, - source/index/quadtree/Quadtree.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/operation/valid/IsValidOp.cpp: Fixing CVS error. - -2003-05-17 00:27 ybychkov - - * source/geom/GeometryCollection.cpp, - source/headers/geosAlgorithm.h: Fixing a commit problem. - -2003-05-17 00:07 ybychkov - - * source/algorithm/MCPointInRing.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/graph/GeometryGraph.cpp, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/opDistance.h, - source/index/intervaltree, source/index/strtree/SIRtree.cpp, - source/index/strtree/STRtree.cpp, source/operation/distance, - source/operation/distance/ConnectedElementPointFilter.cpp, - source/operation/distance/DistanceOp.cpp, - source/operation/distance/LineExtracterFilter.cpp, - source/operation/distance/PointExtracterFilter.cpp, - source/operation/distance/PolygonExtracterFilter.cpp: SIRtree is - done. Distance is done. - -2003-05-07 09:06 ybychkov - - * source/algorithm/CentroidArea.cpp, - source/algorithm/CentroidLine.cpp, - source/algorithm/CentroidPoint.cpp, - source/algorithm/ConvexHull.java, - source/algorithm/IntTreePointInRing.cpp, - source/algorithm/InteriorPointArea.cpp, - source/algorithm/InteriorPointLine.cpp, - source/algorithm/InteriorPointPoint.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/SIRtreePointInRing.cpp, - source/geom/GeometryComponentFilter.cpp, - source/geom/TopologyException.cpp, - source/graph/index/SimpleEdgeSetIntersector.cpp, - source/graph/index/SimpleSweepLineIntersector.cpp, - source/headers/SpatialIndex.h, source/headers/geosAlgorithm.h, - source/headers/graphindex.h, source/headers/indexBintree.h, - source/headers/indexIntervaltree.h, - source/headers/indexQuadtree.h, source/headers/indexStrtree.h, - source/index/bintree, source/index/bintree/BinTreeInterval.cpp, - source/index/bintree/BinTreeNode.cpp, - source/index/bintree/Bintree.cpp, - source/index/bintree/Interval.cpp, source/index/bintree/Key.cpp, - source/index/bintree/Node.cpp, source/index/bintree/NodeBase.cpp, - source/index/bintree/Root.cpp, - source/index/quadtree/DoubleBits.cpp, - source/index/quadtree/IntervalSize.cpp, - source/index/quadtree/Quad.cpp, - source/index/quadtree/QuadTreeKey.cpp, - source/index/quadtree/QuadTreeNode.cpp, - source/index/quadtree/QuadTreeNodeBase.cpp, - source/index/quadtree/QuadTreeRoot.cpp, - source/index/quadtree/Quadtree.cpp, source/index/strtree, - source/index/strtree/AbstractNode.cpp, - source/index/strtree/AbstractSTRtree.cpp, - source/index/strtree/Interval.cpp, - source/index/strtree/ItemBoundable.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp: Closer to - 1.3 - -2003-05-04 22:34 ybychkov - - * source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/PrecisionModel.cpp, source/graph/EdgeList.cpp, - source/graph/index/MonotoneChain.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, source/headers/opRelate.h, - source/headers/opValid.h, source/headers/operation.h, - source/operation/GeometryGraphOperation.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/IsValidOp.cpp: Closer to JTS 1.3 - -2003-04-28 06:01 ybychkov - - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/IntTreePointInRing.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/MCPointInRing.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/examples/CustomCoordinateListExample.h, - source/geom/BasicCoordinateList.cpp, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateListFactory.cpp, source/geom/Dimension.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, - source/graph/Depth.cpp, source/graph/DirectedEdge.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/Edge.cpp, - source/graph/EdgeEnd.cpp, source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, - source/graph/GraphComponent.cpp, source/graph/Label.cpp, - source/graph/Node.cpp, source/graph/NodeFactory.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/Position.cpp, source/graph/Quadrant.cpp, - source/graph/TopologyLocation.cpp, - source/graph/index/MonotoneChain.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, source/headers/opOverlay.h, - source/headers/opValid.h, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/intervaltree/IntervalNode.cpp, - source/index/intervaltree/IntervalTree.cpp, - source/index/quadtree/Quad.cpp, - source/index/quadtree/Quadtree.cpp, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/util/Assert.cpp, source/util/AssertionFailedException.cpp: - Partially upgraded to JTS 1.3 - -2003-04-21 22:16 ybychkov - - * VisualStudio, VisualStudio/GEOS.sln, VisualStudio/GEOS.vcproj: - VisualStudio project added. - -2003-04-17 00:37 ybychkov - - * source/geom/BasicCoordinateList.cpp, source/geom/Geometry.cpp, - source/geom/GeometryFactory.cpp, - source/geom/PointCoordinateList.cpp, - source/graph/GeometryGraph.cpp, source/io/WKTReader.cpp: Changed - PrecisionModel to Value type. Removed bounds checking from *At - methods in CoordinateLists. - -2003-04-12 04:31 ybychkov - - * source/graph/EdgeRing.cpp, - source/operation/overlay/OverlayOp.cpp: Overlay passes all tests - (both precise and normal) - -2003-04-11 23:16 ybychkov - - * source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, source/graph/GeometryGraph.cpp, - source/headers/geom.h, source/io/WKTReader.cpp, - source/test/XMLTester.cpp: Overlay almost works. Fails 2 tests. - -2003-04-10 04:34 ybychkov - - * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/graph/Depth.cpp, source/graph/DirectedEdgeStar.cpp, - source/graph/EdgeIntersectionList.cpp, - source/operation/overlay/OverlayOp.cpp, - source/test/XMLTester.cpp: Overlay passes all normal tests. Still - fails on Precision tests. +2003-05-27 23:17 Paul Ramsey + + * [r129] Add all new headers into the build process. + +2003-05-27 23:11 Paul Ramsey + + * [r128] Some updates to synch build with devel. + +2003-05-21 23:28 Yury Bychkov + + * [r127] Several bugs fixed. + +2003-05-19 06:18 Yury Bychkov + + * [r126] All exceptions are now classes. + +2003-05-17 07:47 Yury Bychkov + + * [r125] Last fix for CVS. -2003-04-09 21:52 pramsey +2003-05-17 06:08 Yury Bychkov - * source/headers/geom.h: Changed destructors to virtual to quiet - GNU warnings + * [r124] Fixing CVS error. -2003-04-04 23:49 pramsey +2003-05-17 00:27 Yury Bychkov - * source/headers/Makefile.am: Install all headers at install time. + * [r123] Fixing a commit problem. -2003-04-04 22:04 pramsey +2003-05-17 00:07 Yury Bychkov - * source/examples/CustomCoordinateListExample.cpp, - source/examples/CustomCoordinateListExample.h, - source/examples/CustomPointCoordinateList.cpp: Newlines added to - quiet gcc. + * [r122] SIRtree is done. Distance is done. -2003-04-04 03:44 pramsey +2003-05-07 09:06 Yury Bychkov - * source/geom/Makefile.am: Build support + * [r121] Closer to 1.3 -2003-04-04 03:43 pramsey +2003-05-04 22:34 Yury Bychkov - * source/examples/Makefile.am: Build support. + * [r120] Closer to JTS 1.3 -2003-04-04 03:28 pramsey +2003-04-28 06:01 Yury Bychkov - * source/geom/Makefile.am: Build support updates. + * [r119] Partially upgraded to JTS 1.3 -2003-04-04 03:11 pramsey +2003-04-21 22:16 Yury Bychkov - * source/examples/Makefile.am: Build support for new example - programs. + * [r118] VisualStudio project added. + +2003-04-17 00:37 Yury Bychkov + + * [r117] Changed PrecisionModel to Value type. Removed bounds + checking from *At methods in CoordinateLists. + +2003-04-12 04:31 Yury Bychkov + + * [r116] Overlay passes all tests (both precise and normal) + +2003-04-11 23:16 Yury Bychkov + + * [r115] Overlay almost works. Fails 2 tests. + +2003-04-10 04:34 Yury Bychkov + + * [r114] Overlay passes all normal tests. Still fails on Precision + tests. + +2003-04-09 21:52 Paul Ramsey + + * [r113] Changed destructors to virtual to quiet GNU warnings + +2003-04-04 23:49 Paul Ramsey + + * [r112] Install all headers at install time. + +2003-04-04 22:04 Paul Ramsey + + * [r111] Newlines added to quiet gcc. + +2003-04-04 03:44 Paul Ramsey + + * [r110] Build support + +2003-04-04 03:43 Paul Ramsey + + * [r109] Build support. + +2003-04-04 03:28 Paul Ramsey + + * [r108] Build support updates. + +2003-04-04 03:11 Paul Ramsey + + * [r107] Build support for new example programs. 2003-04-04 00:18 dblasby - * INSTALL: added comment about running ./autogen.sh + * [r106] added comment about running ./autogen.sh + +2003-04-02 21:55 Yury Bychkov -2003-04-02 21:55 ybychkov + * [r105] Added example on how to wrap internal storage format with + CoordinateLists. - * source/examples/CustomCoordinateListExample.cpp, - source/examples/CustomCoordinateListExample.h, - source/examples/CustomPointCoordinateList.cpp: Added example on - how to wrap internal storage format with CoordinateLists. - -2003-04-02 08:02 ybychkov - - * source/algorithm/MCPointInRing.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/LineString.cpp, - source/geom/PointCoordinateList.cpp, - source/graph/DirectedEdge.cpp, source/graph/EdgeEnd.cpp, - source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeRing.cpp, - source/graph/Node.cpp, source/headers/geom.h, - source/headers/indexChain.h, source/headers/opOverlay.h, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/IsValidOp.cpp: isValid is debugged (passes - all 805 tests). - -2003-03-24 19:23 pramsey - - * source/headers/indexQuadtree.h, source/headers/indexSweepline.h: - Added newlines to end to quiet gcc - -2003-03-24 19:21 pramsey - - * Makefile.in, aclocal.m4, configure, configure.in, libtool, - macros/Makefile.in, source/Makefile.am, source/Makefile.in, - source/algorithm/Makefile.am, source/algorithm/Makefile.in, - source/bigtest/Makefile.in, source/geom/Makefile.in, - source/graph/Makefile.am, source/graph/Makefile.in, - source/graph/index/Makefile.am, source/graph/index/Makefile.in, - source/headers/Makefile.in, source/headers/config.h.in, - source/headers/indexChain.h, source/headers/indexIntervaltree.h, - source/io/Makefile.am, source/io/Makefile.in, - source/io/markup/Makefile.am, source/io/markup/Makefile.in, - source/operation/Makefile.am, source/operation/Makefile.in, - source/operation/relate/Makefile.am, - source/operation/relate/Makefile.in, - source/operation/valid/Makefile.am, source/test/Makefile.in, - source/util/Makefile.am, source/util/Makefile.in, - tools/Makefile.in: Yet more GNU build fiddling. Removed - extraneous build support from all +2003-04-02 08:02 Yury Bychkov + + * [r104] isValid is debugged (passes all 805 tests). + +2003-03-24 19:23 Paul Ramsey + + * [r103] Added newlines to end to quiet gcc + +2003-03-24 19:21 Paul Ramsey + + * [r102] Yet more GNU build fiddling. Removed extraneous build + support from all non-geom library directories. -2003-03-24 03:45 pramsey +2003-03-24 03:45 Paul Ramsey - * source/geom/Makefile.am: More GNU build support + * [r101] More GNU build support -2003-03-24 03:07 pramsey +2003-03-24 03:07 Paul Ramsey - * Makefile.in, aclocal.m4, configure, configure.in, libtool, - macros/Makefile.in, source/Makefile.in, - source/algorithm/Makefile.in, source/bigtest/Makefile.in, - source/geom/Makefile.am, source/geom/Makefile.in, - source/graph/Makefile.in, source/graph/index/Makefile.in, - source/headers/Makefile.in, source/headers/config.h.in, - source/headers/geosAlgorithm.h, source/headers/opValid.h, - source/io/Makefile.in, source/io/markup/Makefile.in, - source/operation/Makefile.am, source/operation/Makefile.in, - source/operation/relate/Makefile.in, source/test/Makefile.in, - source/test/XMLTester.cpp, source/util/Makefile.in, - tools/Makefile.in: GNU build support on latest changes. - -2003-03-19 00:34 ybychkov - - * source/algorithm/IntTreePointInRing.cpp, - source/geom/Geometry.cpp, source/headers/geosAlgorithm.h, - source/headers/opOverlay.h, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/OverlayOp.cpp, - source/operation/overlay/OverlayOp.java: All Overlay classes are - ported. Overlay and isValid have not been tested yet. + * [r100] GNU build support on latest changes. -2003-03-18 01:42 ybychkov +2003-03-19 00:34 Yury Bychkov - * source/geom/Geometry.cpp, source/graph/PlanarGraph.cpp, - source/headers/opOverlay.h, source/headers/opValid.h, - source/index/intervaltree/IntervalNode.cpp, - source/index/quadtree/Quad.cpp, - source/operation/overlay/EdgeSetNoder.cpp, - source/operation/overlay/LineBuilder.cpp, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/OverlayNodeFactory.cpp, - source/operation/overlay/OverlayOp.java, - source/operation/overlay/PointBuilder.cpp, - source/operation/overlay/PolygonBuilder.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/test/XMLTester.cpp: 90% of Overlay classes ported. + * [r99] All Overlay classes are ported. Overlay and isValid have + not been tested yet. -2003-03-17 18:04 ybychkov +2003-03-18 01:42 Yury Bychkov - * source/algorithm/MCPointInRing.cpp, - source/headers/geosAlgorithm.h, source/headers/indexChain.h, - source/headers/indexIntervaltree.h, source/index/chain, - source/index/chain/MonotoneChainBuilder.cpp, - source/index/chain/MonotoneChainOverlapAction.cpp, - source/index/chain/MonotoneChainSelectAction.cpp, - source/index/chain/indexMonotoneChain.cpp, - source/index/intervaltree, - source/index/intervaltree/IntervalNode.cpp, - source/index/intervaltree/IntervalTree.cpp: All 'index' packages - and part of 'overlay' are done. - -2003-03-17 02:49 ybychkov - - * source/algorithm/MCPointInRing.cpp, - source/headers/geosAlgorithm.h, source/headers/opOverlay.h, - source/headers/opValid.h, source/operation/overlay, - source/operation/overlay/MaximalEdgeRing.cpp, - source/operation/overlay/MinimalEdgeRing.cpp, - source/operation/valid/IsValidOp.cpp: IsValid and supporting - packages are ported (but NOT tested). - -2003-03-12 23:45 pramsey - - * source/geom/Makefile.am, source/operation/Makefile.am, - source/operation/valid/Makefile.am: Build support for valid. - -2003-03-10 10:18 ybychkov - - * source/headers/indexQuadtree.h, source/headers/opOverlay.h, - source/headers/opValid.h, - source/operation/valid/ConnectedInteriorTester.cpp, - source/operation/valid/QuadtreeNestedRingTester.cpp: IsValid() - and supporting index classes are ported, but don't work yet - (external dependencies) - -2003-03-10 01:17 ybychkov - - * source/headers/indexQuadtree.h, source/headers/indexSweepline.h, - source/headers/opValid.h, source/index, source/index/quadtree, - source/index/quadtree/Quad.cpp, - source/index/quadtree/Quadtree.cpp, source/index/sweepline, - source/index/sweepline/SweepLineIndex.cpp, - source/index/sweepline/SweepLineInterval.cpp, - source/index/sweepline/indexSweepLineEvent.cpp, - source/operation/valid, - source/operation/valid/ConsistentAreaTester.cpp, - source/operation/valid/IsValidOp.cpp, - source/operation/valid/RepeatedPointTester.cpp, - source/operation/valid/SimpleNestedRingTester.cpp, - source/operation/valid/SweeplineNestedRingTester.cpp, - source/operation/valid/TopologyValidationError.cpp, - source/test/XMLTester.cpp: IsValid and supporting index classes - are almost done. - -2003-03-05 17:04 pramsey - - * configure.in, source/Makefile.am, source/examples/Makefile.am: - Build support for new coordinateline examples. - -2003-03-05 08:02 ybychkov - - * source/examples, source/examples/CoordinateListsExample.cpp, - source/geom/PointCoordinateList.cpp, source/headers/geom.h: - CoordinateList interface example. - -2003-03-03 03:56 pramsey - - * source/geom/Makefile.am: Remove PointInRing - -2003-03-03 03:35 pramsey - - * source/algorithm/PointInRing.cpp: Removed unused file. - -2003-03-03 02:41 ybychkov - - * source/algorithm/LineIntersector.cpp, - source/bigtest/GeometryTestFactory.cpp, - source/geom/GeometryFactory.cpp, - source/geom/PointCoordinateList.cpp, - source/graph/EdgeIntersectionList.cpp, source/io/WKTReader.cpp: - Some Coordinate& related bugs fixed. - -2003-03-03 02:26 ybychkov - - * source/geom/GeometryFactory.cpp: GeometryFactory bug fix. - -2003-03-03 00:46 ybychkov - - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/Coordinate.cpp, - source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - source/geom/LineSegment.cpp, source/geom/LineString.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/PrecisionModel.cpp, source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/Node.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/Quadrant.cpp, - source/graph/index/SegmentIntersector.cpp, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, source/headers/opRelate.h, - source/headers/operation.h, source/headers/util.h, - source/io/WKTReader.cpp, source/operation/IsSimpleOp.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, source/test/CTS.cpp, - source/util/Assert.cpp: Second pass of code cleanup. Coordinate - references and inlining. - -2003-03-02 03:47 ybychkov - - * source/graph/Depth.cpp, source/graph/DirectedEdge.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/Edge.cpp, - source/graph/EdgeEnd.cpp, source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/GraphComponent.cpp, - source/graph/Label.cpp, source/graph/Node.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/TopologyLocation.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/headers/graph.h, source/headers/graphindex.h, - source/operation/IsSimpleOp.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNodeGraph.cpp: First pass of code - cleanup completed over all packages. - -2003-03-01 06:10 pramsey - - * source/headers/geosAlgorithm.h: Uncommented default constructor - for PointInRing - -2003-03-01 06:08 pramsey - - * source/test/SimpleWKTTester.cpp: Fixed call to geometry factory. - -2003-02-26 23:16 ybychkov - - * source/algorithm/LineIntersector.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, - source/headers/geosAlgorithm.h, source/headers/io.h, - source/headers/util.h, source/io/StringTokenizer.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, source/test/XMLTester.cpp: All packages - except 'graph' has been refactored. + * [r98] 90% of Overlay classes ported. + +2003-03-17 18:04 Yury Bychkov + + * [r97] All 'index' packages and part of 'overlay' are done. + +2003-03-17 02:49 Yury Bychkov + + * [r96] IsValid and supporting packages are ported (but NOT + tested). + +2003-03-12 23:45 Paul Ramsey + + * [r95] Build support for valid. + +2003-03-10 10:18 Yury Bychkov + + * [r94] IsValid() and supporting index classes are ported, but + don't work yet (external dependencies) + +2003-03-10 01:17 Yury Bychkov + + * [r93] IsValid and supporting index classes are almost done. + +2003-03-05 17:04 Paul Ramsey + + * [r92] Build support for new coordinateline examples. + +2003-03-05 08:02 Yury Bychkov + + * [r91] CoordinateList interface example. + +2003-03-03 03:56 Paul Ramsey + + * [r90] Remove PointInRing + +2003-03-03 03:35 Paul Ramsey + + * [r89] Removed unused file. + +2003-03-03 02:41 Yury Bychkov + + * [r88] Some Coordinate& related bugs fixed. + +2003-03-03 02:26 Yury Bychkov + + * [r87] GeometryFactory bug fix. + +2003-03-03 00:46 Yury Bychkov + + * [r86] Second pass of code cleanup. Coordinate references and + inlining. + +2003-03-02 03:47 Yury Bychkov + + * [r85] First pass of code cleanup completed over all packages. + +2003-03-01 06:10 Paul Ramsey + + * [r84] Uncommented default constructor for PointInRing + +2003-03-01 06:08 Paul Ramsey + + * [r83] Fixed call to geometry factory. + +2003-02-26 23:16 Yury Bychkov + + * [r82] All packages except 'graph' has been refactored. -2003-02-20 03:32 pramsey +2003-02-20 03:32 Paul Ramsey - * source/test/SimpleWKTTester.cpp: Fixed small bug in call to - GeometryFactory (instantiate PrecisionModel + * [r81] Fixed small bug in call to GeometryFactory (instantiate + PrecisionModel with new) -2003-02-20 03:30 pramsey +2003-02-20 03:30 Paul Ramsey - * source/geom/CoordinateListFactory.cpp, - source/geom/GeometryFactory.cpp: GFactory: Move i outside of for - loop. Needed to compile GNU + * [r80] GFactory: Move i outside of for loop. Needed to compile GNU CListFactory: Add newline to end of file. -2003-02-20 00:10 ybychkov +2003-02-20 00:10 Yury Bychkov - * source/geom/GeometryFactory.cpp, source/headers/opRelate.h, - source/operation/IsSimpleOp.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp: Geom and Operation - (including Relate) packages are updated. + * [r79] Geom and Operation (including Relate) packages are updated. -2003-02-17 09:38 ybychkov +2003-02-17 09:38 Yury Bychkov - * source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineString.cpp, - source/geom/Polygon.cpp, - source/graph/index/MonotoneChainEdge.cpp, source/headers/geom.h, - source/headers/io.h, source/headers/opRelate.h, - source/headers/operation.h, source/io/WKTWriter.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateOp.cpp, source/test/XMLTester.cpp: - GEOM package fully updated & bugs fixed. + * [r78] GEOM package fully updated & bugs fixed. -2003-02-17 00:40 ybychkov +2003-02-17 00:40 Yury Bychkov - * source/geom/Geometry.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/graph/EdgeRing.cpp, source/graph/GeometryGraph.cpp, - source/headers/geom.h, source/headers/io.h, - source/io/WKTReader.cpp: GEOM package fully updated. + * [r77] GEOM package fully updated. -2003-02-16 22:52 ybychkov +2003-02-16 22:52 Yury Bychkov - * source/bigtest/GeometryTestFactory.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/graph/EdgeRing.cpp, source/headers/geom.h, - source/io/WKTReader.cpp: GEOM package partially updated. + * [r76] GEOM package partially updated. -2003-02-12 21:09 pramsey +2003-02-12 21:09 Paul Ramsey - * INSTALL, missing: Added two files required by autoconf build - process. + * [r75] Added two files required by autoconf build process. -2003-02-12 20:51 pramsey +2003-02-12 20:51 Paul Ramsey - * configure, libtool, source/geom/Makefile.in, - source/headers/Makefile.in, source/test/Makefile.in: Commit build - support files. + * [r74] Commit build support files. -2003-02-12 19:11 pramsey +2003-02-12 19:11 Paul Ramsey - * source/headers/Makefile.am: Change header installation path to - $(prefix)/include/geos. + * [r73] Change header installation path to $(prefix)/include/geos. -2003-02-12 06:50 pramsey +2003-02-12 06:50 Paul Ramsey - * source/algorithm/LineIntersector.cpp, - source/algorithm/SimplePointInRing.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/relate/EdgeEndBundle.cpp: Added newlines to - quiet g++ warnings. + * [r72] Added newlines to quiet g++ warnings. -2003-02-12 06:48 pramsey +2003-02-12 06:48 Paul Ramsey - * source/graph/Depth.cpp, source/graph/DirectedEdge.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/EdgeEnd.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/Label.cpp, source/graph/NodeFactory.cpp, - source/graph/index/MonotoneChain.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp: Added newlines to ends of - files to quiet g++ warnings. + * [r71] Added newlines to ends of files to quiet g++ warnings. -2003-02-12 06:27 pramsey +2003-02-12 06:27 Paul Ramsey - * source/test/XMLTester.cpp: Fix headers. + * [r70] Fix headers. -2003-02-12 06:26 pramsey +2003-02-12 06:26 Paul Ramsey - * source/test/SimpleWKTTester.cpp: Changed headers. + * [r69] Changed headers. -2003-02-12 06:24 pramsey +2003-02-12 06:24 Paul Ramsey - * source/bigtest/TestSweepLineSpeed.cpp: Added return value. + * [r68] Added return value. -2003-02-12 06:24 pramsey +2003-02-12 06:24 Paul Ramsey - * source/bigtest/TestSweepLineSpeed.cpp, source/test/CTS.cpp, - source/test/XMLTester.cpp: Changed headers. + * [r67] Changed headers. -2003-02-12 06:19 pramsey +2003-02-12 06:19 Paul Ramsey - * source/test/XMLTester.cpp: Make path to test file relative. + * [r66] Make path to test file relative. -2003-02-12 06:18 pramsey +2003-02-12 06:18 Paul Ramsey - * source/bigtest/GeometryTestFactory.cpp: Change include reference - syntax. + * [r65] Change include reference syntax. -2003-02-12 06:07 pramsey +2003-02-12 06:07 Paul Ramsey - * source/graph/EdgeEndStar.cpp: Remove NULL test. + * [r64] Remove NULL test. -2003-02-12 06:07 pramsey +2003-02-12 06:07 Paul Ramsey - * source/io/WKTWriter.cpp: Pass double to log(). + * [r63] Pass double to log(). -2003-02-12 06:07 pramsey +2003-02-12 06:07 Paul Ramsey - * source/bigtest/TestSweepLineSpeed.cpp: Fixed main() return type. + * [r62] Fixed main() return type. -2003-02-12 06:04 pramsey +2003-02-12 06:04 Paul Ramsey - * source/test/Makefile.am: Remove old library references. + * [r61] Remove old library references. -2003-02-12 05:58 pramsey +2003-02-12 05:58 Paul Ramsey - * source/bigtest/TestSweepLineSpeed.cpp: Added stdio reference and - newline at end. + * [r60] Added stdio reference and newline at end. -2003-02-12 00:58 pramsey +2003-02-12 00:58 Paul Ramsey - * source/test/test.xml: Added all JTS test cases to the file. + * [r59] Added all JTS test cases to the file. -2003-02-11 23:54 pramsey +2003-02-11 23:54 Paul Ramsey - * source/geom/Makefile.am: Added support for new cpp files. + * [r58] Added support for new cpp files. -2003-02-11 23:33 ybychkov +2003-02-11 23:33 Yury Bychkov - * source/geom/CoordinateList.cpp, source/geom/Geometry.cpp, - source/geom/PointCoordinateList.cpp, source/geom/Polygon.cpp, - source/headers/geom.h: Some bugs fixed. + * [r57] Some bugs fixed. -2003-02-11 20:24 ybychkov +2003-02-11 20:24 Yury Bychkov - * source/geom/PointCoordinateList.cpp, - source/graph/EdgeEndStar.cpp, source/headers/graph.h: Small - changes in PointCoordinateList and EdgeEndStar. + * [r56] Small changes in PointCoordinateList and EdgeEndStar. 2003-02-11 19:01 mbdavis - * source/geom/Geometry.cpp: fixed duplicate for loop index + * [r55] fixed duplicate for loop index -2003-02-05 08:14 ybychkov +2003-02-05 08:14 Yury Bychkov - * source/bigtest/GeometryTestFactory.cpp, - source/geom/BasicCoordinateList.cpp, - source/geom/CoordinateList.cpp, - source/geom/CoordinateListFactory.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/MultiPoint.cpp, - source/geom/Point.cpp, source/geom/PointCoordinateList.cpp, - source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, - source/graph/Edge.cpp, source/graph/EdgeIntersectionList.cpp, - source/graph/GeometryGraph.cpp, - source/graph/index/MonotoneChainEdge.cpp, source/headers/geom.h, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/operation/IsSimpleOp.cpp, source/test/XMLTester.cpp: - Second pass of CoordinateList interface migration. - -2003-01-27 08:04 ybychkov - - * source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/SimplePointInRing.cpp, - source/geom/BasicCoordinateList.cpp, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/MultiLineString.cpp, source/geom/Point.cpp, - source/geom/Polygon.cpp, source/geom/PrecisionModel.cpp, - source/graph/Edge.cpp, source/graph/EdgeIntersectionList.cpp, - source/graph/EdgeList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/PlanarGraph.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SweepLineSegment.cpp, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, source/headers/io.h, - source/io/WKTReader.cpp: First pass of CoordinateList interface - replacement. - -2003-01-27 07:56 ybychkov - - * source/algorithm/CGAlgorithms.cpp: First pass of CoordinateList - interface replacement. - -2003-01-27 07:26 ybychkov - - * source/algorithm/CGAlgorithms.cpp: First pass of CoordinateList - interface replacement. - -2002-12-02 09:48 ybychkov - - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/SimplePointInRing.cpp, - source/bigtest/TestSweepLineSpeed.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/LinearRing.cpp, source/geom/Point.cpp, - source/geom/Polygon.cpp, source/graph/Edge.cpp, - source/graph/EdgeList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/PlanarGraph.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SweepLineSegment.cpp, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h: More - performance updates. - -2002-11-24 10:48 ybychkov - - * source/algorithm/RobustLineIntersector.cpp, - source/bigtest/TestSweepLineSpeed.cpp, - source/geom/CoordinateList.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/headers/geom.h, source/headers/graphindex.h: Some - performance improvements. - -2002-11-14 23:43 pramsey - - * configure.in, source/Makefile.am, source/Makefile.in, - source/bigtest/Makefile.am, source/bigtest/Makefile.in, - source/geom/Makefile.am, source/geom/Makefile.in: Build support - for the bigtest programs. - -2002-11-08 19:49 ybychkov - - * source/bigtest/TestSweepLineSpeed.cpp, - source/geom/Coordinate.cpp, source/graph/Edge.cpp, - source/graph/EdgeList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/PlanarGraph.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SweepLineSegment.cpp, source/headers/geom.h, - source/headers/graph.h, source/headers/graphindex.h: Preformance - is drastically improved - -2002-11-05 23:13 ybychkov - - * source/bigtest, source/bigtest/GeometryTestFactory.cpp, - source/bigtest/TestSweepLineSpeed.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/headers/bigtest.h, - source/operation/relate/RelateComputer.cpp: Code for generating - large tests added. - -2002-10-31 07:37 ybychkov - - * source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/io/StringTokenizer.cpp, source/test/XMLTester.cpp: XML - tester is less fragile now. - -2002-10-30 21:59 pramsey - - * config.guess, config.sub: Added configure support files for - building w/o automake/autoconf - -2002-10-30 21:58 pramsey - - * configure.in: Small changes to make autoconf happy. - -2002-10-30 20:04 pramsey - - * source/test/test.xml: Edited test file to not crash XMLTester - -2002-10-30 19:54 pramsey - - * Makefile.in, aclocal.m4, configure, configure.in, libtool, - macros/Makefile.in, source/Makefile.in, - source/algorithm/Makefile.in, source/geom/Makefile.am, - source/geom/Makefile.in, source/graph/Makefile.in, - source/graph/index/Makefile.in, source/headers/Makefile.in, - source/headers/config.h.in, source/headers/opRelate.h, - source/io/Makefile.in, source/io/markup/Makefile.in, - source/operation/Makefile.in, - source/operation/relate/Makefile.in, source/test/Makefile.am, - source/test/Makefile.in, source/util/Makefile.in, - tools/Makefile.in: New build changes necessary to build under - Linux GNU. + * [r54] Second pass of CoordinateList interface migration. + +2003-01-27 08:04 Yury Bychkov + + * [r53] First pass of CoordinateList interface replacement. + +2003-01-27 07:56 Yury Bychkov + + * [r52] First pass of CoordinateList interface replacement. + +2003-01-27 07:26 Yury Bychkov + + * [r51] First pass of CoordinateList interface replacement. + +2002-12-02 09:48 Yury Bychkov + + * [r50] More performance updates. + +2002-11-24 10:48 Yury Bychkov + + * [r49] Some performance improvements. + +2002-11-14 23:43 Paul Ramsey + + * [r48] Build support for the bigtest programs. + +2002-11-08 19:49 Yury Bychkov + + * [r47] Preformance is drastically improved + +2002-11-05 23:13 Yury Bychkov + + * [r46] Code for generating large tests added. + +2002-10-31 07:37 Yury Bychkov + + * [r45] XML tester is less fragile now. + +2002-10-30 21:59 Paul Ramsey + + * [r44] Added configure support files for building w/o + automake/autoconf + +2002-10-30 21:58 Paul Ramsey + + * [r43] Small changes to make autoconf happy. + +2002-10-30 20:04 Paul Ramsey + + * [r42] Edited test file to not crash XMLTester + +2002-10-30 19:54 Paul Ramsey + + * [r41] New build changes necessary to build under Linux GNU. 2002-10-23 02:21 nvine - * configure.in, source/Makefile.am, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, source/geom/Makefile.am, - source/geom/Polygon.cpp, source/graph/Depth.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/EdgeEnd.cpp, - source/graph/EdgeEndStar.cpp, source/graph/EdgeIntersection.cpp, - source/graph/EdgeList.cpp, source/graph/EdgeRing.cpp, - source/graph/PlanarGraph.cpp, source/graph/Quadrant.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, - source/operation/GeometryGraphOperation.cpp, - source/operation/relate/RelateComputer.cpp, source/test/CTS.cpp, - source/test/SimpleWKTTester.cpp, source/test/XMLTester.cpp: GNU - portability changes - -2002-10-17 07:12 ybychkov - - * source/algorithm/SimplePointInAreaLocator.cpp, - source/geom/Geometry.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/graph/GeometryGraph.cpp, - source/graph/index/SegmentIntersector.cpp, - source/headers/graphindex.h, source/test/XMLTester.cpp: All test - cases now work. Some are still too slow. - -2002-10-06 09:56 ybychkov - - * source/algorithm/PointLocator.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/EdgeEndStar.cpp, - source/graph/GeometryGraph.cpp, source/graph/Label.cpp, - source/graph/PlanarGraph.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, source/headers/graph.h, - source/headers/graphindex.h, source/headers/opRelate.h, - source/operation/IsSimpleOp.cpp, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/test/XMLTester.cpp: Relate() is almost debugged. - -2002-09-12 14:08 fvilla - - * Makefile.in, configure, configure.in, libtool, - source/geom/Makefile.am, source/geom/Makefile.in, - source/headers/Makefile.am, source/headers/Makefile.in, - source/operation/Makefile.am, source/operation/Makefile.in, - source/operation/relate/Makefile.am, - source/operation/relate/Makefile.in: Add makefile support for new - files and dir - -2002-09-12 01:27 ybychkov - - * source/geom/Geometry.cpp, source/geom/LineString.cpp, - source/geom/MultiLineString.cpp, source/geom/MultiPoint.cpp, - source/geom/Polygon.cpp, source/graph/DirectedEdgeStar.cpp, - source/graph/Edge.cpp, source/graph/EdgeEnd.cpp, - source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/GeometryGraph.cpp, source/graph/GraphComponent.cpp, - source/graph/Node.cpp, source/graph/NodeFactory.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/graph/Quadrant.cpp, - source/graph/index/SegmentIntersector.cpp, source/headers/geom.h, - source/headers/graph.h, source/headers/opRelate.h, - source/headers/operation.h, - source/operation/GeometryGraphOperation.cpp, - source/operation/relate, - source/operation/relate/EdgeEndBuilder.cpp, - source/operation/relate/EdgeEndBundle.cpp, - source/operation/relate/EdgeEndBundleStar.cpp, - source/operation/relate/RelateComputer.cpp, - source/operation/relate/RelateNode.cpp, - source/operation/relate/RelateNodeFactory.cpp, - source/operation/relate/RelateNodeGraph.cpp, - source/operation/relate/RelateOp.cpp, source/test/XMLTester.cpp: - Relate is finished,but doesn't work yet. - -2002-09-10 13:46 fvilla - - * configure, configure.in, libtool, source/Makefile.am, - source/Makefile.in, source/geom/Makefile.am, - source/geom/Makefile.in, source/operation/Makefile.am, - source/operation/Makefile.in: Added operation/Makefiles - -2002-09-06 20:18 ybychkov - - * source/algorithm/CGAlgorithms.cpp, - source/algorithm/HCoordinate.cpp, - source/algorithm/NonRobustCGAlgorithms.cpp, - source/algorithm/NonRobustLineIntersector.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/LineSegment.cpp, source/geom/LineString.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeRing.cpp, - source/graph/GeometryGraph.cpp, source/graph/NodeMap.cpp, - source/graph/PlanarGraph.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/operation.h, - source/operation, source/operation/GeometryGraphOperation.cpp, - source/operation/IsSimpleOp.cpp: A lot of changes: Code is - brought to version 1.2 of JTS. Compilable part of Operation - added. - -2002-09-05 18:32 fvilla - - * ChangeLog, Makefile.in, configure, configure.in, libtool, - source/Makefile.in, source/geom/Makefile.am, - source/geom/Makefile.in, source/graph/Makefile.in, - source/graph/index/Makefile.in, source/headers/Makefile.am, - source/headers/Makefile.in, source/io/Makefile.in, - source/io/markup/Makefile.in, source/test/Makefile.in, - source/util/Makefile.in, tools/Makefile.in: Fixed version - numbering. Whenever version numbers are bumped up the + * [r40] GNU portability changes + +2002-10-17 07:12 Yury Bychkov + + * [r39] All test cases now work. Some are still too slow. + +2002-10-06 09:56 Yury Bychkov + + * [r38] Relate() is almost debugged. + +2002-09-12 14:08 Fernando Villa + + * [r37] Add makefile support for new files and dir + +2002-09-12 01:27 Yury Bychkov + + * [r36] Relate is finished,but doesn't work yet. + +2002-09-10 13:46 Fernando Villa + + * [r35] Added operation/Makefiles + +2002-09-06 20:18 Yury Bychkov + + * [r34] A lot of changes: Code is brought to version 1.2 of JTS. + Compilable part of Operation added. + +2002-09-05 18:32 Fernando Villa + + * [r33] Fixed version numbering. Whenever version numbers are + bumped up the change should be reflected in the AC_INIT_AUTOMAKE macro in configure.in. I've put it at 0.0.1 - should be changed as appropriate. The version is #define'd for code being compiled as GEOS_VERSION. -2002-09-03 16:04 pramsey +2002-09-03 16:04 Paul Ramsey - * source/test/Makefile.am: Changed reference to 'libgeom' to - 'libgeos' + * [r32] Changed reference to 'libgeom' to 'libgeos' -2002-09-03 13:53 fvilla +2002-09-03 13:53 Fernando Villa - * Makefile.am, Makefile.in, acinclude.m4, aclocal.m4, configure, - configure.in, install-sh, libtool, ltmain.sh, macros, - macros/Makefile.am, macros/Makefile.in, macros/geos.m4, - mkinstalldirs, source/Makefile.am, source/Makefile.in, - source/algorithm/Makefile.am, source/algorithm/Makefile.in, - source/geom/Makefile.am, source/geom/Makefile.in, - source/graph/Makefile.am, source/graph/Makefile.in, - source/graph/index/Makefile.am, source/graph/index/Makefile.in, - source/headers/Makefile.am, source/headers/Makefile.in, - source/headers/config.h.in, source/io/Makefile.am, - source/io/Makefile.in, source/io/markup/Makefile.am, - source/io/markup/Makefile.in, source/test/Makefile.am, - source/test/Makefile.in, source/util/Makefile.am, - source/util/Makefile.in, tools, tools/Makefile.am, - tools/Makefile.in, tools/geos-config.in: * Add automake/autoconf - support for one-lib compilation + * [r31] * Add automake/autoconf support for one-lib compilation * add libtool support for shared libraries. --enable-shared={yes|no} and @@ -16630,251 +12284,118 @@ solution is not easy to work with in automake. -2002-09-01 18:08 pramsey +2002-09-01 18:08 Paul Ramsey - * source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointInRing.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/io/ParseException.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, source/io/markup/MarkupSTL.cpp: Minor - portability changes. - -2002-09-01 17:53 pramsey - - * configure.in, source/Makefile.am, source/algorithm/Makefile.am: - Changes to support algorithm directory in build structure. - -2002-09-01 17:51 pramsey - - * source/geom/Coordinate.cpp, source/geom/CoordinateList.cpp, - source/geom/Dimension.cpp, source/geom/Envelope.cpp, - source/geom/Geometry.cpp, source/geom/GeometryCollection.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/Location.cpp, - source/geom/MultiPoint.cpp, source/geom/PrecisionModel.cpp: GNU - compatibility fixes, changing __min/__max to min/max, adding + * [r30] Minor portability changes. + +2002-09-01 17:53 Paul Ramsey + + * [r29] Changes to support algorithm directory in build structure. + +2002-09-01 17:51 Paul Ramsey + + * [r28] GNU compatibility fixes, changing __min/__max to min/max, + adding stdio.h where needed, small syntax adjustments, newlines at end of files. -2002-08-30 18:33 pramsey +2002-08-30 18:33 Paul Ramsey - * COPYING: Added LGPL licence text. + * [r27] Added LGPL licence text. -2002-08-30 18:30 pramsey +2002-08-30 18:30 Paul Ramsey - * AUTHORS, Authors: Changed name of authors file as requested by - autoconf. + * [r26] Changed name of authors file as requested by autoconf. -2002-08-30 18:28 pramsey +2002-08-30 18:28 Paul Ramsey - * autogen.sh: Removed --force-missing which did not work for my - version of autoconf + * [r25] Removed --force-missing which did not work for my version + of autoconf -2002-08-30 18:16 pramsey +2002-08-30 18:16 Paul Ramsey - * ., .cvsignore, source, source/.cvsignore, source/geom, - source/geom/.cvsignore, source/graph, source/graph/.cvsignore, - source/graph/index, source/graph/index/.cvsignore, source/io, - source/io/.cvsignore, source/io/markup, - source/io/markup/.cvsignore, source/test, source/test/.cvsignore, - source/util, source/util/.cvsignore: Added cvs ignore files. + * [r24] Added cvs ignore files. -2002-08-30 18:15 pramsey +2002-08-30 18:15 Paul Ramsey - * source/test/CTS.cpp, source/test/SimpleWKTTester.cpp, - source/test/WKTIn, source/test/WKTOut, source/test/XMLTester.cpp, - source/test/test.xml: Added the testing files back into their new - subdirectory. + * [r23] Added the testing files back into their new subdirectory. -2002-08-30 18:15 pramsey +2002-08-30 18:15 Paul Ramsey - * Authors, ChangeLog, Makefile.am, NEWS, README, autogen.sh, - configure.in, source/CTS.cpp, source/Makefile.am, - source/SimpleWKTTester.cpp, source/WKTIn, source/WKTOut, - source/XMLTester.cpp, source/geom/Makefile.am, - source/graph/Makefile.am, source/graph/index/Makefile.am, - source/io/Makefile.am, source/io/markup/Makefile.am, source/test, - source/test.xml, source/test/Makefile.am, - source/util/Makefile.am: Added GNU autoconf support files - submitted by Norman Vine. Moved test + * [r22] Added GNU autoconf support files submitted by Norman Vine. + Moved test files to a new subdirectory. -2002-08-30 15:52 ybychkov +2002-08-30 15:52 Yury Bychkov + + * [r21] 'algorithm' is almost complete + +2002-08-22 09:23 Yury Bychkov + + * [r20] 'graph/index' finished. Some .h changes. + +2002-08-21 05:49 Yury Bychkov + + * [r19] Some changes in 'graph' + +2002-08-20 21:08 Yury Bychkov + + * [r18] Changed consts to enums + +2002-08-14 07:00 Yury Bychkov + + * [r17] New structure of source. + +2002-07-11 07:57 Yury Bychkov + + * [r16] Assert and some graph classes + +2002-07-03 05:24 Yury Bychkov + + * [r15] started XML tester + +2002-07-02 06:41 Yury Bychkov + + * [r14] 'io' and SimpleTester done + +2002-06-27 02:50 Yury Bychkov + + * [r13] 'io' is almost done + +2002-06-26 09:10 Yury Bychkov + + * [r12] Some 'io' classes done. + +2002-06-21 07:13 Yury Bychkov - * source/algorithm, source/algorithm/HCoordinate.cpp, - source/algorithm/LineIntersector.cpp, - source/algorithm/NotRepresentableException.cpp, - source/algorithm/PointInRing.cpp, - source/algorithm/PointLocator.cpp, - source/algorithm/RobustCGAlgorithms.cpp, - source/algorithm/RobustDeterminant.cpp, - source/algorithm/RobustLineIntersector.cpp, - source/algorithm/SimplePointInAreaLocator.cpp, - source/algorithm/SimplePointInRing.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryFactory.cpp, source/geom/LineString.cpp, - source/geom/Polygon.cpp, source/graph/DirectedEdgeStar.cpp, - source/graph/EdgeEndStar.cpp, source/graph/GeometryGraph.cpp, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/graphindex.h, - source/headers/operation.h, source/headers/platform.h, - source/headers/util.h, source/io/WKTWriter.cpp: 'algorithm' is - almost complete - -2002-08-22 09:23 ybychkov - - * source/graph/index, source/graph/index/MonotoneChain.cpp, - source/graph/index/MonotoneChainEdge.cpp, - source/graph/index/MonotoneChainIndexer.cpp, - source/graph/index/SegmentIntersector.cpp, - source/graph/index/SimpleMCSweepLineIntersector.cpp, - source/graph/index/SweepLineEvent.cpp, - source/graph/index/SweepLineSegment.cpp, source/headers/geom.h, - source/headers/geosAlgorithm.h, source/headers/graph.h, - source/headers/graphindex.h, source/headers/io.h, - source/headers/operation.h, source/headers/platform.h, - source/headers/util.h: 'graph/index' finished. Some .h changes. - -2002-08-21 05:49 ybychkov - - * source/graph/GeometryGraph.cpp, source/headers/graph.h, - source/headers/graphindex.h: Some changes in 'graph' - -2002-08-20 21:08 ybychkov - - * source/XMLTester.cpp, source/graph/Node.cpp, - source/graph/NodeMap.cpp, source/graph/PlanarGraph.cpp, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/io.h: Changed consts to - enums - -2002-08-14 07:00 ybychkov - - * Assert.cpp, AssertionFailedException.cpp, CTS.cpp, - Coordinate.cpp, CoordinateList.cpp, Depth.cpp, Dimension.cpp, - Envelope.cpp, Geometry.cpp, GeometryCollection.cpp, - GeometryCollectionIterator.cpp, GeometryFactory.cpp, - IntersectionMatrix.cpp, Label.cpp, LineSegment.cpp, - LineString.cpp, LinearRing.cpp, Location.cpp, MarkupSTL.cpp, - MarkupSTL.h, MultiLineString.cpp, MultiPoint.cpp, - MultiPolygon.cpp, ParseException.cpp, Point.cpp, Polygon.cpp, - Position.cpp, PrecisionModel.cpp, SimpleWKTTester.cpp, - StringTokenizer.cpp, TopologyLocation.cpp, WKTIn, WKTOut, - WKTReader.cpp, WKTWriter.cpp, Writer.cpp, XMLTester.cpp, geom.h, - graph.h, io.h, operation.h, platform.h, source, source/CTS.cpp, - source/SimpleWKTTester.cpp, source/WKTIn, source/WKTOut, - source/XMLTester.cpp, source/geom, source/geom/Coordinate.cpp, - source/geom/CoordinateList.cpp, source/geom/Dimension.cpp, - source/geom/Envelope.cpp, source/geom/Geometry.cpp, - source/geom/GeometryCollection.cpp, - source/geom/GeometryCollectionIterator.cpp, - source/geom/GeometryFactory.cpp, - source/geom/IntersectionMatrix.cpp, source/geom/LineSegment.cpp, - source/geom/LineString.cpp, source/geom/LinearRing.cpp, - source/geom/Location.cpp, source/geom/MultiLineString.cpp, - source/geom/MultiPoint.cpp, source/geom/MultiPolygon.cpp, - source/geom/Point.cpp, source/geom/Polygon.cpp, - source/geom/PrecisionModel.cpp, source/graph, - source/graph/Depth.cpp, source/graph/DirectedEdge.cpp, - source/graph/DirectedEdgeStar.cpp, source/graph/Edge.cpp, - source/graph/EdgeEnd.cpp, source/graph/EdgeEndStar.cpp, - source/graph/EdgeIntersection.cpp, - source/graph/EdgeIntersectionList.cpp, source/graph/EdgeList.cpp, - source/graph/EdgeRing.cpp, source/graph/GraphComponent.cpp, - source/graph/Label.cpp, source/graph/Node.cpp, - source/graph/NodeFactory.cpp, source/graph/NodeMap.cpp, - source/graph/Position.cpp, source/graph/Quadrant.cpp, - source/graph/TopologyLocation.cpp, source/headers, - source/headers/geom.h, source/headers/geosAlgorithm.h, - source/headers/graph.h, source/headers/graphindex.h, - source/headers/io.h, source/headers/operation.h, - source/headers/platform.h, source/headers/util.h, source/io, - source/io/ParseException.cpp, source/io/StringTokenizer.cpp, - source/io/WKTReader.cpp, source/io/WKTWriter.cpp, - source/io/Writer.cpp, source/io/markup, - source/io/markup/MarkupSTL.cpp, source/io/markup/MarkupSTL.h, - source/test.xml, source/util, source/util/Assert.cpp, - source/util/AssertionFailedException.cpp, test.xml, util.h: New - structure of source. - -2002-07-11 07:57 ybychkov - - * Assert.cpp, AssertionFailedException.cpp, Depth.cpp, - Geometry.cpp, GeometryCollection.cpp, GeometryFactory.cpp, - Label.cpp, Position.cpp, TopologyLocation.cpp, WKTReader.cpp, - WKTWriter.cpp, XMLTester.cpp, graph.h, operation.h, test.xml, - util.h: Assert and some graph classes - -2002-07-03 05:24 ybychkov - - * MarkupSTL.cpp, MarkupSTL.h, XMLTester.cpp: started XML tester - -2002-07-02 06:41 ybychkov - - * CTS.cpp, GeometryCollection.cpp, GeometryCollectionIterator.cpp, - GeometryFactory.cpp, MultiPolygon.cpp, Polygon.cpp, - SimpleWKTTester.cpp, WKTIn, WKTOut, WKTReader.cpp, WKTWriter.cpp, - geom.h, io.h: 'io' and SimpleTester done - -2002-06-27 02:50 ybychkov - - * CTS.cpp, StringTokenizer.cpp, WKTWriter.cpp, Writer.cpp, io.h: - 'io' is almost done - -2002-06-26 09:10 ybychkov - - * CTS.cpp, GeometryCollection.cpp, ParseException.cpp, Polygon.cpp, - StringTokenizer.cpp, WKTReader.cpp, io.h: Some 'io' classes done. - -2002-06-21 07:13 ybychkov - - * CTS.cpp, CoordinateList.cpp, Geometry.cpp, - GeometryCollection.cpp, LineString.cpp, Point.cpp, Polygon.cpp, - geom.h: 'geos': first pass done. Some external dependencies and + * [r11] 'geos': first pass done. Some external dependencies and polishing left. -2002-06-20 08:58 ybychkov +2002-06-20 08:58 Yury Bychkov - * CTS.cpp, Geometry.cpp, GeometryCollection.cpp, - GeometryCollectionIterator.cpp, GeometryFactory.cpp, geom.h: Only - Geometry.java left + * [r10] Only Geometry.java left -2002-06-19 06:29 ybychkov +2002-06-19 06:29 Yury Bychkov - * CTS.cpp, CoordinateList.cpp, Geometry.cpp, - GeometryCollection.cpp, LineString.cpp, LinearRing.cpp, - MultiLineString.cpp, MultiPoint.cpp, MultiPolygon.cpp, Point.cpp, - Polygon.cpp, geom.h: 'geom' mostly done. + * [r9] 'geom' mostly done. -2002-06-14 07:46 ybychkov +2002-06-14 07:46 Yury Bychkov - * CTS.cpp, GeometryCollection.cpp, GeometryFactory.cpp, - MultiLineString.cpp, MultiPoint.cpp, MultiPolygon.cpp, - Polygon.cpp, geom.h: 'geom' almost done + * [r8] 'geom' almost done -2002-06-12 01:47 ybychkov +2002-06-12 01:47 Yury Bychkov - * CoordinateList.cpp, LineString.cpp, geom.h: LineString is 99% - finished + * [r7] LineString is 99% finished -2002-06-11 23:43 ybychkov +2002-06-11 23:43 Yury Bychkov - * CTS.cpp, Coordinate.cpp, CoordinateList.cpp, Dimension.cpp, - Envelope.cpp, Geometry.cpp, GeometryCollection.cpp, - IntersectionMatrix.cpp, LineSegment.cpp, LineString.cpp, - LinearRing.cpp, Location.cpp, Point.cpp, PrecisionModel.cpp, - geom.h, operation.h, platform.h: 'geom' package 70% done + * [r6] 'geom' package 70% done -2002-06-07 17:47 pramsey +2002-06-07 17:47 Paul Ramsey - * CTS.cpp, Coordinate.cpp, CoordinateList.cpp, Dimension.cpp, - Envelope.cpp, LineSegment.cpp, Location.cpp, geom.h, platform.h: - Initial revision + * [r2] Initial revision 2002-06-07 17:47 cvs - * .: New repository initialized by cvs2svn. + * [r1] New repository initialized by cvs2svn. diff -Nru geos-3.1.0/config.guess geos-3.2.2/config.guess --- geos-3.1.0/config.guess 2005-11-22 13:18:02.000000000 +0000 +++ geos-3.2.2/config.guess 2010-04-18 16:08:07.000000000 +0100 @@ -1,9 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. -timestamp='2003-06-17' +timestamp='2009-04-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -17,13 +18,15 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. + # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. @@ -53,8 +56,8 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -66,11 +69,11 @@ while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -104,7 +107,7 @@ trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; @@ -123,7 +126,7 @@ ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' +esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) @@ -136,13 +139,6 @@ UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -## for Red Hat Linux -if test -f /etc/redhat-release ; then - VENDOR=redhat ; -else - VENDOR= ; -fi - # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -165,6 +161,7 @@ arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched @@ -203,50 +200,32 @@ # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + exit ;; *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then + case $UNAME_RELEASE in + *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU @@ -284,42 +263,49 @@ "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac + # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha*:OpenVMS:*:*) - echo alpha-hp-vms - exit 0 ;; + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix - exit 0 ;; + exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 - exit 0 ;; + exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 - exit 0;; + exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; + exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; + exit ;; *:OS/390:*:*) echo i370-ibm-openedition - exit 0 ;; + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp - exit 0;; + exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then @@ -327,32 +313,48 @@ else echo pyramid-pyramid-bsd fi - exit 0 ;; + exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 - exit 0 ;; + exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; + sparc) echo sparc-icl-nx7; exit ;; esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) @@ -361,10 +363,10 @@ esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; + exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 @@ -376,10 +378,10 @@ echo sparc-sun-sunos${UNAME_RELEASE} ;; esac - exit 0 ;; + exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; + exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor @@ -390,37 +392,40 @@ # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; + exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 - exit 0 ;; + exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; + exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; + exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -444,32 +449,33 @@ exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; + exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax - exit 0 ;; + exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax - exit 0 ;; + exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix - exit 0 ;; + exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 - exit 0 ;; + exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 - exit 0 ;; + exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` @@ -485,29 +491,29 @@ else echo i586-dg-dgux${UNAME_RELEASE} fi - exit 0 ;; + exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 - exit 0 ;; + exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 - exit 0 ;; + exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 - exit 0 ;; + exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd - exit 0 ;; + exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; + exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix - exit 0 ;; + exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` @@ -515,7 +521,7 @@ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build @@ -530,15 +536,19 @@ exit(0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi - exit 0 ;; - *:AIX:*:[45]) + exit ;; + *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 @@ -551,28 +561,28 @@ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; + exit ;; *:AIX:*:*) echo rs6000-ibm-aix - exit 0 ;; + exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 - exit 0 ;; + exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 + exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx - exit 0 ;; + exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 - exit 0 ;; + exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd - exit 0 ;; + exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 - exit 0 ;; + exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in @@ -634,9 +644,19 @@ esac if [ ${HP_ARCH} = "hppa2.0w" ] then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else @@ -644,11 +664,11 @@ fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; + exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -676,150 +696,192 @@ exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 - exit 0 ;; + exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd - exit 0 ;; + exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd - exit 0 ;; + exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix - exit 0 ;; + exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf - exit 0 ;; + exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf - exit 0 ;; + exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi - exit 0 ;; + exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites - exit 0 ;; + exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd - exit 0 ;; + exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd - exit 0 ;; + exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd - exit 0 ;; + exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd - exit 0 ;; + exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + exit ;; *:UNICOS/mp:*:*) - echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; + exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) - # Determine whether the default compiler uses glibc. - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #if __GLIBC__ >= 2 - LIBC=gnu - #else - LIBC= - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) + exit ;; + *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:[34]*) - echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit 0 ;; + exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd | genuineintel) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; + exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix - exit 0 ;; + exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin - exit 0 ;; + exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; + exit ;; *:GNU:*:*) + # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; + exit ;; arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu - exit 0 ;; + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-${VENDOR:-unknown}-linux-gnu - exit 0 ;; + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c @@ -836,8 +898,12 @@ #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build @@ -855,15 +921,22 @@ #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; ppc:Linux:*:*) - echo powerpc-${VENDOR:-unknown}-linux-gnu - exit 0 ;; + echo powerpc-unknown-linux-gnu + exit ;; ppc64:Linux:*:*) - echo powerpc64-${VENDOR:-unknown}-linux-gnu - exit 0 ;; + echo powerpc64-unknown-linux-gnu + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -877,7 +950,10 @@ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in @@ -885,25 +961,31 @@ PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac - exit 0 ;; + exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu - exit 0 ;; + exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-${VENDOR:-ibm}-linux-gnu - exit 0 ;; + echo ${UNAME_MACHINE}-ibm-linux + exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; x86_64:Linux:*:*) - echo x86_64-${VENDOR:-unknown}-linux-gnu - exit 0 ;; + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent @@ -921,15 +1003,12 @@ ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; + exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; + exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build @@ -946,23 +1025,33 @@ LIBC=gnulibc1 # endif #else - #ifdef __INTEL_COMPILER + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-${VENDOR:-pc}-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 - exit 0 ;; + exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... @@ -970,24 +1059,27 @@ # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; + exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; + exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; + exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; + exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then @@ -995,15 +1087,16 @@ else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi - exit 0 ;; - i*86:*:5:[78]*) + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; + exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi - exit 0 ;; + exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv - exit 0 ;; + exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv - exit 0 ;; + exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 - exit 0 ;; + exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; + exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; + exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 - exit 0 ;; + exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` @@ -1095,68 +1201,84 @@ else echo ns32k-sni-sysv fi - exit 0 ;; + exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 - exit 0 ;; + exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 - exit 0 ;; + exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 - exit 0 ;; + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos - exit 0 ;; + exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; + exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 - exit 0 ;; + exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi - exit 0 ;; + exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos - exit 0 ;; + exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos - exit 0 ;; + exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos - exit 0 ;; + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Darwin:*:*) - case `uname -p` in - *86) UNAME_PROCESSOR=i686 ;; - powerpc) UNAME_PROCESSOR=powerpc ;; + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; + exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then @@ -1164,22 +1286,25 @@ UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; + exit ;; *:QNX:*:4*) echo i386-pc-qnx - exit 0 ;; - NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; + exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux - exit 0 ;; + exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv - exit 0 ;; + exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; + exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 @@ -1190,28 +1315,50 @@ UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; + exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 - exit 0 ;; + exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex - exit 0 ;; + exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 - exit 0 ;; + exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 - exit 0 ;; + exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 - exit 0 ;; + exit ;; *:ITS:*:*) echo pdp10-unknown-its - exit 0 ;; + exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} - exit 0 ;; + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 @@ -1243,7 +1390,7 @@ #endif #if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); + printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) @@ -1332,11 +1479,12 @@ } EOF -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) @@ -1345,22 +1493,22 @@ case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd - exit 0 ;; + exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi - exit 0 ;; + exit ;; c34*) echo c34-convex-bsd - exit 0 ;; + exit ;; c38*) echo c38-convex-bsd - exit 0 ;; + exit ;; c4*) echo c4-convex-bsd - exit 0 ;; + exit ;; esac fi @@ -1371,7 +1519,9 @@ the operating system you are using. It is advised that you download the most up to date version of the config scripts from - ftp://ftp.gnu.org/pub/gnu/config/ + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +and + http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD If the version you run ($0) is already up to date, please send the following data and any information you think might be diff -Nru geos-3.1.0/config.sub geos-3.2.2/config.sub --- geos-3.1.0/config.sub 2005-11-22 13:18:02.000000000 +0000 +++ geos-3.2.2/config.sub 2010-04-18 16:08:07.000000000 +0100 @@ -1,9 +1,10 @@ #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. -timestamp='2003-06-18' +timestamp='2009-04-17' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software @@ -21,14 +22,15 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. + # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # @@ -70,8 +72,8 @@ version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -83,11 +85,11 @@ while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; + echo "$timestamp" ; exit ;; --version | -v ) - echo "$version" ; exit 0 ;; + echo "$version" ; exit ;; --help | --h* | -h ) - echo "$usage"; exit 0 ;; + echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. @@ -99,7 +101,7 @@ *local*) # First pass through any local machine types. echo $1 - exit 0;; + exit ;; * ) break ;; @@ -118,7 +120,10 @@ # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in - nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -144,7 +149,7 @@ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) + -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; @@ -169,6 +174,10 @@ -hiux*) os=-hiuxwe2 ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -185,6 +194,10 @@ # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` @@ -228,45 +241,57 @@ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ + | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ - | ip2k \ - | m32r | m68000 | m68k | m88k | mcore \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ - | mips64vr | mips64vrel \ + | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | moxie \ + | mt \ | msp430 \ + | nios | nios2 \ | ns16k | ns32k \ - | openrisc | or32 \ + | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ - | s390 | s390x \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) @@ -276,6 +301,9 @@ ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; + ms1) + basic_machine=mt-unknown + ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and @@ -295,55 +323,67 @@ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | cydra-* \ + | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* \ - | m32r-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ + | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ | msp430-* \ - | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ - | s390-* | s390x-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ | ymp-* \ - | z8k-*) + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -361,6 +401,9 @@ basic_machine=a29k-amd os=-udi ;; + abacus) + basic_machine=abacus-unknown + ;; adobe68k) basic_machine=m68010-adobe os=-scout @@ -378,6 +421,9 @@ amd64) basic_machine=x86_64-pc ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; amdahl) basic_machine=580-amdahl os=-sysv @@ -401,6 +447,10 @@ basic_machine=m68k-apollo os=-bsd ;; + aros) + basic_machine=i386-pc + os=-aros + ;; aux) basic_machine=m68k-apple os=-aux @@ -409,10 +459,22 @@ basic_machine=ns32k-sequent os=-dynix ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; c90) basic_machine=c90-cray os=-unicos ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; convex-c1) basic_machine=c1-convex os=-bsd @@ -437,12 +499,27 @@ basic_machine=j90-cray os=-unicos ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; crds | unos) basic_machine=m68k-crds ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; da30 | da30-*) basic_machine=m68k-da30 ;; @@ -465,6 +542,14 @@ basic_machine=m88k-motorola os=-sysv3 ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx @@ -615,6 +700,14 @@ basic_machine=m68k-isi os=-sysv ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; m88k-omron*) basic_machine=m88k-omron ;; @@ -630,6 +723,10 @@ basic_machine=i386-pc os=-mingw32 ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; miniframe) basic_machine=m68000-convergent ;; @@ -643,10 +740,6 @@ mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; monitor) basic_machine=m68k-rom68k os=-coff @@ -659,6 +752,9 @@ basic_machine=i386-pc os=-msdos ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; mvs) basic_machine=i370-ibm os=-mvs @@ -727,10 +823,6 @@ np1) basic_machine=np1-gould ;; - nv1) - basic_machine=nv1-cray - os=-unicosmp - ;; nsr-tandem) basic_machine=nsr-tandem ;; @@ -738,9 +830,12 @@ basic_machine=hppa1.1-oki os=-proelf ;; - or32 | or32-*) + openrisc | openrisc-*) basic_machine=or32-unknown - os=-coff + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson @@ -758,6 +853,14 @@ basic_machine=i860-intel os=-osf ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; pbd) basic_machine=sparc-tti ;; @@ -767,6 +870,12 @@ pc532 | pc532-*) basic_machine=ns32k-pc532 ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; @@ -823,6 +932,10 @@ basic_machine=i586-unknown os=-pw32 ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; rom68k) basic_machine=m68k-rom68k os=-coff @@ -833,6 +946,12 @@ rtpc | rtpc-*) basic_machine=romp-ibm ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; sa29200) basic_machine=a29k-amd os=-udi @@ -843,6 +962,10 @@ sb1el) basic_machine=mipsisa64sb1el-unknown ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; sei) basic_machine=mips-sei os=-seiux @@ -854,6 +977,9 @@ basic_machine=sh-hitachi os=-hms ;; + sh5el) + basic_machine=sh5le-unknown + ;; sh64) basic_machine=sh64-unknown ;; @@ -943,6 +1069,10 @@ basic_machine=tic6x-unknown os=-coff ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; tx39) basic_machine=mipstx39-unknown ;; @@ -956,6 +1086,10 @@ tower | tower-32) basic_machine=m68k-ncr ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; udi29k) basic_machine=a29k-amd os=-udi @@ -999,6 +1133,10 @@ basic_machine=hppa1.1-winbond os=-proelf ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; xps | xps100) basic_machine=xps100-honeywell ;; @@ -1010,6 +1148,10 @@ basic_machine=z8k-unknown os=-sim ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; none) basic_machine=none-none os=-none @@ -1029,6 +1171,9 @@ romp) basic_machine=romp-ibm ;; + mmix) + basic_machine=mmix-knuth + ;; rs6000) basic_machine=rs6000-ibm ;; @@ -1045,13 +1190,10 @@ we32k) basic_machine=we32k-att ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b) + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) @@ -1120,23 +1262,28 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ + | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ + | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1154,12 +1301,15 @@ os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; @@ -1172,6 +1322,9 @@ -opened*) os=-openedition ;; + -os400*) + os=-os400 + ;; -wince*) os=-wince ;; @@ -1193,6 +1346,9 @@ -atheos*) os=-atheos ;; + -syllable*) + os=-syllable + ;; -386bsd) os=-bsd ;; @@ -1215,6 +1371,9 @@ -sinix*) os=-sysv4 ;; + -tpf*) + os=-tpf + ;; -triton*) os=-sysv3 ;; @@ -1251,6 +1410,12 @@ -kaos*) os=-kaos ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; -none) ;; *) @@ -1273,6 +1438,12 @@ # system, and we'll never get to this point. case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; *-acorn) os=-riscix1.2 ;; @@ -1282,8 +1453,8 @@ arm*-semi) os=-aout ;; - c4x-* | tic4x-*) - os=-coff + c4x-* | tic4x-*) + os=-coff ;; # This must come before the *-dec entry. pdp10-*) @@ -1310,6 +1481,9 @@ m68*-cisco) os=-aout ;; + mep-*) + os=-elf + ;; mips*-cisco) os=-elf ;; @@ -1328,9 +1502,15 @@ *-be) os=-beos ;; + *-haiku) + os=-haiku + ;; *-ibm) os=-aix ;; + *-knuth) + os=-mmixware + ;; *-wec) os=-proelf ;; @@ -1463,9 +1643,15 @@ -mvs* | -opened*) vendor=ibm ;; + -os400*) + vendor=ibm + ;; -ptx*) vendor=sequent ;; + -tpf*) + vendor=ibm + ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; @@ -1490,7 +1676,7 @@ esac echo $basic_machine$os -exit 0 +exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff -Nru geos-3.1.0/configure geos-3.2.2/configure --- geos-3.1.0/configure 2009-03-11 19:14:10.000000000 +0000 +++ geos-3.2.2/configure 2010-04-18 16:08:16.000000000 +0100 @@ -1,81 +1,413 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. +# Generated by GNU Autoconf 2.64. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software +# Foundation, Inc. # -# Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac fi -DUALCASE=1; export DUALCASE # for MKS sh -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } fi -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + # We cannot yet assume a decent shell, so we have to provide a + # neutralization value for shells without unset; and this also + # works around shells that cannot unset nonexistent variables. + BASH_ENV=/dev/null + ENV=/dev/null + (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then + +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -# Name of the executable. -as_me=`$as_basename "$0" || +as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` - -# PATH needs CR, and LINENO needs CR and PATH. # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -83,146 +415,107 @@ as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop - s,-$,, - s,^['$as_cr_digits']*\n,, + s/-\n.*// ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" # Exit status is that of the last command. exit } - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; esac -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file else - as_expr=false + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln else as_ln_s='cp -p' fi -rm -f conf$$ conf$$.exe conf$$.file +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then - as_mkdir_p=: + as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi -as_executable_p="test -f" +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -231,36 +524,26 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} -case X$ECHO in +case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac -echo=${ECHO-echo} +ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! : else # Restart under the correct shell. @@ -270,9 +553,9 @@ if test "X$1" = X--fallback-echo; then # used as fallback echo shift - cat </dev/null 2>&1 && unset CDPATH -if test -z "$ECHO"; then -if test "X${echo_test_string+set}" != Xset; then -# find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi fi fi fi fi -fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi -tagnames=${tagnames+${tagnames},}CXX - -tagnames=${tagnames+${tagnames},}F77 +exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -exec 6>&1 - # # Initializations. # ac_default_prefix=/usr/local +ac_clean_files= ac_config_libobj_dir=. +LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} # Identity of this package. PACKAGE_NAME= @@ -424,51 +698,249 @@ PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= +PACKAGE_URL= ac_unique_file="source/headers/geos.h" # Factoring default headers for most tests. ac_includes_default="\ #include -#if HAVE_SYS_TYPES_H +#ifdef HAVE_SYS_TYPES_H # include #endif -#if HAVE_SYS_STAT_H +#ifdef HAVE_SYS_STAT_H # include #endif -#if STDC_HEADERS +#ifdef STDC_HEADERS # include # include #else -# if HAVE_STDLIB_H +# ifdef HAVE_STDLIB_H # include # endif #endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif -#if HAVE_STRINGS_H +#ifdef HAVE_STRINGS_H # include #endif -#if HAVE_INTTYPES_H +#ifdef HAVE_INTTYPES_H # include -#else -# if HAVE_STDINT_H -# include -# endif #endif -#if HAVE_UNISTD_H +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS ALLOCA INLINE_FLAGS SWIG SWIG_LIB ENABLE_SWIG_TRUE ENABLE_SWIG_FALSE PYTHON PYTHON_VERSION PYTHON_PREFIX PYTHON_EXEC_PREFIX PYTHON_PLATFORM pythondir pkgpythondir pyexecdir pkgpyexecdir PYTHON_CPPFLAGS PYTHON_LDFLAGS PYTHON_SITE_PKG PYTHON_EXTRA_LIBS SWIG_PYTHON_OPT SWIG_PYTHON_CPPFLAGS ENABLE_PYTHON_TRUE ENABLE_PYTHON_FALSE RUBY RUBY_VERSION RUBY_BIN_DIR RUBY_INCLUDE_DIR RUBY_LIB_DIR RUBY_EXTENSION_DIR RUBY_SO_NAME RUBY_SHARED_LIB ENABLE_RUBY_TRUE ENABLE_RUBY_FALSE VERSION_MAJOR VERSION_MINOR VERSION_PATCH INTERFACE_CURRENT INTERFACE_REVISION INTERFACE_AGE JTS_PORT CAPI_VERSION CAPI_VERSION_MAJOR CAPI_VERSION_MINOR CAPI_VERSION_PATCH CAPI_INTERFACE_CURRENT CAPI_INTERFACE_REVISION CAPI_INTERFACE_AGE LTLIBOBJS' +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +CAPI_INTERFACE_AGE +CAPI_INTERFACE_REVISION +CAPI_INTERFACE_CURRENT +CAPI_VERSION_PATCH +CAPI_VERSION_MINOR +CAPI_VERSION_MAJOR +CAPI_VERSION +JTS_PORT +INTERFACE_AGE +INTERFACE_REVISION +INTERFACE_CURRENT +VERSION_PATCH +VERSION_MINOR +VERSION_MAJOR +ENABLE_RUBY_FALSE +ENABLE_RUBY_TRUE +RUBY_SHARED_LIB +RUBY_SO_NAME +RUBY_EXTENSION_DIR +RUBY_LIB_DIR +RUBY_INCLUDE_DIR +RUBY_BIN_DIR +RUBY_VERSION +RUBY +ENABLE_PYTHON_FALSE +ENABLE_PYTHON_TRUE +SWIG_PYTHON_CPPFLAGS +SWIG_PYTHON_OPT +PYTHON_EXTRA_LIBS +PYTHON_SITE_PKG +PYTHON_LDFLAGS +PYTHON_CPPFLAGS +pkgpyexecdir +pyexecdir +pkgpythondir +pythondir +PYTHON_PLATFORM +PYTHON_EXEC_PREFIX +PYTHON_PREFIX +PYTHON_VERSION +PYTHON +ENABLE_SWIG_FALSE +ENABLE_SWIG_TRUE +SWIG_LIB +SWIG +INLINE_FLAGS +ALLOCA +LIBOBJS +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +CPP +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +lt_ECHO +RANLIB +AR +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +LIBTOOL +OBJDUMP +DLLTOOL +AS +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +enable_libtool_lock +enable_inline +enable_cassert +enable_python +enable_ruby +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP' + # Initialize some variables set by options. ac_init_help= ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null @@ -491,34 +963,48 @@ # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' +datarootdir='${prefix}/share' +datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' ac_prev= +ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" + eval $ac_prev=\$ac_option ac_prev= continue fi - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_option in + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; @@ -540,33 +1026,59 @@ --config-cache | -C) cache_file=config.cache ;; - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) + -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; esac - eval "enable_$ac_feature='$ac_optarg'" ;; + eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ @@ -593,6 +1105,12 @@ -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; @@ -617,13 +1135,16 @@ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) + | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) @@ -688,6 +1209,16 @@ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; @@ -738,26 +1269,36 @@ ac_init_version=: ;; -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; esac - eval "with_$ac_package='$ac_optarg'" ;; + eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. @@ -777,26 +1318,25 @@ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } + -*) as_fn_error "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information." ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; @@ -805,31 +1345,36 @@ if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } + as_fn_error "missing argument to $ac_option" fi -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac -done +fi -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir do - eval ac_val=$`echo $ac_var` + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac + as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' @@ -843,7 +1388,7 @@ if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes @@ -856,94 +1401,72 @@ test "$silent" = yes && exec 6>/dev/null +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error "pwd does not report name of working directory" + + # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then + if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_CXXCPP_set=${CXXCPP+set} -ac_env_CXXCPP_value=$CXXCPP -ac_cv_env_CXXCPP_set=${CXXCPP+set} -ac_cv_env_CXXCPP_value=$CXXCPP -ac_env_F77_set=${F77+set} -ac_env_F77_value=$F77 -ac_cv_env_F77_set=${F77+set} -ac_cv_env_F77_value=$F77 -ac_env_FFLAGS_set=${FFLAGS+set} -ac_env_FFLAGS_value=$FFLAGS -ac_cv_env_FFLAGS_set=${FFLAGS+set} -ac_cv_env_FFLAGS_value=$FFLAGS +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done # # Report the --help message. @@ -972,14 +1495,11 @@ -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] -_ACEOF - - cat <<_ACEOF Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] + [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] + [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify @@ -989,18 +1509,25 @@ For better control, use the options below. Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF @@ -1022,14 +1549,13 @@ cat <<\_ACEOF Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] - build shared libraries [default=yes] - --enable-static[=PKGS] - build static libraries [default=yes] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) @@ -1041,142 +1567,636 @@ Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-pic try to use only PIC/non-PIC objects [default=use both] - --with-tags[=TAGS] - include additional configurations [automatic] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor - F77 Fortran 77 compiler command - FFLAGS Fortran 77 compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. +Report bugs to the package provider. _ACEOF +ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. - ac_popdir=`pwd` for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue ac_builddir=. -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix case $srcdir in - .) # No --srcdir option. We are building in place. + .) # We are building in place. ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } done fi -test -n "$ac_init_help" && exit 0 +test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF +configure +generated by GNU Autoconf 2.64 -Copyright (C) 2003 Free Software Foundation, Inc. +Copyright (C) 2009 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF - exit 0 + exit fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ -_ACEOF +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + return $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.64. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log { cat <<_ASUNAME ## --------- ## @@ -1195,7 +2215,7 @@ /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` @@ -1207,8 +2227,9 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS } >&5 @@ -1230,7 +2251,6 @@ ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1241,13 +2261,13 @@ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" + as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else @@ -1263,21 +2283,19 @@ -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { @@ -1290,20 +2308,35 @@ _ASBOX echo # The following way of writing the cache mishandles newlines in values, -{ +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; - esac; -} + esac | + sort +) echo cat <<\_ASBOX @@ -1314,22 +2347,28 @@ echo for ac_var in $ac_subst_vars do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## +## ------------------- ## +## File substitutions. ## +## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi @@ -1341,26 +2380,26 @@ ## ----------- ## _ASBOX echo - sed "/^$/d" confdefs.h | sort + cat confdefs.h echo fi test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" } >&5 - rm -f core *.core && - rm -rf conftest* confdefs* conf$$* $ac_clean_files && + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status - ' 0 +' 0 for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. @@ -1368,40 +2407,46 @@ #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF - cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + # Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site fi -for ac_site_file in $CONFIG_SITE; do +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi @@ -1411,69 +2456,79 @@ # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do +for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -1482,122 +2537,131 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + for ac_t in install-sh install.sh shtool; do + if test -f "$ac_dir/$ac_t"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/$ac_t -c" + break 2 + fi + done done if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + as_fn_error "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + # Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error "invalid value of canonical build" "$LINENO" 5;; +esac build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error "invalid value of canonical host" "$LINENO" 5;; +esac host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 -if test "${ac_cv_target+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} - { (exit 1); exit 1; }; } +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if test "${ac_cv_target+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error "invalid value of canonical target" "$LINENO" 5;; +esac target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. @@ -1607,27 +2671,18 @@ NONENONEs,x,x, && program_prefix=${target_alias}- -case macros in - [\\/]* | ?:[\\/]* ) ac_macro_dir=macros ;; - *) ac_macro_dir=$srcdir/macros ;; -esac -if test -d "$ac_macro_dir"; then : -else - { { echo "$as_me:$LINENO: error: cannot find macro directory \`macros'" >&5 -echo "$as_me: error: cannot find macro directory \`macros'" >&2;} - { (exit 1); exit 1; }; } -fi -JTS_PORT=1.7.1 -CAPI_INTERFACE_CURRENT=6 -CAPI_INTERFACE_REVISION=0 -CAPI_INTERFACE_AGE=5 +JTS_PORT=1.10.0 + +CAPI_INTERFACE_CURRENT=7 +CAPI_INTERFACE_REVISION=2 +CAPI_INTERFACE_AGE=6 VERSION_MAJOR=3 -VERSION_MINOR=1 -VERSION_PATCH=0 +VERSION_MINOR=2 +VERSION_PATCH=2 VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" CAPI_VERSION_MAJOR=`expr $CAPI_INTERFACE_CURRENT - $CAPI_INTERFACE_AGE` @@ -1635,7 +2690,8 @@ CAPI_VERSION_PATCH=$CAPI_INTERFACE_REVISION CAPI_VERSION="$CAPI_VERSION_MAJOR.$CAPI_VERSION_MINOR.$CAPI_VERSION_PATCH" -am__api_version="1.9" +am__api_version='1.11' + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -1649,22 +2705,23 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. @@ -1672,7 +2729,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -1682,30 +2739,43 @@ # program-specific install script used by HP pwplus--don't use. : else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi fi fi done done ;; esac -done + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is - # removed, or if the path is relative. + # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -1715,21 +2785,34 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; +esac + # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. - set X `ls -t $srcdir/configure conftest.file` + set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ @@ -1739,11 +2822,8 @@ # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". - { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&5 -echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -alias in your environment" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file @@ -1752,139 +2832,268 @@ # Ok. : else - { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -Check your system clock" >&5 -echo "$as_me: error: newly created file is older than distributed files! -Check your system clock" >&2;} - { (exit 1); exit 1; }; } + as_fn_error "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" + program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. # By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` -test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= - { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi -if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - # We used to keeping the `.' as first argument, in order to - # allow $(mkdir_p) to be used without argument. As in - # $(mkdir_p) $(somedir) - # where $(somedir) is conditionally defined. However this is wrong - # for two reasons: - # 1. if the package is installed by a user who cannot write `.' - # make install will fail, - # 2. the above comment should most certainly read - # $(mkdir_p) $(DESTDIR)$(somedir) - # so it does not work when $(somedir) is undefined and - # $(DESTDIR) is not. - # To support the latter case, we have to write - # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), - # so the `.' trick is pointless. - mkdir_p='mkdir -p --' -else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - for d in ./-p ./--version; - do - test -d $d && rmdir $d - done - # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. - if test -f "$ac_aux_dir/mkinstalldirs"; then - mkdir_p='$(mkinstalldirs)' - else - mkdir_p='$(install_sh) -d' - fi +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac fi -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$AWK" && break -done -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } SET_MAKE= else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi @@ -1897,12 +3106,14 @@ fi rmdir .tst 2>/dev/null -# test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && - test -f $srcdir/config.status; then - { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} - { (exit 1); exit 1; }; } +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi fi # test whether we have cygpath @@ -1936,96 +3147,6 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -install_sh=${install_sh-"$am_aux_dir/install-sh"} - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - STRIP=$ac_ct_STRIP -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" - # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. @@ -2038,9 +3159,9 @@ - ac_config_headers="$ac_config_headers source/headers/config.h" +ac_config_headers="$ac_config_headers source/headers/config.h" - ac_config_headers="$ac_config_headers source/headers/geos/platform.h" +ac_config_headers="$ac_config_headers source/headers/geos/platform.h" ac_ext=c ac_cpp='$CPP $CPPFLAGS' @@ -2050,10 +3171,10 @@ if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2063,35 +3184,37 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2101,39 +3224,50 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2143,77 +3277,37 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi + fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2224,18 +3318,19 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. @@ -2253,24 +3348,25 @@ fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. @@ -2280,39 +3376,41 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC - for ac_prog in cl + for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. @@ -2322,183 +3420,227 @@ do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + test -n "$ac_ct_CC" && break done - CC=$ac_ct_CC + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi fi fi -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "no acceptable C compiler found in \$PATH +See \`config.log' for more details." "$LINENO" 5; } # Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - +#include int main () { +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. break;; * ) break;; esac done +test "$ac_cv_exeext" = no && ac_cv_exeext= + else - echo "$as_me: failed program was:" >&5 + ac_file='' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then : + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ as_fn_set_status 77 +as_fn_error "C compiler cannot create executables +See \`config.log' for more details." "$LINENO" 5; }; } fi - ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot run C compiled programs. If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +See \`config.log' for more details." "$LINENO" 5; } fi fi fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } -rm -f a.out a.exe conftest$ac_cv_exeext b.out +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either +# Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -2506,38 +3648,31 @@ for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext break;; * ) break;; esac done else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." "$LINENO" 5; } fi - rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2549,45 +3684,46 @@ } _ACEOF rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else - echo "$as_me: failed program was:" >&5 + $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "cannot compute suffix of object files: cannot compile +See \`config.log' for more details." "$LINENO" 5; } fi - rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2601,55 +3737,34 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no + ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2660,39 +3775,49 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ -ac_cv_prog_cc_g=no + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then @@ -2708,18 +3833,14 @@ CFLAGS= fi fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then : + $as_echo_n "(cached) " >&6 else - ac_cv_prog_cc_stdc=no + ac_cv_prog_cc_c89=no ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -2747,12 +3868,17 @@ /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std1 is added to get + as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std1. */ + that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2767,205 +3893,37 @@ return 0; } _ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg fi -rm -f conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break done -rm -f conftest.$ac_ext conftest.$ac_objext +rm -f conftest.$ac_ext CC=$ac_save_CC fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac +if test "x$ac_cv_prog_cc_c89" != xno; then : -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2973,60 +3931,58 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" - ac_config_commands="$ac_config_commands depfiles" +ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: - @echo done + @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. -echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# We grep out `Entering directory' and `Leaving directory' -# messages which can occur if `w' ends up in MAKEFLAGS. -# In particular we don't look at `^make:' because GNU make might -# be invoked under some other name (usually "gmake"), in which -# case it prints its new name instead of `make'. -if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then - am__include=include - am__quote= - _am_result=GNU -fi +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf - if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then - am__include=.include - am__quote="\"" - _am_result=BSD - fi + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac fi -echo "$as_me:$LINENO: result: $_am_result" >&5 -echo "${ECHO_T}$_am_result" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } rm -f confinc confmf -# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then - enableval="$enable_dependency_tracking" +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi -fi; if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi - - -if test "x$enable_dependency_tracking" != xno; then + if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else @@ -3036,13 +3992,12 @@ - depcc="$CC" am_compiler_list= -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up @@ -3067,6 +4022,11 @@ if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and @@ -3084,7 +4044,17 @@ done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested @@ -3094,18 +4064,23 @@ break fi ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; none) break ;; esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message @@ -3129,13 +4104,11 @@ fi fi -echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - -if + if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= @@ -3147,1370 +4120,1133 @@ +enable_dlopen=yes +enable_win32_dll=yes -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AS+set}" = set; then : + $as_echo_n "(cached) " >&6 else - enable_shared=yes -fi; - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. else - enable_static=yes -fi; +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -# Check whether --enable-fast-install or --disable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } else - enable_fast_install=yes -fi; + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 -if test "${lt_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else - # Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done done + done +IFS=$as_save_IFS fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -SED=$lt_cv_path_SED -echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6 - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" fi -echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 + break 2 + fi +done done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. +IFS=$as_save_IFS + fi fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 &5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" fi -echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 -with_gnu_ld=$lt_cv_prog_gnu_ld + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } else - lt_cv_ld_reload_flag='-r' + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - darwin*) - if test "$GCC" = yes; then - reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac -echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +IFS=$as_save_IFS + fi fi -echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6 -NM="$lt_cv_path_NM" - -echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } else - echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 -echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi -case $host_os in -aix4* | aix5*) - lt_cv_deplibs_check_method=pass_all ;; +esac -beos*) - lt_cv_deplibs_check_method=pass_all - ;; +test -z "$AS" && AS=as -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump'. - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; -freebsd* | kfreebsd*-gnu | dragonfly*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; +test -z "$DLLTOOL" && DLLTOOL=dlltool -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; -# This must be Linux ELF. -linux*) - lt_cv_deplibs_check_method=pass_all - ;; -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; +test -z "$OBJDUMP" && OBJDUMP=objdump -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; -nto-qnx*) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac -fi -echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown +macro_version='2.2.6' +macro_revision='1.3012' -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} -# Allow CC to be a program name with arguments. -compiler=$CC -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" -fi; -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 3706 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - lt_cv_cc_needs_belf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -lt_cv_cc_needs_belf=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +ltmain="$ac_aux_dir/ltmain.sh" -fi -echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -*-*-cygwin* | *-*-mingw* | *-*-pw32*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_DLLTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - echo "$as_me:$LINENO: result: $DLLTOOL" >&5 -echo "${ECHO_T}$DLLTOOL" >&6 + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + ac_cv_path_SED=$SED fi fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac - test -z "$ac_cv_prog_ac_ct_DLLTOOL" && ac_cv_prog_ac_ct_DLLTOOL="false" -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 -echo "${ECHO_T}$ac_ct_DLLTOOL" >&6 + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + ac_cv_path_GREP=$GREP fi - DLLTOOL=$ac_ct_DLLTOOL -else - DLLTOOL="$ac_cv_prog_DLLTOOL" fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AS="${ac_tool_prefix}as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - echo "$as_me:$LINENO: result: $AS" >&5 -echo "${ECHO_T}$AS" >&6 + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + ac_cv_path_EGREP=$EGREP fi + fi fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AS+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if test "${ac_cv_path_FGREP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AS="as" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi -done -done +else + ac_cv_path_FGREP=$FGREP +fi - test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="false" + fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 -echo "${ECHO_T}$ac_ct_AS" >&6 + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 -echo "${ECHO_T}no" >&6 + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi fi - AS=$ac_ct_AS +LD="$lt_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - AS="$ac_cv_prog_AS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if test "${lt_cv_path_NM+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_OBJDUMP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + for ac_prog in "dumpbin -symbols" "link -dump -symbols" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - echo "$as_me:$LINENO: result: $OBJDUMP" >&5 -echo "${ECHO_T}$OBJDUMP" >&6 +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + + test -n "$DUMPBIN" && break + done fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in "dumpbin -symbols" "link -dump -symbols" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false" fi fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 -echo "${ECHO_T}$ac_ct_OBJDUMP" >&6 +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - OBJDUMP=$ac_ct_OBJDUMP -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - ;; + test -n "$ac_ct_DUMPBIN" && break +done + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; esac - -need_locks="$enable_libtool_lock" + DUMPBIN=$ac_ct_DUMPBIN + fi +fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" fi -else - ac_cpp_err=yes fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +test -z "$NM" && NM=nm - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if test "${lt_cv_nm_interface+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:5039: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:5042: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:5045: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" fi -else - ac_cpp_err=yes + rm -f conftest* fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + i=0 + teststring="ABCD" - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac -int -main () -{ +fi - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +max_cmd_len=$lt_cv_sys_max_cmd_len -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* -fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* -fi +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no + lt_unset=false fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF -fi -# On IRIX 5.3, sys/types and inttypes.h are conflicting. +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac @@ -4518,1268 +5254,721 @@ -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac -done - - - -for ac_header in dlfcn.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF -fi -done -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$CXX" && break - done + fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$ac_ct_CXX" && break -done -test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - - CXX=$ac_ct_CXX + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" fi +test -z "$OBJDUMP" && OBJDUMP=objdump -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu -fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -GXX=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -CXXFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. -int -main () -{ +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +beos*) + lt_cv_deplibs_check_method=pass_all + ;; -ac_cv_prog_cxx_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' else - CXXFLAGS="-g" + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac else - CXXFLAGS= + lt_cv_deplibs_check_method=pass_all fi -fi -for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ;; -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; -depcc="$CXX" am_compiler_list= +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + ;; - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; -fi -echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; -if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 -if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - # Passes both tests. -ac_preproc_ok=: -break fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - done - ac_cv_prog_CXXCPP=$CXXCPP fi - CXXCPP=$ac_cv_prog_CXXCPP +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : + $as_echo_n "(cached) " >&6 else - ac_cv_prog_CXXCPP=$CXXCPP -fi -echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6 -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi -else - ac_cpp_err=yes +done + done +IFS=$as_save_IFS + fi -if test -z "$ac_cpp_err"; then - : +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -rm -f conftest.err conftest.$ac_ext - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag + if test "x$ac_ct_AR" = x; then + AR="false" else - ac_cpp_err= + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR fi else - ac_cpp_err=yes + AR="$ac_cv_prog_AR" fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru + + + + + + -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -fi -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu if test -n "$ac_tool_prefix"; then - for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$F77"; then - ac_cv_prog_F77="$F77" # Let the user override the test. + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_F77="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi -F77=$ac_cv_prog_F77 -if test -n "$F77"; then - echo "$as_me:$LINENO: result: $F77" >&5 -echo "${ECHO_T}$F77" >&6 +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$F77" && break - done + fi -if test -z "$F77"; then - ac_ct_F77=$F77 - for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_F77"; then - ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_F77="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi -ac_ct_F77=$ac_cv_prog_ac_ct_F77 -if test -n "$ac_ct_F77"; then - echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 -echo "${ECHO_T}$ac_ct_F77" >&6 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - test -n "$ac_ct_F77" && break -done - - F77=$ac_ct_F77 + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" fi +test -z "$STRIP" && STRIP=: -# Provide some information about the compiler. -echo "$as_me:5527:" \ - "checking for Fortran 77 compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -rm -f a.out - -# If we don't use `.F' as extension, the preprocessor is not run on the -# input file. (Note that this only needs to work for GNU compilers.) -ac_save_ext=$ac_ext -ac_ext=F -echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 -if test "${ac_cv_f77_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - program main -#ifndef __GNUC__ - choke me -#endif - end -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_f77_compiler_gnu=$ac_compiler_gnu - fi -echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 -ac_ext=$ac_save_ext -ac_test_FFLAGS=${FFLAGS+set} -ac_save_FFLAGS=$FFLAGS -FFLAGS= -echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 -echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_f77_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - FFLAGS=-g -cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_f77_g=yes +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_f77_g=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi -echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 -echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 -if test "$ac_test_FFLAGS" = set; then - FFLAGS=$ac_save_FFLAGS -elif test $ac_cv_prog_f77_g = yes; then - if test "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-g -O2" - else - FFLAGS="-g" +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } else - if test "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-O2" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" else - FFLAGS= + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB fi +else + RANLIB="$ac_cv_prog_RANLIB" fi -G77=`test $ac_compiler_gnu = yes && echo yes` -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - +test -z "$RANLIB" && RANLIB=: -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -# find the maximum length of command line arguments -echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - i=0 - teststring="ABCD" - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for *BSD - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac - + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi -if test -n $lt_cv_sys_max_cmd_len ; then - echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 -else - echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6 -fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + # Check for command to grab the raw symbol name followed by C symbol from nm. -echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : + $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. @@ -5791,33 +5980,18 @@ # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; -hpux*) # Its linker distinguishes data from code symbols +hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -linux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDGIRSTW]' - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' @@ -5825,65 +5999,102 @@ osf*) symcode='[BCDEGQRST]' ;; -solaris* | sysv5*) +solaris*) symcode='[BDRT]' ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; sysv4) symcode='[DFNSTU]' ;; esac +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Try without a prefix undercore, then with it. +# Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* - cat > conftest.$ac_ext < conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; -void nm_test_func(){} +void nm_test_func(void); +void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} -EOF +_LT_EOF - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm - if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s "$nlist"; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -5892,53 +6103,55 @@ fi # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.$ac_ext + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif -EOF +_LT_EOF # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - cat <> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif + cat <<_LT_EOF >> conftest.$ac_ext -/* The mapping between symbol names and symbols. */ +/* The mapping between symbol names and symbols. */ const struct { const char *name; - lt_ptr_t address; + void *address; } -lt_preloaded_symbols[] = +lt__PROGRAM__LTX_preloaded_symbols[] = { -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} }; +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + #ifdef __cplusplus } #endif -EOF +_LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext}; then + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" @@ -5956,7 +6169,7 @@ echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi - rm -f conftest* conftst* + rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then @@ -5972,9142 +6185,3482 @@ lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } else - echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } fi -echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6 -if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6 -objdir=$lt_cv_objdir -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e 1s/^X//' -sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' -# Same as above, but do not quote variable references. -double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -# Constants: -rm="rm -f" -# Global variables: -default_ofile=libtool -can_build_shared=yes -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -fi -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 6248 "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + lt_cv_cc_needs_belf=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done + done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - RANLIB=$ac_ct_RANLIB + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi else - RANLIB="$ac_cv_prog_RANLIB" + DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS fi fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done -done + done +IFS=$as_save_IFS - test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi - STRIP=$ac_ct_STRIP + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi else - STRIP="$ac_cv_prog_STRIP" + NMEDIT="$ac_cv_prog_NMEDIT" fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + done +IFS=$as_save_IFS +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac + LIPO="$ac_cv_prog_LIPO" fi -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <&2 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" else - MAGIC_CMD=: + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL fi +else + OTOOL="$ac_cv_prog_OTOOL" fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi - ;; -esac +done + done +IFS=$as_save_IFS -enable_dlopen=yes -enable_win32_dll=yes +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" -fi; -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi else - pic_mode=default -fi; -test -z "$pic_mode" && pic_mode=default + OTOOL64="$ac_cv_prog_OTOOL64" +fi -# Use C for the default configuration in the libtool script -tagname= -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -# Source file extension for C test sources. -ac_ext=c -# Object file extension for compiled C test sources. -objext=o -objext=$objext -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} -# Allow CC to be a program name with arguments. -compiler=$CC -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -printf "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -ac_outfile=conftest.$ac_objext -printf "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* -# -# Check for any special shared library compilation flags. -# -lt_prog_cc_shlib= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - lt_prog_cc_shlib='-belf' - ;; - esac -fi -if test -n "$lt_prog_cc_shlib"; then - { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 -echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} - if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : - else - { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 -echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} - lt_cv_prog_cc_can_build_shared=no - fi -fi -# -# Check to make sure the static flag actually works. -# -echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 -if test "${lt_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_prog_compiler_static" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_static_works=yes - fi - else - lt_prog_compiler_static_works=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 -if test x"$lt_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi -lt_prog_compiler_no_builtin_flag= -if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' -echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6625: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:6629: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $rm conftest* -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if test "${lt_cv_apple_cc_single_mod+set}" = set; then : + $as_echo_n "(cached) " >&6 else - : + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" -lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; + done + ac_cv_prog_CPP=$CPP - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic='-qnocommon' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." "$LINENO" 5; } +fi - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; +int +main () +{ - linux*) - case $cc_basename in - icc* | ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-static' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - esac - ;; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - sco3.2v5*) - lt_prog_compiler_pic='-Kpic' - lt_prog_compiler_static='-dn' - ;; +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; +else + ac_cv_header_stdc=no +fi +rm -f conftest* - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; +fi - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; +else + ac_cv_header_stdc=no +fi +rm -f conftest* - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi +fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6 +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 else - lt_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6887: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:6891: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_pic_works=yes - fi - fi - $rm conftest* + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h -if test x"$lt_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no fi +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext +done - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6949: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:6953: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 +done -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - runpath_var= - allow_undefined_flag= - enable_shared_with_static_runtimes=no - archive_cmds= - archive_expsym_cmds= - old_archive_From_new_cmds= - old_archive_from_expsyms_cmds= - export_dynamic_flag_spec= - whole_archive_flag_spec= - thread_safe_flag_spec= - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_direct=no - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - link_all_deplibs=unknown - hardcode_automatic=no - module_cmds= - module_expsym_cmds= - always_export_symbols=no - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +# Set options - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - ld_shlibs=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <&2 -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" ;; + esac +else + enable_shared=yes +fi + - amigaos*) - archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs=no - ;; - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec= - ;; - pgf77* | pgf90* ) # Portland Group f77 and f90 compilers - whole_archive_flag_spec= - tmp_addflag=' -fpic -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test $supports_anon_versioning = yes; then - archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes fi - else - ld_shlibs=no - fi + done + IFS="$lt_save_ifs" ;; + esac +else + enable_static=yes +fi - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <&2 -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - archive_cmds='' - hardcode_direct=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes +test -z "$pic_mode" && pic_mode=default - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec=' ' - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - amigaos*) - archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_From_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' - link_all_deplibs=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs=no - ;; - esac - fi - ;; - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" - freebsd1*) - ld_shlibs=no - ;; +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu | dragonfly*) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - ia64*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=no - hardcode_shlibpath_var=no - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - *) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_ld='-rpath $libdir' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - link_all_deplibs=yes - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - openbsd*) - hardcode_direct=yes - hardcode_shlibpath_var=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - hardcode_libdir_separator=: - ;; - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - solaris*) - no_undefined_flag=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine linker options so we - # cannot just pass the convience library names through - # without $wl, iff we do not link with $LD. - # Luckily, gcc supports the same syntax we need for Sun Studio. - # Supported since Solaris 2.6 (maybe 2.5.1?) - case $wlarc in - '') - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - *) - whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; - esac ;; - esac - link_all_deplibs=yes - ;; - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - sysv4.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec= - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - ;; +test -z "$LN_S" && LN_S="ln -s" - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - *) - ld_shlibs=no - ;; - esac - fi -echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6 -test "$ld_shlibs" = no && can_build_shared=no -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc=no - else - archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6 - ;; - esac - fi - ;; -esac -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if test "${lt_cv_objdir+set}" = set; then : + $as_echo_n "(cached) " >&6 else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs fi -need_lib_prefix=unknown -hardcode_into_libs=no +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; -freebsd1*) - dynamic_linker=no - ;; -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 8334 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' ;; +esac -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; +# Global variables: +ofile=libtool +can_build_shared=yes -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; +with_gnu_ld="$lt_cv_prog_gnu_ld" -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; +old_CC="$CC" +old_CFLAGS="$CFLAGS" -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; esac - ;; +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; - *) - dynamic_linker=no + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var" || \ - test "X$hardcode_automatic" = "Xyes" ; then +fi - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6 -if test "$hardcode_action" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : + $as_echo_n "(cached) " >&6 else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac fi -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } else - lt_cv_dlopen=no - lt_cv_dlopen_libs= + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; + else + MAGIC_CMD=: + fi +fi - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; + fi + ;; +esac - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +# Use C for the default configuration in the libtool script -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes +# Source file extension for C test sources. +ac_ext=c -fi +# Object file extension for compiled C test sources. +objext=o +objext=$objext - ;; +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -#ifdef __STDC__ -# include -#else -# include -#endif -#undef shl_load -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ +# Allow CC to be a program name with arguments. +compiler=$CC -#ifdef __STDC__ -# include -#else -# include -#endif +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC -#undef dlopen +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7774: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:7778: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_svld_dlopen=no + : fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); -int -main () -{ -dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -fi -fi -fi + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= -fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' -fi + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; -fi + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; - ;; - esac + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; -#include + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; -#ifdef __cplusplus -extern "C" void exit (int); -#endif + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + rdos*) + lt_prog_compiler_static='-non_shared' + ;; - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif - -#include + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; -#ifdef __cplusplus -extern "C" void exit (int); -#endif + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; + *) + lt_prog_compiler_can_build_shared=no + ;; esac - else : - # compilation failed - lt_cv_dlopen_self_static=no fi -fi -rm -fr conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - -# Report which librarie types wil actually be built -echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6 - -echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac -echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + -echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6 - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler \ - CC \ - LD \ - lt_prog_compiler_wl \ - lt_prog_compiler_pic \ - lt_prog_compiler_static \ - lt_prog_compiler_no_builtin_flag \ - export_dynamic_flag_spec \ - thread_safe_flag_spec \ - whole_archive_flag_spec \ - enable_shared_with_static_runtimes \ - old_archive_cmds \ - old_archive_from_new_cmds \ - predep_objects \ - postdep_objects \ - predeps \ - postdeps \ - compiler_lib_search_path \ - archive_cmds \ - archive_expsym_cmds \ - postinstall_cmds \ - postuninstall_cmds \ - old_archive_from_expsyms_cmds \ - allow_undefined_flag \ - no_undefined_flag \ - export_symbols_cmds \ - hardcode_libdir_flag_spec \ - hardcode_libdir_flag_spec_ld \ - hardcode_libdir_separator \ - hardcode_automatic \ - module_cmds \ - module_expsym_cmds \ - lt_cv_prog_compiler_c_o \ - exclude_expsyms \ - include_expsyms; do - - case $var in - old_archive_cmds | \ - old_archive_from_new_cmds | \ - archive_cmds | \ - archive_expsym_cmds | \ - module_cmds | \ - module_expsym_cmds | \ - old_archive_from_expsyms_cmds | \ - export_symbols_cmds | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac -cfgfile="${ofile}T" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - $rm -f "$cfgfile" - { echo "$as_me:$LINENO: creating $ofile" >&5 -echo "$as_me: creating $ofile" >&6;} - cat <<__EOF__ >> "$cfgfile" -#! $SHELL -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Check to make sure the PIC flag actually works. # -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8113: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8117: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* -# A sed program that does not truncate output. -SED=$lt_SED +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e 1s/^X//" +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +fi -# The names of the tagged configurations supported by this script. -available_tags= -# ### BEGIN LIBTOOL CONFIG -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared -# Whether or not to build static libraries. -build_old_libs=$enable_static +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os -# An echo program that does not interpret backslashes. -echo=$lt_echo -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS -# A C compiler. -LTCC=$lt_LTCC -# A language-specific compiler. -CC=$lt_compiler + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext -# Is the compiler the GNU C compiler? -with_gcc=$GCC + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8218: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8222: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* -# An ERE matcher. -EGREP=$lt_EGREP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } -# The linker used to build libraries. -LD=$lt_LD -# Whether we need hard or soft links. -LN_S=$lt_LN_S -# A BSD-compatible nm program. -NM=$lt_NM -# A symbol stripping program -STRIP=$lt_STRIP -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext -# The name of the directory that contains temporary libtool files. -objdir=$objdir + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8273: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8277: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl -# Object file suffix (normally "o"). -objext="$ac_objext" -# Old archive suffix (normally "a"). -libext="$libext" -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi -# Executable file suffix (normally ""). -exeext="$exeext" -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic -pic_mode=$pic_mode -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o -# Must we lock files when doing compilation? -need_locks=$lt_need_locks -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } -# Do we need a version for libraries? -need_version=$need_version + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= -# Whether dlopen is supported. -dlopen_support=$enable_dlopen + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec +_LT_EOF + fi + ;; -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; -# Library versioning type. -version_type=$version_type + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' -# Format of library name prefix. -libname_spec=$lt_libname_spec + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' -# This is the shared library runtime path variable. -runpath_var=$runpath_var + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi -# This is the shared library path variable. -shlibpath_var=$shlibpath_var + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath +int +main () +{ -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld +int +main () +{ -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs + darwin* | rhapsody*) -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path" + else + ld_shlibs=no + fi -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols + ;; -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds + freebsd1*) + ld_shlibs=no + ;; -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; -# ### END LIBTOOL CONFIG + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; -__EOF__ + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo(void) {} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; -CC="$lt_save_CC" + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; -# Check whether --with-tags or --without-tags was given. -if test "${with_tags+set}" = set; then - withval="$with_tags" - tagnames="$withval" -fi; - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} - else - { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 -echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} - fi - fi + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in - "") ;; - *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 -echo "$as_me: error: invalid tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi ;; - esac + esac + link_all_deplibs=yes + ;; - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 -echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} - { (exit 1); exit 1; }; } - fi + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_automatic_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; -# Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' -# Source file extension for C++ test sources. -ac_ext=cc + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" + *) + ld_shlibs=no + ;; + esac -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *) { return(0); }\n' + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi -# ltmain only uses $CC for tagged configurations so make sure $CC is set. +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} +with_gnu_ld=$with_gnu_ld -# Allow CC to be a program name with arguments. -compiler=$CC -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -printf "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -ac_outfile=conftest.$ac_objext -printf "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -compiler_CXX=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' -else - lt_prog_compiler_no_builtin_flag_CXX= -fi -if test "$GXX" = yes; then - # Set up default GNU C++ configuration -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` - while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext -LD="$lt_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 &5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi ;; esac -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 -with_gnu_ld=$lt_cv_prog_gnu_ld - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' -else - GXX=no - with_gnu_ld=no - wlarc= -fi -# PORTME: fill in a description of your system's C++ link characteristics -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 -ld_shlibs_CXX=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct_CXX=yes - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_CXX=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX=' ' - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs_CXX=no - fi - ;; - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='' - link_all_deplibs_CXX=yes - - if test "$GXX" = yes ; then - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs_CXX=no - ;; - esac - fi - ;; - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - ld_shlibs_CXX=no - ;; - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - freebsd* | kfreebsd*-gnu | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - gnu*) - ;; - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_CXX='+b $libdir' - hardcode_libdir_separator_CXX=: - ;; - ia64*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - *) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - ;; - linux*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc*) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC*) - # Portland Group C++ compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - openbsd*) - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd='echo' - ;; - osf3*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ - $rm $lib.exp' - - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - sco*) - archive_cmds_need_lc_CXX=no - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. We must also pass each convience library through - # to the system linker between allextract/defaultextract. - # The C++ compiler will combine linker options so we - # cannot just pass the convience library names through - # without $wl. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - archive_cmds_need_lc_CXX=no - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; -esac -echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6 -test "$ld_shlibs_CXX" = no && can_build_shared=no -GCC_CXX="$GXX" -LD_CXX="$LD" -cat > conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - # The `*' in the case matches for architectures that use `case' in - # $output_verbose_cmd can trigger glob expansion during the loop - # eval without this substitution. - output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" - for p in `eval $output_verbose_link_cmd`; do - case $p in - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" \ - || test $p = "-R"; then - prev=$p - continue - else - prev= - fi - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - ;; - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - *) ;; # Ignore the rest. - esac - done - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi -$rm -f confest.$objext -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac -lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic_CXX='-qnocommon' - lt_prog_compiler_wl_CXX='-Wl,' - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | kfreebsd*-gnu | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - icpc* | ecpc*) - # Intel C++ - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC*) - # Portland Group C++ compiler. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-static' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC*) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11551: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:11555: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_pic_works_CXX=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 - -if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11613: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:11617: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6 -test "$ld_shlibs_CXX" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_CXX=no - else - archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 - ;; - esac - fi - ;; -esac - -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 12128 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || \ - test -n "$runpath_var_CXX" || \ - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6 - -if test "$hardcode_action_CXX" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef shl_load - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef dlopen - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_svld_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); -int -main () -{ -dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_CXX \ - CC_CXX \ - LD_CXX \ - lt_prog_compiler_wl_CXX \ - lt_prog_compiler_pic_CXX \ - lt_prog_compiler_static_CXX \ - lt_prog_compiler_no_builtin_flag_CXX \ - export_dynamic_flag_spec_CXX \ - thread_safe_flag_spec_CXX \ - whole_archive_flag_spec_CXX \ - enable_shared_with_static_runtimes_CXX \ - old_archive_cmds_CXX \ - old_archive_from_new_cmds_CXX \ - predep_objects_CXX \ - postdep_objects_CXX \ - predeps_CXX \ - postdeps_CXX \ - compiler_lib_search_path_CXX \ - archive_cmds_CXX \ - archive_expsym_cmds_CXX \ - postinstall_cmds_CXX \ - postuninstall_cmds_CXX \ - old_archive_from_expsyms_cmds_CXX \ - allow_undefined_flag_CXX \ - no_undefined_flag_CXX \ - export_symbols_cmds_CXX \ - hardcode_libdir_flag_spec_CXX \ - hardcode_libdir_flag_spec_ld_CXX \ - hardcode_libdir_separator_CXX \ - hardcode_automatic_CXX \ - module_cmds_CXX \ - module_expsym_cmds_CXX \ - lt_cv_prog_compiler_c_o_CXX \ - exclude_expsyms_CXX \ - include_expsyms_CXX; do - - case $var in - old_archive_cmds_CXX | \ - old_archive_from_new_cmds_CXX | \ - archive_cmds_CXX | \ - archive_expsym_cmds_CXX | \ - module_cmds_CXX | \ - module_expsym_cmds_CXX | \ - old_archive_from_expsyms_cmds_CXX | \ - export_symbols_cmds_CXX | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -cfgfile="$ofile" - - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_CXX - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_CXX -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_CXX - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_CXX - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_CXX - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_CXX" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# ### END LIBTOOL TAG CONFIG: $tagname - -__EOF__ - - -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld - - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu - - -archive_cmds_need_lc_F77=no -allow_undefined_flag_F77= -always_export_symbols_F77=no -archive_expsym_cmds_F77= -export_dynamic_flag_spec_F77= -hardcode_direct_F77=no -hardcode_libdir_flag_spec_F77= -hardcode_libdir_flag_spec_ld_F77= -hardcode_libdir_separator_F77= -hardcode_minus_L_F77=no -hardcode_automatic_F77=no -module_cmds_F77= -module_expsym_cmds_F77= -link_all_deplibs_F77=unknown -old_archive_cmds_F77=$old_archive_cmds -no_undefined_flag_F77= -whole_archive_flag_spec_F77= -enable_shared_with_static_runtimes_F77=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -objext_F77=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code=" subroutine t\n return\n end\n" - -# Code to be used in simple link tests -lt_simple_link_test_code=" program t\n end\n" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -printf "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* - -ac_outfile=conftest.$ac_objext -printf "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -compiler_F77=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - -echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6 - -echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; -aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; -esac -echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6 - -echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6 - -test "$ld_shlibs_F77" = no && can_build_shared=no - -GCC_F77="$G77" -LD_F77="$LD" - -lt_prog_compiler_wl_F77= -lt_prog_compiler_pic_F77= -lt_prog_compiler_static_F77= - -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 - - if test "$GCC" = yes; then - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_static_F77='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_F77='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_F77='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_F77='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared_F77=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_F77=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_F77='-fPIC' - ;; - esac - ;; - - *) - lt_prog_compiler_pic_F77='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl_F77='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_F77='-Bstatic' - else - lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' - fi - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic_F77='-qnocommon' - lt_prog_compiler_wl_F77='-Wl,' - ;; - esac - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_F77='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl_F77='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_F77='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static_F77='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl_F77='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static_F77='-non_shared' - ;; - - newsos6) - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - linux*) - case $cc_basename in - icc* | ecc*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-static' - ;; - pgcc* | pgf77* | pgf90*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-fpic' - lt_prog_compiler_static_F77='-static' - ;; - ccc*) - lt_prog_compiler_wl_F77='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static_F77='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl_F77='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static_F77='-non_shared' - ;; - - sco3.2v5*) - lt_prog_compiler_pic_F77='-Kpic' - lt_prog_compiler_static_F77='-dn' - ;; - - solaris*) - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl_F77='-Qoption ld ';; - *) - lt_prog_compiler_wl_F77='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl_F77='-Qoption ld ' - lt_prog_compiler_pic_F77='-PIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic_F77='-Kconform_pic' - lt_prog_compiler_static_F77='-Bstatic' - fi - ;; - - unicos*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_can_build_shared_F77=no - ;; - - uts4*) - lt_prog_compiler_pic_F77='-pic' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared_F77=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_F77"; then - -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_pic_works_F77=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_F77" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13982: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:13986: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_pic_works_F77=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 - -if test x"$lt_prog_compiler_pic_works_F77" = xyes; then - case $lt_prog_compiler_pic_F77 in - "" | " "*) ;; - *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; - esac -else - lt_prog_compiler_pic_F77= - lt_prog_compiler_can_build_shared_F77=no -fi - -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_F77= - ;; - *) - lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" - ;; -esac - -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o_F77=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14044: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:14048: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_F77=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - - runpath_var= - allow_undefined_flag_F77= - enable_shared_with_static_runtimes_F77=no - archive_cmds_F77= - archive_expsym_cmds_F77= - old_archive_From_new_cmds_F77= - old_archive_from_expsyms_cmds_F77= - export_dynamic_flag_spec_F77= - whole_archive_flag_spec_F77= - thread_safe_flag_spec_F77= - hardcode_libdir_flag_spec_F77= - hardcode_libdir_flag_spec_ld_F77= - hardcode_libdir_separator_F77= - hardcode_direct_F77=no - hardcode_minus_L_F77=no - hardcode_shlibpath_var_F77=unsupported - link_all_deplibs_F77=unknown - hardcode_automatic_F77=no - module_cmds_F77= - module_expsym_cmds_F77= - always_export_symbols_F77=no - export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms_F77= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs_F77=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_F77='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_F77= - fi - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs_F77=no - cat <&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_minus_L_F77=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs_F77=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_F77=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_F77=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_F77='-L$libdir' - allow_undefined_flag_F77=unsupported - always_export_symbols_F77=no - enable_shared_with_static_runtimes_F77=yes - export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs_F77=no - fi - ;; - - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec_F77= - ;; - pgf77* | pgf90* ) # Portland Group f77 and f90 compilers - whole_archive_flag_spec_F77= - tmp_addflag=' -fpic -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - else - ld_shlibs_F77=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs_F77=no - cat <&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_F77=no - fi - ;; - - sunos4*) - archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_F77=no - fi - ;; - esac - - if test "$ld_shlibs_F77" = no; then - runpath_var= - hardcode_libdir_flag_spec_F77= - export_dynamic_flag_spec_F77= - whole_archive_flag_spec_F77= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag_F77=unsupported - always_export_symbols_F77=yes - archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L_F77=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct_F77=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_F77='' - hardcode_direct_F77=yes - hardcode_libdir_separator_F77=':' - link_all_deplibs_F77=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct_F77=yes - else - # We have old collect2 - hardcode_direct_F77=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_F77=yes - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_libdir_separator_F77= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols_F77=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_F77='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_F77="-z nodefs" - archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_F77=' ${wl}-bernotok' - allow_undefined_flag_F77=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_F77=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_F77=' ' - archive_cmds_need_lc_F77=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_minus_L_F77=yes - # see comment about different semantics on the GNU ld section - ld_shlibs_F77=no - ;; - - bsdi[45]*) - export_dynamic_flag_spec_F77=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_F77=' ' - allow_undefined_flag_F77=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_From_new_cmds_F77='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path_F77='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes_F77=yes - ;; - - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - archive_cmds_need_lc_F77=no - hardcode_direct_F77=no - hardcode_automatic_F77=yes - hardcode_shlibpath_var_F77=unsupported - whole_archive_flag_spec_F77='' - link_all_deplibs_F77=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs_F77=no - ;; - esac - fi - ;; - - dgux*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_shlibpath_var_F77=no - ;; - - freebsd1*) - ld_shlibs_F77=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_minus_L_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu | dragonfly*) - archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_F77=: - hardcode_direct_F77=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - export_dynamic_flag_spec_F77='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_F77='+b $libdir' - hardcode_libdir_separator_F77=: - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - ;; - ia64*) - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - ;; - *) - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_F77=: - hardcode_direct_F77=yes - export_dynamic_flag_spec_F77='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' - fi - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_F77=: - link_all_deplibs_F77=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - newsos6) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_F77=: - hardcode_shlibpath_var_F77=no - ;; - - openbsd*) - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' - export_dynamic_flag_spec_F77='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_F77='-R$libdir' - ;; - *) - archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_minus_L_F77=yes - allow_undefined_flag_F77=unsupported - archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag_F77=' -expect_unresolved \*' - archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_F77=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag_F77=' -expect_unresolved \*' - archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec_F77='-rpath $libdir' - fi - hardcode_libdir_separator_F77=: - ;; - - sco3.2v5*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - export_dynamic_flag_spec_F77='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag_F77=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - wlarc='' - archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_shlibpath_var_F77=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine linker options so we - # cannot just pass the convience library names through - # without $wl, iff we do not link with $LD. - # Luckily, gcc supports the same syntax we need for Sun Studio. - # Supported since Solaris 2.6 (maybe 2.5.1?) - case $wlarc in - '') - whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; - *) - whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; - esac ;; - esac - link_all_deplibs_F77=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_direct_F77=yes - hardcode_minus_L_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds_F77='$CC -r -o $output$reload_objs' - hardcode_direct_F77=no - ;; - motorola) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_F77=no - ;; - - sysv4.3*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - export_dynamic_flag_spec_F77='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs_F77=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_minus_L_F77=no - hardcode_shlibpath_var_F77=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_F77='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_F77=no - ;; - - sysv5*) - no_undefined_flag_F77=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec_F77= - hardcode_shlibpath_var_F77=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_shlibpath_var_F77=no - ;; - - *) - ld_shlibs_F77=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 -echo "${ECHO_T}$ld_shlibs_F77" >&6 -test "$ld_shlibs_F77" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_F77" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_F77=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_F77 in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_F77 - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_F77 - allow_undefined_flag_F77= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_F77=no - else - archive_cmds_need_lc_F77=yes - fi - allow_undefined_flag_F77=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 - ;; - esac - fi - ;; -esac - -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no fi ;; esac @@ -15130,9 +9683,18 @@ ;; amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac ;; beos*) @@ -15155,24 +9717,28 @@ # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ - $rm \$dlpath' + $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in @@ -15181,20 +9747,20 @@ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) @@ -15218,17 +9784,13 @@ version_type=darwin need_lib_prefix=no need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; @@ -15245,22 +9807,17 @@ dynamic_linker=no ;; -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) @@ -15282,10 +9839,15 @@ shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; - *) # from 3.2 on + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; esac ;; @@ -15305,7 +9867,7 @@ version_type=sunos need_lib_prefix=no need_version=no - case "$host_cpu" in + case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes @@ -15321,18 +9883,18 @@ fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH @@ -15345,6 +9907,18 @@ postinstall_cmds='chmod 555 $lib' ;; +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; @@ -15388,7 +9962,7 @@ ;; # This must be Linux ELF. -linux*) +linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no @@ -15397,36 +9971,41 @@ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 15409 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac - # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on @@ -15438,23 +10017,11 @@ dynamic_linker='GNU/Linux ld.so' ;; -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - netbsd*) version_type=sunos need_lib_prefix=no need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' @@ -15475,24 +10042,31 @@ shlibpath_overrides_runpath=yes ;; -nto-qnx*) - version_type=linux +*nto* | *qnx*) + version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no - need_version=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no @@ -15526,11 +10100,8 @@ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH +rdos*) + dynamic_linker=no ;; solaris*) @@ -15558,7 +10129,7 @@ need_version=yes ;; -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' @@ -15567,7 +10138,6 @@ sni) shlibpath_overrides_runpath=no need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' runpath_var=LD_RUN_PATH ;; siemens) @@ -15591,4302 +10161,4476 @@ fi ;; -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_F77= -if test -n "$hardcode_libdir_flag_spec_F77" || \ - test -n "$runpath_var_F77" || \ - test "X$hardcode_automatic_F77" = "Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_F77" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && - test "$hardcode_minus_L_F77" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_F77=relink + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_F77=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_F77=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 -echo "${ECHO_T}$hardcode_action_F77" >&6 - -if test "$hardcode_action_F77" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - - - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_F77 \ - CC_F77 \ - LD_F77 \ - lt_prog_compiler_wl_F77 \ - lt_prog_compiler_pic_F77 \ - lt_prog_compiler_static_F77 \ - lt_prog_compiler_no_builtin_flag_F77 \ - export_dynamic_flag_spec_F77 \ - thread_safe_flag_spec_F77 \ - whole_archive_flag_spec_F77 \ - enable_shared_with_static_runtimes_F77 \ - old_archive_cmds_F77 \ - old_archive_from_new_cmds_F77 \ - predep_objects_F77 \ - postdep_objects_F77 \ - predeps_F77 \ - postdeps_F77 \ - compiler_lib_search_path_F77 \ - archive_cmds_F77 \ - archive_expsym_cmds_F77 \ - postinstall_cmds_F77 \ - postuninstall_cmds_F77 \ - old_archive_from_expsyms_cmds_F77 \ - allow_undefined_flag_F77 \ - no_undefined_flag_F77 \ - export_symbols_cmds_F77 \ - hardcode_libdir_flag_spec_F77 \ - hardcode_libdir_flag_spec_ld_F77 \ - hardcode_libdir_separator_F77 \ - hardcode_automatic_F77 \ - module_cmds_F77 \ - module_expsym_cmds_F77 \ - lt_cv_prog_compiler_c_o_F77 \ - exclude_expsyms_F77 \ - include_expsyms_F77; do - - case $var in - old_archive_cmds_F77 | \ - old_archive_from_new_cmds_F77 | \ - archive_cmds_F77 | \ - archive_expsym_cmds_F77 | \ - module_cmds_F77 | \ - module_expsym_cmds_F77 | \ - old_archive_from_expsyms_cmds_F77 | \ - export_symbols_cmds_F77 | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; esac - done - - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -cfgfile="$ofile" - - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; -# Whether or not to build static libraries. -build_old_libs=$enable_static +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_F77 +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os -# An echo program that does not interpret backslashes. -echo=$lt_echo -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS -# A C compiler. -LTCC=$lt_LTCC -# A language-specific compiler. -CC=$lt_compiler_F77 -# Is the compiler the GNU C compiler? -with_gcc=$GCC_F77 -# An ERE matcher. -EGREP=$lt_EGREP -# The linker used to build libraries. -LD=$lt_LD_F77 -# Whether we need hard or soft links. -LN_S=$lt_LN_S -# A BSD-compatible nm program. -NM=$lt_NM -# A symbol stripping program -STRIP=$lt_STRIP -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" -# Used on cygwin: assembler. -AS="$AS" -# The name of the directory that contains temporary libtool files. -objdir=$objdir -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_F77 -# Object file suffix (normally "o"). -objext="$ac_objext" -# Old archive suffix (normally "a"). -libext="$libext" -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' -# Executable file suffix (normally ""). -exeext="$exeext" -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_F77 -pic_mode=$pic_mode -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 -# Must we lock files when doing compilation? -need_locks=$lt_need_locks -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix -# Do we need a version for libraries? -need_version=$need_version -# Whether dlopen is supported. -dlopen_support=$enable_dlopen -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_F77 -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 -# Library versioning type. -version_type=$version_type -# Format of library name prefix. -libname_spec=$lt_libname_spec -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_F77 -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_F77 -archive_expsym_cmds=$lt_archive_expsym_cmds_F77 -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_F77 -module_expsym_cmds=$lt_module_expsym_cmds_F77 -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_F77 - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_F77 - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_F77 - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_F77 -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_F77 -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_F77 -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_F77 -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -# This is the shared library runtime path variable. -runpath_var=$runpath_var -# This is the shared library path variable. -shlibpath_var=$shlibpath_var -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_F77 -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_F77 - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_F77 - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_F77 -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_F77 -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_F77" -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_F77 -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_F77 -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_F77 -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_F77 -# ### END LIBTOOL TAG CONFIG: $tagname -__EOF__ -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -CC="$lt_save_CC" - else - tagname="" - fi - ;; - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then -# Source file extension for Java test sources. -ac_ext=java -# Object file extension for compiled Java test sources. -objext=o -objext_GCJ=$objext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}\n" + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} -# Allow CC to be a program name with arguments. -compiler=$CC -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -printf "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -ac_outfile=conftest.$ac_objext -printf "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -compiler_GCJ=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; -# GCJ did not exist at the time GCC didn't implicitly link libc in. -archive_cmds_need_lc_GCJ=no + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -old_archive_cmds_GCJ=$old_archive_cmds +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes -lt_prog_compiler_no_builtin_flag_GCJ= +fi -if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + ;; + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16182: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:16186: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $rm conftest* + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes else - : + ac_cv_lib_svld_dlopen=no fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi -lt_prog_compiler_wl_GCJ= -lt_prog_compiler_pic_GCJ= -lt_prog_compiler_static_GCJ= -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +fi - if test "$GCC" = yes; then - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_static_GCJ='-static' - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_GCJ='-Bstatic' - fi - ;; +fi - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; +fi - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_GCJ='-fno-common' - ;; +fi - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared_GCJ=no - enable_shared=no - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_GCJ=-Kconform_pic - fi - ;; +fi - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_GCJ='-fPIC' - ;; - esac - ;; + ;; + esac - *) - lt_prog_compiler_pic_GCJ='-fPIC' - ;; - esac + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl_GCJ='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_GCJ='-Bstatic' - else - lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' - fi - ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic_GCJ='-qnocommon' - lt_prog_compiler_wl_GCJ='-Wl,' - ;; - esac - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl_GCJ='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_GCJ='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl_GCJ='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - - newsos6) - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - linux*) - case $cc_basename in - icc* | ecc*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-static' - ;; - pgcc* | pgf77* | pgf90*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-fpic' - lt_prog_compiler_static_GCJ='-static' - ;; - ccc*) - lt_prog_compiler_wl_GCJ='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl_GCJ='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - - sco3.2v5*) - lt_prog_compiler_pic_GCJ='-Kpic' - lt_prog_compiler_static_GCJ='-dn' - ;; - - solaris*) - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - case $cc_basename in - f77* | f90* | f95*) - lt_prog_compiler_wl_GCJ='-Qoption ld ';; - *) - lt_prog_compiler_wl_GCJ='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl_GCJ='-Qoption ld ' - lt_prog_compiler_pic_GCJ='-PIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic_GCJ='-Kconform_pic' - lt_prog_compiler_static_GCJ='-Bstatic' - fi - ;; - - unicos*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_can_build_shared_GCJ=no - ;; - - uts4*) - lt_prog_compiler_pic_GCJ='-pic' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared_GCJ=no - ;; - esac + enable_dlopen=no fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_GCJ"; then + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_pic_works_GCJ=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_GCJ" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16444: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:16448: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_pic_works_GCJ=yes - fi - fi - $rm conftest* + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" -if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then - case $lt_prog_compiler_pic_GCJ in - "" | " "*) ;; - *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; - esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross else - lt_prog_compiler_pic_GCJ= - lt_prog_compiler_can_build_shared_GCJ=no -fi + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 10640 "configure" +#include "confdefs.h" -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_GCJ= - ;; - *) - lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" - ;; -esac +#if HAVE_DLFCN_H +#include +#endif -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o_GCJ=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext +#include - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16506: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:16510: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp - $SED '/^$/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_GCJ=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no fi -else - need_locks=no fi +rm -fr conftest* -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - runpath_var= - allow_undefined_flag_GCJ= - enable_shared_with_static_runtimes_GCJ=no - archive_cmds_GCJ= - archive_expsym_cmds_GCJ= - old_archive_From_new_cmds_GCJ= - old_archive_from_expsyms_cmds_GCJ= - export_dynamic_flag_spec_GCJ= - whole_archive_flag_spec_GCJ= - thread_safe_flag_spec_GCJ= - hardcode_libdir_flag_spec_GCJ= - hardcode_libdir_flag_spec_ld_GCJ= - hardcode_libdir_separator_GCJ= - hardcode_direct_GCJ=no - hardcode_minus_L_GCJ=no - hardcode_shlibpath_var_GCJ=unsupported - link_all_deplibs_GCJ=unknown - hardcode_automatic_GCJ=no - module_cmds_GCJ= - module_expsym_cmds_GCJ= - always_export_symbols_GCJ=no - export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms_GCJ= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - # Just being paranoid about ensuring that cc_basename is set. - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line 10736 "configure" +#include "confdefs.h" - ld_shlibs_GCJ=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' +#if HAVE_DLFCN_H +#include +#endif - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_GCJ= - fi - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac +#include - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs_GCJ=no - cat <&2 +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif -EOF - fi - ;; +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; - amigaos*) - archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_minus_L_GCJ=yes - - # Samuel A. Falvo II reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs_GCJ=no - ;; + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_GCJ=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_GCJ=no - fi - ;; + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_GCJ='-L$libdir' - allow_undefined_flag_GCJ=unsupported - always_export_symbols_GCJ=no - enable_shared_with_static_runtimes_GCJ=yes - export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs_GCJ=no - fi - ;; +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_addflag= - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec_GCJ= - ;; - pgf77* | pgf90* ) # Portland Group f77 and f90 compilers - whole_archive_flag_spec_GCJ= - tmp_addflag=' -fpic -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - esac - archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - $echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - else - ld_shlibs_GCJ=no - fi - ;; + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs_GCJ=no - cat <&2 -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_GCJ=no - fi - ;; - sunos4*) - archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_GCJ=no - fi - ;; - esac - if test "$ld_shlibs_GCJ" = no; then - runpath_var= - hardcode_libdir_flag_spec_GCJ= - export_dynamic_flag_spec_GCJ= - whole_archive_flag_spec_GCJ= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag_GCJ=unsupported - always_export_symbols_GCJ=yes - archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L_GCJ=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct_GCJ=unsupported - fi - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - archive_cmds_GCJ='' - hardcode_direct_GCJ=yes - hardcode_libdir_separator_GCJ=':' - link_all_deplibs_GCJ=yes - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct_GCJ=yes - else - # We have old collect2 - hardcode_direct_GCJ=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_GCJ=yes - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_libdir_separator_GCJ= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols_GCJ=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_GCJ='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_GCJ="-z nodefs" - archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_GCJ=' ${wl}-bernotok' - allow_undefined_flag_GCJ=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_GCJ=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_GCJ=' ' - archive_cmds_need_lc_GCJ=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - amigaos*) - archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_minus_L_GCJ=yes - # see comment about different semantics on the GNU ld section - ld_shlibs_GCJ=no - ;; - bsdi[45]*) - export_dynamic_flag_spec_GCJ=-rdynamic - ;; - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_GCJ=' ' - allow_undefined_flag_GCJ=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_From_new_cmds_GCJ='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes_GCJ=yes - ;; - darwin* | rhapsody*) - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - fi - ;; - esac - archive_cmds_need_lc_GCJ=no - hardcode_direct_GCJ=no - hardcode_automatic_GCJ=yes - hardcode_shlibpath_var_GCJ=unsupported - whole_archive_flag_spec_GCJ='' - link_all_deplibs_GCJ=yes - if test "$GCC" = yes ; then - output_verbose_link_cmd='echo' - archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd='echo' - archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' - module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs_GCJ=no - ;; - esac - fi - ;; - dgux*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_shlibpath_var_GCJ=no - ;; - freebsd1*) - ld_shlibs_GCJ=no - ;; + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu | dragonfly*) - archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } - hpux9*) - if test "$GCC" = yes; then - archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - hardcode_direct_GCJ=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - export_dynamic_flag_spec_GCJ='${wl}-E' - ;; - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' - hardcode_libdir_separator_GCJ=: - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - ;; - ia64*) - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - ;; - *) - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - hardcode_direct_GCJ=yes - export_dynamic_flag_spec_GCJ='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - ;; - esac - fi - ;; +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' - fi - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - link_all_deplibs_GCJ=yes - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - newsos6) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - hardcode_shlibpath_var_GCJ=no - ;; - openbsd*) - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' - export_dynamic_flag_spec_GCJ='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_GCJ='-R$libdir' - ;; - *) - archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - os2*) - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_minus_L_GCJ=yes - allow_undefined_flag_GCJ=unsupported - archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag_GCJ=' -expect_unresolved \*' - archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - ;; - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag_GCJ=' -expect_unresolved \*' - archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec_GCJ='-rpath $libdir' - fi - hardcode_libdir_separator_GCJ=: - ;; - sco3.2v5*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - export_dynamic_flag_spec_GCJ='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - solaris*) - no_undefined_flag_GCJ=' -z text' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - wlarc='' - archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_shlibpath_var_GCJ=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine linker options so we - # cannot just pass the convience library names through - # without $wl, iff we do not link with $LD. - # Luckily, gcc supports the same syntax we need for Sun Studio. - # Supported since Solaris 2.6 (maybe 2.5.1?) - case $wlarc in - '') - whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; - *) - whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; - esac ;; - esac - link_all_deplibs_GCJ=yes - ;; - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - sysv4) - case $host_vendor in - sni) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds_GCJ='$CC -r -o $output$reload_objs' - hardcode_direct_GCJ=no - ;; - motorola) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_GCJ=no - ;; - sysv4.3*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - export_dynamic_flag_spec_GCJ='-Bexport' - ;; + ac_config_commands="$ac_config_commands libtool" - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs_GCJ=yes - fi - ;; - sysv4.2uw2*) - archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=no - hardcode_shlibpath_var_GCJ=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_GCJ='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_GCJ=no - ;; - sysv5*) - no_undefined_flag_GCJ=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec_GCJ= - hardcode_shlibpath_var_GCJ=no - runpath_var='LD_RUN_PATH' - ;; +# Only expand once: - uts4*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_shlibpath_var_GCJ=no - ;; - *) - ld_shlibs_GCJ=no - ;; - esac + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 -echo "${ECHO_T}$ld_shlibs_GCJ" >&6 -test "$ld_shlibs_GCJ" = no && can_build_shared=no -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + test -n "$CXX" && break + done fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_GCJ" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_GCJ=yes +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_GCJ in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_GCJ - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ - allow_undefined_flag_GCJ= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_GCJ=no - else - archive_cmds_need_lc_GCJ=yes - fi - allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 - ;; - esac + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX fi - ;; +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + CXXFLAGS="-g" fi else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi fi -need_lib_prefix=unknown -hardcode_into_libs=no +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown +depcc="$CXX" am_compiler_list= -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue else - can_build_shared=no + break fi ;; + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi fi - shlibpath_var=LIBPATH - fi - ;; + done -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; +done + done +IFS=$as_save_IFS -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -freebsd1*) - dynamic_linker=no - ;; -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; + test -n "$ac_ct_CXX" && break +done -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + rm -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; +int +main () +{ +#ifndef __GNUC__ + choke me +#endif -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes +int +main () +{ - # find out which ABI we are using - libsuff= - case "$host_cpu" in - x86_64*|s390x*|powerpc64*) - echo '#line 17891 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *64-bit*) - libsuff=64 - sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" - ;; - esac - fi - rm -rf conftest* - ;; - esac + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra" - fi + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; +int +main () +{ -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' + CXXFLAGS="-g" fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" else - shlibpath_overrides_runpath=yes + CXXFLAGS= fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; +depcc="$CXX" am_compiler_list= -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi - need_version=yes - ;; + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue ;; - siemens) - need_lib_prefix=no + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_GCJ= -if test -n "$hardcode_libdir_flag_spec_GCJ" || \ - test -n "$runpath_var_GCJ" || \ - test "X$hardcode_automatic_GCJ" = "Xyes" ; then + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done - # We can hardcode non-existant directories. - if test "$hardcode_direct_GCJ" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && - test "$hardcode_minus_L_GCJ" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_GCJ=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_GCJ=immediate - fi + cd .. + rm -rf conftest.dir else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_GCJ=unsupported + am_cv_CXX_dependencies_compiler_type=none fi -echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 -echo "${ECHO_T}$hardcode_action_GCJ" >&6 -if test "$hardcode_action_GCJ" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= fi -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then : + $as_echo_n "(cached) " >&6 else - lt_cv_dlopen=no - lt_cv_dlopen_libs= + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" +#ifdef __STDC__ +# include +#else +# include #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} + Syntax error _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_cpp "$LINENO"; then : -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +else + # Broken: fails on valid input. +continue fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +_lt_caught_CXX_error=yes; } fi - ;; +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case declares shl_load. - For example, HP-UX 11i declares gettimeofday. */ -#define shl_load innocuous_shl_load + _lt_caught_CXX_error=yes +fi + + + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -#ifdef __STDC__ -# include -#else -# include -#endif + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi -#undef shl_load + if test "$GXX" = yes; then + # Set up default GNU C++ configuration -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_shl_load=no +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" +if test "${lt_cv_path_LD+set}" = set; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes +LD="$lt_cv_path_LD" +if test -n "$LD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5 +$as_echo "$LD" >&6; } else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case declares dlopen. - For example, HP-UX 11i declares gettimeofday. */ -#define dlopen innocuous_dlopen + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -#ifdef __STDC__ -# include -#else -# include -#endif -#undef dlopen -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); int main () { -dlopen (); + ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_link "$LINENO"; then : -ac_cv_lib_svld_dlopen=no +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); int main () { -dld_link (); + ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +if ac_fn_cxx_try_link "$LINENO"; then : -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; -fi + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; -fi + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) -fi + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + else + ld_shlibs_CXX=no + fi -fi + ;; + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; -fi + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; - ;; - esac + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + gnu*) + ;; - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext < -#endif + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; -#include + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5]* | *pgcpp\ [1-5]*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; -#ifdef __cplusplus -extern "C" void exit (int); -#endif + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. -#if HAVE_DLFCN_H -#include -#endif + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no -#include + for p in `eval "$output_verbose_link_cmd"`; do + case $p in -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; -#ifdef __cplusplus -extern "C" void exit (int); -#endif + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } + *) ;; # Ignore the rest. - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" fi -rm -fr conftest* +$RM -f confest.$objext -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi ;; esac + ;; - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_GCJ \ - CC_GCJ \ - LD_GCJ \ - lt_prog_compiler_wl_GCJ \ - lt_prog_compiler_pic_GCJ \ - lt_prog_compiler_static_GCJ \ - lt_prog_compiler_no_builtin_flag_GCJ \ - export_dynamic_flag_spec_GCJ \ - thread_safe_flag_spec_GCJ \ - whole_archive_flag_spec_GCJ \ - enable_shared_with_static_runtimes_GCJ \ - old_archive_cmds_GCJ \ - old_archive_from_new_cmds_GCJ \ - predep_objects_GCJ \ - postdep_objects_GCJ \ - predeps_GCJ \ - postdeps_GCJ \ - compiler_lib_search_path_GCJ \ - archive_cmds_GCJ \ - archive_expsym_cmds_GCJ \ - postinstall_cmds_GCJ \ - postuninstall_cmds_GCJ \ - old_archive_from_expsyms_cmds_GCJ \ - allow_undefined_flag_GCJ \ - no_undefined_flag_GCJ \ - export_symbols_cmds_GCJ \ - hardcode_libdir_flag_spec_GCJ \ - hardcode_libdir_flag_spec_ld_GCJ \ - hardcode_libdir_separator_GCJ \ - hardcode_automatic_GCJ \ - module_cmds_GCJ \ - module_expsym_cmds_GCJ \ - lt_cv_prog_compiler_c_o_GCJ \ - exclude_expsyms_GCJ \ - include_expsyms_GCJ; do - - case $var in - old_archive_cmds_GCJ | \ - old_archive_from_new_cmds_GCJ | \ - archive_cmds_GCJ | \ - archive_expsym_cmds_GCJ | \ - module_cmds_GCJ | \ - module_expsym_cmds_GCJ | \ - old_archive_from_expsyms_cmds_GCJ | \ - export_symbols_cmds_GCJ | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac -cfgfile="$ofile" - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared -# Whether or not to build static libraries. -build_old_libs=$enable_static -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_GCJ -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os -# An echo program that does not interpret backslashes. -echo=$lt_echo -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS -# A C compiler. -LTCC=$lt_LTCC -# A language-specific compiler. -CC=$lt_compiler_GCJ -# Is the compiler the GNU C compiler? -with_gcc=$GCC_GCJ -# An ERE matcher. -EGREP=$lt_EGREP -# The linker used to build libraries. -LD=$lt_LD_GCJ -# Whether we need hard or soft links. -LN_S=$lt_LN_S -# A BSD-compatible nm program. -NM=$lt_NM -# A symbol stripping program -STRIP=$lt_STRIP -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" -# Used on cygwin: assembler. -AS="$AS" -# The name of the directory that contains temporary libtool files. -objdir=$objdir -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_GCJ + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= -# Object file suffix (normally "o"). -objext="$ac_objext" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -# Old archive suffix (normally "a"). -libext="$libext" + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; -# Executable file suffix (normally ""). -exeext="$exeext" + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_GCJ -pic_mode=$pic_mode + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ -# Must we lock files when doing compilation? -need_locks=$lt_need_locks -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13623: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13627: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* -# Do we need a version for libraries? -need_version=$need_version +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } -# Whether dlopen is supported. -dlopen_support=$enable_dlopen +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self +fi -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_GCJ -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ -# Library versioning type. -version_type=$version_type -# Format of library name prefix. -libname_spec=$lt_libname_spec -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13722: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13726: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_GCJ -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_GCJ -archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_GCJ -module_expsym_cmds=$lt_module_expsym_cmds_GCJ + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13774: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13778: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_GCJ - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_GCJ - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_GCJ - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_GCJ -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_GCJ -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_GCJ -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +with_gnu_ld_CXX=$with_gnu_ld -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -# This is the shared library runtime path variable. -runpath_var=$runpath_var -# This is the shared library path variable. -shlibpath_var=$shlibpath_var -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_GCJ -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_GCJ - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_GCJ - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_GCJ + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_GCJ -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_GCJ" -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_GCJ -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_GCJ -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_GCJ -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_GCJ -# ### END LIBTOOL TAG CONFIG: $tagname -__EOF__ -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -CC="$lt_save_CC" - else - tagname="" - fi - ;; - RC) -# Source file extension for RC test sources. -ac_ext=rc -# Object file extension for compiled RC test sources. -objext=o -objext_RC=$objext -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} -# Allow CC to be a program name with arguments. -compiler=$CC -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -printf "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$rm conftest* -ac_outfile=conftest.$ac_objext -printf "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$rm conftest* -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${RC-"windres"} -compiler=$CC -compiler_RC=$CC -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -lt_cv_prog_compiler_c_o_RC=yes -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_RC \ - CC_RC \ - LD_RC \ - lt_prog_compiler_wl_RC \ - lt_prog_compiler_pic_RC \ - lt_prog_compiler_static_RC \ - lt_prog_compiler_no_builtin_flag_RC \ - export_dynamic_flag_spec_RC \ - thread_safe_flag_spec_RC \ - whole_archive_flag_spec_RC \ - enable_shared_with_static_runtimes_RC \ - old_archive_cmds_RC \ - old_archive_from_new_cmds_RC \ - predep_objects_RC \ - postdep_objects_RC \ - predeps_RC \ - postdeps_RC \ - compiler_lib_search_path_RC \ - archive_cmds_RC \ - archive_expsym_cmds_RC \ - postinstall_cmds_RC \ - postuninstall_cmds_RC \ - old_archive_from_expsyms_cmds_RC \ - allow_undefined_flag_RC \ - no_undefined_flag_RC \ - export_symbols_cmds_RC \ - hardcode_libdir_flag_spec_RC \ - hardcode_libdir_flag_spec_ld_RC \ - hardcode_libdir_separator_RC \ - hardcode_automatic_RC \ - module_cmds_RC \ - module_expsym_cmds_RC \ - lt_cv_prog_compiler_c_o_RC \ - exclude_expsyms_RC \ - include_expsyms_RC; do - - case $var in - old_archive_cmds_RC | \ - old_archive_from_new_cmds_RC | \ - archive_cmds_RC | \ - archive_expsym_cmds_RC | \ - module_cmds_RC | \ - module_expsym_cmds_RC | \ - old_archive_from_expsyms_cmds_RC | \ - export_symbols_cmds_RC | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac -cfgfile="$ofile" - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared -# Whether or not to build static libraries. -build_old_libs=$enable_static -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_RC -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os -# An echo program that does not interpret backslashes. -echo=$lt_echo -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS -# A C compiler. -LTCC=$lt_LTCC -# A language-specific compiler. -CC=$lt_compiler_RC -# Is the compiler the GNU C compiler? -with_gcc=$GCC_RC -# An ERE matcher. -EGREP=$lt_EGREP -# The linker used to build libraries. -LD=$lt_LD_RC -# Whether we need hard or soft links. -LN_S=$lt_LN_S -# A BSD-compatible nm program. -NM=$lt_NM -# A symbol stripping program -STRIP=$lt_STRIP -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" -# Used on cygwin: assembler. -AS="$AS" -# The name of the directory that contains temporary libtool files. -objdir=$objdir -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_RC + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } -# Object file suffix (normally "o"). -objext="$ac_objext" +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no -# Old archive suffix (normally "a"). -libext="$libext" +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH -# Executable file suffix (normally ""). -exeext="$exeext" + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_RC -pic_mode=$pic_mode +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; -# Must we lock files when doing compilation? -need_locks=$lt_need_locks +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no -# Do we need a version for libraries? -need_version=$need_version + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes -# Whether dlopen is supported. -dlopen_support=$enable_dlopen + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_RC + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC +freebsd1*) + dynamic_linker=no + ;; -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; -# Library versioning type. -version_type=$version_type +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; -# Format of library name prefix. -libname_spec=$lt_libname_spec +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_RC -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC +int +main () +{ -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_RC -archive_expsym_cmds=$lt_archive_expsym_cmds_RC -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_RC -module_expsym_cmds=$lt_module_expsym_cmds_RC + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_RC - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_RC - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_RC - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_RC +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_RC +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_RC +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_RC +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds +rdos*) + dynamic_linker=no + ;; -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; -# This is the shared library runtime path variable. -runpath_var=$runpath_var +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; -# This is the shared library path variable. -shlibpath_var=$shlibpath_var +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_RC +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_RC - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_RC - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_RC - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_RC -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_RC -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_RC" -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_RC -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_RC -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_RC -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_RC -# ### END LIBTOOL TAG CONFIG: $tagname -__EOF__ -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -CC="$lt_save_CC" - ;; - *) - { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 -echo "$as_me: error: Unsupported tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } - ;; - esac - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 -echo "$as_me: error: unable to update list of available tagged configurations." >&2;} - { (exit 1); exit 1; }; } - fi -fi -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -# Prevent multiple expansion @@ -19896,8 +14640,43 @@ + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi @@ -19905,726 +14684,651 @@ + fi # test -n "$compiler" + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +$as_echo_n "checking for library containing strerror... " >&6; } +if test "${ac_cv_search_strerror+set}" = set; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (); +int +main () +{ +return strerror (); + ; + return 0; +} +_ACEOF +for ac_lib in '' cposix; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_strerror=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_strerror+set}" = set; then : + break +fi done -done +if test "${ac_cv_search_strerror+set}" = set; then : +else + ac_cv_search_strerror=no fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +$as_echo "$ac_cv_search_strerror" >&6; } +ac_res=$ac_cv_search_strerror +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + fi - test -n "$ac_ct_CXX" && break -done -test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - CXX=$ac_ct_CXX +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" fi -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include +#include <$ac_hdr> int main () { -#ifndef __GNUC__ - choke me -#endif - +if ((DIR *) 0) +return 0; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_ac_Header=yes" else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF +ac_header_dirent=$ac_hdr; break fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -GXX=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -CXXFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); int main () { - +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cxx_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" else - CXXFLAGS="-g" + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then : + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then : + else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi + ac_cv_search_opendir=no fi -for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_declaration -#include + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); int main () { -exit (42); +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then : + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then : + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -continue fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether closedir returns void" >&5 +$as_echo_n "checking whether closedir returns void... " >&6; } +if test "${ac_cv_func_closedir_void+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_closedir_void=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_declaration +$ac_includes_default +#include <$ac_header_dirent> +#ifndef __cplusplus +int closedir (); +#endif + int main () { -exit (42); +return closedir (opendir (".")) != 0; ; return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_closedir_void=no else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + ac_cv_func_closedir_void=yes fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_closedir_void" >&5 +$as_echo "$ac_cv_func_closedir_void" >&6; } +if test $ac_cv_func_closedir_void = yes; then -depcc="$CXX" am_compiler_list= +$as_echo "#define CLOSEDIR_VOID 1" >>confdefs.h + +fi -echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +$as_echo_n "checking for working memcmp... " >&6; } +if test "${ac_cv_func_memcmp_working+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub + if test "$cross_compiling" = yes; then : + ac_cv_func_memcmp_working=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + return 1; - case $depmode in - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - none) break ;; - esac - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. - if depmode=$depmode \ - source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + return 1; + } + return 0; + } - cd .. - rm -rf conftest.dir + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_memcmp_working=yes else - am_cv_CXX_dependencies_compiler_type=none + ac_cv_func_memcmp_working=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi -echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } +test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in + *" memcmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" + ;; +esac +for ac_func in strftime +do : + ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRFTIME 1 +_ACEOF -if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - -echo "$as_me:$LINENO: checking for library containing strerror" >&5 -echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6 -if test "${ac_cv_search_strerror+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + # strftime is in -lintl on SCO UNIX. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 +$as_echo_n "checking for strftime in -lintl... " >&6; } +if test "${ac_cv_lib_intl_strftime+set}" = set; then : + $as_echo_n "(cached) " >&6 else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_strerror=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strerror (); +char strftime (); int main () { -strerror (); +return strftime (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_strerror="none required" +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_strftime=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_lib_intl_strftime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 +$as_echo "$ac_cv_lib_intl_strftime" >&6; } +if test "x$ac_cv_lib_intl_strftime" = x""yes; then : + $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h +LIBS="-lintl $LIBS" fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_strerror" = no; then - for ac_lib in cposix; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + +fi +done + +for ac_func in vprintf +do : + ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" +if test "x$ac_cv_func_vprintf" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VPRINTF 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strerror (); +ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" +if test "x$ac_cv_func__doprnt" = x""yes; then : + +$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h + +fi + +fi +done + + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if test "${ac_cv_working_alloca_h+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include int main () { -strerror (); +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_strerror="-l$ac_lib" -break +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done + ac_cv_working_alloca_h=no fi -LIBS=$ac_func_search_save_LIBS +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5 -echo "${ECHO_T}$ac_cv_search_strerror" >&6 -if test "$ac_cv_search_strerror" != no; then - test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h fi -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if test "${ac_cv_func_alloca_works+set}" = set; then : + $as_echo_n "(cached) " >&6 else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +if test $ac_cv_func_alloca_works = yes; then -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if test "${ac_cv_os_cray+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + _ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes else - eval ac_cv_prog_make_${ac_make}_set=no + ac_cv_os_cray=no fi -rm -f conftest.make +rm -f conftest* + fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break fi + done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if test "${ac_cv_c_stack_direction+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction () +{ + static char *addr = 0; + auto char dummy; + if (addr == 0) + { + addr = &dummy; + return find_stack_direction (); + } + else + return (&dummy > addr) ? 1 : -1; +} +int +main () +{ + return find_stack_direction () < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF +fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> @@ -20638,42 +15342,20 @@ return 0; } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then +if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" + eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then +eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +eval as_val=\$$as_ac_Header + if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -20682,5402 +15364,4330 @@ done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char opendir (); int main () { -opendir (); +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in dir; do +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then : + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then : -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done + ac_cv_search_opendir=no fi +rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if test "${ac_cv_search_opendir+set}" = set; then : + $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF +cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ char opendir (); int main () { -opendir (); +return opendir (); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if test "${ac_cv_search_opendir+set}" = set; then : + break +fi +done +if test "${ac_cv_search_opendir+set}" = set; then : + else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in x; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ +#include +#include +#include +#include -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); int main () { -opendir (); + ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - + ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no fi -LIBS=$ac_func_search_save_LIBS +rm -f conftest* + fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no fi +rm -f conftest* fi -echo "$as_me:$LINENO: checking whether closedir returns void" >&5 -echo $ECHO_N "checking whether closedir returns void... $ECHO_C" >&6 -if test "${ac_cv_func_closedir_void+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_closedir_void=yes +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -$ac_includes_default -#include <$ac_header_dirent> -#ifndef __cplusplus -int closedir (); +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { -exit (closedir (opendir (".")) != 0); - ; + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; return 0; } _ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_closedir_void=no +if ac_fn_c_try_run "$LINENO"; then : + else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi -( exit $ac_status ) -ac_cv_func_closedir_void=yes fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + fi -echo "$as_me:$LINENO: result: $ac_cv_func_closedir_void" >&5 -echo "${ECHO_T}$ac_cv_func_closedir_void" >&6 -if test $ac_cv_func_closedir_void = yes; then -cat >>confdefs.h <<\_ACEOF -#define CLOSEDIR_VOID 1 +for ac_header in memory.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MEMORY_H 1 _ACEOF fi -echo "$as_me:$LINENO: checking for working memcmp" >&5 -echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6 -if test "${ac_cv_func_memcmp_working+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_working=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ +done + +for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = 0x40, c1 = 0x80, c2 = 0x81; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - exit (1); +fi - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - exit (1); - } - exit (0); - } +done - ; - return 0; -} +for ac_header in ieeefp.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "ieeefp.h" "ac_cv_header_ieeefp_h" "$ac_includes_default" +if test "x$ac_cv_header_ieeefp_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_IEEEFP_H 1 _ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_memcmp_working=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -( exit $ac_status ) -ac_cv_func_memcmp_working=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + +done + +for ac_header in sys/file.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_FILE_H 1 +_ACEOF + fi + +done + +for ac_header in sys/time.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_TIME_H 1 +_ACEOF + fi -echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 -echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6 -test $ac_cv_func_memcmp_working = no && case $LIBOBJS in - "memcmp.$ac_objext" | \ - *" memcmp.$ac_objext" | \ - "memcmp.$ac_objext "* | \ - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; -esac +done +for ac_func in strchr memcpy gettimeofday +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +eval as_val=\$$as_ac_var + if test "x$as_val" = x""yes; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF -for ac_func in strftime -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat file-mode macros are broken" >&5 +$as_echo_n "checking whether stat file-mode macros are broken... " >&6; } +if test "${ac_cv_header_stat_broken+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ +#include +#include -#ifdef __STDC__ -# include -#else -# include +#if defined S_ISBLK && defined S_IFDIR +extern char c1[S_ISBLK (S_IFDIR) ? -1 : 1]; #endif -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ +#if defined S_ISBLK && defined S_IFCHR +extern char c2[S_ISBLK (S_IFCHR) ? -1 : 1]; #endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; + +#if defined S_ISLNK && defined S_IFREG +extern char c3[S_ISLNK (S_IFREG) ? -1 : 1]; #endif -#ifdef __cplusplus -} + +#if defined S_ISSOCK && defined S_IFREG +extern char c4[S_ISSOCK (S_IFREG) ? -1 : 1]; #endif +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stat_broken=no +else + ac_cv_header_stat_broken=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stat_broken" >&5 +$as_echo "$ac_cv_header_stat_broken" >&6; } +if test $ac_cv_header_stat_broken = yes; then + +$as_echo "#define STAT_MACROS_BROKEN 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if test "${ac_cv_struct_tm+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + int main () { -return f != $ac_func; +struct tm tm; + int *p = &tm.tm_sec; + return !p; ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" + ac_cv_struct_tm=sys/time.h fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = x""yes; then : else - # strftime is in -lintl on SCO UNIX. -echo "$as_me:$LINENO: checking for strftime in -lintl" >&5 -echo $ECHO_N "checking for strftime in -lintl... $ECHO_C" >&6 -if test "${ac_cv_lib_intl_strftime+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int _ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char strftime (); int main () { -strftime (); +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_intl_strftime=yes +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h -ac_cv_lib_intl_strftime=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + + + + +# Check whether --enable-inline was given. +if test "${enable_inline+set}" = set; then : + enableval=$enable_inline; case "${enableval}" in + yes) enable_inline=true ;; + no) enable_inline=false ;; + *) as_fn_error "bad value ${enableval} for --enable-inline" "$LINENO" 5;; + esac +else + enable_inline=true + fi -echo "$as_me:$LINENO: result: $ac_cv_lib_intl_strftime" >&5 -echo "${ECHO_T}$ac_cv_lib_intl_strftime" >&6 -if test $ac_cv_lib_intl_strftime = yes; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_STRFTIME 1 -_ACEOF -LIBS="-lintl $LIBS" + +# Check whether --enable-cassert was given. +if test "${enable_cassert+set}" = set; then : + enableval=$enable_cassert; case "${enableval}" in + yes) enable_cassert=true ;; + no) enable_cassert=false ;; + *) as_fn_error "bad value ${enableval} for --enable-cassert" "$LINENO" 5;; + esac +else + enable_cassert=true + +fi + + +INLINE_FLAGS= + +if test x"$enable_inline" = xtrue; then + INLINE_FLAGS="-DGEOS_INLINE" + CXXFLAGS="$CXXFLAGS $INLINE_FLAGS" fi +if test x"$enable_cassert" = xfalse; then + CXXFLAGS="$CXXFLAGS -DNDEBUG" fi -done -for ac_func in vprintf -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + +# Set default CXXFLAGS and CFLAGS if not set by the user +# -pedantic: ISO does not support long long +# we add -Wno-long-long to avoid those messages +WARNFLAGS="" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -pedantic" >&5 +$as_echo_n "checking if $compiler supports -pedantic... " >&6; } +if test "${dummy_cv_pedantic+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + dummy_cv_pedantic=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-pedantic" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15900: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15904: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + dummy_cv_pedantic=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_pedantic" >&5 +$as_echo "$dummy_cv_pedantic" >&6; } + +if test x"$dummy_cv_pedantic" = xyes; then + WARNFLAGS="$WARNFLAGS -pedantic" else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func + : +fi -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -Wall" >&5 +$as_echo_n "checking if $compiler supports -Wall... " >&6; } +if test "${dummy_cv_wall+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + dummy_cv_wall=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-Wall" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15944: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15948: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + dummy_cv_wall=yes + fi + fi + $RM conftest* -#ifdef __STDC__ -# include -#else -# include -#endif +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_wall" >&5 +$as_echo "$dummy_cv_wall" >&6; } -#undef $ac_func +if test x"$dummy_cv_wall" = xyes; then + WARNFLAGS="$WARNFLAGS -Wall" +else + : +fi -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -ansi" >&5 +$as_echo_n "checking if $compiler supports -ansi... " >&6; } +if test "${dummy_cv_ansi+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + dummy_cv_ansi=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-ansi" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15988: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:15992: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + dummy_cv_ansi=yes + fi + fi + $RM conftest* -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_ansi" >&5 +$as_echo "$dummy_cv_ansi" >&6; } + +if test x"$dummy_cv_ansi" = xyes; then + WARNFLAGS="$WARNFLAGS -ansi" else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + : +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -Wno-long-long" >&5 +$as_echo_n "checking if $compiler supports -Wno-long-long... " >&6; } +if test "${dummy_cv_no_long_long+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + dummy_cv_no_long_long=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-Wno-long-long" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16032: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16036: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + dummy_cv_no_long_long=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_no_long_long" >&5 +$as_echo "$dummy_cv_no_long_long" >&6; } -eval "$as_ac_var=no" +if test x"$dummy_cv_no_long_long" = xyes; then + WARNFLAGS="$WARNFLAGS -Wno-long-long" +else + : fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + + +# To make numerical computation more stable, we use --ffloat-store +NUMERICFLAGS="" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -ffloat-store" >&5 +$as_echo_n "checking if $compiler supports -ffloat-store... " >&6; } +if test "${dummy_cv_ffloat_store+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + dummy_cv_ffloat_store=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-ffloat-store" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:16079: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:16083: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + dummy_cv_ffloat_store=yes + fi + fi + $RM conftest* + fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dummy_cv_ffloat_store" >&5 +$as_echo "$dummy_cv_ffloat_store" >&6; } -echo "$as_me:$LINENO: checking for _doprnt" >&5 -echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 -if test "${ac_cv_func__doprnt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test x"$dummy_cv_ffloat_store" = xyes; then + NUMERICFLAGS="$NUMERICFLAGS -ffloat-store" else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define _doprnt to an innocuous variant, in case declares _doprnt. - For example, HP-UX 11i declares gettimeofday. */ -#define _doprnt innocuous__doprnt + : +fi -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _doprnt (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -#ifdef __STDC__ -# include -#else -# include -#endif +DEFAULTFLAGS="${WARNFLAGS} ${NUMERICFLAGS}" -#undef _doprnt +CXXFLAGS="${CXXFLAGS} ${DEFAULTFLAGS}" +CFLAGS="${CFLAGS} ${DEFAULTFLAGS}" -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char _doprnt (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub__doprnt) || defined (__stub____doprnt) -choke me -#else -char (*f) () = _doprnt; -#endif -#ifdef __cplusplus -} -#endif +save_LIBS=$LIBS +LIBS="$LIBS -lm" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for finite" >&5 +$as_echo_n "checking for finite... " >&6; } +if test "${ac_cv_finite+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include int main () { -return f != _doprnt; +double x; int y; y = finite(x); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func__doprnt=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_finite=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_finite=no -ac_cv_func__doprnt=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 -echo "${ECHO_T}$ac_cv_func__doprnt" >&6 -if test $ac_cv_func__doprnt = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DOPRNT 1 -_ACEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_finite" >&5 +$as_echo "$ac_cv_finite" >&6; } +if test x"$ac_cv_finite" = x"yes"; then -fi +$as_echo "#define HAVE_FINITE 1" >>confdefs.h fi -done - -# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -# for constant arguments. Useless! -echo "$as_me:$LINENO: checking for working alloca.h" >&5 -echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6 -if test "${ac_cv_working_alloca_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for isfinite" >&5 +$as_echo_n "checking for isfinite... " >&6; } +if test "${ac_cv_isfinite+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include +#include int main () { -char *p = (char *) alloca (2 * sizeof (int)); +double x; int y; y = isfinite(x); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_working_alloca_h=yes +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_isfinite=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_isfinite=no -ac_cv_working_alloca_h=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5 -echo "${ECHO_T}$ac_cv_working_alloca_h" >&6 -if test $ac_cv_working_alloca_h = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_isfinite" >&5 +$as_echo "$ac_cv_isfinite" >&6; } +if test x"$ac_cv_isfinite" = x"yes"; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA_H 1 -_ACEOF +$as_echo "#define HAVE_ISFINITE 1" >>confdefs.h fi -echo "$as_me:$LINENO: checking for alloca" >&5 -echo $ECHO_N "checking for alloca... $ECHO_C" >&6 -if test "${ac_cv_func_alloca_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for isnan" >&5 +$as_echo_n "checking for isnan... " >&6; } +if test "${ac_cv_isnan+set}" = set; then : + $as_echo_n "(cached) " >&6 else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#ifdef __GNUC__ -# define alloca __builtin_alloca -#else -# ifdef _MSC_VER -# include -# define alloca _alloca -# else -# if HAVE_ALLOCA_H -# include -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca /* predefined by HP cc +Olibcalls */ -char *alloca (); -# endif -# endif -# endif -# endif -#endif - +#include int main () { -char *p = (char *) alloca (1); +double x; int y; y = isnan(x); ; return 0; } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_alloca_works=yes +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_isnan=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_isnan=no -ac_cv_func_alloca_works=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext fi -echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5 -echo "${ECHO_T}$ac_cv_func_alloca_works" >&6 - -if test $ac_cv_func_alloca_works = yes; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_isnan" >&5 +$as_echo "$ac_cv_isnan" >&6; } +if test x"$ac_cv_isnan" = x"yes"; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_ALLOCA 1 -_ACEOF +$as_echo "#define HAVE_ISNAN 1" >>confdefs.h -else - # The SVR3 libPW and SVR4 libucb both contain incompatible functions -# that cause trouble. Some versions do not even contain alloca or -# contain a buggy version. If you still want to use their alloca, -# use ar to extract alloca.o from them instead of compiling alloca.c. +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu -ALLOCA=alloca.$ac_objext -cat >>confdefs.h <<\_ACEOF -#define C_ALLOCA 1 -_ACEOF +LIBS=$save_LIBS -echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5 -echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6 -if test "${ac_cv_os_cray+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#if defined(CRAY) && ! defined(CRAY2) -webecray -#else -wenotbecray -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "webecray" >/dev/null 2>&1; then - ac_cv_os_cray=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether int64_t is 64 bits" >&5 +$as_echo_n "checking whether int64_t is 64 bits... " >&6; } +if test "${pgac_cv_type_int64_t_64+set}" = set; then : + $as_echo_n "(cached) " >&6 else - ac_cv_os_cray=no -fi -rm -f conftest* - -fi -echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 -echo "${ECHO_T}$ac_cv_os_cray" >&6 -if test $ac_cv_os_cray = yes; then - for ac_func in _getb67 GETB67 getb67; do - as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test "$cross_compiling" = yes; then : + pgac_cv_type_int64_t_64=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64 bit arithmetic disabled when cross-compiling" >&5 +$as_echo "$as_me: WARNING: 64 bit arithmetic disabled when cross-compiling" >&2;} else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -#ifdef __STDC__ -# include -#else -# include -#endif +#include -#undef $ac_func +typedef int64_t int64; -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif +/* + * These are globals to discourage the compiler from folding all the + * arithmetic tests down to compile-time constants. + */ +int64 a = 20000001; +int64 b = 40000005; -int -main () +int does_int64_work() { -return f != $ac_func; - ; - return 0; + int64 c,d; + + if (sizeof(int64) != 8) + return 0; /* definitely not the right size */ + + /* Do perfunctory checks to see if 64-bit arithmetic seems to work */ + c = a * b; + d = (c + b) / b; + if (d != a+1) + return 0; + return 1; +} +main() { + exit(! does_int64_work()); } _ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" +if ac_fn_c_try_run "$LINENO"; then : + pgac_cv_type_int64_t_64=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" + pgac_cv_type_int64_t_64=no fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - -cat >>confdefs.h <<_ACEOF -#define CRAY_STACKSEG_END $ac_func -_ACEOF - break fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_type_int64_t_64" >&5 +$as_echo "$pgac_cv_type_int64_t_64" >&6; } + +HAVE_INT64_T_64=$pgac_cv_type_int64_t_64 +if test x"$pgac_cv_type_int64_t_64" = xyes ; then + +$as_echo "#define HAVE_INT64_T_64 /**/" >>confdefs.h - done fi -echo "$as_me:$LINENO: checking stack direction for C alloca" >&5 -echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6 -if test "${ac_cv_c_stack_direction+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +if test x"$HAVE_INT64_T_64" = x"no" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long int is 64 bits" >&5 +$as_echo_n "checking whether long int is 64 bits... " >&6; } +if test "${pgac_cv_type_long_int_64+set}" = set; then : + $as_echo_n "(cached) " >&6 else - if test "$cross_compiling" = yes; then - ac_cv_c_stack_direction=0 + if test "$cross_compiling" = yes; then : + pgac_cv_type_long_int_64=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64 bit arithmetic disabled when cross-compiling" >&5 +$as_echo "$as_me: WARNING: 64 bit arithmetic disabled when cross-compiling" >&2;} else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -int -find_stack_direction () -{ - static char *addr = 0; - auto char dummy; - if (addr == 0) - { - addr = &dummy; - return find_stack_direction (); - } - else - return (&dummy > addr) ? 1 : -1; -} -int -main () + +#include + +typedef long int int64; + +/* + * These are globals to discourage the compiler from folding all the + * arithmetic tests down to compile-time constants. + */ +int64 a = 20000001; +int64 b = 40000005; + +int does_int64_work() { - exit (find_stack_direction () < 0); + int64 c,d; + + if (sizeof(int64) != 8) + return 0; /* definitely not the right size */ + + /* Do perfunctory checks to see if 64-bit arithmetic seems to work */ + c = a * b; + d = (c + b) / b; + if (d != a+1) + return 0; + return 1; +} +main() { + exit(! does_int64_work()); } _ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_stack_direction=1 +if ac_fn_c_try_run "$LINENO"; then : + pgac_cv_type_long_int_64=yes else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_c_stack_direction=-1 + pgac_cv_type_long_int_64=no fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi + fi -echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5 -echo "${ECHO_T}$ac_cv_c_stack_direction" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_type_long_int_64" >&5 +$as_echo "$pgac_cv_type_long_int_64" >&6; } -cat >>confdefs.h <<_ACEOF -#define STACK_DIRECTION $ac_cv_c_stack_direction -_ACEOF +HAVE_LONG_INT_64=$pgac_cv_type_long_int_64 +if test x"$pgac_cv_type_long_int_64" = xyes ; then +$as_echo "#define HAVE_LONG_INT_64 /**/" >>confdefs.h fi + if test x"$HAVE_LONG_INT_64" = x"no" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether long long int is 64 bits" >&5 +$as_echo_n "checking whether long long int is 64 bits... " >&6; } +if test "${pgac_cv_type_long_long_int_64+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + pgac_cv_type_long_long_int_64=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 64 bit arithmetic disabled when cross-compiling" >&5 +$as_echo "$as_me: WARNING: 64 bit arithmetic disabled when cross-compiling" >&2;} +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +typedef long long int int64; +/* + * These are globals to discourage the compiler from folding all the + * arithmetic tests down to compile-time constants. + */ +int64 a = 20000001; +int64 b = 40000005; -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5 -echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include <$ac_hdr> - -int -main () +int does_int64_work() { -if ((DIR *) 0) -return 0; - ; - return 0; + int64 c,d; + + if (sizeof(int64) != 8) + return 0; /* definitely not the right size */ + + /* Do perfunctory checks to see if 64-bit arithmetic seems to work */ + c = a * b; + d = (c + b) / b; + if (d != a+1) + return 0; + return 1; +} +main() { + exit(! does_int64_work()); } _ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" +if ac_fn_c_try_run "$LINENO"; then : + pgac_cv_type_long_long_int_64=yes else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" + pgac_cv_type_long_long_int_64=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 -_ACEOF -ac_header_dirent=$ac_hdr; break fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_type_long_long_int_64" >&5 +$as_echo "$pgac_cv_type_long_long_int_64" >&6; } -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +HAVE_LONG_LONG_INT_64=$pgac_cv_type_long_long_int_64 +if test x"$pgac_cv_type_long_long_int_64" = xyes ; then -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +$as_echo "#define HAVE_LONG_LONG_INT_64 /**/" >>confdefs.h fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in dir; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test x"$HAVE_LONG_LONG_INT_64" = x"no" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Could not find a working 64bit int type, you may experience weird bugs (undefined behaviour)" >&5 +$as_echo "$as_me: WARNING: Could not find a working 64bit int type, you may experience weird bugs (undefined behaviour)" >&2;}; + fi + fi fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - done -fi -LIBS=$ac_func_search_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" -fi -else - echo "$as_me:$LINENO: checking for library containing opendir" >&5 -echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6 -if test "${ac_cv_search_opendir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_func_search_save_LIBS=$LIBS -ac_cv_search_opendir=no -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="none required" + +# Check whether --enable-python was given. +if test "${enable_python+set}" = set; then : + enableval=$enable_python; case "${enableval}" in + yes) use_python=true ;; + no) use_python=false ;; + *) as_fn_error "bad value ${enableval} for --enable-python" "$LINENO" 5 ;; + esac else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + use_python=false fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test "$ac_cv_search_opendir" = no; then - for ac_lib in x; do - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_search_opendir="-l$ac_lib" -break + + + +# Check whether --enable-ruby was given. +if test "${enable_ruby+set}" = set; then : + enableval=$enable_ruby; case "${enableval}" in + yes) use_ruby=true ;; + no) use_ruby=false ;; + *) as_fn_error "bad value ${enableval} for --enable-ruby" "$LINENO" 5 ;; + esac else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + use_ruby=false fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext + + + + +use_swig=false +if test x"$use_python" = xtrue || test x"$use_ruby" = xtrue; then + + # Extract the first word of "swig", so it can be a program name with args. +set dummy swig; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_SWIG+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $SWIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done done +IFS=$as_save_IFS + + ;; +esac fi -LIBS=$ac_func_search_save_LIBS +SWIG=$ac_cv_path_SWIG +if test -n "$SWIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SWIG" >&5 +$as_echo "$SWIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5 -echo "${ECHO_T}$ac_cv_search_opendir" >&6 -if test "$ac_cv_search_opendir" != no; then - test "$ac_cv_search_opendir" = "none required" || LIBS="$ac_cv_search_opendir $LIBS" -fi -fi + if test -z "$SWIG" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&5 +$as_echo "$as_me: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&2;} + SWIG='' + elif test -n "1.3.28" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SWIG version" >&5 +$as_echo_n "checking for SWIG version... " >&6; } + swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $swig_version" >&5 +$as_echo "$swig_version" >&6; } + if test -n "$swig_version" ; then + # Calculate the required version number components + required=1.3.28 + required_major=`echo $required | sed 's/[^0-9].*//'` + if test -z "$required_major" ; then + required_major=0 + fi + required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required_minor=`echo $required | sed 's/[^0-9].*//'` + if test -z "$required_minor" ; then + required_minor=0 + fi + required=`echo $required | sed 's/[0-9]*[^0-9]//'` + required_patch=`echo $required | sed 's/[^0-9].*//'` + if test -z "$required_patch" ; then + required_patch=0 + fi + # Calculate the available version number components + available=$swig_version + available_major=`echo $available | sed 's/[^0-9].*//'` + if test -z "$available_major" ; then + available_major=0 + fi + available=`echo $available | sed 's/[0-9]*[^0-9]//'` + available_minor=`echo $available | sed 's/[^0-9].*//'` + if test -z "$available_minor" ; then + available_minor=0 + fi + available=`echo $available | sed 's/[0-9]*[^0-9]//'` + available_patch=`echo $available | sed 's/[^0-9].*//'` + if test -z "$available_patch" ; then + available_patch=0 + fi + if test $available_major -ne $required_major \ + -o $available_minor -ne $required_minor \ + -o $available_patch -lt $required_patch ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 1.3.28 is required. You have $swig_version. You should look at http://www.swig.org" >&5 +$as_echo "$as_me: WARNING: SWIG version >= 1.3.28 is required. You have $swig_version. You should look at http://www.swig.org" >&2;} + SWIG='' + else + { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG executable is '$SWIG'" >&5 +$as_echo "$as_me: SWIG executable is '$SWIG'" >&6;} + SWIG_LIB=`$SWIG -swiglib | sed -e :a -e N -e 's/\n/ /' -e ta` + { $as_echo "$as_me:${as_lineno-$LINENO}: SWIG library directory is '$SWIG_LIB'" >&5 +$as_echo "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;} + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine SWIG version" >&5 +$as_echo "$as_me: WARNING: cannot determine SWIG version" >&2;} + SWIG='' + fi + fi + + + if test x"$SWIG" != "x"; then -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -int -main () -{ - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + SWIG="$SWIG -c++" -ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : + use_swig=true + fi +fi + if test x"$use_swig" = xtrue ; then + ENABLE_SWIG_TRUE= + ENABLE_SWIG_FALSE='#' else - ac_cv_header_stdc=no + ENABLE_SWIG_TRUE='#' + ENABLE_SWIG_FALSE= fi -rm -f conftest* -fi -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* -fi +if test x"$use_python" = xtrue; then -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : + + + # Find any Python interpreter. + if test -z "$PYTHON"; then + for ac_prog in python python2 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_PYTHON+set}" = set; then : + $as_echo_n "(cached) " >&6 else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi + ;; +esac fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF -fi + test -n "$PYTHON" && break +done +test -n "$PYTHON" || PYTHON=":" -for ac_header in memory.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + fi + am_display_PYTHON=python -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + if test "$PYTHON" = :; then + as_fn_error "no suitable Python interpreter found" "$LINENO" 5 else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 +$as_echo_n "checking for $am_display_PYTHON version... " >&6; } +if test "${am_cv_python_version+set}" = set; then : + $as_echo_n "(cached) " >&6 else - eval "$as_ac_Header=\$ac_header_preproc" + am_cv_python_version=`$PYTHON -c "import sys; print sys.version[:3]"` fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 +$as_echo "$am_cv_python_version" >&6; } + PYTHON_VERSION=$am_cv_python_version -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF -fi -done + PYTHON_PREFIX='${prefix}' + PYTHON_EXEC_PREFIX='${exec_prefix}' -for ac_header in unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 +$as_echo_n "checking for $am_display_PYTHON platform... " >&6; } +if test "${am_cv_python_platform+set}" = set; then : + $as_echo_n "(cached) " >&6 else - ac_cpp_err=yes + am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"` fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 +$as_echo "$am_cv_python_platform" >&6; } + PYTHON_PLATFORM=$am_cv_python_platform - ac_header_preproc=no + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 +$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } +if test "${am_cv_python_pythondir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null || + echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 +$as_echo "$am_cv_python_pythondir" >&6; } + pythondir=$am_cv_python_pythondir -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + + + pkgpythondir=\${pythondir}/$PACKAGE + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 +$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } +if test "${am_cv_python_pyexecdir+set}" = set; then : + $as_echo_n "(cached) " >&6 else - eval "$as_ac_Header=\$ac_header_preproc" + am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null || + echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"` fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 +$as_echo "$am_cv_python_pyexecdir" >&6; } + pyexecdir=$am_cv_python_pyexecdir + + + + pkgpyexecdir=\${pyexecdir}/$PACKAGE + + + + fi + + -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + # + # should allow for checking of python version here... + # -fi -done + base_python_path=`echo $PYTHON | sed "s,/bin.*$,,"` + # Need to fix up a couple of problems on Windows/MingW: + # 1. python lib is named with MAJOR.VERSION collapsed in a single value, + # so libpython2.4 versus libpython24 + # 2. Directory names have the same issue as item 1 so + # python2.4 versus python24 + # 3. Change paths from c:\python\include to c:/python/include. -for ac_header in ieeefp.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test $am_cv_python_platform = "win32" ; then + # Fix python path + base_python_path=`echo $PYTHON | sed "s,/[^/]*$,,"` -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + PYTHON_VERSION=`echo $PYTHON_VERSION | sed "s/\.//"` + PYTHON_VERSION=$PYTHON_VERSION -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 + pythondir=`echo $pythondir | sed 's,\\\,/,g'` + pkgpythondir=\${pythondir}/$PACKAGE -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + pyexecdir=`echo $pyexecdir | sed 's,\\\,/,g'` + pkgpyexecdir=\${pyexecdir}/$PACKAGE -fi + fi -done + # Check for Python include path + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python include path" >&5 +$as_echo_n "checking for Python include path... " >&6; } + for i in "$base_python_path/include/python$PYTHON_VERSION/" "$base_python_path/include/python/" "$base_python_path/include/" "$base_python_path/" ; do + python_path=`find $i -type f -name Python.h -print 2> /dev/null | sed "1q"` + if test -n "$python_path" ; then + break + fi + done + python_path=`echo $python_path | sed "s,/Python.h$,,"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_path" >&5 +$as_echo "$python_path" >&6; } + if test -z "$python_path" ; then + as_fn_error "cannot find Python include path" "$LINENO" 5 + fi + PYTHON_CPPFLAGS=-I$python_path -for ac_header in sys/file.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + # Check for Python library path + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Python library path" >&5 +$as_echo_n "checking for Python library path... " >&6; } + for i in "$base_python_path/lib/python$PYTHON_VERSION/config/" "$base_python_path/lib/python$PYTHON_VERSION/" "$base_python_path/lib/python/config/" "$base_python_path/lib/python/" "$base_python_path/" "$base_python_path/libs/" ; do + python_path=`find $i -name libpython$PYTHON_VERSION.* -print 2> /dev/null | sed "1q"` + if test -n "$python_path" ; then + break + fi + done + python_path=`echo $python_path | sed "s,/libpython.*$,,"` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_path" >&5 +$as_echo "$python_path" >&6; } + if test -z "$python_path" ; then + as_fn_error "cannot find Python library path" "$LINENO" 5 + fi + PYTHON_LDFLAGS="-L$python_path -lpython$PYTHON_VERSION" -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 + # + python_site=`echo $base_python_path | sed "s/config/site-packages/"` + PYTHON_SITE_PKG=$python_site -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + # + # libraries which must be linked in when embedding + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking python extra libraries" >&5 +$as_echo_n "checking python extra libraries... " >&6; } + PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \ + conf = distutils.sysconfig.get_config_var; \ + print (conf('LOCALMODLIBS') or '')+' '+(conf('LIBS') or '')" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_EXTRA_LIBS" >&5 +$as_echo "$PYTHON_EXTRA_LIBS" >&6; }` - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF -fi -done + test "x" != "xno" || swig_shadow=" -noproxy" + SWIG_PYTHON_OPT="-python -modern$swig_shadow" + SWIG_PYTHON_CPPFLAGS=$PYTHON_CPPFLAGS -for ac_header in sys/time.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + if test x"$PYTHON" = "x"; then + use_python=false + fi - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF fi + if test x"$use_python" = xtrue; then + ENABLE_PYTHON_TRUE= + ENABLE_PYTHON_FALSE='#' +else + ENABLE_PYTHON_TRUE='#' + ENABLE_PYTHON_FALSE= +fi -done +if test x"$use_ruby" = xtrue; then -for ac_func in strchr memcpy gettimeofday + # Extract the first word of "ruby", so it can be a program name with args. +set dummy ruby; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_RUBY+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $RUBY in + [\\/]* | ?:[\\/]*) + ac_cv_path_RUBY="$RUBY" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_RUBY="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +RUBY=$ac_cv_path_RUBY +if test -n "$RUBY"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RUBY" >&5 +$as_echo "$RUBY" >&6; } else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ -#ifdef __STDC__ -# include -#else -# include -#endif -#undef $ac_func + if test -z "$RUBY" ; then + as_fn_error "Could not find ruby interpreter." "$LINENO" 5 + RUBY='' + else + RUBY_VERSION=`$RUBY -e "puts RUBY_VERSION"` + + RUBY_BIN_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["bindir"]'` -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif + RUBY_INCLUDE_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["archdir"]'` -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 + RUBY_LIB_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["libdir"]'` -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF + RUBY_EXTENSION_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["sitearchdir"]'` -fi -done + RUBY_SO_NAME=`$RUBY -rrbconfig -e 'puts Config::CONFIG["RUBY_SO_NAME"]'` -echo "$as_me:$LINENO: checking whether stat file-mode macros are broken" >&5 -echo $ECHO_N "checking whether stat file-mode macros are broken... $ECHO_C" >&6 -if test "${ac_cv_header_stat_broken+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include + RUBY_SHARED_LIB=`$RUBY -rrbconfig -e 'puts Config::CONFIG["LIBRUBY"]'` -#if defined(S_ISBLK) && defined(S_IFDIR) -# if S_ISBLK (S_IFDIR) -You lose. -# endif -#endif + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby executable is '$RUBY'" >&5 +$as_echo "$as_me: Ruby executable is '$RUBY'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby version is '$RUBY_VERSION'" >&5 +$as_echo "$as_me: Ruby version is '$RUBY_VERSION'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby bin directory is '$RUBY_BIN_DIR'" >&5 +$as_echo "$as_me: Ruby bin directory is '$RUBY_BIN_DIR'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby include directory is '$RUBY_INCLUDE_DIR'" >&5 +$as_echo "$as_me: Ruby include directory is '$RUBY_INCLUDE_DIR'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby library directory is '$RUBY_LIB_DIR'" >&5 +$as_echo "$as_me: Ruby library directory is '$RUBY_LIB_DIR'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby extension directory is '$RUBY_EXTENSION_DIR'" >&5 +$as_echo "$as_me: Ruby extension directory is '$RUBY_EXTENSION_DIR'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby library is '$RUBY_SO_NAME'" >&5 +$as_echo "$as_me: Ruby library is '$RUBY_SO_NAME'" >&6;} + { $as_echo "$as_me:${as_lineno-$LINENO}: Ruby import library is '$RUBY_SHARED_LIB'" >&5 +$as_echo "$as_me: Ruby import library is '$RUBY_SHARED_LIB'" >&6;} -#if defined(S_ISBLK) && defined(S_IFCHR) -# if S_ISBLK (S_IFCHR) -You lose. -# endif -#endif -#if defined(S_ISLNK) && defined(S_IFREG) -# if S_ISLNK (S_IFREG) -You lose. -# endif -#endif -#if defined(S_ISSOCK) && defined(S_IFREG) -# if S_ISSOCK (S_IFREG) -You lose. -# endif -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "You lose" >/dev/null 2>&1; then - ac_cv_header_stat_broken=yes -else - ac_cv_header_stat_broken=no -fi -rm -f conftest* -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stat_broken" >&5 -echo "${ECHO_T}$ac_cv_header_stat_broken" >&6 -if test $ac_cv_header_stat_broken = yes; then -cat >>confdefs.h <<\_ACEOF -#define STAT_MACROS_BROKEN 1 -_ACEOF -fi -echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6 -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include + fi -int -main () -{ -struct tm *tp; tp->tm_sec; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_struct_tm=time.h -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_struct_tm=sys/time.h + + if test x"$RUBY" = x; then + use_ruby=false + fi + fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + if test x"$use_ruby" = xtrue ; then + ENABLE_RUBY_TRUE= + ENABLE_RUBY_FALSE='#' +else + ENABLE_RUBY_TRUE='#' + ENABLE_RUBY_FALSE= fi -echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6 -if test $ac_cv_struct_tm = sys/time.h; then -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF -fi -echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6 -if test "${ac_cv_type_size_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((size_t *) 0) - return 0; -if (sizeof (size_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_size_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_type_size_t=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6 -if test $ac_cv_type_size_t = yes; then - : -else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking OS-specific settings" >&5 +$as_echo_n "checking OS-specific settings... " >&6; } -cat >>confdefs.h <<_ACEOF -#define size_t unsigned -_ACEOF +case "${host_os}" in + *darwin*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${host_os}" >&5 +$as_echo "${host_os}" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OS/X version" >&5 +$as_echo_n "checking for OS/X version... " >&6; } + kernel=`uname -r` + + # "Darwin 9.6.0" is Mac OSX 10.5.6 + # "Darwin 10.x" would presumably be Mac OS X 10.6.x + case "${kernel}" in + 8.*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Mac OS X 10.4 Tiger" >&5 +$as_echo "Mac OS X 10.4 Tiger" >&6; } + ;; + 9.*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Mac OS X 10.5 Leopard" >&5 +$as_echo "Mac OS X 10.5 Leopard" >&6; } + ;; + 10.*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Mac OS X 10.6 Snow Leopard" >&5 +$as_echo "Mac OS X 10.6 Snow Leopard" >&6; } + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Mac OS X (Darwin ${kernel} kernel)" >&5 +$as_echo "Mac OS X (Darwin ${kernel} kernel)" >&6; } + ;; + esac + ;; +esac -fi -echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset x; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *ccp; - char **p; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -ac_cv_c_const=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF -fi -# Check whether --enable-inline or --disable-inline was given. -if test "${enable_inline+set}" = set; then - enableval="$enable_inline" - case "${enableval}" in - yes) enable_inline=true ;; - no) enable_inline=false ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-inline" >&5 -echo "$as_me: error: bad value ${enableval} for --enable-inline" >&2;} - { (exit 1); exit 1; }; };; - esac -else - enable_inline=true -fi; -# Check whether --enable-cassert or --disable-cassert was given. -if test "${enable_cassert+set}" = set; then - enableval="$enable_cassert" - case "${enableval}" in - yes) enable_cassert=true ;; - no) enable_cassert=false ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-cassert" >&5 -echo "$as_me: error: bad value ${enableval} for --enable-cassert" >&2;} - { (exit 1); exit 1; }; };; - esac -else - enable_cassert=true -fi; -INLINE_FLAGS= -if test x"$enable_inline" = xtrue; then - INLINE_FLAGS="-DGEOS_INLINE" - CXXFLAGS="$CXXFLAGS $INLINE_FLAGS" -fi -if test x"$enable_cassert" = xfalse; then - CXXFLAGS="$CXXFLAGS -DNDEBUG" -fi -# Set default CXXFLAGS and CFLAGS if not set by the user -# -pedantic: ISO does not support long long -# we add -Wno-long-long to avoid those messages -WARNFLAGS="" +ac_config_files="$ac_config_files Makefile build/Makefile build/msvc80/Makefile build/msvc80/geos_c_dll/Makefile build/msvc80/geos_lib/Makefile build/msvc80/geos_python/Makefile build/msvc80/geos_ruby/Makefile build/msvc80/geos_unit/Makefile build/msvc80/geos_xmltester/Makefile build/msvc90/Makefile build/msvc90/geos_c_dll/Makefile build/msvc90/geos_lib/Makefile build/msvc90/geos_python/Makefile build/msvc90/geos_ruby/Makefile build/msvc90/geos_unit/Makefile build/msvc90/geos_xmltester/Makefile build/msvc10/Makefile build/msvc10/geos_c_dll/Makefile build/msvc10/geos_lib/Makefile build/msvc10/geos_unit/Makefile build/msvc10/geos_xmltester/Makefile capi/Makefile capi/geos_c.h doc/Doxyfile doc/Makefile macros/Makefile source/Makefile source/algorithm/Makefile source/algorithm/locate/Makefile source/algorithm/distance/Makefile source/geom/Makefile source/geom/prep/Makefile source/geom/util/Makefile source/geomgraph/Makefile source/geomgraph/index/Makefile source/headers/Makefile source/headers/geos/Makefile source/headers/geos/algorithm/Makefile source/headers/geos/algorithm/locate/Makefile source/headers/geos/algorithm/distance/Makefile source/headers/geos/geom/Makefile source/headers/geos/geom/prep/Makefile source/headers/geos/geom/util/Makefile source/headers/geos/geomgraph/Makefile source/headers/geos/geomgraph/index/Makefile source/headers/geos/index/Makefile source/headers/geos/index/bintree/Makefile source/headers/geos/index/chain/Makefile source/headers/geos/index/intervalrtree/Makefile source/headers/geos/index/quadtree/Makefile source/headers/geos/index/strtree/Makefile source/headers/geos/index/sweepline/Makefile source/headers/geos/io/Makefile source/headers/geos/linearref/Makefile source/headers/geos/noding/Makefile source/headers/geos/noding/snapround/Makefile source/headers/geos/operation/Makefile source/headers/geos/operation/buffer/Makefile source/headers/geos/operation/distance/Makefile source/headers/geos/operation/linemerge/Makefile source/headers/geos/operation/overlay/Makefile source/headers/geos/operation/overlay/snap/Makefile source/headers/geos/operation/polygonize/Makefile source/headers/geos/operation/predicate/Makefile source/headers/geos/operation/relate/Makefile source/headers/geos/operation/union/Makefile source/headers/geos/operation/valid/Makefile source/headers/geos/planargraph/Makefile source/headers/geos/planargraph/algorithm/Makefile source/headers/geos/precision/Makefile source/headers/geos/simplify/Makefile source/headers/geos/util/Makefile source/headers/geos/version.h source/index/Makefile source/index/bintree/Makefile source/index/chain/Makefile source/index/intervalrtree/Makefile source/index/quadtree/Makefile source/index/strtree/Makefile source/index/sweepline/Makefile source/io/Makefile source/linearref/Makefile source/noding/Makefile source/noding/snapround/Makefile source/operation/Makefile source/operation/buffer/Makefile source/operation/distance/Makefile source/operation/linemerge/Makefile source/operation/overlay/Makefile source/operation/polygonize/Makefile source/operation/predicate/Makefile source/operation/relate/Makefile source/operation/union/Makefile source/operation/valid/Makefile source/planargraph/Makefile source/precision/Makefile source/simplify/Makefile source/util/Makefile swig/geos.i swig/Makefile swig/python/Makefile swig/python/tests/Makefile swig/ruby/Makefile swig/ruby/test/Makefile tests/Makefile tests/bigtest/Makefile tests/unit/Makefile tests/perf/Makefile tests/perf/operation/Makefile tests/perf/operation/buffer/Makefile tests/xmltester/Makefile tests/geostest/Makefile tests/thread/Makefile tools/Makefile tools/geos-config" -echo "$as_me:$LINENO: checking if $compiler supports -pedantic" >&5 -echo $ECHO_N "checking if $compiler supports -pedantic... $ECHO_C" >&6 -if test "${dummy+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - dummy=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-pedantic" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:23530: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:23534: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - dummy=yes - fi - fi - $rm conftest* +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. -fi -echo "$as_me:$LINENO: result: $dummy" >&5 -echo "${ECHO_T}$dummy" >&6 +_ACEOF -if test x"$dummy" = xyes; then - WARNFLAGS="$WARNFLAGS -pedantic" -else - : +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi fi +rm -f confcache +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -echo "$as_me:$LINENO: checking if $compiler supports -Wall" >&5 -echo $ECHO_N "checking if $compiler supports -Wall... $ECHO_C" >&6 -if test "${dummy+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - dummy=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-Wall" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:23575: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:23579: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - dummy=yes - fi - fi - $rm conftest* +DEFS=-DHAVE_CONFIG_H -fi -echo "$as_me:$LINENO: result: $dummy" >&5 -echo "${ECHO_T}$dummy" >&6 +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs -if test x"$dummy" = xyes; then - WARNFLAGS="$WARNFLAGS -Wall" -else - : -fi +LTLIBOBJS=$ac_ltlibobjs -echo "$as_me:$LINENO: checking if $compiler supports -ansi" >&5 -echo $ECHO_N "checking if $compiler supports -ansi... $ECHO_C" >&6 -if test "${dummy+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' else - dummy=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-ansi" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:23620: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:23624: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - dummy=yes - fi - fi - $rm conftest* - + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= fi -echo "$as_me:$LINENO: result: $dummy" >&5 -echo "${ECHO_T}$dummy" >&6 -if test x"$dummy" = xyes; then - WARNFLAGS="$WARNFLAGS -ansi" -else - : +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_SWIG_TRUE}" && test -z "${ENABLE_SWIG_FALSE}"; then + as_fn_error "conditional \"ENABLE_SWIG\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_PYTHON_TRUE}" && test -z "${ENABLE_PYTHON_FALSE}"; then + as_fn_error "conditional \"ENABLE_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_RUBY_TRUE}" && test -z "${ENABLE_RUBY_FALSE}"; then + as_fn_error "conditional \"ENABLE_RUBY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. -echo "$as_me:$LINENO: checking if $compiler supports -Wno-long-long" >&5 -echo $ECHO_N "checking if $compiler supports -Wno-long-long... $ECHO_C" >&6 -if test "${dummy+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - dummy=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-Wno-long-long" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:23665: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:23669: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp - $SED '/^$/d' conftest.err >conftest.er2 - if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then - dummy=yes - fi - fi - $rm conftest* +debug=false +ac_cs_recheck=false +ac_cs_silent=false -fi -echo "$as_me:$LINENO: result: $dummy" >&5 -echo "${ECHO_T}$dummy" >&6 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## -if test x"$dummy" = xyes; then - WARNFLAGS="$WARNFLAGS -Wno-long-long" +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST else - : + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac fi -CXXFLAGS="${CXXFLAGS} ${WARNFLAGS}" -CFLAGS="${CFLAGS} ${WARNFLAGS}" +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi -echo "$as_me:$LINENO: checking whether int64_t is 64 bits" >&5 -echo $ECHO_N "checking whether int64_t is 64 bits... $ECHO_C" >&6 -if test "${pgac_cv_type_int64_t_64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - pgac_cv_type_int64_t_64=no -{ echo "$as_me:$LINENO: WARNING: 64 bit arithmetic disabled when cross-compiling" >&5 -echo "$as_me: WARNING: 64 bit arithmetic disabled when cross-compiling" >&2;} -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi -#include +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS -typedef int64_t int64; + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' -/* - * These are globals to discourage the compiler from folding all the - * arithmetic tests down to compile-time constants. - */ -int64 a = 20000001; -int64 b = 40000005; +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE -int does_int64_work() -{ - int64 c,d; +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - if (sizeof(int64) != 8) - return 0; /* definitely not the right size */ - /* Do perfunctory checks to see if 64-bit arithmetic seems to work */ - c = a * b; - d = (c + b) / b; - if (d != a+1) - return 0; - return 1; -} -main() { - exit(! does_int64_work()); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - pgac_cv_type_int64_t_64=yes +# as_fn_error ERROR [LINENO LOG_FD] +# --------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with status $?, using 1 if that was 0. +as_fn_error () +{ + as_status=$?; test $as_status -eq 0 && as_status=1 + if test "$3"; then + as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 + fi + $as_echo "$as_me: error: $1" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -pgac_cv_type_int64_t_64=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $pgac_cv_type_int64_t_64" >&5 -echo "${ECHO_T}$pgac_cv_type_int64_t_64" >&6 + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append -HAVE_INT64_T_64=$pgac_cv_type_int64_t_64 -if test x"$pgac_cv_type_int64_t_64" = xyes ; then +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith -cat >>confdefs.h <<\_ACEOF -#define HAVE_INT64_T_64 -_ACEOF +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false fi -if test x"$HAVE_INT64_T_64" = x"no" ; then - echo "$as_me:$LINENO: checking whether long int is 64 bits" >&5 -echo $ECHO_N "checking whether long int is 64 bits... $ECHO_C" >&6 -if test "${pgac_cv_type_long_int_64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - pgac_cv_type_long_int_64=no -{ echo "$as_me:$LINENO: WARNING: 64 bit arithmetic disabled when cross-compiling" >&5 -echo "$as_me: WARNING: 64 bit arithmetic disabled when cross-compiling" >&2;} +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include + as_basename=false +fi -typedef long int int64; +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi -/* - * These are globals to discourage the compiler from folding all the - * arithmetic tests down to compile-time constants. - */ -int64 a = 20000001; -int64 b = 40000005; +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` -int does_int64_work() -{ - int64 c,d; +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits - if (sizeof(int64) != 8) - return 0; /* definitely not the right size */ +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac - /* Do perfunctory checks to see if 64-bit arithmetic seems to work */ - c = a * b; - d = (c + b) / b; - if (d != a+1) - return 0; - return 1; -} -main() { - exit(! does_int64_work()); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - pgac_cv_type_long_int_64=yes +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -pgac_cv_type_long_int_64=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' fi -echo "$as_me:$LINENO: result: $pgac_cv_type_long_int_64" >&5 -echo "${ECHO_T}$pgac_cv_type_long_int_64" >&6 +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null -HAVE_LONG_INT_64=$pgac_cv_type_long_int_64 -if test x"$pgac_cv_type_long_int_64" = xyes ; then -cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_INT_64 -_ACEOF +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ -fi + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" - if test x"$HAVE_LONG_INT_64" = x"no" ; then - echo "$as_me:$LINENO: checking whether long long int is 64 bits" >&5 -echo $ECHO_N "checking whether long long int is 64 bits... $ECHO_C" >&6 -if test "${pgac_cv_type_long_long_int_64+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' else - if test "$cross_compiling" = yes; then - pgac_cv_type_long_long_int_64=no -{ echo "$as_me:$LINENO: WARNING: 64 bit arithmetic disabled when cross-compiling" >&5 -echo "$as_me: WARNING: 64 bit arithmetic disabled when cross-compiling" >&2;} + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in #( + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -#include +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -typedef long long int int64; -/* - * These are globals to discourage the compiler from folding all the - * arithmetic tests down to compile-time constants. - */ -int64 a = 20000001; -int64 b = 40000005; +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -int does_int64_work() -{ - int64 c,d; +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.64. Invocation command line was - if (sizeof(int64) != 8) - return 0; /* definitely not the right size */ + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" - /* Do perfunctory checks to see if 64-bit arithmetic seems to work */ - c = a * b; - d = (c + b) / b; - if (d != a+1) - return 0; - return 1; -} -main() { - exit(! does_int64_work()); -} _ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - pgac_cv_type_long_long_int_64=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 -( exit $ac_status ) -pgac_cv_type_long_long_int_64=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $pgac_cv_type_long_long_int_64" >&5 -echo "${ECHO_T}$pgac_cv_type_long_long_int_64" >&6 +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac -HAVE_LONG_LONG_INT_64=$pgac_cv_type_long_long_int_64 -if test x"$pgac_cv_type_long_long_int_64" = xyes ; then +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac -cat >>confdefs.h <<\_ACEOF -#define HAVE_LONG_LONG_INT_64 -_ACEOF -fi +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" - fi -fi +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. +Usage: $0 [OPTION]... [TAG]... + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE +Configuration files: +$config_files -# Check whether --enable-python or --disable-python was given. -if test "${enable_python+set}" = set; then - enableval="$enable_python" - case "${enableval}" in - yes) use_python=true ;; - no) use_python=false ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-python" >&5 -echo "$as_me: error: bad value ${enableval} for --enable-python" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - use_python=false +Configuration headers: +$config_headers + +Configuration commands: +$config_commands -fi; +Report bugs to the package provider." +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.64, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" +Copyright (C) 2009 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." -# Check whether --enable-ruby or --disable-ruby was given. -if test "${enable_ruby+set}" = set; then - enableval="$enable_ruby" - case "${enableval}" in - yes) use_ruby=true ;; - no) use_ruby=false ;; - *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-ruby" >&5 -echo "$as_me: error: bad value ${enableval} for --enable-ruby" >&2;} - { (exit 1); exit 1; }; } ;; - esac -else - use_ruby=false +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF -fi; +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + # This is an error. + -*) as_fn_error "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; -use_swig=false -if test x"$use_python" = xtrue || test x"$use_ruby" = xtrue; then + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; - # Extract the first word of "swig", so it can be a program name with args. -set dummy swig; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_SWIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $SWIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_SWIG="$SWIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_SWIG="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done + esac + shift done - ;; -esac -fi -SWIG=$ac_cv_path_SWIG +ac_configure_extra_args= -if test -n "$SWIG"; then - echo "$as_me:$LINENO: result: $SWIG" >&5 -echo "${ECHO_T}$SWIG" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" fi - if test -z "$SWIG" ; then - { echo "$as_me:$LINENO: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&5 -echo "$as_me: WARNING: cannot find 'swig' program. You should look at http://www.swig.org" >&2;} - SWIG='' - elif test -n "1.3.28" ; then - echo "$as_me:$LINENO: checking for SWIG version" >&5 -echo $ECHO_N "checking for SWIG version... $ECHO_C" >&6 - swig_version=`$SWIG -version 2>&1 | grep 'SWIG Version' | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'` - echo "$as_me:$LINENO: result: $swig_version" >&5 -echo "${ECHO_T}$swig_version" >&6 - if test -n "$swig_version" ; then - # Calculate the required version number components - required=1.3.28 - required_major=`echo $required | sed 's/[^0-9].*//'` - if test -z "$required_major" ; then - required_major=0 - fi - required=`echo $required | sed 's/[0-9]*[^0-9]//'` - required_minor=`echo $required | sed 's/[^0-9].*//'` - if test -z "$required_minor" ; then - required_minor=0 - fi - required=`echo $required | sed 's/[0-9]*[^0-9]//'` - required_patch=`echo $required | sed 's/[^0-9].*//'` - if test -z "$required_patch" ; then - required_patch=0 - fi - # Calculate the available version number components - available=$swig_version - available_major=`echo $available | sed 's/[^0-9].*//'` - if test -z "$available_major" ; then - available_major=0 - fi - available=`echo $available | sed 's/[0-9]*[^0-9]//'` - available_minor=`echo $available | sed 's/[^0-9].*//'` - if test -z "$available_minor" ; then - available_minor=0 - fi - available=`echo $available | sed 's/[0-9]*[^0-9]//'` - available_patch=`echo $available | sed 's/[^0-9].*//'` - if test -z "$available_patch" ; then - available_patch=0 - fi - if test $available_major -ne $required_major \ - -o $available_minor -ne $required_minor \ - -o $available_patch -lt $required_patch ; then - { echo "$as_me:$LINENO: WARNING: SWIG version >= 1.3.28 is required. You have $swig_version. You should look at http://www.swig.org" >&5 -echo "$as_me: WARNING: SWIG version >= 1.3.28 is required. You have $swig_version. You should look at http://www.swig.org" >&2;} - SWIG='' - else - { echo "$as_me:$LINENO: SWIG executable is '$SWIG'" >&5 -echo "$as_me: SWIG executable is '$SWIG'" >&6;} - SWIG_LIB=`$SWIG -swiglib | sed -e :a -e N -e 's/\n/ /' -e ta` - { echo "$as_me:$LINENO: SWIG library directory is '$SWIG_LIB'" >&5 -echo "$as_me: SWIG library directory is '$SWIG_LIB'" >&6;} - fi - else - { echo "$as_me:$LINENO: WARNING: cannot determine SWIG version" >&5 -echo "$as_me: WARNING: cannot determine SWIG version" >&2;} - SWIG='' - fi - fi - +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi - if test x"$SWIG" != "x"; then +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - SWIG="$SWIG -c++" +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' +macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' +macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' +enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' +pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' +host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' +host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' +host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' +build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' +build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' +build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' +SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' +Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' +GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' +EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' +FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' +LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' +NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' +LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' +ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' +exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' +lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' +reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' +AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' +STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' +RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' +compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' +GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' +SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' +ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' +need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' +LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' +libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' +need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' +version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' +runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' +libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' +soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' +finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' +old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' +striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' +predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' +postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' +fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +AR \ +AR_FLAGS \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +SHELL \ +ECHO \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_wl \ +lt_prog_compiler_pic \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +fix_srcfile_path \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_flag_spec_ld_CXX \ +hardcode_libdir_separator_CXX \ +fix_srcfile_path_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX; do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done - use_swig=true - fi -fi +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` + ;; +esac +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' -if test x"$use_swig" = xtrue ; then - ENABLE_SWIG_TRUE= - ENABLE_SWIG_FALSE='#' -else - ENABLE_SWIG_TRUE='#' - ENABLE_SWIG_FALSE= +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST fi + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' -if test x"$use_python" = xtrue; then - # Find any Python interpreter. - if test -z "$PYTHON"; then - for ac_prog in python python2 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_PYTHON+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $PYTHON in - [\\/]* | ?:[\\/]*) - ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done + case $ac_config_target in + "source/headers/config.h") CONFIG_HEADERS="$CONFIG_HEADERS source/headers/config.h" ;; + "source/headers/geos/platform.h") CONFIG_HEADERS="$CONFIG_HEADERS source/headers/geos/platform.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;; + "build/msvc80/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc80/Makefile" ;; + "build/msvc80/geos_c_dll/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_c_dll/Makefile" ;; + "build/msvc80/geos_lib/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_lib/Makefile" ;; + "build/msvc80/geos_python/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_python/Makefile" ;; + "build/msvc80/geos_ruby/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_ruby/Makefile" ;; + "build/msvc80/geos_unit/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_unit/Makefile" ;; + "build/msvc80/geos_xmltester/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_xmltester/Makefile" ;; + "build/msvc90/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc90/Makefile" ;; + "build/msvc90/geos_c_dll/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_c_dll/Makefile" ;; + "build/msvc90/geos_lib/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_lib/Makefile" ;; + "build/msvc90/geos_python/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_python/Makefile" ;; + "build/msvc90/geos_ruby/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_ruby/Makefile" ;; + "build/msvc90/geos_unit/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_unit/Makefile" ;; + "build/msvc90/geos_xmltester/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_xmltester/Makefile" ;; + "build/msvc10/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc10/Makefile" ;; + "build/msvc10/geos_c_dll/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc10/geos_c_dll/Makefile" ;; + "build/msvc10/geos_lib/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc10/geos_lib/Makefile" ;; + "build/msvc10/geos_unit/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc10/geos_unit/Makefile" ;; + "build/msvc10/geos_xmltester/Makefile") CONFIG_FILES="$CONFIG_FILES build/msvc10/geos_xmltester/Makefile" ;; + "capi/Makefile") CONFIG_FILES="$CONFIG_FILES capi/Makefile" ;; + "capi/geos_c.h") CONFIG_FILES="$CONFIG_FILES capi/geos_c.h" ;; + "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "macros/Makefile") CONFIG_FILES="$CONFIG_FILES macros/Makefile" ;; + "source/Makefile") CONFIG_FILES="$CONFIG_FILES source/Makefile" ;; + "source/algorithm/Makefile") CONFIG_FILES="$CONFIG_FILES source/algorithm/Makefile" ;; + "source/algorithm/locate/Makefile") CONFIG_FILES="$CONFIG_FILES source/algorithm/locate/Makefile" ;; + "source/algorithm/distance/Makefile") CONFIG_FILES="$CONFIG_FILES source/algorithm/distance/Makefile" ;; + "source/geom/Makefile") CONFIG_FILES="$CONFIG_FILES source/geom/Makefile" ;; + "source/geom/prep/Makefile") CONFIG_FILES="$CONFIG_FILES source/geom/prep/Makefile" ;; + "source/geom/util/Makefile") CONFIG_FILES="$CONFIG_FILES source/geom/util/Makefile" ;; + "source/geomgraph/Makefile") CONFIG_FILES="$CONFIG_FILES source/geomgraph/Makefile" ;; + "source/geomgraph/index/Makefile") CONFIG_FILES="$CONFIG_FILES source/geomgraph/index/Makefile" ;; + "source/headers/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/Makefile" ;; + "source/headers/geos/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/Makefile" ;; + "source/headers/geos/algorithm/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/algorithm/Makefile" ;; + "source/headers/geos/algorithm/locate/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/algorithm/locate/Makefile" ;; + "source/headers/geos/algorithm/distance/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/algorithm/distance/Makefile" ;; + "source/headers/geos/geom/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/geom/Makefile" ;; + "source/headers/geos/geom/prep/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/geom/prep/Makefile" ;; + "source/headers/geos/geom/util/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/geom/util/Makefile" ;; + "source/headers/geos/geomgraph/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/geomgraph/Makefile" ;; + "source/headers/geos/geomgraph/index/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/geomgraph/index/Makefile" ;; + "source/headers/geos/index/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/Makefile" ;; + "source/headers/geos/index/bintree/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/bintree/Makefile" ;; + "source/headers/geos/index/chain/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/chain/Makefile" ;; + "source/headers/geos/index/intervalrtree/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/intervalrtree/Makefile" ;; + "source/headers/geos/index/quadtree/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/quadtree/Makefile" ;; + "source/headers/geos/index/strtree/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/strtree/Makefile" ;; + "source/headers/geos/index/sweepline/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/sweepline/Makefile" ;; + "source/headers/geos/io/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/io/Makefile" ;; + "source/headers/geos/linearref/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/linearref/Makefile" ;; + "source/headers/geos/noding/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/noding/Makefile" ;; + "source/headers/geos/noding/snapround/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/noding/snapround/Makefile" ;; + "source/headers/geos/operation/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/Makefile" ;; + "source/headers/geos/operation/buffer/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/buffer/Makefile" ;; + "source/headers/geos/operation/distance/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/distance/Makefile" ;; + "source/headers/geos/operation/linemerge/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/linemerge/Makefile" ;; + "source/headers/geos/operation/overlay/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/overlay/Makefile" ;; + "source/headers/geos/operation/overlay/snap/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/overlay/snap/Makefile" ;; + "source/headers/geos/operation/polygonize/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/polygonize/Makefile" ;; + "source/headers/geos/operation/predicate/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/predicate/Makefile" ;; + "source/headers/geos/operation/relate/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/relate/Makefile" ;; + "source/headers/geos/operation/union/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/union/Makefile" ;; + "source/headers/geos/operation/valid/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/valid/Makefile" ;; + "source/headers/geos/planargraph/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/planargraph/Makefile" ;; + "source/headers/geos/planargraph/algorithm/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/planargraph/algorithm/Makefile" ;; + "source/headers/geos/precision/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/precision/Makefile" ;; + "source/headers/geos/simplify/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/simplify/Makefile" ;; + "source/headers/geos/util/Makefile") CONFIG_FILES="$CONFIG_FILES source/headers/geos/util/Makefile" ;; + "source/headers/geos/version.h") CONFIG_FILES="$CONFIG_FILES source/headers/geos/version.h" ;; + "source/index/Makefile") CONFIG_FILES="$CONFIG_FILES source/index/Makefile" ;; + "source/index/bintree/Makefile") CONFIG_FILES="$CONFIG_FILES source/index/bintree/Makefile" ;; + "source/index/chain/Makefile") CONFIG_FILES="$CONFIG_FILES source/index/chain/Makefile" ;; + "source/index/intervalrtree/Makefile") CONFIG_FILES="$CONFIG_FILES source/index/intervalrtree/Makefile" ;; + "source/index/quadtree/Makefile") CONFIG_FILES="$CONFIG_FILES source/index/quadtree/Makefile" ;; + "source/index/strtree/Makefile") CONFIG_FILES="$CONFIG_FILES source/index/strtree/Makefile" ;; + "source/index/sweepline/Makefile") CONFIG_FILES="$CONFIG_FILES source/index/sweepline/Makefile" ;; + "source/io/Makefile") CONFIG_FILES="$CONFIG_FILES source/io/Makefile" ;; + "source/linearref/Makefile") CONFIG_FILES="$CONFIG_FILES source/linearref/Makefile" ;; + "source/noding/Makefile") CONFIG_FILES="$CONFIG_FILES source/noding/Makefile" ;; + "source/noding/snapround/Makefile") CONFIG_FILES="$CONFIG_FILES source/noding/snapround/Makefile" ;; + "source/operation/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/Makefile" ;; + "source/operation/buffer/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/buffer/Makefile" ;; + "source/operation/distance/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/distance/Makefile" ;; + "source/operation/linemerge/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/linemerge/Makefile" ;; + "source/operation/overlay/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/overlay/Makefile" ;; + "source/operation/polygonize/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/polygonize/Makefile" ;; + "source/operation/predicate/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/predicate/Makefile" ;; + "source/operation/relate/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/relate/Makefile" ;; + "source/operation/union/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/union/Makefile" ;; + "source/operation/valid/Makefile") CONFIG_FILES="$CONFIG_FILES source/operation/valid/Makefile" ;; + "source/planargraph/Makefile") CONFIG_FILES="$CONFIG_FILES source/planargraph/Makefile" ;; + "source/precision/Makefile") CONFIG_FILES="$CONFIG_FILES source/precision/Makefile" ;; + "source/simplify/Makefile") CONFIG_FILES="$CONFIG_FILES source/simplify/Makefile" ;; + "source/util/Makefile") CONFIG_FILES="$CONFIG_FILES source/util/Makefile" ;; + "swig/geos.i") CONFIG_FILES="$CONFIG_FILES swig/geos.i" ;; + "swig/Makefile") CONFIG_FILES="$CONFIG_FILES swig/Makefile" ;; + "swig/python/Makefile") CONFIG_FILES="$CONFIG_FILES swig/python/Makefile" ;; + "swig/python/tests/Makefile") CONFIG_FILES="$CONFIG_FILES swig/python/tests/Makefile" ;; + "swig/ruby/Makefile") CONFIG_FILES="$CONFIG_FILES swig/ruby/Makefile" ;; + "swig/ruby/test/Makefile") CONFIG_FILES="$CONFIG_FILES swig/ruby/test/Makefile" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "tests/bigtest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/bigtest/Makefile" ;; + "tests/unit/Makefile") CONFIG_FILES="$CONFIG_FILES tests/unit/Makefile" ;; + "tests/perf/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/Makefile" ;; + "tests/perf/operation/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/operation/Makefile" ;; + "tests/perf/operation/buffer/Makefile") CONFIG_FILES="$CONFIG_FILES tests/perf/operation/buffer/Makefile" ;; + "tests/xmltester/Makefile") CONFIG_FILES="$CONFIG_FILES tests/xmltester/Makefile" ;; + "tests/geostest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/geostest/Makefile" ;; + "tests/thread/Makefile") CONFIG_FILES="$CONFIG_FILES tests/thread/Makefile" ;; + "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; + "tools/geos-config") CONFIG_FILES="$CONFIG_FILES tools/geos-config" ;; + + *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac done - ;; -esac -fi -PYTHON=$ac_cv_path_PYTHON -if test -n "$PYTHON"; then - echo "$as_me:$LINENO: result: $PYTHON" >&5 -echo "${ECHO_T}$PYTHON" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi - test -n "$PYTHON" && break -done -test -n "$PYTHON" || PYTHON=":" - - fi - am_display_PYTHON=python +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 - if test "$PYTHON" = :; then - { { echo "$as_me:$LINENO: error: no suitable Python interpreter found" >&5 -echo "$as_me: error: no suitable Python interpreter found" >&2;} - { (exit 1); exit 1; }; } - else +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then - echo "$as_me:$LINENO: checking for $am_display_PYTHON version" >&5 -echo $ECHO_N "checking for $am_display_PYTHON version... $ECHO_C" >&6 -if test "${am_cv_python_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\r' else - am_cv_python_version=`$PYTHON -c "import sys; print sys.version[:3]"` + ac_cs_awk_cr=$ac_cr fi -echo "$as_me:$LINENO: result: $am_cv_python_version" >&5 -echo "${ECHO_T}$am_cv_python_version" >&6 - PYTHON_VERSION=$am_cv_python_version +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF - PYTHON_PREFIX='${prefix}' +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 - PYTHON_EXEC_PREFIX='${exec_prefix}' + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + print line +} - echo "$as_me:$LINENO: checking for $am_display_PYTHON platform" >&5 -echo $ECHO_N "checking for $am_display_PYTHON platform... $ECHO_C" >&6 -if test "${am_cv_python_platform+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else - am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"` + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || as_fn_error "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' fi -echo "$as_me:$LINENO: result: $am_cv_python_platform" >&5 -echo "${ECHO_T}$am_cv_python_platform" >&6 - PYTHON_PLATFORM=$am_cv_python_platform +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" - echo "$as_me:$LINENO: checking for $am_display_PYTHON script directory" >&5 -echo $ECHO_N "checking for $am_display_PYTHON script directory... $ECHO_C" >&6 -if test "${am_cv_python_pythondir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null || - echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"` -fi -echo "$as_me:$LINENO: result: $am_cv_python_pythondir" >&5 -echo "${ECHO_T}$am_cv_python_pythondir" >&6 - pythondir=$am_cv_python_pythondir +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac - pkgpythondir=\${pythondir}/$PACKAGE + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. - echo "$as_me:$LINENO: checking for $am_display_PYTHON extension module directory" >&5 -echo $ECHO_N "checking for $am_display_PYTHON extension module directory... $ECHO_C" >&6 -if test "${am_cv_python_pyexecdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null || - echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"` -fi -echo "$as_me:$LINENO: result: $am_cv_python_pyexecdir" >&5 -echo "${ECHO_T}$am_cv_python_pyexecdir" >&6 - pyexecdir=$am_cv_python_pyexecdir +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - pkgpyexecdir=\${pyexecdir}/$PACKAGE + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || as_fn_error "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error "could not create -" "$LINENO" 5 fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac - # - # should allow for checking of python version here... - # + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi - base_python_path=`echo $PYTHON | sed "s,/bin.*$,,"` + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" - # Need to fix up a couple of problems on Windows/MingW: - # 1. python lib is named with MAJOR.VERSION collapsed in a single value, - # so libpython2.4 versus libpython24 - # 2. Directory names have the same issue as item 1 so - # python2.4 versus python24 - # 3. Change paths from c:\python\include to c:/python/include. + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL - if test $am_cv_python_platform = "win32" ; then - # Fix python path - base_python_path=`echo $PYTHON | sed "s,/[^/]*$,,"` +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - PYTHON_VERSION=`echo $PYTHON_VERSION | sed "s/\.//"` - PYTHON_VERSION=$PYTHON_VERSION +# The names of the tagged configurations supported by this script. +available_tags="CXX " - pythondir=`echo $pythondir | sed 's,\\\,/,g'` - pkgpythondir=\${pythondir}/$PACKAGE +# ### BEGIN LIBTOOL CONFIG +# Assembler program. +AS=$AS - pyexecdir=`echo $pyexecdir | sed 's,\\\,/,g'` - pkgpyexecdir=\${pyexecdir}/$PACKAGE +# DLL creation program. +DLLTOOL=$DLLTOOL - fi +# Object dumper program. +OBJDUMP=$OBJDUMP - # Check for Python include path - echo "$as_me:$LINENO: checking for Python include path" >&5 -echo $ECHO_N "checking for Python include path... $ECHO_C" >&6 - for i in "$base_python_path/include/python$PYTHON_VERSION/" "$base_python_path/include/python/" "$base_python_path/include/" "$base_python_path/" ; do - python_path=`find $i -type f -name Python.h -print 2> /dev/null | sed "1q"` - if test -n "$python_path" ; then - break - fi - done - python_path=`echo $python_path | sed "s,/Python.h$,,"` - echo "$as_me:$LINENO: result: $python_path" >&5 -echo "${ECHO_T}$python_path" >&6 - if test -z "$python_path" ; then - { { echo "$as_me:$LINENO: error: cannot find Python include path" >&5 -echo "$as_me: error: cannot find Python include path" >&2;} - { (exit 1); exit 1; }; } - fi - PYTHON_CPPFLAGS=-I$python_path +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared - # Check for Python library path - echo "$as_me:$LINENO: checking for Python library path" >&5 -echo $ECHO_N "checking for Python library path... $ECHO_C" >&6 - for i in "$base_python_path/lib/python$PYTHON_VERSION/config/" "$base_python_path/lib/python$PYTHON_VERSION/" "$base_python_path/lib/python/config/" "$base_python_path/lib/python/" "$base_python_path/" "$base_python_path/libs/" ; do - python_path=`find $i -name libpython$PYTHON_VERSION.* -print 2> /dev/null | sed "1q"` - if test -n "$python_path" ; then - break - fi - done - python_path=`echo $python_path | sed "s,/libpython.*$,,"` - echo "$as_me:$LINENO: result: $python_path" >&5 -echo "${ECHO_T}$python_path" >&6 - if test -z "$python_path" ; then - { { echo "$as_me:$LINENO: error: cannot find Python library path" >&5 -echo "$as_me: error: cannot find Python library path" >&2;} - { (exit 1); exit 1; }; } - fi - PYTHON_LDFLAGS="-L$python_path -lpython$PYTHON_VERSION" +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os - # - python_site=`echo $base_python_path | sed "s/config/site-packages/"` - PYTHON_SITE_PKG=$python_site +# A sed program that does not truncate output. +SED=$lt_SED - # - # libraries which must be linked in when embedding - # - echo "$as_me:$LINENO: checking python extra libraries" >&5 -echo $ECHO_N "checking python extra libraries... $ECHO_C" >&6 - PYTHON_EXTRA_LIBS=`$PYTHON -c "import distutils.sysconfig; \ - conf = distutils.sysconfig.get_config_var; \ - print (conf('LOCALMODLIBS') or '')+' '+(conf('LIBS') or '')" - echo "$as_me:$LINENO: result: $PYTHON_EXTRA_LIBS" >&5 -echo "${ECHO_T}$PYTHON_EXTRA_LIBS" >&6` +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" +# A grep program that handles long lines. +GREP=$lt_GREP +# An ERE matcher. +EGREP=$lt_EGREP +# A literal string matcher. +FGREP=$lt_FGREP +# A BSD- or MS-compatible name lister. +NM=$lt_NM - test "x" != "xno" || swig_shadow=" -noproxy" - SWIG_PYTHON_OPT="-python -modern$swig_shadow" +# Whether we need soft or hard links. +LN_S=$lt_LN_S - SWIG_PYTHON_CPPFLAGS=$PYTHON_CPPFLAGS +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len +# Object file suffix (normally "o"). +objext=$ac_objext +# Executable file suffix (normally ""). +exeext=$exeext - if test x"$PYTHON" = "x"; then - use_python=false - fi +# whether the shell understands "unset". +lt_unset=$lt_unset +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds -fi +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method +# Command to use when deplibs_check_method == "file_magic". +file_magic_cmd=$lt_file_magic_cmd -if test x"$use_python" = xtrue; then - ENABLE_PYTHON_TRUE= - ENABLE_PYTHON_FALSE='#' -else - ENABLE_PYTHON_TRUE='#' - ENABLE_PYTHON_FALSE= -fi +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS +# A symbol stripping program. +STRIP=$lt_STRIP +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds +# A C compiler. +LTCC=$lt_CC -if test x"$use_ruby" = xtrue; then +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS - # Extract the first word of "ruby", so it can be a program name with args. -set dummy ruby; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_RUBY+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $RUBY in - [\\/]* | ?:[\\/]*) - ac_cv_path_RUBY="$RUBY" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_RUBY="$as_dir/$ac_word$ac_exec_ext" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - ;; -esac -fi -RUBY=$ac_cv_path_RUBY +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -if test -n "$RUBY"; then - echo "$as_me:$LINENO: result: $RUBY" >&5 -echo "${ECHO_T}$RUBY" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - if test -z "$RUBY" ; then - { { echo "$as_me:$LINENO: error: Could not find ruby interpreter." >&5 -echo "$as_me: error: Could not find ruby interpreter." >&2;} - { (exit 1); exit 1; }; } - RUBY='' - else - RUBY_VERSION=`$RUBY -e "puts RUBY_VERSION"` +# The name of the directory that contains temporary libtool files. +objdir=$objdir - RUBY_BIN_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["bindir"]'` +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL - RUBY_INCLUDE_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["archdir"]'` +# An echo program that does not interpret backslashes. +ECHO=$lt_ECHO - RUBY_LIB_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["libdir"]'` +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD - RUBY_EXTENSION_DIR=`$RUBY -rrbconfig -e 'puts Config::CONFIG["sitearchdir"]'` +# Must we lock files when doing compilation? +need_locks=$lt_need_locks - RUBY_SO_NAME=`$RUBY -rrbconfig -e 'puts Config::CONFIG["RUBY_SO_NAME"]'` +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL - RUBY_SHARED_LIB=`$RUBY -rrbconfig -e 'puts Config::CONFIG["LIBRUBY"]'` +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT - { echo "$as_me:$LINENO: Ruby executable is '$RUBY'" >&5 -echo "$as_me: Ruby executable is '$RUBY'" >&6;} - { echo "$as_me:$LINENO: Ruby version is '$RUBY_VERSION'" >&5 -echo "$as_me: Ruby version is '$RUBY_VERSION'" >&6;} - { echo "$as_me:$LINENO: Ruby bin directory is '$RUBY_BIN_DIR'" >&5 -echo "$as_me: Ruby bin directory is '$RUBY_BIN_DIR'" >&6;} - { echo "$as_me:$LINENO: Ruby include directory is '$RUBY_INCLUDE_DIR'" >&5 -echo "$as_me: Ruby include directory is '$RUBY_INCLUDE_DIR'" >&6;} - { echo "$as_me:$LINENO: Ruby library directory is '$RUBY_LIB_DIR'" >&5 -echo "$as_me: Ruby library directory is '$RUBY_LIB_DIR'" >&6;} - { echo "$as_me:$LINENO: Ruby extension directory is '$RUBY_EXTENSION_DIR'" >&5 -echo "$as_me: Ruby extension directory is '$RUBY_EXTENSION_DIR'" >&6;} - { echo "$as_me:$LINENO: Ruby library is '$RUBY_SO_NAME'" >&5 -echo "$as_me: Ruby library is '$RUBY_SO_NAME'" >&6;} - { echo "$as_me:$LINENO: Ruby import library is '$RUBY_SHARED_LIB'" >&5 -echo "$as_me: Ruby import library is '$RUBY_SHARED_LIB'" >&6;} +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 +# Old archive suffix (normally "a"). +libext=$libext +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix - fi +# Do we need a version for libraries? +need_version=$need_version +# Library versioning type. +version_type=$version_type +# Shared library runtime path variable. +runpath_var=$runpath_var - if test x"$RUBY" = x; then - use_ruby=false - fi +# Shared library path variable. +shlibpath_var=$shlibpath_var -fi +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath +# Format of library name prefix. +libname_spec=$lt_libname_spec -if test x"$use_ruby" = xtrue ; then - ENABLE_RUBY_TRUE= - ENABLE_RUBY_FALSE='#' -else - ENABLE_RUBY_TRUE='#' - ENABLE_RUBY_FALSE= -fi +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +# Whether dlopen is supported. +dlopen_support=$enable_dlopen +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib +# The linker used to build libraries. +LD=$lt_LD +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds +# A language specific compiler. +CC=$lt_compiler +# Is the compiler the GNU compiler? +with_gcc=$GCC +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o - ac_config_files="$ac_config_files Makefile build/Makefile build/msvc80/Makefile build/msvc80/geos_c_dll/Makefile build/msvc80/geos_lib/Makefile build/msvc80/geos_python/Makefile build/msvc80/geos_ruby/Makefile build/msvc80/geos_unit/Makefile build/msvc90/Makefile build/msvc90/geos_c_dll/Makefile build/msvc90/geos_lib/Makefile build/msvc90/geos_python/Makefile build/msvc90/geos_ruby/Makefile build/msvc90/geos_unit/Makefile capi/Makefile capi/geos_c.h doc/Doxyfile doc/Makefile macros/Makefile source/Makefile source/algorithm/Makefile source/algorithm/locate/Makefile source/geom/Makefile source/geom/prep/Makefile source/geom/util/Makefile source/geomgraph/Makefile source/geomgraph/index/Makefile source/headers/Makefile source/headers/geos/Makefile source/headers/geos/algorithm/Makefile source/headers/geos/algorithm/locate/Makefile source/headers/geos/geom/Makefile source/headers/geos/geom/prep/Makefile source/headers/geos/geom/util/Makefile source/headers/geos/geomgraph/Makefile source/headers/geos/geomgraph/index/Makefile source/headers/geos/index/Makefile source/headers/geos/index/bintree/Makefile source/headers/geos/index/chain/Makefile source/headers/geos/index/intervalrtree/Makefile source/headers/geos/index/quadtree/Makefile source/headers/geos/index/strtree/Makefile source/headers/geos/index/sweepline/Makefile source/headers/geos/io/Makefile source/headers/geos/noding/Makefile source/headers/geos/noding/snapround/Makefile source/headers/geos/operation/Makefile source/headers/geos/operation/buffer/Makefile source/headers/geos/operation/distance/Makefile source/headers/geos/operation/linemerge/Makefile source/headers/geos/operation/overlay/Makefile source/headers/geos/operation/polygonize/Makefile source/headers/geos/operation/predicate/Makefile source/headers/geos/operation/relate/Makefile source/headers/geos/operation/union/Makefile source/headers/geos/operation/valid/Makefile source/headers/geos/planargraph/Makefile source/headers/geos/planargraph/algorithm/Makefile source/headers/geos/precision/Makefile source/headers/geos/simplify/Makefile source/headers/geos/util/Makefile source/headers/geos/version.h source/index/Makefile source/index/bintree/Makefile source/index/chain/Makefile source/index/intervalrtree/Makefile source/index/quadtree/Makefile source/index/strtree/Makefile source/index/sweepline/Makefile source/io/Makefile source/noding/Makefile source/noding/snapround/Makefile source/operation/Makefile source/operation/buffer/Makefile source/operation/distance/Makefile source/operation/linemerge/Makefile source/operation/overlay/Makefile source/operation/polygonize/Makefile source/operation/predicate/Makefile source/operation/relate/Makefile source/operation/union/Makefile source/operation/valid/Makefile source/planargraph/Makefile source/precision/Makefile source/simplify/Makefile source/util/Makefile swig/geos.i swig/Makefile swig/python/Makefile swig/python/tests/Makefile swig/ruby/Makefile swig/ruby/test/Makefile tests/Makefile tests/bigtest/Makefile tests/unit/Makefile tests/tut/Makefile tests/xmltester/Makefile tools/Makefile tools/geos-config" -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc -_ACEOF +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object -DEFS=-DHAVE_CONFIG_H +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_i=`echo "$ac_i" | - sed 's/\$U\././;s/\.o$//;s/\.obj$//'` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds -LTLIBOBJS=$ac_ltlibobjs +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ENABLE_SWIG_TRUE}" && test -z "${ENABLE_SWIG_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ENABLE_SWIG\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ENABLE_SWIG\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ENABLE_PYTHON_TRUE}" && test -z "${ENABLE_PYTHON_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ENABLE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ENABLE_PYTHON\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi -if test -z "${ENABLE_RUBY_TRUE}" && test -z "${ENABLE_RUBY_FALSE}"; then - { { echo "$as_me:$LINENO: error: conditional \"ENABLE_RUBY\" was never defined. -Usually this means the macro was only invoked conditionally." >&5 -echo "$as_me: error: conditional \"ENABLE_RUBY\" was never defined. -Usually this means the macro was only invoked conditionally." >&2;} - { (exit 1); exit 1; }; } -fi +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path -# PATH needs CR, and LINENO needs CR and PATH. -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - # Find who we are. Look in the path if we contain no path at all - # relative or not. - case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms - ;; - esac - # We did not find ourselves, most probably we were run as `sh COMMAND' - # in which case we are not to be found in the path. - if test "x$as_myself" = x; then - as_myself=$0 - fi - if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } - fi - case $CONFIG_SHELL in - '') - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - if ("$as_dir/$as_base" -c ' - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$0" ${1+"$@"} - fi;; - esac - done -done -;; - esac +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line before each line; the second 'sed' does the real - # work. The second script uses 'N' to pair each line-number line - # with the numbered line, and appends trailing '-' during - # substitution so that $LINENO is not a special case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) - sed '=' <$as_myself | - sed ' - N - s,$,-, - : loop - s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, - t loop - s,-$,, - s,^['$as_cr_digits']*\n,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file +# ### END LIBTOOL CONFIG -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES fi +_LT_EOF + ;; + esac -as_executable_p="test -f" -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +ltmain="$ac_aux_dir/ltmain.sh" -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" + case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" -# CDPATH. -$as_unset CDPATH +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} -exec 6>&1 +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () { - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} -This file was extended by $as_me, which was -generated by GNU Autoconf 2.59. Invocation command line was +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" -cat >>$CONFIG_STATUS <<\_ACEOF +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} -Usage: $0 [OPTIONS] [FILE]... - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} -Configuration files: -$config_files +# sed scripts: +my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[^=]*=//' -Configuration headers: -$config_headers +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} -Configuration commands: -$config_commands +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} -Report bugs to ." -_ACEOF +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} -Copyright (C) 2003 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1+=\$2" +} +_LT_EOF ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$1=\$$1\$2" +} + +_LT_EOF ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; esac - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + - *) ac_config_targets="$ac_config_targets $1" ;; + cat <<_LT_EOF >> "$ofile" - esac - shift -done +# ### BEGIN LIBTOOL TAG CONFIG: CXX -ac_configure_extra_args= +# The linker used to build libraries. +LD=$lt_LD_CXX -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi +# A language specific compiler. +CC=$lt_compiler_CXX -_ACEOF +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX -cat >>$CONFIG_STATUS <<_ACEOF -# -# INIT-COMMANDS section. -# +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX -_ACEOF +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "build/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/Makefile" ;; - "build/msvc80/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc80/Makefile" ;; - "build/msvc80/geos_c_dll/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_c_dll/Makefile" ;; - "build/msvc80/geos_lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_lib/Makefile" ;; - "build/msvc80/geos_python/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_python/Makefile" ;; - "build/msvc80/geos_ruby/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_ruby/Makefile" ;; - "build/msvc80/geos_unit/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc80/geos_unit/Makefile" ;; - "build/msvc90/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc90/Makefile" ;; - "build/msvc90/geos_c_dll/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_c_dll/Makefile" ;; - "build/msvc90/geos_lib/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_lib/Makefile" ;; - "build/msvc90/geos_python/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_python/Makefile" ;; - "build/msvc90/geos_ruby/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_ruby/Makefile" ;; - "build/msvc90/geos_unit/Makefile" ) CONFIG_FILES="$CONFIG_FILES build/msvc90/geos_unit/Makefile" ;; - "capi/Makefile" ) CONFIG_FILES="$CONFIG_FILES capi/Makefile" ;; - "capi/geos_c.h" ) CONFIG_FILES="$CONFIG_FILES capi/geos_c.h" ;; - "doc/Doxyfile" ) CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; - "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "macros/Makefile" ) CONFIG_FILES="$CONFIG_FILES macros/Makefile" ;; - "source/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/Makefile" ;; - "source/algorithm/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/algorithm/Makefile" ;; - "source/algorithm/locate/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/algorithm/locate/Makefile" ;; - "source/geom/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/geom/Makefile" ;; - "source/geom/prep/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/geom/prep/Makefile" ;; - "source/geom/util/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/geom/util/Makefile" ;; - "source/geomgraph/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/geomgraph/Makefile" ;; - "source/geomgraph/index/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/geomgraph/index/Makefile" ;; - "source/headers/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/Makefile" ;; - "source/headers/geos/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/Makefile" ;; - "source/headers/geos/algorithm/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/algorithm/Makefile" ;; - "source/headers/geos/algorithm/locate/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/algorithm/locate/Makefile" ;; - "source/headers/geos/geom/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/geom/Makefile" ;; - "source/headers/geos/geom/prep/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/geom/prep/Makefile" ;; - "source/headers/geos/geom/util/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/geom/util/Makefile" ;; - "source/headers/geos/geomgraph/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/geomgraph/Makefile" ;; - "source/headers/geos/geomgraph/index/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/geomgraph/index/Makefile" ;; - "source/headers/geos/index/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/Makefile" ;; - "source/headers/geos/index/bintree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/bintree/Makefile" ;; - "source/headers/geos/index/chain/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/chain/Makefile" ;; - "source/headers/geos/index/intervalrtree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/intervalrtree/Makefile" ;; - "source/headers/geos/index/quadtree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/quadtree/Makefile" ;; - "source/headers/geos/index/strtree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/strtree/Makefile" ;; - "source/headers/geos/index/sweepline/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/index/sweepline/Makefile" ;; - "source/headers/geos/io/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/io/Makefile" ;; - "source/headers/geos/noding/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/noding/Makefile" ;; - "source/headers/geos/noding/snapround/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/noding/snapround/Makefile" ;; - "source/headers/geos/operation/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/Makefile" ;; - "source/headers/geos/operation/buffer/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/buffer/Makefile" ;; - "source/headers/geos/operation/distance/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/distance/Makefile" ;; - "source/headers/geos/operation/linemerge/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/linemerge/Makefile" ;; - "source/headers/geos/operation/overlay/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/overlay/Makefile" ;; - "source/headers/geos/operation/polygonize/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/polygonize/Makefile" ;; - "source/headers/geos/operation/predicate/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/predicate/Makefile" ;; - "source/headers/geos/operation/relate/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/relate/Makefile" ;; - "source/headers/geos/operation/union/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/union/Makefile" ;; - "source/headers/geos/operation/valid/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/operation/valid/Makefile" ;; - "source/headers/geos/planargraph/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/planargraph/Makefile" ;; - "source/headers/geos/planargraph/algorithm/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/planargraph/algorithm/Makefile" ;; - "source/headers/geos/precision/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/precision/Makefile" ;; - "source/headers/geos/simplify/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/simplify/Makefile" ;; - "source/headers/geos/util/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/util/Makefile" ;; - "source/headers/geos/version.h" ) CONFIG_FILES="$CONFIG_FILES source/headers/geos/version.h" ;; - "source/index/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/index/Makefile" ;; - "source/index/bintree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/index/bintree/Makefile" ;; - "source/index/chain/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/index/chain/Makefile" ;; - "source/index/intervalrtree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/index/intervalrtree/Makefile" ;; - "source/index/quadtree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/index/quadtree/Makefile" ;; - "source/index/strtree/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/index/strtree/Makefile" ;; - "source/index/sweepline/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/index/sweepline/Makefile" ;; - "source/io/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/io/Makefile" ;; - "source/noding/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/noding/Makefile" ;; - "source/noding/snapround/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/noding/snapround/Makefile" ;; - "source/operation/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/Makefile" ;; - "source/operation/buffer/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/buffer/Makefile" ;; - "source/operation/distance/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/distance/Makefile" ;; - "source/operation/linemerge/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/linemerge/Makefile" ;; - "source/operation/overlay/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/overlay/Makefile" ;; - "source/operation/polygonize/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/polygonize/Makefile" ;; - "source/operation/predicate/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/predicate/Makefile" ;; - "source/operation/relate/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/relate/Makefile" ;; - "source/operation/union/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/union/Makefile" ;; - "source/operation/valid/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/operation/valid/Makefile" ;; - "source/planargraph/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/planargraph/Makefile" ;; - "source/precision/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/precision/Makefile" ;; - "source/simplify/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/simplify/Makefile" ;; - "source/util/Makefile" ) CONFIG_FILES="$CONFIG_FILES source/util/Makefile" ;; - "swig/geos.i" ) CONFIG_FILES="$CONFIG_FILES swig/geos.i" ;; - "swig/Makefile" ) CONFIG_FILES="$CONFIG_FILES swig/Makefile" ;; - "swig/python/Makefile" ) CONFIG_FILES="$CONFIG_FILES swig/python/Makefile" ;; - "swig/python/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES swig/python/tests/Makefile" ;; - "swig/ruby/Makefile" ) CONFIG_FILES="$CONFIG_FILES swig/ruby/Makefile" ;; - "swig/ruby/test/Makefile" ) CONFIG_FILES="$CONFIG_FILES swig/ruby/test/Makefile" ;; - "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "tests/bigtest/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/bigtest/Makefile" ;; - "tests/unit/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/unit/Makefile" ;; - "tests/tut/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/tut/Makefile" ;; - "tests/xmltester/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/xmltester/Makefile" ;; - "tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;; - "tools/geos-config" ) CONFIG_FILES="$CONFIG_FILES tools/geos-config" ;; - "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "source/headers/config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS source/headers/config.h" ;; - "source/headers/geos/platform.h" ) CONFIG_HEADERS="$CONFIG_HEADERS source/headers/geos/platform.h" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX -# Create a (secure) tmp directory for tmp files. +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX -_ACEOF +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX -cat >>$CONFIG_STATUS <<_ACEOF +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX -# -# CONFIG_FILES section. -# +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_os,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@CYGPATH_W@,$CYGPATH_W,;t t -s,@PACKAGE@,$PACKAGE,;t t -s,@VERSION@,$VERSION,;t t -s,@ACLOCAL@,$ACLOCAL,;t t -s,@AUTOCONF@,$AUTOCONF,;t t -s,@AUTOMAKE@,$AUTOMAKE,;t t -s,@AUTOHEADER@,$AUTOHEADER,;t t -s,@MAKEINFO@,$MAKEINFO,;t t -s,@install_sh@,$install_sh,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -s,@mkdir_p@,$mkdir_p,;t t -s,@AWK@,$AWK,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@am__leading_dot@,$am__leading_dot,;t t -s,@AMTAR@,$AMTAR,;t t -s,@am__tar@,$am__tar,;t t -s,@am__untar@,$am__untar,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@DEPDIR@,$DEPDIR,;t t -s,@am__include@,$am__include,;t t -s,@am__quote@,$am__quote,;t t -s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -s,@CCDEPMODE@,$CCDEPMODE,;t t -s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -s,@EGREP@,$EGREP,;t t -s,@LN_S@,$LN_S,;t t -s,@ECHO@,$ECHO,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@DLLTOOL@,$DLLTOOL,;t t -s,@ac_ct_DLLTOOL@,$ac_ct_DLLTOOL,;t t -s,@AS@,$AS,;t t -s,@ac_ct_AS@,$ac_ct_AS,;t t -s,@OBJDUMP@,$OBJDUMP,;t t -s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t -s,@CPP@,$CPP,;t t -s,@CXX@,$CXX,;t t -s,@CXXFLAGS@,$CXXFLAGS,;t t -s,@ac_ct_CXX@,$ac_ct_CXX,;t t -s,@CXXDEPMODE@,$CXXDEPMODE,;t t -s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t -s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t -s,@CXXCPP@,$CXXCPP,;t t -s,@F77@,$F77,;t t -s,@FFLAGS@,$FFLAGS,;t t -s,@ac_ct_F77@,$ac_ct_F77,;t t -s,@LIBTOOL@,$LIBTOOL,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@ALLOCA@,$ALLOCA,;t t -s,@INLINE_FLAGS@,$INLINE_FLAGS,;t t -s,@SWIG@,$SWIG,;t t -s,@SWIG_LIB@,$SWIG_LIB,;t t -s,@ENABLE_SWIG_TRUE@,$ENABLE_SWIG_TRUE,;t t -s,@ENABLE_SWIG_FALSE@,$ENABLE_SWIG_FALSE,;t t -s,@PYTHON@,$PYTHON,;t t -s,@PYTHON_VERSION@,$PYTHON_VERSION,;t t -s,@PYTHON_PREFIX@,$PYTHON_PREFIX,;t t -s,@PYTHON_EXEC_PREFIX@,$PYTHON_EXEC_PREFIX,;t t -s,@PYTHON_PLATFORM@,$PYTHON_PLATFORM,;t t -s,@pythondir@,$pythondir,;t t -s,@pkgpythondir@,$pkgpythondir,;t t -s,@pyexecdir@,$pyexecdir,;t t -s,@pkgpyexecdir@,$pkgpyexecdir,;t t -s,@PYTHON_CPPFLAGS@,$PYTHON_CPPFLAGS,;t t -s,@PYTHON_LDFLAGS@,$PYTHON_LDFLAGS,;t t -s,@PYTHON_SITE_PKG@,$PYTHON_SITE_PKG,;t t -s,@PYTHON_EXTRA_LIBS@,$PYTHON_EXTRA_LIBS,;t t -s,@SWIG_PYTHON_OPT@,$SWIG_PYTHON_OPT,;t t -s,@SWIG_PYTHON_CPPFLAGS@,$SWIG_PYTHON_CPPFLAGS,;t t -s,@ENABLE_PYTHON_TRUE@,$ENABLE_PYTHON_TRUE,;t t -s,@ENABLE_PYTHON_FALSE@,$ENABLE_PYTHON_FALSE,;t t -s,@RUBY@,$RUBY,;t t -s,@RUBY_VERSION@,$RUBY_VERSION,;t t -s,@RUBY_BIN_DIR@,$RUBY_BIN_DIR,;t t -s,@RUBY_INCLUDE_DIR@,$RUBY_INCLUDE_DIR,;t t -s,@RUBY_LIB_DIR@,$RUBY_LIB_DIR,;t t -s,@RUBY_EXTENSION_DIR@,$RUBY_EXTENSION_DIR,;t t -s,@RUBY_SO_NAME@,$RUBY_SO_NAME,;t t -s,@RUBY_SHARED_LIB@,$RUBY_SHARED_LIB,;t t -s,@ENABLE_RUBY_TRUE@,$ENABLE_RUBY_TRUE,;t t -s,@ENABLE_RUBY_FALSE@,$ENABLE_RUBY_FALSE,;t t -s,@VERSION_MAJOR@,$VERSION_MAJOR,;t t -s,@VERSION_MINOR@,$VERSION_MINOR,;t t -s,@VERSION_PATCH@,$VERSION_PATCH,;t t -s,@INTERFACE_CURRENT@,$INTERFACE_CURRENT,;t t -s,@INTERFACE_REVISION@,$INTERFACE_REVISION,;t t -s,@INTERFACE_AGE@,$INTERFACE_AGE,;t t -s,@JTS_PORT@,$JTS_PORT,;t t -s,@CAPI_VERSION@,$CAPI_VERSION,;t t -s,@CAPI_VERSION_MAJOR@,$CAPI_VERSION_MAJOR,;t t -s,@CAPI_VERSION_MINOR@,$CAPI_VERSION_MINOR,;t t -s,@CAPI_VERSION_PATCH@,$CAPI_VERSION_PATCH,;t t -s,@CAPI_INTERFACE_CURRENT@,$CAPI_INTERFACE_CURRENT,;t t -s,@CAPI_INTERFACE_REVISION@,$CAPI_INTERFACE_REVISION,;t t -s,@CAPI_INTERFACE_AGE@,$CAPI_INTERFACE_AGE,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX - ac_builddir=. +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX -# -# CONFIG_HEADER section. -# +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path_CXX - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX -_ACEOF +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -# Compute $ac_file's index in $config_headers. -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $ac_file | $ac_file:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X$ac_file : 'X\(//\)[^/]' \| \ - X$ac_file : 'X\(//\)$' \| \ - X$ac_file : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X$ac_file | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'`/stamp-h$_am_stamp_count -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_dir=`(dirname "$ac_dest") 2>/dev/null || -$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX - ac_builddir=. +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -echo "$as_me: executing $ac_dest commands" >&6;} - case $ac_dest in - depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # So let's grep whole file. - if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then - dirpart=`(dirname "$mf") 2>/dev/null || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`(dirname "$file") 2>/dev/null || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p $dirpart/$fdir - else - as_dir=$dirpart/$fdir - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} - { (exit 1); exit 1; }; }; } +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done -done ;; + esac -done -_ACEOF +done # for ac_tag -cat >>$CONFIG_STATUS <<\_ACEOF -{ (exit 0); exit 0; } +as_fn_exit 0 _ACEOF -chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save +test $ac_write_fail = 0 || + as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 + # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. @@ -26097,13 +19707,14 @@ exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } + $ac_cs_success || as_fn_exit $? +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi - - echo "Swig: $use_swig" echo "Python: $use_python" echo "Ruby: $use_ruby" - diff -Nru geos-3.1.0/configure.in geos-3.2.2/configure.in --- geos-3.1.0/configure.in 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/configure.in 2010-04-17 22:55:53.000000000 +0100 @@ -1,31 +1,31 @@ -dnl $Id: configure.in 2266 2009-01-30 20:01:51Z pramsey $ +dnl $Id: configure.in 2975 2010-04-17 21:55:53Z strk $ dnl dnl configure.in - autoconf input template to produce ./configure script dnl dnl version 2.52 is required for Cygwin libtool support -AC_PREREQ(2.52) +AC_PREREQ([2.52]) dnl local vars to hold user's preferences -------------------------------- -AC_INIT(source/headers/geos.h) +AC_INIT([source/headers/geos.h]) AC_CANONICAL_SYSTEM AC_CONFIG_MACRO_DIR([macros]) dnl -- JTS_PORT: the version of JTS this release is bound to -JTS_PORT=1.7.1 +JTS_PORT=1.10.0 dnl -- Version info for the CAPI -CAPI_INTERFACE_CURRENT=6 -CAPI_INTERFACE_REVISION=0 -CAPI_INTERFACE_AGE=5 +CAPI_INTERFACE_CURRENT=7 +CAPI_INTERFACE_REVISION=2 +CAPI_INTERFACE_AGE=6 dnl dnl -- Release versions / C++ library SONAME will use these dnl -- encoding ABI break at every release dnl VERSION_MAJOR=3 -VERSION_MINOR=1 -VERSION_PATCH=0 +VERSION_MINOR=2 +VERSION_PATCH=2 VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH" dnl CAPI_VERSION_MAJOR=$(($CAPI_INTERFACE_CURRENT-$CAPI_INTERFACE_AGE)) @@ -35,9 +35,9 @@ CAPI_VERSION_PATCH=$CAPI_INTERFACE_REVISION CAPI_VERSION="$CAPI_VERSION_MAJOR.$CAPI_VERSION_MINOR.$CAPI_VERSION_PATCH" -AM_INIT_AUTOMAKE(geos, $VERSION, no-define) -AM_CONFIG_HEADER(source/headers/config.h) -AM_CONFIG_HEADER(source/headers/geos/platform.h) +AM_INIT_AUTOMAKE([geos], [$VERSION], [no-define]) +AM_CONFIG_HEADER([source/headers/config.h]) +AM_CONFIG_HEADER([source/headers/geos/platform.h]) AC_PROG_CC dnl use libtool ---------------------------------------------------------- @@ -59,12 +59,12 @@ AC_FUNC_ALLOCA AC_HEADER_DIRENT AC_HEADER_STDC -AC_CHECK_HEADERS(memory.h) -AC_CHECK_HEADERS(unistd.h) -AC_CHECK_HEADERS(ieeefp.h) -AC_CHECK_HEADERS(sys/file.h) -AC_CHECK_HEADERS(sys/time.h) -AC_CHECK_FUNCS(strchr memcpy gettimeofday) +AC_CHECK_HEADERS([memory.h]) +AC_CHECK_HEADERS([unistd.h]) +AC_CHECK_HEADERS([ieeefp.h]) +AC_CHECK_HEADERS([sys/file.h]) +AC_CHECK_HEADERS([sys/time.h]) +AC_CHECK_FUNCS([strchr memcpy gettimeofday]) AC_HEADER_STAT AC_STRUCT_TM AC_TYPE_SIZE_T @@ -75,7 +75,7 @@ dnl -------------------------------------------------------------------- -AC_ARG_ENABLE(inline, [ --disable-inline Disable inlining], +AC_ARG_ENABLE([inline], [ --disable-inline Disable inlining], [case "${enableval}" in yes) enable_inline=true ;; no) enable_inline=false ;; @@ -84,7 +84,7 @@ [enable_inline=true] ) -AC_ARG_ENABLE(cassert, [ --disable-cassert Disable assertion checking], +AC_ARG_ENABLE([cassert], [ --disable-cassert Disable assertion checking], [case "${enableval}" in yes) enable_cassert=true ;; no) enable_cassert=false ;; @@ -108,16 +108,80 @@ dnl - Append default C++ and C flags dnl -------------------------------------------------------------------- +dnl In order for AC_LIBTOOL_COMPILER_OPTION to use +dnl the C compiler we need the hack below. +dnl It is likely a bug in the libtool macro file to +dnl require AC_LIBTOOL_LANG_CXX_CONFIG in *addition* +dnl to AC_LANG(CXX) or AC_LANG_PUSH(CXX)/AC_LANG_POP() +dnl +AC_LIBTOOL_LANG_CXX_CONFIG + # Set default CXXFLAGS and CFLAGS if not set by the user # -pedantic: ISO does not support long long # we add -Wno-long-long to avoid those messages WARNFLAGS="" -AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -pedantic], [dummy], [-pedantic], [], [WARNFLAGS="$WARNFLAGS -pedantic"], []) -AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -Wall], [dummy], [-Wall], [], [WARNFLAGS="$WARNFLAGS -Wall"], []) -AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -ansi], [dummy], [-ansi], [], [WARNFLAGS="$WARNFLAGS -ansi"], []) -AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -Wno-long-long], [dummy], [-Wno-long-long], [], [WARNFLAGS="$WARNFLAGS -Wno-long-long"], []) -CXXFLAGS="${CXXFLAGS} ${WARNFLAGS}" -CFLAGS="${CFLAGS} ${WARNFLAGS}" +AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -pedantic], [dummy_cv_pedantic], [-pedantic], [], [WARNFLAGS="$WARNFLAGS -pedantic"], []) +AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -Wall], [dummy_cv_wall], [-Wall], [], [WARNFLAGS="$WARNFLAGS -Wall"], []) +AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -ansi], [dummy_cv_ansi], [-ansi], [], [WARNFLAGS="$WARNFLAGS -ansi"], []) +AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -Wno-long-long], [dummy_cv_no_long_long], [-Wno-long-long], [], [WARNFLAGS="$WARNFLAGS -Wno-long-long"], []) + +# To make numerical computation more stable, we use --ffloat-store +NUMERICFLAGS="" +AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -ffloat-store], [dummy_cv_ffloat_store], [-ffloat-store], [], [NUMERICFLAGS="$NUMERICFLAGS -ffloat-store"], []) + +DEFAULTFLAGS="${WARNFLAGS} ${NUMERICFLAGS}" + +CXXFLAGS="${CXXFLAGS} ${DEFAULTFLAGS}" +CFLAGS="${CFLAGS} ${DEFAULTFLAGS}" + +dnl -------------------------------------------------------------------- +dnl - Look for finite and/or isfinite macros/functions +dnl -------------------------------------------------------------------- + +dnl These two tests need the math library or they won't link +dnl on OpenBSD, even if the functions exist. +save_LIBS=$LIBS +LIBS="$LIBS -lm" +AC_CACHE_CHECK([for finite], ac_cv_finite, + [AC_TRY_LINK([#include ], + [double x; int y; y = finite(x);], + ac_cv_finite=yes, + ac_cv_finite=no +)]) +if test x"$ac_cv_finite" = x"yes"; then + AC_DEFINE(HAVE_FINITE, [1], [Has finite]) +fi + +AC_CACHE_CHECK([for isfinite], ac_cv_isfinite, + [AC_TRY_LINK([#include ], + [double x; int y; y = isfinite(x);], + ac_cv_isfinite=yes, + ac_cv_isfinite=no +)]) +if test x"$ac_cv_isfinite" = x"yes"; then + AC_DEFINE(HAVE_ISFINITE, [1], [Has isfinite]) +fi + +dnl -------------------------------------------------------------------- +dnl Test for presence of isnan function when using C++ and +dnl This is for a particular bug in OS/X where drops the definition +dnl of isnan(). + +AC_LANG_PUSH([C++]) +AC_CACHE_CHECK([for isnan], ac_cv_isnan, + [AC_TRY_LINK([#include ], + [double x; int y; y = isnan(x);], + ac_cv_isnan=yes, + ac_cv_isnan=no +)]) +if test x"$ac_cv_isnan" = x"yes"; then + AC_DEFINE(HAVE_ISNAN, [1], [Has isnan]) +fi +AC_LANG_POP([C++]) + +dnl -------------------------------------------------------------------- + +LIBS=$save_LIBS dnl -------------------------------------------------------------------- dnl - Look for a 64bit integer (do after CFLAGS is set) @@ -129,17 +193,19 @@ PGAC_TYPE_64BIT_INT([long int]) if test x"$HAVE_LONG_INT_64" = x"no" ; then PGAC_TYPE_64BIT_INT([long long int]) + if test x"$HAVE_LONG_LONG_INT_64" = x"no" ; then + AC_MSG_WARN([Could not find a working 64bit int type, you may experience weird bugs (undefined behaviour)]); + fi fi fi - dnl -------------------------------------------------------------------- dnl - check whether python is required for the build dnl -------------------------------------------------------------------- -AC_ARG_ENABLE(python, [ --enable-python Enable build of python module], +AC_ARG_ENABLE([python], [ --enable-python Enable build of python module], [case "${enableval}" in yes) use_python=true ;; no) use_python=false ;; @@ -153,7 +219,7 @@ dnl - check whether ruby is required for the build dnl -------------------------------------------------------------------- -AC_ARG_ENABLE(ruby, [ --enable-ruby Enable build of ruby module], +AC_ARG_ENABLE([ruby], [ --enable-ruby Enable build of ruby module], [case "${enableval}" in yes) use_ruby=true ;; no) use_ruby=false ;; @@ -217,6 +283,38 @@ dnl -------------------------------------------------------------------- +dnl - do operating-system specific things +dnl -------------------------------------------------------------------- + +AC_MSG_CHECKING([OS-specific settings]) + +case "${host_os}" in + *darwin*) + AC_MSG_RESULT([${host_os}]) + AC_MSG_CHECKING([for OS/X version]) + kernel=`uname -r` + + # "Darwin 9.6.0" is Mac OSX 10.5.6 + # "Darwin 10.x" would presumably be Mac OS X 10.6.x + case "${kernel}" in + 8.*) + AC_MSG_RESULT([Mac OS X 10.4 Tiger]) + ;; + 9.*) + AC_MSG_RESULT([Mac OS X 10.5 Leopard]) + ;; + 10.*) +dnl CXXFLAGS="$CXXFLAGS -Wnon-virtual-dtor -Woverloaded-virtual" + AC_MSG_RESULT([Mac OS X 10.6 Snow Leopard]) + ;; + *) + AC_MSG_RESULT([Mac OS X (Darwin ${kernel} kernel)]) + ;; + esac + ;; +esac + +dnl -------------------------------------------------------------------- dnl - check for boost dnl -------------------------------------------------------------------- @@ -256,12 +354,19 @@ build/msvc80/geos_python/Makefile build/msvc80/geos_ruby/Makefile build/msvc80/geos_unit/Makefile + build/msvc80/geos_xmltester/Makefile build/msvc90/Makefile build/msvc90/geos_c_dll/Makefile build/msvc90/geos_lib/Makefile build/msvc90/geos_python/Makefile build/msvc90/geos_ruby/Makefile build/msvc90/geos_unit/Makefile + build/msvc90/geos_xmltester/Makefile + build/msvc10/Makefile + build/msvc10/geos_c_dll/Makefile + build/msvc10/geos_lib/Makefile + build/msvc10/geos_unit/Makefile + build/msvc10/geos_xmltester/Makefile capi/Makefile capi/geos_c.h doc/Doxyfile @@ -270,6 +375,7 @@ source/Makefile source/algorithm/Makefile source/algorithm/locate/Makefile + source/algorithm/distance/Makefile source/geom/Makefile source/geom/prep/Makefile source/geom/util/Makefile @@ -279,6 +385,7 @@ source/headers/geos/Makefile source/headers/geos/algorithm/Makefile source/headers/geos/algorithm/locate/Makefile + source/headers/geos/algorithm/distance/Makefile source/headers/geos/geom/Makefile source/headers/geos/geom/prep/Makefile source/headers/geos/geom/util/Makefile @@ -292,6 +399,7 @@ source/headers/geos/index/strtree/Makefile source/headers/geos/index/sweepline/Makefile source/headers/geos/io/Makefile + source/headers/geos/linearref/Makefile source/headers/geos/noding/Makefile source/headers/geos/noding/snapround/Makefile source/headers/geos/operation/Makefile @@ -299,6 +407,7 @@ source/headers/geos/operation/distance/Makefile source/headers/geos/operation/linemerge/Makefile source/headers/geos/operation/overlay/Makefile + source/headers/geos/operation/overlay/snap/Makefile source/headers/geos/operation/polygonize/Makefile source/headers/geos/operation/predicate/Makefile source/headers/geos/operation/relate/Makefile @@ -318,6 +427,7 @@ source/index/strtree/Makefile source/index/sweepline/Makefile source/io/Makefile + source/linearref/Makefile source/noding/Makefile source/noding/snapround/Makefile source/operation/Makefile @@ -343,18 +453,19 @@ tests/Makefile tests/bigtest/Makefile tests/unit/Makefile - tests/tut/Makefile + tests/perf/Makefile + tests/perf/operation/Makefile + tests/perf/operation/buffer/Makefile tests/xmltester/Makefile + tests/geostest/Makefile + tests/thread/Makefile tools/Makefile tools/geos-config ]) - - dnl -- echo "---------------------------------------" dnl -- echo "Boost UTF: $use_boost_utf" echo "Swig: $use_swig" echo "Python: $use_python" echo "Ruby: $use_ruby" dnl -- echo "---------------------------------------" - diff -Nru geos-3.1.0/debian/changelog geos-3.2.2/debian/changelog --- geos-3.1.0/debian/changelog 2010-05-14 13:36:26.000000000 +0100 +++ geos-3.2.2/debian/changelog 2010-05-14 13:36:26.000000000 +0100 @@ -1,3 +1,48 @@ +geos (3.2.2-2~lucid1) lucid; urgency=low + + * Launchpad build for Lucid. + + -- Alan Boudreault Wed, 12 May 2010 08:33:45 -0400 + +geos (3.2.2-1) unstable; urgency=low + + * New upstream release. + + -- Alan Boudreault Tue, 11 May 2010 11:39:29 -0400 + +geos (3.2.1-1) unstable; urgency=low + + * New upstream release. + + -- Francesco Paolo Lovergine Sat, 03 Apr 2010 23:23:35 +0200 + +geos (3.2.0-2) unstable; urgency=low + + * Policy set to 3.8.4, without changes. + + -- Francesco Paolo Lovergine Thu, 21 Jan 2010 17:55:27 +0100 + +geos (3.2.0-1) unstable; urgency=low + + * New upstream release. + * Removed kobold among uploaders because no more active on DebianGIS packages. + * Policy bumped to 3.8.3, without changes. + * Changed a bit debian/rules to manage RC patch version. + * Now, it does not install libtool helper file .la, as currently deprecated. + * Revised licenses around and updated the debian/copyright file. + + -- Francesco Paolo Lovergine Thu, 21 Jan 2010 17:05:45 +0100 + +geos (3.1.1-1) unstable; urgency=low + + * New upstream release (bug fixes only). + * Added me as an uploader. + * Policy bumped to 3.8.2 (no changes). + * Introduced a debian/control.in template to version automagically + the C++ binding package and dependencies. + + -- Francesco Paolo Lovergine Fri, 26 Jun 2009 14:28:42 +0200 + geos (3.1.0-1) unstable; urgency=low * New upstream release. diff -Nru geos-3.1.0/debian/control geos-3.2.2/debian/control --- geos-3.1.0/debian/control 2010-05-14 13:36:26.000000000 +0100 +++ geos-3.2.2/debian/control 2010-05-14 13:36:26.000000000 +0100 @@ -2,9 +2,9 @@ Section: science Priority: optional Maintainer: Debian GIS Project -Uploaders: Fabio Tranchitella +Uploaders: Francesco Paolo Lovergine Build-Depends: debhelper (>= 7), dpatch, doxygen, swig, ruby, ruby-dev -Standards-Version: 3.8.0 +Standards-Version: 3.8.4 Homepage: http://trac.osgeo.org/geos/ Vcs-Browser: http://svn.debian.org/viewsvn/pkg-grass/packages/geos/trunk Vcs-Svn: svn://svn.debian.org/svn/pkg-grass/packages/geos/trunk @@ -12,7 +12,7 @@ Package: libgeos-dev Section: libdevel Architecture: any -Depends: libgeos-3.1.0 (= ${binary:Version}), libgeos-c1 (= ${binary:Version}) +Depends: libgeos-3.2.2 (= ${binary:Version}), libgeos-c1 (= ${binary:Version}) Suggests: libgdal-doc Description: Geometry engine for GIS - Development files GEOS provides a spatial object model and fundamental geometric @@ -43,7 +43,7 @@ This package contains the C library. A C++ library is provided by the libgeos* package. -Package: libgeos-3.1.0 +Package: libgeos-3.2.2 Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} @@ -77,12 +77,13 @@ This package contains the documentation for the GEOS API. Package: libgeos-ruby1.8 -Section: interpreters +Section: ruby Architecture: any -Depends: libgeos-3.1.0 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Depends: libgeos-3.2.2 (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Description: GEOS bindings for Ruby GEOS provides a spatial object model and fundamental geometric functions. It implements the geometry model defined in the OpenGIS Consortium Simple Features Specification for SQL. . This package contains the Ruby bindings for GEOS. + diff -Nru geos-3.1.0/debian/control.in geos-3.2.2/debian/control.in --- geos-3.1.0/debian/control.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/debian/control.in 2010-05-14 13:36:26.000000000 +0100 @@ -0,0 +1,90 @@ +Source: geos +Section: science +Priority: optional +Maintainer: Debian GIS Project +Uploaders: Francesco Paolo Lovergine +Build-Depends: debhelper (>= 7), dpatch, doxygen, swig, ruby, ruby-dev, + python-all, python-all-dev, python-central (>= 0.5) +Standards-Version: 3.8.4 +Homepage: http://trac.osgeo.org/geos/ +Vcs-Browser: http://svn.debian.org/viewsvn/pkg-grass/packages/geos/trunk +Vcs-Svn: svn://svn.debian.org/svn/pkg-grass/packages/geos/trunk + +Package: libgeos-dev +Section: libdevel +Architecture: any +Depends: libgeos-@VERSION@ (= ${binary:Version}), libgeos-c1 (= ${binary:Version}) +Suggests: libgdal-doc +Description: Geometry engine for GIS - Development files + GEOS provides a spatial object model and fundamental geometric + functions. It implements the geometry model defined in the + OpenGIS Consortium Simple Features Specification for SQL. + . + This package contains the headers and libraries needed to + develop programs using GEOS. + +Package: libgeos-c1 +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Geometry engine for Geographic Information Systems - C Library + GEOS provides a spatial object model and fundamental geometric + functions. It implements the geometry model defined in the + OpenGIS Consortium Simple Features Specification for SQL. + Functions provided include: + . + * spatial predicates (based on the DE-9IM model), + * overlay functions (intersection, difference, union, + symmetric difference), + * buffer, + * convex hull, + * area and distance functions, and + * topological validity checking + . + This package contains the C library. A C++ library is provided + by the libgeos* package. + +Package: libgeos-@VERSION@ +Section: libs +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Geometry engine for Geographic Information Systems - C++ Library + GEOS provides a spatial object model and fundamental geometric + functions. It implements the geometry model defined in the + OpenGIS Consortium Simple Features Specification for SQL. + Functions provided include: + . + * spatial predicates (based on the DE-9IM model), + * overlay functions (intersection, difference, union, + symmetric difference), + * buffer, + * convex hull, + * area and distance functions, and + * topological validity checking + . + This package contains the C++ library. A C library is provided + by the libgeos-c* package. + +Package: libgeos-doc +Section: doc +Architecture: all +Suggests: libgeos-dev (= ${binary:Version}) +Homepage: http://download.osgeo.org/geos/doxygen/ +Description: Documentation for the GEOS GIS geometry engine library + GEOS provides a spatial object model and fundamental geometric + functions. It implements the geometry model defined in the + OpenGIS Consortium Simple Features Specification for SQL. + . + This package contains the documentation for the GEOS API. + +Package: libgeos-ruby1.8 +Section: ruby +Architecture: any +Depends: libgeos-@VERSION@ (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} +Description: GEOS bindings for Ruby + GEOS provides a spatial object model and fundamental geometric + functions. It implements the geometry model defined in the + OpenGIS Consortium Simple Features Specification for SQL. + . + This package contains the Ruby bindings for GEOS. + diff -Nru geos-3.1.0/debian/copyright geos-3.2.2/debian/copyright --- geos-3.1.0/debian/copyright 2010-05-14 13:36:26.000000000 +0100 +++ geos-3.2.2/debian/copyright 2010-05-14 13:36:26.000000000 +0100 @@ -12,6 +12,11 @@ Copyright (C) 2001-2004 Vivid Solutions Inc. Copyright (C) 2005-2007 Refractions Research Inc. + Copyright (C) 2009 Sandro Santilli + Copyright (C) 2008 Sean Gillies + Copyright (C) 2009 Ragi Y. Burhum + Copyright (C) 2005-2007 Charlie Savage + Copyright (C) 2000-2006 Lee Thomason This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as @@ -25,3 +30,31 @@ On Debian systems, the complete text of the GNU Lesser General Public License can be found in the /usr/share/common-licenses/LGPL file. + + + + +Other licenses follow. +---------------------------------------------------------------------- + +tests/xmltester/tinyxml: + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. + diff -Nru geos-3.1.0/debian/libgeos-3.1.0.dirs geos-3.2.2/debian/libgeos-3.1.0.dirs --- geos-3.1.0/debian/libgeos-3.1.0.dirs 2010-05-14 13:36:26.000000000 +0100 +++ geos-3.2.2/debian/libgeos-3.1.0.dirs 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -usr/lib diff -Nru geos-3.1.0/debian/libgeos-3.1.0.install geos-3.2.2/debian/libgeos-3.1.0.install --- geos-3.1.0/debian/libgeos-3.1.0.install 2010-05-14 13:36:26.000000000 +0100 +++ geos-3.2.2/debian/libgeos-3.1.0.install 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -usr/lib/libgeos-3* diff -Nru geos-3.1.0/debian/libgeos-c++.dirs geos-3.2.2/debian/libgeos-c++.dirs --- geos-3.1.0/debian/libgeos-c++.dirs 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/debian/libgeos-c++.dirs 2010-05-14 13:36:26.000000000 +0100 @@ -0,0 +1 @@ +usr/lib diff -Nru geos-3.1.0/debian/libgeos-c++.install geos-3.2.2/debian/libgeos-c++.install --- geos-3.1.0/debian/libgeos-c++.install 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/debian/libgeos-c++.install 2010-05-14 13:36:26.000000000 +0100 @@ -0,0 +1 @@ +usr/lib/libgeos-* diff -Nru geos-3.1.0/debian/libgeos-dev.install geos-3.2.2/debian/libgeos-dev.install --- geos-3.1.0/debian/libgeos-dev.install 2010-05-14 13:36:26.000000000 +0100 +++ geos-3.2.2/debian/libgeos-dev.install 2010-05-14 13:36:26.000000000 +0100 @@ -1,5 +1,4 @@ usr/bin/geos-config usr/include/* usr/lib/*.a -usr/lib/*.la usr/lib/*.so diff -Nru geos-3.1.0/debian/rules geos-3.2.2/debian/rules --- geos-3.1.0/debian/rules 2010-05-14 13:36:26.000000000 +0100 +++ geos-3.2.2/debian/rules 2010-05-14 13:36:26.000000000 +0100 @@ -16,6 +16,16 @@ DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) +# Guessing geos version, which is required for C++ binding support +VER_MAJOR=$(shell grep ^VERSION_MAJOR configure.in|cut -d= -f2) +VER_MINOR=$(shell grep ^VERSION_MINOR configure.in|cut -d= -f2) +VER_PATCH=$(shell grep ^VERSION_PATCH configure.in|cut -d= -f2|cut -dr -f1) +VER=$(VER_MAJOR).$(VER_MINOR).$(VER_PATCH) +ifeq (..,$(VER)) +$(error configure.in not found or version cannot be guessed) +else +$(info Guessed geos version is $(VER)) +endif CFLAGS = -Wall -g @@ -31,16 +41,10 @@ CONFFLAGS += --disable-inline endif -# shared library versions, option 1 -version=2.0.5 -major=2 -# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so -#version=`ls src/.libs/lib*.so.* | \ -# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` -#major=`ls src/.libs/lib*.so.* | \ -# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` +debian/control: + @sed -e 's/@VERSION@/$(VER)/' debian/control.in >$@ -config.status: configure +config.status: debian/control configure dh_testdir # Add here commands to configure the package. ifneq "$(wildcard /usr/share/misc/config.sub)" "" @@ -58,6 +62,8 @@ --prefix=/usr \ --mandir=\$${prefix}/share/man \ --infodir=\$${prefix}/share/info $(CONFFLAGS) + cp debian/libgeos-c++.install debian/libgeos-$(VER).install + cp debian/libgeos-c++.dirs debian/libgeos-$(VER).dirs #Architecture build: patch build-arch build-indep @@ -82,6 +88,7 @@ [ -f config.sub.bak ] && mv config.sub.bak config.sub || true [ -f config.guess.bak ] && mv config.guess.bak config.guess || true dh_clean + rm -f debian/libgeos-$(VER).install debian/libgeos-$(VER).dirs install: install-indep install-arch install-indep: @@ -108,11 +115,12 @@ dh_install -s --sourcedir=debian/tmp dh_installman -plibgeos-dev debian/geos-config.1 # remove the library from the -dev package - rm $(CURDIR)/debian/libgeos-dev/usr/lib/libgeos-3.1.0.so + rm -f $(CURDIR)/debian/libgeos-dev/usr/lib/libgeos-*.so # debian/libgeos-ruby1.8 mkdir -p debian/libgeos-ruby1.8/usr/lib/ruby/ cp -ax debian/tmp/usr/local/lib/site_ruby/1.8 \ debian/libgeos-ruby1.8/usr/lib/ruby/1.8 + find debian/libgeos-ruby*/usr/lib/ruby -name "*.la" -delete || true # Must not depend on anything. This is to be called by # binary-arch/binary-indep @@ -131,6 +139,9 @@ dh_makeshlibs -V dh_installdeb dh_shlibdeps + for i in $$(grep ^Package: debian/control|cut -d' ' -f2); do \ + echo "geos:Version=$(VER)" >> $$i.substvars; \ + done dh_gencontrol dh_md5sums dh_builddeb @@ -144,4 +155,4 @@ $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch +.PHONY: build clean binary-indep binary-arch binary install install-indep install-arch debian/control diff -Nru geos-3.1.0/depcomp geos-3.2.2/depcomp --- geos-3.1.0/depcomp 2009-03-11 19:13:32.000000000 +0000 +++ geos-3.2.2/depcomp 2010-04-18 16:08:08.000000000 +0100 @@ -1,9 +1,10 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2005-02-09.22 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,9 +17,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -86,12 +85,34 @@ depmode=dashmstdout fi +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" stat=$? if test $stat -eq 0; then : else @@ -178,14 +199,14 @@ ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' -' ' ' >> $depfile - echo >> $depfile +' ' ' >> "$depfile" + echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile + >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -201,34 +222,39 @@ # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u "$@" -M fi stat=$? - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - if test $stat -eq 0; then : else - rm -f "$tmpdepfile" + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done if test -f "$tmpdepfile"; then - outname="$stripped.o" # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile @@ -276,6 +302,51 @@ rm -f "$tmpdepfile" ;; +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. @@ -288,13 +359,13 @@ if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a - # static library. This mecanism is used in libtool 1.4 series to + # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in in $dir.libs/$base.o.d and + # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is @@ -345,7 +416,7 @@ # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -396,32 +467,39 @@ "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift - cleared=no - for arg in "$@"; do + cleared=no eat=no + for arg + do case $cleared in no) set ""; shift cleared=yes ;; esac + if test $eat = yes; then + eat=no + continue + fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done - obj_suffix="`echo $object | sed 's/^.*\././'`" + obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" @@ -441,7 +519,7 @@ # Remove the call to Libtool. if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do + while test "X$1" != 'X--mode=compile'; do shift done shift @@ -467,7 +545,8 @@ done "$@" -E | - sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" @@ -478,13 +557,27 @@ msvisualcpp) # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. + # always write the preprocessed file to stdout. "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + IFS=" " for arg do case "$arg" in + -o) + shift + ;; + $object) + shift + ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift @@ -497,16 +590,23 @@ ;; esac done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + none) exec "$@" ;; @@ -525,5 +625,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff -Nru geos-3.1.0/doc/Doxyfile geos-3.2.2/doc/Doxyfile --- geos-3.1.0/doc/Doxyfile 2009-03-11 19:14:32.000000000 +0000 +++ geos-3.2.2/doc/Doxyfile 2010-04-18 16:08:26.000000000 +0100 @@ -23,7 +23,7 @@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 3.1.0 +PROJECT_NUMBER = 3.2.2 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff -Nru geos-3.1.0/doc/Makefile.in geos-3.2.2/doc/Makefile.in --- geos-3.1.0/doc/Makefile.in 2009-03-11 19:13:32.000000000 +0000 +++ geos-3.2.2/doc/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -SOURCES = $(example_SOURCES) - -srcdir = @srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +42,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,33 +55,31 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = Doxyfile +CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_example_OBJECTS = example.$(OBJEXT) example_OBJECTS = $(am_example_OBJECTS) -am__DEPENDENCIES_1 = $(top_builddir)/source/libgeos.la -example_DEPENDENCIES = $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +example_DEPENDENCIES = $(LIBS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(example_SOURCES) DIST_SOURCES = $(example_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -top_srcdir = @top_srcdir@ -top_builddir = @top_builddir@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -106,21 +107,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -129,20 +126,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = $(top_builddir)/source/libgeos.la LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -163,6 +168,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -174,19 +180,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -198,36 +198,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ example_SOURCES = example.cpp example_LDADD = $(LIBS) INCLUDES = -I$(top_srcdir)/source/headers @@ -241,14 +254,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu doc/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -266,18 +279,21 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) @rm -f example$(EXEEXT) - $(CXXLINK) $(example_LDFLAGS) $(example_OBJECTS) $(example_LDADD) $(LIBS) + $(CXXLINK) $(example_OBJECTS) $(example_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -288,22 +304,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/example.Po@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -314,82 +330,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -415,6 +434,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -428,7 +448,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -436,18 +456,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -468,19 +508,22 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool clean-noinstPROGRAMS 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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-am doxygen-html: Doxyfile @@ -488,6 +531,7 @@ clean-generic: rm -Rf doxygen_docs + # 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 -Nru geos-3.1.0/INSTALL geos-3.2.2/INSTALL --- geos-3.1.0/INSTALL 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/INSTALL 2009-12-08 22:47:47.000000000 +0000 @@ -1,11 +1,13 @@ Compatibility notes =================== -GCC 2.95.2 seems to lack the 'sstream' header file required -to build GEOS. GCC 2.96 is known to work. +OS/X 10.6, compile with gcc-4.0 rather than the default gcc that +comes with XCode. + + CC=gcc-4.0 CXX=g++-4.0 ./configure Quickstart -================== +========== As root: diff -Nru geos-3.1.0/install-sh geos-3.2.2/install-sh --- geos-3.1.0/install-sh 2009-03-11 19:13:28.000000000 +0000 +++ geos-3.2.2/install-sh 2010-04-18 16:08:07.000000000 +0100 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2005-02-02.21 +scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -39,38 +39,68 @@ # when there is no Makefile. # # This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. +# from scratch. + +nl=' +' +IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi -# put in absolute paths if you don't have them in your path; or use env. vars. +# Put in absolute file names if you don't have them in your path; +# or use environment vars. -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 -chmodcmd="$chmodprog 0755" -chowncmd= chgrpcmd= -stripcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog rmcmd="$rmprog -f" -mvcmd="$mvprog" +stripcmd= + src= dst= dir_arg= -dstarg= +dst_arg= + +copy_on_change=false no_target_directory= -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... @@ -80,81 +110,86 @@ In the 4th, create DIRECTORIES. Options: --c (ignored) --d create directories instead of installing files. --g GROUP $chgrpprog installed files to GROUP. --m MODE $chmodprog installed files to MODE. --o USER $chownprog installed files to USER. --s $stripprog installed files. --t DIRECTORY install into DIRECTORY. --T report an error if DSTFILE is a directory. ---help display this help and exit. ---version display version info and exit. + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG " -while test -n "$1"; do +while test $# -ne 0; do case $1 in - -c) shift - continue;; + -c) ;; - -d) dir_arg=true - shift - continue;; + -C) copy_on_change=true;; + + -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; + shift;; --help) echo "$usage"; exit $?;; - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t) dstarg=$2 - shift - shift - continue;; - - -T) no_target_directory=true - shift - continue;; + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; - *) # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - test -n "$dir_arg$dstarg" && break - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done + --) shift break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; esac + shift done -if test -z "$1"; then +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 @@ -164,24 +199,47 @@ exit 0 fi +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + for src do # Protect names starting with `-'. case $src in - -*) src=./$src ;; + -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src - src= - - if test -d "$dst"; then - mkdircmd=: - chmodcmd= - else - mkdircmd=$mkdirprog - fi + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. @@ -190,71 +248,199 @@ exit 1 fi - if test -z "$dstarg"; then + if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi - dst=$dstarg + dst=$dst_arg # Protect names starting with `-'. case $dst in - -*) dst=./$dst ;; + -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then - echo "$0: $dstarg: Is a directory" >&2 + echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi - dst=$dst/`basename "$src"` + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? fi fi - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` - - # Make sure that the destination directory exists. + obsolete_mkdir_used=false - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - shift - IFS=$oIFS + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac - pathcomp= + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test -d "$pathcomp" || exit + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi - pathcomp=$pathcomp/ - done + fi fi if test -n "$dir_arg"; then - $doit $mkdircmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else - dstfile=`basename "$dst"` # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ @@ -262,10 +448,9 @@ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - trap '(exit $?); exit' 1 2 13 15 # Copy the file name to the temp name. - $doit $cpprog "$src" "$dsttmp" && + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # @@ -273,51 +458,63 @@ # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ - || { - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit 1 - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - } - } - fi || { (exit 1); exit 1; } -done + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit 0 -} + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff -Nru geos-3.1.0/ltmain.sh geos-3.2.2/ltmain.sh --- geos-3.1.0/ltmain.sh 2005-11-22 13:18:02.000000000 +0000 +++ geos-3.2.2/ltmain.sh 2010-04-18 16:08:03.000000000 +0100 @@ -1,30 +1,174 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun configure. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# This program is free software; you can redistribute it and/or modify +# Generated from ltmain.m4sh. + +# ltmain.sh (GNU libtool) 2.2.6 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # -# This program is distributed in the hope that it will be useful, but +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. # -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print informational messages (default) +# --version print version information +# -h, --help print short or long help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.2.6 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=2.2.6 +TIMESTAMP="" +package_revision=1.3012 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# NLS nuisances: We save the old values to restore during execute mode. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done + +$lt_unset CDPATH + + + + + +: ${CP="cp -f"} +: ${ECHO="echo"} +: ${EGREP="/usr/bin/grep -E"} +: ${FGREP="/usr/bin/grep -F"} +: ${GREP="/usr/bin/grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="/opt/local/bin/gsed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} -basename="s,^.*/,,g" +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +# Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of @@ -34,36 +178,396 @@ progpath="$0" # The name of this program: -progname=`echo "$progpath" | $SED $basename` -modename="$progname" +# In the unlikely event $progname began with a '-', it would play havoc with +# func_echo (imagine progname=-n), so we prepend ./ in that case: +func_dirname_and_basename "$progpath" +progname=$func_basename_result +case $progname in + -*) progname=./$progname ;; +esac -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac -PROGRAM=ltmain.sh -PACKAGE=libtool -VERSION=1.5.16 -TIMESTAMP=" (1.1220.2.235 2005/04/25 18:13:26)" +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes. -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname${mode+: }$mode: $*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` + done + my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "X$my_tmpdir" | $Xsed +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "X$1" | $Xsed \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + + + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $SED -n '/^# Usage:/,/# -h/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + $ECHO + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help +# Echo long help message to standard output and exit. +func_help () +{ + $SED -n '/^# Usage:/,/# Report bugs to/ { + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + }' < "$progpath" + exit $? +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + func_error "missing argument for $1" + exit_cmd=exit +} -# Check that we have a working $echo. +exit_cmd=: + + + + + +# Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then + # Yippee, $ECHO works! : else - # Restart under the correct shell, and then maybe $echo will work. + # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi @@ -76,151 +580,461 @@ exit $EXIT_SUCCESS fi -default_mode= -help="Try \`$progname --help' for more information." magic="%%%MAGIC variable%%%" -mkdir="mkdir" -mv="mv -f" -rm="rm -f" - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' -# test EBCDIC or ASCII -case `echo A|tr A '\301'` in - A) # EBCDIC based system - SP2NL="tr '\100' '\n'" - NL2SP="tr '\r\n' '\100\100'" - ;; - *) # Assume ASCII based system - SP2NL="tr '\040' '\012'" - NL2SP="tr '\015\012' '\040\040'" - ;; -esac - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -# We save the old values to restore during execute mode. -if test "${LC_ALL+set}" = set; then - save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL -fi -if test "${LANG+set}" = set; then - save_LANG="$LANG"; LANG=C; export LANG -fi - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - $echo "$modename: not configured to build any kind of library" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE -fi +magic_exe="%%%MAGIC EXE variable%%%" # Global variables. -mode=$default_mode +# $mode is unset nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= execute_dlfiles= +preserve_args= lo2o="s/\\.lo\$/.${objext}/" o2lo="s/\\.${objext}\$/.lo/" -quote_scanset='[[~#^*{};<>?'"'"' ]' +extracted_archives= +extracted_serial=0 -##################################### -# Shell function definitions: -# This seems to be the best place for them +opt_dry_run=false +opt_duplicate_deps=false +opt_silent=false +opt_debug=: -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -func_win32_libid () +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () { - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` - if test "X$win32_nmres" = "Ximport" ; then - win32_libid_type="x86 archive import" + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + $ECHO "host: $host" + if test "$build_libtool_libs" = yes; then + $ECHO "enable shared libraries" + else + $ECHO "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $ECHO "enable static libraries" + else + $ECHO "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" else - win32_libid_type="x86 archive static" + func_error "ignoring unknown tag $tagname" fi - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" ;; - esac - ;; esac - $echo $win32_libid_type } +# Parse options once, thoroughly. This comes as soon as possible in +# the script to make things like `libtool --version' happen quickly. +{ -# func_infer_tag arg -# Infer tagged configuration to use if any are available and + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Parse non-mode specific arguments: + while test "$#" -gt 0; do + opt="$1" + shift + + case $opt in + --config) func_config ;; + + --debug) preserve_args="$preserve_args $opt" + func_echo "enabling shell trace mode" + opt_debug='set -x' + $opt_debug + ;; + + -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break + execute_dlfiles="$execute_dlfiles $1" + shift + ;; + + --dry-run | -n) opt_dry_run=: ;; + --features) func_features ;; + --finish) mode="finish" ;; + + --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break + case $1 in + # Valid mode arguments: + clean) ;; + compile) ;; + execute) ;; + finish) ;; + install) ;; + link) ;; + relink) ;; + uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; + esac + + mode="$1" + shift + ;; + + --preserve-dup-deps) + opt_duplicate_deps=: ;; + + --quiet|--silent) preserve_args="$preserve_args $opt" + opt_silent=: + ;; + + --verbose| -v) preserve_args="$preserve_args $opt" + opt_silent=false + ;; + + --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break + preserve_args="$preserve_args $opt $1" + func_enable_tag "$1" # tagname is set here + shift + ;; + + # Separate optargs to long options: + -dlopen=*|--mode=*|--tag=*) + func_opt_split "$opt" + set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} + shift + ;; + + -\?|-h) func_usage ;; + --help) opt_help=: ;; + --version) func_version ;; + + -*) func_fatal_help "unrecognized option \`$opt'" ;; + + *) nonopt="$opt" + break + ;; + esac + done + + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_duplicate_deps + ;; + esac + + # Having warned about all mis-specified options, bail out if + # anything was wrong. + $exit_cmd $EXIT_FAILURE +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +## ----------- ## +## Main. ## +## ----------- ## + +$opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + test -z "$mode" && func_fatal_error "error: you must specify a MODE." + + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$mode' for more information." +} + + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_ltwrapper_scriptname_result="" + if func_ltwrapper_executable_p "$1"; then + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" + fi +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { + $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do - # Double-quote args containing other shell metacharacters. - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done + # Double-quote args containing other shell metacharacters. + func_quote_for_eval "$arg" + CC_quoted="$CC_quoted $func_quote_for_eval_result" + done case "$@ " in - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. @@ -234,11 +1048,10 @@ # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit $EXIT_FAILURE -# else -# $echo "$modename: using $tagname tagged configuration" + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" fi ;; esac @@ -246,402 +1059,123 @@ } -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" - $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' else - $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 - exit $EXIT_FAILURE + write_lobj=none fi -} - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - my_status="" - $show "${rm}r $my_gentop" - $run ${rm}r "$my_gentop" - $show "$mkdir $my_gentop" - $run $mkdir "$my_gentop" - my_status=$? - if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then - exit $my_status + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none fi - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` - my_xdir="$my_gentop/$my_xlib" + $opt_dry_run || { + cat >${write_libobj}T </dev/null | $EGREP Architectures 2>/dev/null` - if test -n "$darwin_arches"; then - darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - $show "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we have a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` - lipo -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - ${rm}r unfat-$$ - cd "$darwin_orig_dir" - else - cd "$darwin_orig_dir" - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - fi # $run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - func_extract_archives_result="$my_oldobjs" -} -# End of Shell function definitions -##################################### +# Name of the PIC object. +pic_object=$write_lobj -# Darwin sucks -eval std_shrext=\"$shrext_cmds\" +# Name of the non-PIC object +non_pic_object=$write_oldobj -# Parse our command line options once, thoroughly. -while test "$#" -gt 0 -do - arg="$1" - shift +EOF + $MV "${write_libobj}T" "${write_libobj}" + } +} - case $arg in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - execute_dlfiles) - execute_dlfiles="$execute_dlfiles $arg" - ;; - tag) - tagname="$arg" - preserve_args="${preserve_args}=$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit $EXIT_FAILURE + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal ;; - esac - case $tagname in - CC) - # Don't test for the "default" C tag, as we know, it's there, but - # not specially marked. - ;; - *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi + target ) + libobj="$arg" + arg_mode=normal + continue ;; - esac - ;; - *) - eval "$prev=\$arg" - ;; - esac - prev= - prevopt= - continue - fi + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; - # Have we seen a non-optional argument yet? - case $arg in - --help) - show_help=yes - ;; + -pie | -fpie | -fPIE) + pie_flag="$pie_flag $arg" + continue + ;; - --version) - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - $echo - $echo "Copyright (C) 2005 Free Software Foundation, Inc." - $echo "This is free software; see the source for copying conditions. There is NO" - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit $? - ;; + -shared | -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath - # Now print the configurations for the tags. - for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" - done - exit $? - ;; + -no-suppress) + suppress_opt=no + continue + ;; - --debug) - $echo "$progname: enabling shell trace mode" - set -x - preserve_args="$preserve_args $arg" - ;; + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. - --dry-run | -n) - run=: - ;; - - --features) - $echo "host: $host" - if test "$build_libtool_libs" = yes; then - $echo "enable shared libraries" - else - $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - $echo "enable static libraries" - else - $echo "disable static libraries" - fi - exit $? - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --preserve-dup-deps) duplicate_deps="yes" ;; - - --quiet | --silent) - show=: - preserve_args="$preserve_args $arg" - ;; - - --tag) prevopt="--tag" prev=tag ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - preserve_args="$preserve_args --tag" - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE -fi - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do - case $arg in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case $mode in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - - for arg - do - case "$arg_mode" in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit $EXIT_FAILURE - fi - arg_mode=target - continue - ;; - - -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; - esac - lastarg="$lastarg $arg" - done - IFS="$save_ifs" - lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_quote_for_eval "$arg" + lastarg="$lastarg $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result # Add the arguments to base_compile. base_compile="$base_compile $lastarg" continue ;; - * ) + *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # @@ -653,64 +1187,42 @@ esac # case $arg_mode # Aesthetically quote the previous argument. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, and some SunOS ksh mistreat backslash-escaping - # in scan sets (worked around with variable expansion), - # and furthermore cannot handle '|' '&' '(' ')' in scan sets - # at all, so we specify them separately. - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - lastarg="\"$lastarg\"" - ;; - esac - - base_compile="$base_compile $lastarg" + func_quote_for_eval "$lastarg" + base_compile="$base_compile $func_quote_for_eval_result" done # for arg case $arg_mode in arg) - $echo "$modename: you must specify an argument for -Xcompile" - exit $EXIT_FAILURE + func_fatal_error "you must specify an argument for -Xcompile" ;; target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "you must specify a target with \`-o'" ;; *) # Get the name of the library object. - [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSifmso]' case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.ii) xform=ii ;; - *.class) xform=class ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - *.java) xform=java ;; + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.obj | *.sx) + func_xform "$libobj" + libobj=$func_xform_result + ;; esac - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - case $libobj in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit $EXIT_FAILURE + func_fatal_error "cannot determine name of library object from \`$libobj'" ;; esac @@ -718,7 +1230,15 @@ for arg in $later; do case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + -static) + build_libtool_libs=no build_old_libs=yes continue ;; @@ -735,29 +1255,17 @@ esac done - qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` - case $qlibobj in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - qlibobj="\"$qlibobj\"" ;; - esac - if test "X$libobj" != "X$qlibobj"; then - $echo "$modename: libobj name \`$libobj' may not contain shell special characters." - exit $EXIT_FAILURE - fi - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir= - else - xdir=$xdir/ - fi + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then @@ -766,12 +1274,9 @@ removelist="$lobj $libobj ${libobj}T" fi - $run $rm $removelist - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in - cygwin* | mingw* | pw32* | os2*) + cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac @@ -783,10 +1288,8 @@ # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 else output_obj= need_locks=no @@ -796,13 +1299,13 @@ # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then - until $run ln "$progpath" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then - $echo "\ + $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` @@ -813,34 +1316,22 @@ avoid parallel builds (make -j) in this platform, or get a better compiler." - $run $rm $removelist + $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi - $echo "$srcfile" > "$lockfile" + removelist="$removelist $output_obj" + $ECHO "$srcfile" > "$lockfile" fi + $opt_dry_run || $RM $removelist + removelist="$removelist $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi - qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` - case $qsrcfile in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - qsrcfile="\"$qsrcfile\"" ;; - esac - - $run $rm "$libobj" "${libobj}T" - - # Create a libtool object file (analogous to a ".la" file), - # but don't create it if we're doing a dry run. - test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ + $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` @@ -893,45 +1371,27 @@ avoid parallel builds (make -j) in this platform, or get a better compiler." - $run $rm $removelist + $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - $show "$mv $output_obj $lobj" - if $run $mv $output_obj $lobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi - # Append the name of the PIC object to the libtool object file. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ + $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` @@ -965,5119 +1420,6777 @@ avoid parallel builds (make -j) in this platform, or get a better compiler." - $run $rm $removelist + $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi + fi - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_libs=yes - break - ;; - esac - done +This mode accepts the following additional options: - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test - ;; - *) qarg=$arg ;; - esac - libtool_args="$libtool_args $qarg" +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; - case $prev in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit $EXIT_FAILURE - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat $save_arg` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= +Automatically set library path, then run a program. - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac +This mode accepts the following additional options: - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi + -dlopen FILE add the directory containing FILE to the library path - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi +This mode sets the library path environment variable according to \`-dlopen' +flags. - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi +Then, COMMAND is executed, with ARGS as arguments." + ;; - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi +Complete the installation of libtool libraries. - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" +Each LIBDIR is a directory that contains libtool libraries. - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - done - else - $echo "$modename: link input file \`$save_arg' does not exist" - exit $EXIT_FAILURE - fi - arg=$save_arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - compile_command="$compile_command $wl$qarg" - finalize_command="$finalize_command $wl$qarg" - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - darwin_framework) - compiler_flags="$compiler_flags $arg" - prev= - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" +Install executables or libraries. - prevarg="$arg" +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. - case $arg in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; +The following components of INSTALL-COMMAND are treated specially: - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; + -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -avoid-version) - avoid_version=yes - continue - ;; +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; - -dlopen) - prev=dlfiles - continue - ;; + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -dlpreopen) - prev=dlprefiles - continue - ;; +Link object files or libraries together to form another library, or to +create an executable program. - -export-dynamic) - export_dynamic=yes - continue - ;; +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" - exit $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; +The following components of LINK-COMMAND are treated specially: - -framework) - prev=darwin_framework - compiler_flags="$compiler_flags $arg" - continue - ;; + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface - -inst-prefix-dir) - prev=inst_prefix - continue - ;; +All other options (arguments beginning with \`-') are ignored. - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; - esac - continue - ;; +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - exit $EXIT_FAILURE - fi - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - ;; - esac - continue - ;; +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-mingw* | *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs -framework System" - continue - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - -model) - compile_command="$compile_command $arg" - compiler_flags="$compiler_flags $arg" - finalize_command="$finalize_command $arg" - prev=xcompiler - continue - ;; +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - continue - ;; + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -module) - module=yes - continue - ;; +Remove libraries from an installation directory. - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m* pass through architecture-specific compiler args for GCC - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - if test "$with_gcc" = "yes" ; then - compiler_flags="$compiler_flags $arg" - fi - continue +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." ;; - -shrext) - prev=shrext - continue - ;; + *) + func_fatal_help "invalid operation mode \`$mode'" + ;; + esac - -no-fast-install) - fast_install=no - continue - ;; + $ECHO + $ECHO "Try \`$progname --help' for more information about other modes." - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - # The PATH hackery in wrapper scripts is required on Windows - # in order for the loader to find any dlls it needs. - $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 - $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; + exit $? +} - -no-undefined) - allow_undefined=no - continue - ;; + # Now that we've collected a possible --mode arg, show help if necessary + $opt_help && func_mode_help - -objectlist) - prev=objectlist - continue - ;; - -o) prev=output ;; +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" - -precious-files-regex) - prev=precious_regex - continue - ;; + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" - -release) - prev=release - continue - ;; + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" - -rpath) - prev=rpath - continue - ;; + # Read the libtool library. + dlname= + library_names= + func_source "$file" - -R) - prev=xrpath - continue - ;; + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; + func_dirname "$file" "" "." + dir="$func_dirname_result" - -static) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi ;; - -thread-safe) - thread_safe=yes - continue + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" ;; - -version-info) - prev=vinfo - continue - ;; - -version-number) - prev=vinfo - vinfo_number=yes + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; + esac - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" - -Wl,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $wl$flag" - linker_flags="$linker_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done - -Xcompiler) - prev=xcompiler - continue - ;; + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" - -Xlinker) - prev=xlinker - continue + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_quote_for_eval "$file" + args="$args $func_quote_for_eval_result" + done - -XCClinker) - prev=xcclinker - continue - ;; + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; - esac - ;; + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done - *.$objext) - # A standard object. - objs="$objs $arg" - ;; + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + $ECHO "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} - *.lo) - # A libtool-controlled object. +test "$mode" = execute && func_mode_execute ${1+"$@"} - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libdirs="$nonopt" + admincmds= - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi + $ECHO "X----------------------------------------------------------------------" | $Xsed + $ECHO "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + $ECHO + $ECHO "If you ever happen to want to link against installed libraries" + $ECHO "in a given directory, LIBDIR, you must either use libtool, and" + $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" + $ECHO "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" + $ECHO " during execution" + fi + if test -n "$runpath_var"; then + $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" + $ECHO " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $ECHO - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi + $ECHO "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" + $ECHO "pages." + ;; + *) + $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + $ECHO "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS +} - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" +test "$mode" = finish && func_mode_finish ${1+"$@"} - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $ECHO "X$nonopt" | $GREP shtool >/dev/null; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - ;; + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog="$install_prog$func_quote_for_eval_result" - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg continue - ;; - - *.la) - # A libtool-controlled library. + fi - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then prev= else - deplibs="$deplibs $arg" + dest=$arg + continue fi - continue ;; + esac - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; - esac - ;; - esac # arg + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog="$install_prog $func_quote_for_eval_result" + done - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done # argument parsing loop + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi fi - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - # Create the object directory. - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test "$status" -ne 0 && test ! -d "$output_objdir"; then - exit $status - fi + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" fi - - # Determine the type of output - case $output in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplications in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; *) - duplicate_compiler_generated_deps=$duplicate_deps + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done ;; esac - specialdeplibs= - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if test "X$duplicate_deps" = "Xyes" ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - case $linkmode in - lib) - passes="conv link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit $EXIT_FAILURE - ;; + *.la) + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - for pass in $passes; do - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else - compiler_flags="$compiler_flags $deplib" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if (${SED} -e '2q' $lib | - grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - library_names= - old_library= - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi fi - ;; # -l - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - if eval $echo \"$deplib\" 2>/dev/null \ - | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because the file extensions .$libext of this argument makes me believe" - $echo "*** that it is just a static archive that I should not used here." - else - $echo - $echo "*** Warning: Linking the shared library $output against the" - $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue + *.$objext) + staticdest="$destfile" + destfile= ;; - %DEPLIBS%) - alldeplibs=yes - continue + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; - esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib'" 1>&2 - exit $EXIT_FAILURE + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi + exit $EXIT_SUCCESS + ;; - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" fi - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac - # Read the .la file - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi + func_source "$wrapper" - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit $EXIT_FAILURE - fi - continue - fi # $pass = conv + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi + relink_command= + func_source "$wrapper" - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } else - newdlfiles="$newdlfiles $lib" + # Install the binary that we compiled earlier. + file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi - continue - fi # $pass = dlopen + fi - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - abs_ladir="$ladir" - fi + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac ;; esac - laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - $echo "$modename: warning: library \`$lib' was moved." 1>&2 - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen + # Set up the ranlib parameters. + oldlib="$destdir/$name" - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi +test "$mode" = install && func_mode_install ${1+"$@"} - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_verbose "extracting global C symbols from \`$progfile'" + $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue + } fi fi - link_static=no # Whether the deplib will be linked statically - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" fi - # This is a shared library - # Warn about portability, can't link against -module's on - # some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo - if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" - else - $echo "*** Warning: Linking the shared library $output against the loadable module" - fi - $echo "*** $linklib is not portable!" + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - realname="$2" - shift; shift - libname=`eval \\$echo \"$libname_spec\"` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi + $ECHO >> "$output_objdir/$my_dlsyms" "\ - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - soname=`$echo $soroot | ${SED} -e 's/^.*\///'` - newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +" + case $host in + *cygwin* | *mingw* | *cegcc* ) + $ECHO >> "$output_objdir/$my_dlsyms" "\ +/* DATA imports from DLLs on WIN32 con't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs. */" + lt_dlsym_const= ;; + *osf5*) + echo >> "$output_objdir/$my_dlsyms" "\ +/* This system does not cope well with relocations in const data */" + lt_dlsym_const= ;; + *) + lt_dlsym_const=const ;; + esac - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi + $ECHO >> "$output_objdir/$my_dlsyms" "\ +extern $lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +$lt_dlsym_const lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + $ECHO >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags="$symtab_cflags $arg" ;; + esac + done - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5* ) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a module then we can not link against - # it, someone is ignoring the new warnings I added - if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo - $echo "** And there doesn't seem to be a static archive available" - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit $EXIT_FAILURE - fi + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi + ;; + *) + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi +} - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - $echo - $echo "*** Warning: This system can not link to static lib archive $lib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - $echo "*** But as you try to build a module library, libtool will still create " - $echo "*** a static module, that should work as long as the dlopening application" - $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - case $deplib in - -L*) path="$deplib" ;; - *.la) - dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$deplib" && dir="." - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - fi - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then - path="$absdir/$objdir" - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= - case $host in - *-*-darwin*) - # we do not want to link against static libs, - # but need to link against shared - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - fi - # do not add paths which are already there - case " $newlib_search_path " in - *" $path "*) ;; - *) newlib_search_path="$newlib_search_path $path";; - esac - fi - path="" - ;; - *) - path="-L$path" - ;; - esac - ;; - -l*) - case $host in - *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" - ;; - *) continue ;; - esac - ;; - *) continue ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$depdepl $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; + func_mkdir_p "$my_xdir" - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run ;; *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi + func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit $EXIT_FAILURE - else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" - $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi + func_extract_archives_result="$my_oldobjs" +} - if test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 - fi - set dummy $rpath - if test "$#" -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes +# func_emit_wrapper_part1 [arg=no] +# +# Emit the first part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part1 () +{ + func_emit_wrapper_part1_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part1_arg1=$1 fi - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi + $ECHO "\ +#! $SHELL - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - case $vinfo_number in - yes) - number_major="$2" - number_minor="$3" - number_revision="$4" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows) - current=`expr $number_major + $number_minor` - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - current=`expr $number_major + $number_minor - 1` - age="$number_minor" - revision="$number_minor" - ;; - esac - ;; - no) - current="$2" - revision="$3" - age="$4" - ;; - esac +relink_command=\"$relink_command\" - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + ECHO=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$ECHO works! + : + else + # Restart under the correct shell, and then maybe \$ECHO will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $ECHO "\ - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - fi + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; + file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done +" +} +# end: func_emit_wrapper_part1 - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` - verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - ;; +# func_emit_wrapper_part2 [arg=no] +# +# Emit the second part of a libtool wrapper script on stdout. +# For more information, see the description associated with +# func_emit_wrapper(), below. +func_emit_wrapper_part2 () +{ + func_emit_wrapper_part2_arg1=no + if test -n "$1" ; then + func_emit_wrapper_part2_arg1=$1 + fi + + $ECHO "\ + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" - irix | nonstopux) - major=`expr $current - $age + 1` + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" + file=\"\$\$-\$program\" - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="$verstring_prefix$major.$iface:$verstring" - done + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; + $ECHO "\ - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi - osf) - major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done + $ECHO "\ - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; + if test -f \"\$progdir/\$program\"; then" - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - major=`expr $current - $age` - versuffix="-$major" + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" ;; *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE + $ECHO "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" ;; esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} +# end: func_emit_wrapper_part2 - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - fi - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$echo "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - if test -n "$removelist"; then - $show "${rm}r $removelist" - $run ${rm}r $removelist +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=no + if test -n "$1" ; then + func_emit_wrapper_arg1=$1 fi - fi - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" + # split this up so that func_emit_cwrapperexe_src + # can call each part independently. + func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" + func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" +} - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - # Eliminate all temporary directories. - for path in $notinst_path; do - lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` - deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` - dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` - done +# func_to_host_path arg +# +# Convert paths to host format when used with build tools. +# Intended for use with "native" mingw (where libtool itself +# is running under the msys shell), or in the following cross- +# build environments: +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# where wine is equipped with the `winepath' executable. +# In the native mingw case, the (msys) shell automatically +# converts paths for any non-msys applications it launches, +# but that facility isn't available from inside the cwrapper. +# Similar accommodations are necessary for $host mingw and +# $build cygwin. Calling this function does no harm for other +# $host/$build combinations not listed above. +# +# ARG is the path (on $build) that should be converted to +# the proper representation for $host. The result is stored +# in $func_to_host_path_result. +func_to_host_path () +{ + func_to_host_path_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + case $build in + *mingw* ) # actually, msys + # awkward: cmd appends spaces to result + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_path_tmp1=`( cmd //c echo "$1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_path_tmp1=`cygpath -w "$1"` + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # Unfortunately, winepath does not exit with a non-zero + # error code, so we are forced to check the contents of + # stdout. On the other hand, if the command is not + # found, the shell will set an exit code of 127 and print + # *an error message* to stdout. So we must check for both + # error code of zero AND non-empty stdout, which explains + # the odd construction: + func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` + if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then + func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ + $SED -e "$lt_sed_naive_backslashify"` + else + # Allow warning below. + func_to_host_path_result="" + fi + ;; + esac + if test -z "$func_to_host_path_result" ; then + func_error "Could not determine host path corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_path_result="$1" + fi + ;; + esac + fi +} +# end: func_to_host_path + +# func_to_host_pathlist arg +# +# Convert pathlists to host format when used with build tools. +# See func_to_host_path(), above. This function supports the +# following $build/$host combinations (but does no harm for +# combinations not listed here): +# $build $host +# mingw (msys) mingw [e.g. native] +# cygwin mingw +# *nix + wine mingw +# +# Path separators are also converted from $build format to +# $host format. If ARG begins or ends with a path separator +# character, it is preserved (but converted to $host format) +# on output. +# +# ARG is a pathlist (on $build) that should be converted to +# the proper representation on $host. The result is stored +# in $func_to_host_pathlist_result. +func_to_host_pathlist () +{ + func_to_host_pathlist_result="$1" + if test -n "$1" ; then + case $host in + *mingw* ) + lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_to_host_pathlist_tmp2="$1" + # Once set for this call, this variable should not be + # reassigned. It is used in tha fallback case. + func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e 's|^:*||' -e 's|:*$||'` + case $build in + *mingw* ) # Actually, msys. + # Awkward: cmd appends spaces to result. + lt_sed_strip_trailing_spaces="s/[ ]*\$//" + func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + *cygwin* ) + func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ + $SED -e "$lt_sed_naive_backslashify"` + ;; + * ) + # unfortunately, winepath doesn't convert pathlists + func_to_host_pathlist_result="" + func_to_host_pathlist_oldIFS=$IFS + IFS=: + for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do + IFS=$func_to_host_pathlist_oldIFS + if test -n "$func_to_host_pathlist_f" ; then + func_to_host_path "$func_to_host_pathlist_f" + if test -n "$func_to_host_path_result" ; then + if test -z "$func_to_host_pathlist_result" ; then + func_to_host_pathlist_result="$func_to_host_path_result" + else + func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" + fi + fi + fi + IFS=: + done + IFS=$func_to_host_pathlist_oldIFS + ;; + esac + if test -z "$func_to_host_pathlist_result" ; then + func_error "Could not determine the host path(s) corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This may break if $1 contains DOS-style drive + # specifications. The fix is not to complicate the expression + # below, but for the user to provide a working wine installation + # with winepath so that path translation in the cross-to-mingw + # case works properly. + lt_replace_pathsep_nix_to_dos="s|:|;|g" + func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ + $SED -e "$lt_replace_pathsep_nix_to_dos"` + fi + # Now, add the leading and trailing path separators back + case "$1" in + :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" + ;; + esac + case "$1" in + *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" + ;; + esac + ;; + esac + fi +} +# end: func_to_host_pathlist + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +# define setmode _setmode +#else +# include +# include +# ifdef __CYGWIN__ +# include +# define HAVE_SETENV +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +#ifdef _MSC_VER +# define S_IXUSR _S_IEXEC +# define stat _stat +# ifndef _INTPTR_T_DEFINED +# define intptr_t int +# endif +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifdef __CYGWIN__ +# define FOPEN_WB "wb" +#endif + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#undef LTWRAPPER_DEBUGPRINTF +#if defined DEBUGWRAPPER +# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args +static void +ltwrapper_debugprintf (const char *fmt, ...) +{ + va_list args; + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); +} +#else +# define LTWRAPPER_DEBUGPRINTF(args) +#endif + +const char *program_name = NULL; + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_fatal (const char *message, ...); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_opt_process_env_set (const char *arg); +void lt_opt_process_env_prepend (const char *arg); +void lt_opt_process_env_append (const char *arg); +int lt_split_name_value (const char *arg, char** name, char** value); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); + +static const char *script_text_part1 = +EOF + + func_emit_wrapper_part1 yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ "/' -e 's/$/\\n"/' + echo ";" + cat <"))); + for (i = 0; i < newargc; i++) + { + LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); + } + +EOF + + case $host_os in + mingw*) + cat <<"EOF" + /* execv doesn't actually work on mingw as expected on unix */ + rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); + if (rval == -1) + { + /* failed to start process */ + LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); + return 127; + } + return rval; +EOF + ;; + *) + cat <<"EOF" + execv (lt_argv_zero, newargz); + return rval; /* =127, but avoids unused variable warning */ +EOF + ;; + esac + + cat <<"EOF" +} + +void * +xmalloc (size_t num) +{ + void *p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), + string) : NULL; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char) name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable (const char *path) +{ + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", + path ? (*path ? path : "EMPTY!") : "NULL!")); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", + wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", + tmp_pathspec)); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + char *errstr = strerror (errno); + lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal ("Could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} + +void +lt_setenv (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", + (name ? name : ""), + (value ? value : ""))); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +int +lt_split_name_value (const char *arg, char** name, char** value) +{ + const char *p; + int len; + if (!arg || !*arg) + return 1; + + p = strchr (arg, (int)'='); + + if (!p) + return 1; + + *value = xstrdup (++p); + + len = strlen (arg) - strlen (*value); + *name = XMALLOC (char, len); + strncpy (*name, arg, len-1); + (*name)[len - 1] = '\0'; + + return 0; +} + +void +lt_opt_process_env_set (const char *arg) +{ + char *name = NULL; + char *value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); + } + + lt_setenv (name, value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_prepend (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_opt_process_env_append (const char *arg) +{ + char *name = NULL; + char *value = NULL; + char *new_value = NULL; + + if (lt_split_name_value (arg, &name, &value) != 0) + { + XFREE (name); + XFREE (value); + lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); + } + + new_value = lt_extend_str (getenv (name), value, 1); + lt_setenv (name, new_value); + XFREE (new_value); + XFREE (name); + XFREE (value); +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + (name ? name : ""), + (value ? value : ""))); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + + +EOF +} +# end: func_emit_cwrapperexe_src + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs="$deplibs $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs="$weak_libs $arg" + prev= + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname '-L' '' "$arg" + dir=$func_stripname_result + if test -z "$dir"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg="$arg $wl$func_quote_for_eval_result" + compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" + linker_flags="$linker_flags $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" fi + done # argument parsing loop - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_duplicate_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac - done + fi + libs="$libs $deplib" + done - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs -framework System" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac - fi + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + case $lib in + *.la) func_source "$lib" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs="$deplibs $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; + esac + fi + fi + continue ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for file magic test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a file magic. Last file checked: $potlib" - fi - fi + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" fi - done # Gone through all deplibs. + func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + dir=$func_stripname_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue ;; - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do - name="`expr $a_deplib : '-l\(.*\)'`" - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval $echo \"$potent_lib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a regex pattern. Last file checked: $potlib" - fi + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $ECHO + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because the file extensions .$libext of this argument makes me believe" + $ECHO "*** that it is just a static archive that I should not use here." + else + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` - done + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" fi - if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ - | grep . >/dev/null; then - $echo - if test "X$deplibs_check_method" = "Xnone"; then - $echo "*** Warning: inter-library dependencies are not supported in this platform." - else - $echo "*** Warning: inter-library dependencies are not known to be supported." + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac fi - $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes + tmp_libs="$tmp_libs $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi ;; esac + func_basename "$lib" + laname="$func_basename_result" - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - $echo - $echo "*** Warning: libtool could not satisfy all declared inter-library" - $echo "*** dependencies of module $libname. Therefore, libtool will create" - $echo "*** a static module, that should work as long as the dlopening" - $echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" else - $echo "*** The inter-library dependencies that have been dropped here will be" - $echo "*** automatically added whenever a program is linked with this library" - $echo "*** or is declared to -dlopen it." + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result - if test "$allow_undefined" = no; then - $echo - $echo "*** Since this library must not contain undefined symbols," - $echo "*** because either the platform does not support them or" - $echo "*** it was explicitly requested with -no-undefined," - $echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass fi + continue fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + newlib_search_path="$newlib_search_path $func_stripname_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath="$temp_rpath$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; + *) finalize_rpath="$finalize_rpath $libdir" esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs="$notinst_deplibs $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break fi done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + $ECHO + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" + $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi + $ECHO "*** $linklib is not portable!" fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" - $run eval "$cmd" || exit $? - skipped_export=false + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $ECHO + $ECHO "*** And there doesn't seem to be a static archive available" + $ECHO "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" else - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: + lib_linked=no fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise. - $echo "creating reloadable object files..." - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs + fi + fi fi - save_output=$output - output_la=`$echo "X$output" | $Xsed -e "$basename"` - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - delfiles= - last_robj= - k=1 - output=$output_objdir/$output_la-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || - { len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + add="$libdir/$linklib" fi - last_robj=$output_objdir/$output_la-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$output_la-${k}.$objext - objlist=$obj - len=1 + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - - if ${skipped_export-false}; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - libobjs=$output - # Append the command to create the export file. - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - - # Set up a command to remove the reloadable object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" - done - - $echo "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else - cmds=$module_cmds + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $ECHO + $ECHO "*** Warning: This system can not link to static lib archive $lib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $ECHO "*** But as you try to build a module library, libtool will still create " + $ECHO "*** a static module, that should work as long as the dlopening application" + $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes fi + fi # link shared/static library? - # Append the command to remove the reloadable object files - # to the just-reset $cmds. - eval cmds=\"\$cmds~\$rm $delfiles\" - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? - exit $EXIT_SUCCESS - fi + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if $opt_duplicate_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_dirname "$deplib" "" "." + dir="$func_dirname_result" + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi - ;; + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi - obj) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + case $linkmode in + oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + func_warning "\`-dlopen' is ignored for archives" fi - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case $output in - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; esac - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit $EXIT_SUCCESS - fi + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" - exit $EXIT_SUCCESS + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" ;; - prog) - case $host in - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; - esac - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" - if test "$preload" = yes; then - if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result fi - fi - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ;; esac - case $host in - *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi - ;; - esac - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + $ECHO + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs="$libobjs $objs" fi fi - if test -n "$dlsyms"; then - case $dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + install_libdir="$1" -#ifdef __cplusplus -extern \"C\" { -#endif + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" -/* External symbol declarations for the compiler. */\ -" + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible - if test -n "$exclude_expsyms"; then - $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac - if test -n "$export_symbols_regex"; then - $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - fi - fi + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` - $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; - $echo >> "$output_objdir/$dlsyms" "\ + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; -#undef lt_preloaded_symbols + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result -/* The mapping between symbol names and symbols. */ -" + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" - case $host in - *cygwin* | *mingw* ) - $echo >> "$output_objdir/$dlsyms" "\ -/* DATA imports from DLLs on WIN32 can't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs */ -struct { -" - ;; - * ) - $echo >> "$output_objdir/$dlsyms" "\ -const struct { -" - ;; - esac + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; - $echo >> "$output_objdir/$dlsyms" "\ - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[] = -{\ -" + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr) 0} -}; + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; -#ifdef __cplusplus -} -#endif\ -" - fi + qnx) + major=".$current" + versuffix=".$current" + ;; - pic_flag_for_symtable= - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag";; - esac - esac + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" ;; + *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit $EXIT_FAILURE + func_fatal_configuration "unknown library version type \`$version_type'" ;; esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - status=$? + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" fi - exit $status fi - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs="$libobjs $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; esac done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" fi - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $run $rm $output - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? - exit $EXIT_SUCCESS + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` + # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` + # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` + #done - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" fi fi - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done - $show "$link_command" - $run eval "$link_command" || exit $? + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done - # Now create the wrapper script. - $show "creating $output" + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $ECHO + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + $ECHO "*** I have the capability to make that library automatically link in when" + $ECHO "*** you link to this library. But I can only do this if you have a" + $ECHO "*** shared version of the library, which you do not appear to have" + $ECHO "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ + -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` + done fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | + $GREP . >/dev/null; then + $ECHO + if test "X$deplibs_check_method" = "Xnone"; then + $ECHO "*** Warning: inter-library dependencies are not supported in this platform." + else + $ECHO "*** Warning: inter-library dependencies are not known to be supported." + fi + $ECHO "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac case $host in - *cygwin* | *mingw* ) - cwrappersource=`$echo ${objdir}/lt-${outputname}.c` - cwrapper=`$echo ${output}.exe` - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <> $cwrappersource<<"EOF" -#include -#include -#include -#include -#include -#include - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef DIR_SEPARATOR -#define DIR_SEPARATOR '/' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -#define HAVE_DOS_BASED_FILE_SYSTEM -#ifndef DIR_SEPARATOR_2 -#define DIR_SEPARATOR_2 '\\' -#endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -char * basename (const char *name); -char * fnqualify(const char *path); -char * strendzap(char *str, const char *pat); -void lt_fatal (const char *message, ...); - -int -main (int argc, char *argv[]) -{ - char **newargz; - int i; - - program_name = (char *) xstrdup ((char *) basename (argv[0])); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - newargz[1] = fnqualify(argv[0]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ - strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void * p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -; -} - -char * -basename (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha (name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return (char *) base; -} - -char * -fnqualify(const char *path) -{ - size_t size; - char *p; - char tmp[LT_PATHMAX + 1]; - - assert(path != NULL); - - /* Is it qualified already? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha (path[0]) && path[1] == ':') - return xstrdup (path); -#endif - if (IS_DIR_SEPARATOR (path[0])) - return xstrdup (path); - - /* prepend the current directory */ - /* doesn't handle '~' */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ - p = XMALLOC(char, size); - sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); - return p; -} - -char * -strendzap(char *str, const char *pat) -{ - size_t len, patlen; - - assert(str != NULL); - assert(pat != NULL); - - len = strlen(str); - patlen = strlen(pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp(str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} -EOF - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. - $run $LTCC -s -o $cwrapper $cwrappersource + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac - $rm $output - trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $ECHO + $ECHO "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + $ECHO "*** a static module, that should work as long as the dlopening" + $ECHO "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $ECHO + $ECHO "*** However, this would only work if libtool was able to extract symbol" + $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" + $ECHO "*** not find such a program. So, this module is probably useless." + $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $ECHO "*** The inter-library dependencies that have been dropped here will be" + $ECHO "*** automatically added whenever a program is linked with this library" + $ECHO "*** or is declared to -dlopen it." - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. + if test "$allow_undefined" = no; then + $ECHO + $ECHO "*** Since this library must not contain undefined symbols," + $ECHO "*** because either the platform does not support them or" + $ECHO "*** it was explicitly requested with -no-undefined," + $ECHO "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi - if test "$fast_install" = yes; then - $echo >> $output "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi - file=\"\$\$-\$program\" + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= - $echo >> $output "\ + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles="$delfiles $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" - exit $EXIT_FAILURE - fi - fi + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + func_len " $cmd" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi - $echo >> $output "\ + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" - if test -f \"\$progdir/\$program\"; then" + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi - export $shlibpath_var -" + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi fi - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \$progdir\\\\\$program \${1+\"\$@\"} -" - ;; + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. - *) - $echo >> $output "\ - exec \$progdir/\$program \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit $EXIT_FAILURE - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit $EXIT_FAILURE - fi -fi\ -" - chmod +x $output - fi - exit $EXIT_SUCCESS - ;; - esac + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$ECHO "X$output" | $Xsed -e "$basename"` - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + $ECHO 'INPUT (' > $output + for obj in $save_libobjs + do + $ECHO "$obj" >> $output + done + $ECHO ')' >> $output + delfiles="$delfiles $output" + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + $ECHO "$obj" >> $output + done + delfiles="$delfiles $output" + output=$firstobj\"$file_list_spec$output\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles="$delfiles $output" - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi + else + output= + fi - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "copying selected object files to avoid basename conflicts..." + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi - if test -z "$gentop"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" + exit $lt_exit + } + done + IFS="$save_ifs" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - counter=`expr $counter + 1` - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - $run ln "$obj" "$gentop/$newobj" || - $run cp "$obj" "$gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi - eval cmds=\"$old_archive_cmds\" + libobjs=$output + # Restore the value of output. + output=$save_output - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - for obj in $save_oldobjs - do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" - if len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; then - : + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= + cmds=$module_cmds fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi fi fi - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - eval cmd=\"$cmd\" - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" + func_extract_archives $gentop $dlprefiles + libobjs="$libobjs $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" fi - $rm $output - # place dlname in correct position for cygwin - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. -# The name that we can dlopen(3). -dlname='$tdlname' + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" -# Names of this library. -library_names='$library_names' + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi -# The name of the static archive. -old_library='$old_library' + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' -# Version information for $libname. -current=$current -age=$age -revision=$revision + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi -# Is this an already installed library? -installed=$installed + exit $EXIT_SUCCESS + fi -# Should we warn about portability when linking against -modules? -shouldnotlink=$module + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ -relink_command=\"$relink_command\"" - fi - done + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' fi - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac - exit $EXIT_SUCCESS - ;; + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi - # libtool install mode - install) - modename="$modename: install" + exit $EXIT_SUCCESS + ;; - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg="$nonopt" - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest="$arg" - continue - fi + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" - case $arg in - -d) isdir=yes ;; - -f) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -s) - stripme=" -s" - continue - ;; - -*) ;; + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "") - arg="\"$arg\"" + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac - install_prog="$install_prog $arg" - done - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac ;; esac done - ;; - esac + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac fi - - library_names= - old_library= - relink_command= - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit $EXIT_FAILURE - fi + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi - $echo "$modename: warning: relinking \`$file'" 1>&2 - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit $EXIT_FAILURE - fi - fi + wrappers_required=yes + case $host in + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *cegcc) + # Disable wrappers for cegcc, we are cross compiling anyway. + wrappers_required=no + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$srcname $destdir/$realname" - $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? - if test -n "$stripme" && test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run eval "$striplib $destdir/$realname" || exit $? - fi + exit $exit_status + fi - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - fi - done - fi + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi - # Do each command in the postinstall commands. - lib="$destdir/$realname" - cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" done - IFS="$save_ifs" + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + exit $EXIT_SUCCESS + fi - *.lo) - # Install (i.e. copy) a libtool object. + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" fi + fi - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac + # Replace the output file specification. + link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + func_show_eval "$link_command" 'exit $?' - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit $EXIT_SUCCESS - ;; + # Now create the wrapper script. + func_verbose "creating $output" - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - file=`$echo $file|${SED} 's,.exe$,,'` - stripped_ext=".exe" - fi - ;; + # Quote $ECHO for shipping. + if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac + qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` + fi - # Do a test to see if this is really a libtool program. + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions case $host in - *cygwin*|*mingw*) - wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` - ;; - *) - wrapper=$file - ;; + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; esac - if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then - notinst_deplibs= - relink_command= - - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit $EXIT_FAILURE - fi - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - relink_command= - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - save_umask=`umask` - umask 0077 - if $mkdir "$tmpdir"; then - umask $save_umask - else - umask $save_umask - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - # remove .exe since cygwin /usr/bin/install will append another - # one anyways - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac + func_emit_wrapper no > $output + chmod +x $output ;; esac - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" + } + exit $EXIT_SUCCESS + ;; + esac - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do - if test -n "$stripme" && test -n "$old_striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs="$oldobjs $symfileobj" + fi + fi + addlibs="$old_convenience" fi - # Do each command in the postinstall commands. - cmds=$old_postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi - ;; + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done + func_extract_archives $gentop $dlprefiles + oldobjs="$oldobjs $func_extract_archives_result" + fi - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - cmds=$finish_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $ECHO "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit $EXIT_SUCCESS + eval cmds=\"$old_archive_cmds\" - $echo "----------------------------------------------------------------------" - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' done - $echo - $echo "If you ever happen to want to link against installed libraries" - $echo "in a given directory, LIBDIR, you must either use libtool, and" - $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - $echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - $echo " during execution" - fi - if test -n "$runpath_var"; then - $echo " - add LIBDIR to the \`$runpath_var' environment variable" - $echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." - $echo "----------------------------------------------------------------------" - exit $EXIT_SUCCESS - ;; - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit $EXIT_FAILURE - fi + test -n "$generated" && \ + func_show_eval "${RM}r$generated" - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi - # Read the libtool library. - dlname= - library_names= + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles="$newdlfiles $libdir/$name" + ;; + *) newdlfiles="$newdlfiles $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles="$newdlprefiles $libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac +# The name that we can dlopen(3). +dlname='$tdlname' - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi +# Names of this library. +library_names='$library_names' - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. +# The name of the static archive. +old_library='$old_library' - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit $EXIT_FAILURE - fi - ;; +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" +# Version information for $libname. +current=$current +age=$age +revision=$revision - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done +# Is this an already installed library? +installed=$installed - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" +# Should we warn about portability when linking against -modules? +shouldnotlink=$module - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} - # Restore saved environment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi +{ test "$mode" = link || test "$mode" = relink; } && + func_mode_link ${1+"$@"} - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit $EXIT_SUCCESS - fi - ;; - # libtool clean and uninstall mode - clean | uninstall) - modename="$modename: $mode" - rm="$nonopt" +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" files= rmforce= exit_status=0 @@ -6089,30 +8202,28 @@ for arg do case $arg in - -f) rm="$rm $arg"; rmforce=yes ;; - -*) rm="$rm $arg" ;; + -f) RM="$RM $arg"; rmforce=yes ;; + -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$file"; then - dir=. + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + func_basename "$file" + name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates @@ -6124,9 +8235,9 @@ fi # Don't error if the file doesn't exist and rm -f was used. - if (test -L "$file") >/dev/null 2>&1 \ - || (test -h "$file") >/dev/null 2>&1 \ - || test -f "$file"; then + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then : elif test -d "$file"; then exit_status=1 @@ -6140,69 +8251,56 @@ case $name in *.la) # Possibly a libtool archive, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name + if func_lalib_p "$file"; then + func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - if test "$mode" = uninstall; then + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. - cmds=$postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. - cmds=$old_postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. - fi + ;; + esac fi ;; *.lo) # Possibly a libtool object, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + if func_lalib_p "$file"; then # Read the .lo file - . $dir/$name + func_source $dir/$name # Add PIC object to the list of files to remove. - if test -n "$pic_object" \ - && test "$pic_object" != none; then + if test -n "$pic_object" && + test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" \ - && test "$non_pic_object" != none; then + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi @@ -6213,17 +8311,26 @@ noexename=$name case $file in *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - relink_command= - . $dir/$noexename + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles="$rmfiles $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles @@ -6238,237 +8345,38 @@ fi ;; esac - $show "$rm $rmfiles" - $run $rm $rmfiles || exit_status=1 + func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then - $show "rmdir $dir" - $run rmdir $dir >/dev/null 2>&1 + func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status - ;; +} - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - ;; - esac +{ test "$mode" = uninstall || test "$mode" = clean; } && + func_mode_uninstall ${1+"$@"} - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - fi -fi # test -z "$show_help" +test -z "$mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then - eval exec $exec_cmd + eval exec "$exec_cmd" exit $EXIT_FAILURE fi -# We need to display help for each of the modes. -case $mode in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - --version print version information - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE. - -Report bugs to ." - exit $EXIT_SUCCESS - ;; - -clean) - $echo \ -"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. +exit $exit_status -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit $? # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting @@ -6487,10 +8395,12 @@ # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: +# vi:sw=2 + diff -Nru geos-3.1.0/macros/libtool.m4 geos-3.2.2/macros/libtool.m4 --- geos-3.1.0/macros/libtool.m4 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/macros/libtool.m4 2010-04-18 16:08:03.000000000 +0100 @@ -0,0 +1,7357 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file 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. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 56 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl +_LT_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Fix-up fallback echo if it was mangled by the above quoting rules. +case \$lt_ECHO in +*'\\\[$]0 --fallback-echo"')dnl " + lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` + ;; +esac + +_LT_OUTPUT_LIBTOOL_INIT +]) + + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +cat >"$CONFIG_LT" <<_LTEOF +#! $SHELL +# Generated by $as_me. +# Run this file to recreate a libtool stub with the current configuration. + +lt_cl_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AS_SHELL_SANITIZE +_AS_PREPARE + +exec AS_MESSAGE_FD>&1 +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +if test "$no_create" != yes; then + lt_cl_success=: + test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" + exec AS_MESSAGE_LOG_FD>/dev/null + $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false + exec AS_MESSAGE_LOG_FD>>config.log + $lt_cl_success || AS_EXIT(1) +fi +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_XSI_SHELLFNS + + sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX +# ----------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_SHELL_INIT + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[_LT_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$lt_ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +ECHO=${lt_ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then + # Yippee, $ECHO works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat <<_LT_EOF +[$]* +_LT_EOF + exit 0 +fi + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +if test -z "$lt_ECHO"; then + if test "X${echo_test_string+set}" != Xset; then + # find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if { echo_test_string=`eval $cmd`; } 2>/dev/null && + { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null + then + break + fi + done + fi + + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : + else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$ECHO" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + ECHO='print -r' + elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + ECHO='printf %s\n' + if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && + echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + ECHO="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + ECHO=echo + fi + fi + fi + fi + fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +lt_ECHO=$ECHO +if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(lt_ECHO) +]) +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], + [An echo program that does not interpret backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[AC_CHECK_TOOL(AR, ar, false) +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1]) + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ + = "XX$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line __oline__ "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # Some binutils ld are patched to set DT_RUNPATH + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method == "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC*) + # IBM XL 8.0 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac +AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag= + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE(int foo(void) {}, + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + ) + LDFLAGS="$save_LDFLAGS" + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [fix_srcfile_path], [1], + [Fix the shell variable $srcfile for the compiler]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_PROG_CXX +# ------------ +# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ +# compiler, we have our own version here. +m4_defun([_LT_PROG_CXX], +[ +pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) +AC_PROG_CXX +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_CXX + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_CXX], []) + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[AC_REQUIRE([_LT_PROG_CXX])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 will use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + xl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=echo + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_PROG_F77 +# ------------ +# Since AC_PROG_F77 is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_F77], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) +AC_PROG_F77 +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_F77 + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_F77], []) + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_REQUIRE([_LT_PROG_F77])dnl +AC_LANG_PUSH(Fortran 77) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${F77-"f77"} + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_PROG_FC +# ----------- +# Since AC_PROG_FC is broken, in that it returns the empty string +# if there is no fortran compiler, we have our own version here. +m4_defun([_LT_PROG_FC], +[ +pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) +AC_PROG_FC +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi +popdef([AC_MSG_ERROR]) +])# _LT_PROG_FC + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([_LT_PROG_FC], []) + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_REQUIRE([_LT_PROG_FC])dnl +AC_LANG_PUSH(Fortran) + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + CC=${FC-"f95"} + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC="$lt_save_CC" +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC="$lt_save_CC" +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_XSI_SHELLFNS +# --------------------- +# Bourne and XSI compatible variants of some useful shell functions. +m4_defun([_LT_PROG_XSI_SHELLFNS], +[case $xsi_shell in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=${1%%=*} + func_opt_split_arg=${1#*=} +} + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $[*] )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + +_LT_EOF + ;; + *) # Bourne compatible functions. + cat << \_LT_EOF >> "$cfgfile" + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` +} + +dnl func_dirname_and_basename +dnl A portable version of this function is already defined in general.m4sh +dnl so there is no need for it here. + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "X${3}" \ + | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; + esac +} + +# sed scripts: +my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' +my_sed_long_arg='1s/^-[[^=]]*=//' + +# func_opt_split +func_opt_split () +{ + func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` + func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` +} + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` +} + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$[@]"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` +} + +_LT_EOF +esac + +case $lt_shell_append in + yes) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]+=\$[2]" +} +_LT_EOF + ;; + *) + cat << \_LT_EOF >> "$cfgfile" + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "$[1]=\$$[1]\$[2]" +} + +_LT_EOF + ;; + esac +]) diff -Nru geos-3.1.0/macros/lt~obsolete.m4 geos-3.2.2/macros/lt~obsolete.m4 --- geos-3.1.0/macros/lt~obsolete.m4 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/macros/lt~obsolete.m4 2010-04-18 16:08:03.000000000 +0100 @@ -0,0 +1,92 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file 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. + +# serial 4 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) diff -Nru geos-3.1.0/macros/ltoptions.m4 geos-3.2.2/macros/ltoptions.m4 --- geos-3.1.0/macros/ltoptions.m4 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/macros/ltoptions.m4 2010-04-18 16:08:03.000000000 +0100 @@ -0,0 +1,368 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file 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. + +# serial 6 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [0], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff -Nru geos-3.1.0/macros/ltsugar.m4 geos-3.2.2/macros/ltsugar.m4 --- geos-3.1.0/macros/ltsugar.m4 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/macros/ltsugar.m4 2010-04-18 16:08:03.000000000 +0100 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file 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. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff -Nru geos-3.1.0/macros/ltversion.m4 geos-3.2.2/macros/ltversion.m4 --- geos-3.1.0/macros/ltversion.m4 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/macros/ltversion.m4 2010-04-18 16:08:03.000000000 +0100 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file 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. + +# Generated from ltversion.in. + +# serial 3012 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.2.6]) +m4_define([LT_PACKAGE_REVISION], [1.3012]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.2.6' +macro_revision='1.3012' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff -Nru geos-3.1.0/macros/Makefile.in geos-3.2.2/macros/Makefile.in --- geos-3.1.0/macros/Makefile.in 2009-03-11 19:13:32.000000000 +0000 +++ geos-3.2.2/macros/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,14 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -40,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -48,14 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -top_srcdir = @top_srcdir@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ GEOS_VERSION = @GEOS_VERSION@ EXTRA_DIST = geos.m4 all: all-am @@ -214,14 +228,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu macros/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu macros/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu macros/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu macros/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -239,16 +253,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -257,29 +268,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -307,6 +321,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -317,7 +332,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -325,18 +340,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -355,17 +390,21 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-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. diff -Nru geos-3.1.0/Makefile.am geos-3.2.2/Makefile.am --- geos-3.1.0/Makefile.am 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/Makefile.am 2009-11-26 16:32:40.000000000 +0000 @@ -15,6 +15,9 @@ tests \ tools -EXTRA_DIST = acsite.m4 makefile.vc +EXTRA_DIST = acsite.m4 makefile.vc nmake.opt autogen.bat ACLOCAL_AMFLAGS = -I macros + +cl: + cd $(srcdir) && svn2cl --authors=authors.svn -i -o ChangeLog diff -Nru geos-3.1.0/Makefile.in geos-3.2.2/Makefile.in --- geos-3.1.0/Makefile.in 2009-03-11 19:14:08.000000000 +0000 +++ geos-3.2.2/Makefile.in 2010-04-18 16:08:15.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = . +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -36,32 +34,44 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ +subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \ ChangeLog INSTALL NEWS TODO config.guess config.sub depcomp \ install-sh ltmain.sh missing py-compile -subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno configure.status.lineno + configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) @@ -69,17 +79,40 @@ distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } + { test ! -d "$(distdir)" \ + || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr "$(distdir)"; }; } +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -107,21 +140,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -130,20 +159,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -164,6 +201,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -175,19 +213,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -199,36 +231,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # # NOTE: Make sure that 'source' appears first. @@ -247,7 +292,7 @@ tests \ tools -EXTRA_DIST = acsite.m4 makefile.vc +EXTRA_DIST = acsite.m4 makefile.vc nmake.opt autogen.bat ACLOCAL_AMFLAGS = -I macros all: all-recursive @@ -258,15 +303,15 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ - cd $(srcdir) && $(AUTOMAKE) --gnu \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -282,9 +327,10 @@ $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) + $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo @@ -293,8 +339,7 @@ -rm -rf .libs _libs distclean-libtool: - -rm -f libtool -uninstall-info-am: + -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -320,15 +365,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -355,16 +399,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -372,14 +416,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -391,93 +435,113 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) - mkdir $(distdir) - $(mkdir_p) $(distdir)/capi $(distdir)/doc $(distdir)/macros $(distdir)/source/headers/geos $(distdir)/swig $(distdir)/tools - @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; \ + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) @@ -486,6 +550,14 @@ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz + $(am__remove_distdir) + dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) @@ -512,6 +584,10 @@ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ @@ -523,9 +599,11 @@ mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ @@ -547,13 +625,15 @@ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @cd $(distuninstallcheck_dir) \ + @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ @@ -595,6 +675,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -615,18 +696,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -647,24 +748,30 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ - check-am clean clean-generic clean-libtool clean-recursive \ - ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ - dist-shar dist-tarZ dist-zip distcheck distclean \ - distclean-generic distclean-libtool distclean-recursive \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ + dist-gzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am + + +cl: + cd $(srcdir) && svn2cl --authors=authors.svn -i -o ChangeLog # 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. diff -Nru geos-3.1.0/makefile.vc geos-3.2.2/makefile.vc --- geos-3.1.0/makefile.vc 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/makefile.vc 2009-03-26 21:52:01.000000000 +0000 @@ -1,7 +1,7 @@ -# $Id: makefile.vc 1870 2006-10-18 19:21:31Z mloskot $ +# $Id: makefile.vc 2308 2009-03-26 21:52:01Z mloskot $ # # NMAKE Makefile to build GEOS on Windows -# +############################################################################### # This makefile.vc delegates making targets to source\makefile.vc # so it's just a thin wrapper. # @@ -15,11 +15,11 @@ # source\geos.dll: DLL - only exports the C API # source\geos_i.lib: Stub library to link against for use of geos.dll. # source\geos.lib: static library for use of C or C++ API. -# -MAKE = nmake -RM = -del +############################################################################### +GEOS_ROOT=. +!INCLUDE $(GEOS_ROOT)\nmake.opt -default: source_dir +default: source_dir source_dir: cd source @@ -30,4 +30,3 @@ cd source $(MAKE) /f makefile.vc clean cd .. - diff -Nru geos-3.1.0/missing geos-3.2.2/missing --- geos-3.1.0/missing 2009-03-11 19:13:28.000000000 +0000 +++ geos-3.2.2/missing 2010-04-18 16:08:07.000000000 +0100 @@ -1,10 +1,10 @@ #! /bin/sh # Common stub for a few missing GNU programs while installing. -scriptversion=2005-02-08.22 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify @@ -18,9 +18,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -33,6 +31,8 @@ fi run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. @@ -44,7 +44,7 @@ msg="missing on your system" -case "$1" in +case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= @@ -77,6 +77,7 @@ aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c @@ -86,6 +87,9 @@ tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + Send bug reports to ." exit $? ;; @@ -103,15 +107,22 @@ esac +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect -# the program). -case "$1" in - lex|yacc) +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) # Not GNU programs, they don't have --version. ;; - tar) + tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 @@ -135,7 +146,7 @@ # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. -case "$1" in +case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if @@ -145,7 +156,7 @@ touch aclocal.m4 ;; - autoconf) + autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the @@ -154,7 +165,7 @@ touch configure ;; - autoheader) + autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want @@ -164,7 +175,7 @@ test -z "$files" && files="config.h" touch_files= for f in $files; do - case "$f" in + case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; @@ -184,7 +195,7 @@ while read f; do touch "$f"; done ;; - autom4te) + autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the @@ -192,8 +203,8 @@ You can get \`$1' as part of \`Autoconf' from any GNU archive site." - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else @@ -207,80 +218,78 @@ fi ;; - bison|yacc) + bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then + if test $# -ne 1; then eval LASTARG="\${$#}" - case "$LASTARG" in + case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then + if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then + if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi - if [ ! -f y.tab.h ]; then + if test ! -f y.tab.h; then echo >y.tab.h fi - if [ ! -f y.tab.c ]; then + if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; - lex|flex) + lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c - if [ $# -ne 1 ]; then + if test $# -ne 1; then eval LASTARG="\${$#}" - case "$LASTARG" in + case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then + if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi - if [ ! -f lex.yy.c ]; then + if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; - help2man) + help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" - exit 1 + exit $? fi ;; - makeinfo) + makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file @@ -289,18 +298,27 @@ DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 touch $file ;; - tar) + tar*) shift # We have already tried tar in the generic part. @@ -314,13 +332,13 @@ fi firstarg="$1" if shift; then - case "$firstarg" in + case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac - case "$firstarg" in + case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 @@ -353,5 +371,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff -Nru geos-3.1.0/NEWS geos-3.2.2/NEWS --- geos-3.1.0/NEWS 2009-03-11 19:13:01.000000000 +0000 +++ geos-3.2.2/NEWS 2010-04-18 16:06:05.000000000 +0100 @@ -1,3 +1,31 @@ +Changes in 3.2.2 + +- Bug fixes: + - CAPI: do not leak contexts when using the non-reentrant interface + +Changes in 3.2.1 + +- Bug fixes: + - False positive return from IsValidOp (#333) + - Return up to 15 digits of precision from GEOSisValidReason_t (#329) + +Changes in 3.2.0 + +- Add Single-sided buffer operation +- JTS-1.10 sync ... + - Drastically improved Buffer speed (20x for a case in testsuite) + - Improved EdgeList duplicate edge finding + - Added algorithm::distance package + - Added algorithm::Angle class + - Added algorithm::BoundaryNodeRule class + - IsSimpleOp can now return non-simple location coordinate + - DistanceOp can now check for 'within distance' predicate + (earlier exit) + - MultiPolygon::getBoundary always return MultiLineString, also + when the result is the EMPTY geometry. +- Various bug and leak fixes, optimizations +- Replace MarkupSTL with tinyXML + Changes in 3.1.0 - PreparedGeometry operations for very fast predicate testing. diff -Nru geos-3.1.0/nmake.opt geos-3.2.2/nmake.opt --- geos-3.1.0/nmake.opt 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/nmake.opt 2010-04-07 14:35:52.000000000 +0100 @@ -0,0 +1,161 @@ +# $Id$ +# +# nmake.opt - main configuration file for NMAKE makefiles +# +!MESSAGE ********************************************************************** +!MESSAGE *** GEOS Build Configuration *** +!INCLUDE + +############################################################################### +# For convenience, user may put custom settings to private mynmake.opt +# and use EXT_NMAKE_OPT option while calling nmake.exe, as follows: +# +# nmake -f makefile.vc EXT_NMAKE_OPT=mynmake.opt + +!IFDEF EXT_NMAKE_OPT +!MESSAGE *** Setting EXT_NMAKE_OPT $(EXT_NMAKE_OPT) +!INCLUDE $(EXT_NMAKE_OPT) +!ENDIF + +############################################################################### +# Set BUILD_DEBUG to YES if you want to make debug build +# and to prepare not optimized binaries. + +!IFNDEF BUILD_DEBUG +BUILD_DEBUG = NO +!ENDIF + +!MESSAGE *** Setting BUILD_DEBUG $(BUILD_DEBUG) + +############################################################################### +# Set BUILD_BATCH to YES if you want feed compiler with all +# source .c and .cpp files in single batch. + +!IFNDEF BUILD_BATCH +BUILD_BATCH = NO +!ENDIF + +!MESSAGE *** Setting BUILD_BATCH $(BUILD_BATCH) + +############################################################################### +# Derive version of Visual C++ being used from NMAKE if not specified +# +# WARNING: +# If we should expect variety of NMAKE build versions, tests below may fail +# and we will need to fall back to setting GEOS_MSVC as command line parameter. + +!IF "$(_NMAKE_VER)" == "" +GEOS_MSVC = 4.0 +!ERROR *** Failed to determine version of Visual C++ +!ELSEIF "$(_NMAKE_VER)" == "162" +GEOS_MSVC = 5.0 +!ERROR *** Detected Visual C++ 5.0 - NOT SUPPORTED +!ELSEIF "$(_NMAKE_VER)" == "6.00.8168.0" +GEOS_MSVC = 6.0 +GEOS_MSC = 1200 +!ERROR *** Detected Visual C++ 6.0 - NOT SUPPORTED +!ELSEIF "$(_NMAKE_VER)" == "7.00.9466" +GEOS_MSVC = 7.0 +GEOS_MSC = 1300 +!ELSEIF "$(_NMAKE_VER)" == "7.10.3077" +GEOS_MSVC = 7.1 +GEOS_MSC = 1310 +!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.42" +GEOS_MSVC = 8.0 +GEOS_MSC = 1400 +!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.762" +GEOS_MSVC = 8.0 +GEOS_MSC = 1400 +!ELSEIF "$(_NMAKE_VER)" == "9.00.21022.08" +GEOS_MSVC = 9.0 +GEOS_MSC = 1500 +!ELSEIF "$(_NMAKE_VER)" == "9.00.30729.01" +GEOS_MSVC = 9.0 +GEOS_MSC = 1500 +!ELSEIF "$(_NMAKE_VER)" == "10.00.30128.01" +GEOS_MSVC = 10.0 +GEOS_MSC = 1600 +!ELSE +GEOS_MSVC = 0.0 +GEOS_MSC = 0 +!ENDIF + +!IF "$(GEOS_MSVC)" == "0.0" && "$(GEOS_MSC)" == "0" +!MESSAGE *** Cannot determined Visual C++ version +!ERROR *** Aborting make job +!ELSE +!MESSAGE *** Using Microsoft NMAKE version $(_NMAKE_VER) +!MESSAGE *** Using Microsoft Visual C++ version $(GEOS_MSVC) +!MESSAGE *** Using Microsoft C/C++ version $(GEOS_MSC) +!ENDIF + +############################################################################### +# Include directories + +GEOS_INCLUDE = -Iheaders -I..\capi + +!MESSAGE *** Setting GEOS_INCLUDE $(GEOS_INCLUDE) +!MESSAGE *** Setting INCLUDE $(INCLUDE) + +############################################################################### +# Compilation flags for Release and Debug modes + +GEOS_CPPFLAGS = /D "NOMINMAX" /D "WIN32_LEAN_AND_MEAN" /D "NOGDI" +GEOS_CPPFLAGS = $(GEOS_CPPFLAGS) /D "GEOS_DLL_EXPORT" + +!IF "$(BUILD_DEBUG)" == "YES" +BUILD_PREFIX=_d +GEOS_CFLAGS = /nologo /MDd /GR /Od /W4 /Zi +GEOS_CPPFLAGS = /D "DEBUG" /D "_DEBUG" $(GEOS_CPPFLAGS) +!ELSE +GEOS_CFLAGS = /nologo /MD /GR /O2 /W3 +GEOS_CPPFLAGS = /D "NDEBUG" $(GEOS_CPPFLAGS) +!ENDIF + +# Compiler version specific flags +!IF $(GEOS_MSC) >= 1400 +GEOS_CFLAGS = $(GEOS_CFLAGS) /EHs +GEOS_CPPFLAGS = $(GEOS_CPPFLAGS) /D "_CRT_SECURE_NO_DEPRECATE" /D "_CRT_NONSTDC_NO_DEPRECATE" /D "_SCL_SECURE_NO_DEPRECATE" +!ELSE +GEOS_CFLAGS = $(GEOS_CFLAGS) /GX +!ENDIF + +# For Visual C++ 9.0+ use multiple process build +!IF "$(BUILD_BATCH)" == "YES" +!IF $(GEOS_MSC) > 1400 +MPFLAGS = /MP +!MESSAGE *** Setting /MP flag to number of effective processors +!ENDIF +!ENDIF + +!MESSAGE *** Using CFLAGS $(GEOS_CFLAGS) +!MESSAGE *** Using CPPFLAGS $(GEOS_CPPFLAGS) + +CFLAGS= $(MPFLAGS) $(GEOS_CFLAGS) $(GEOS_CPPFLAGS) $(GEOS_INCLUDE) + +############################################################################### +# Output location + +LIBNAME = geos$(BUILD_PREFIX).lib +DLLNAME = geos$(BUILD_PREFIX).dll +SLIBNAME = geos_i$(BUILD_PREFIX).lib +CDLLNAME = geos_c$(BUILD_PREFIX).dll +CLIBNAME = geos_c_i$(BUILD_PREFIX).lib + +############################################################################### +# Building toolset programs + +MAKE = nmake +CC = cl +RM = del +CP = copy + +# Linker executable +# - Dynamic-Linked Libraries +# $(LINK) /dll +# - Static Libraries (use of lib.exe wrapper is not portable, see VC++ Toolkit 2003) +# $(LINK) /lib +LINK = link.exe + +!MESSAGE ********************************************************************** +# EOF diff -Nru geos-3.1.0/py-compile geos-3.2.2/py-compile --- geos-3.1.0/py-compile 2009-03-11 19:14:04.000000000 +0000 +++ geos-3.2.2/py-compile 2010-04-18 16:08:14.000000000 +0100 @@ -1,9 +1,10 @@ #!/bin/sh # py-compile - Compile a Python program -scriptversion=2005-02-02.22 +scriptversion=2009-04-28.21; # UTC -# Copyright (C) 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2000, 2001, 2003, 2004, 2005, 2008, 2009 Free Software +# Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -16,9 +17,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -# 02111-1307, USA. +# along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -103,38 +102,38 @@ fi $PYTHON -c " -import sys, os, string, py_compile +import sys, os, py_compile files = '''$files''' -print 'Byte-compiling python modules...' -for file in string.split(files): +sys.stdout.write('Byte-compiling python modules...\n') +for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): - continue - print file, + continue + sys.stdout.write(file) sys.stdout.flush() py_compile.compile(filepath, filepath + 'c', path) -print" || exit $? +sys.stdout.write('\n')" || exit $? # this will fail for python < 1.5, but that doesn't matter ... $PYTHON -O -c " -import sys, os, string, py_compile +import sys, os, py_compile files = '''$files''' -print 'Byte-compiling python modules (optimized versions) ...' -for file in string.split(files): +sys.stdout.write('Byte-compiling python modules (optimized versions) ...\n') +for file in files.split(): $pathtrans $filetrans if not os.path.exists(filepath) or not (len(filepath) >= 3 and filepath[-3:] == '.py'): - continue - print file, + continue + sys.stdout.write(file) sys.stdout.flush() py_compile.compile(filepath, filepath + 'o', path) -print" 2>/dev/null || : +sys.stdout.write('\n')" 2>/dev/null || : # Local Variables: # mode: shell-script @@ -142,5 +141,6 @@ # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" # End: diff -Nru geos-3.1.0/source/algorithm/Angle.cpp geos-3.2.2/source/algorithm/Angle.cpp --- geos-3.1.0/source/algorithm/Angle.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/algorithm/Angle.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,206 @@ +/********************************************************************** + * $Id: Angle.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/Angle.java rev. 1.6 (JTS-1.9) + * + **********************************************************************/ + +#include + +#include +#include +#include + +namespace geos { +namespace algorithm { // geos.algorithm + +namespace { + const double PI = 3.14159265358979; +} + +const double Angle::PI_TIMES_2 = 2.0 * PI; +const double Angle::PI_OVER_2 = PI / 2.0; +const double Angle::PI_OVER_4 = PI / 4.0; + +/* public static */ +double +Angle::toDegrees(double radians) +{ + return (radians * 180) / (PI); +} + +/* public static */ +double +Angle::toRadians(double angleDegrees) +{ + return (angleDegrees * PI) / 180.0; +} + +/* public static */ +double +Angle::angle(const geom::Coordinate& p0, + const geom::Coordinate& p1) +{ + double dx = p1.x - p0.x; + double dy = p1.y - p0.y; + return atan2(dy, dx); +} + +/* public static */ +double +Angle::angle(const geom::Coordinate& p) +{ + return atan2(p.y, p.x); +} + +/* public static */ +bool +Angle::isAcute(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2) +{ + // relies on fact that A dot B is positive iff A ang B is acute + double dx0 = p0.x - p1.x; + double dy0 = p0.y - p1.y; + double dx1 = p2.x - p1.x; + double dy1 = p2.y - p1.y; + double dotprod = dx0 * dx1 + dy0 * dy1; + return dotprod > 0; +} + +/* public static */ +bool +Angle::isObtuse(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2) +{ + // relies on fact that A dot B is negative iff A ang B is obtuse + double dx0 = p0.x - p1.x; + double dy0 = p0.y - p1.y; + double dx1 = p2.x - p1.x; + double dy1 = p2.y - p1.y; + double dotprod = dx0 * dx1 + dy0 * dy1; + return dotprod < 0; +} + +/* public static */ +double +Angle::angleBetween(const geom::Coordinate& tip1, + const geom::Coordinate& tail, + const geom::Coordinate& tip2) +{ + double a1 = angle(tail, tip1); + double a2 = angle(tail, tip2); + + return diff(a1, a2); +} + +/* public static */ +double +Angle::angleBetweenOriented(const geom::Coordinate& tip1, + const geom::Coordinate& tail, + const geom::Coordinate& tip2) +{ + double a1 = angle(tail, tip1); + double a2 = angle(tail, tip2); + double angDel = a2 - a1; + + // normalize, maintaining orientation + if (angDel <= -PI) + return angDel + PI_TIMES_2; + if (angDel > PI) + return angDel - PI_TIMES_2; + return angDel; +} + +/* public static */ +double +Angle::interiorAngle(const geom::Coordinate& p0, const geom::Coordinate& p1, + const geom::Coordinate& p2) +{ + double anglePrev = angle(p1, p0); + double angleNext = angle(p1, p2); + return fabs(angleNext - anglePrev); +} + +/* public static */ +int +Angle::getTurn(double ang1, double ang2) +{ + double crossproduct = sin(ang2 - ang1); + + if (crossproduct > 0) { + return COUNTERCLOCKWISE; + } + if (crossproduct < 0) { + return CLOCKWISE; + } + return NONE; +} + +/* public static */ +double +Angle::normalize(double angle) +{ + while (angle > PI) + angle -= PI_TIMES_2; + while (angle <= -PI) + angle += PI_TIMES_2; + return angle; +} + +/* public static */ +double +Angle::normalizePositive(double angle) +{ + if (angle < 0.0) { + while (angle < 0.0) + angle += PI_TIMES_2; + // in case round-off error bumps the value over + if (angle >= PI_TIMES_2) + angle = 0.0; + } + else { + while (angle >= PI_TIMES_2) + angle -= PI_TIMES_2; + // in case round-off error bumps the value under + if (angle < 0.0) + angle = 0.0; + } + return angle; +} + +/* public static */ +double +Angle::diff(double ang1, double ang2) +{ + double delAngle; + + if (ang1 < ang2) { + delAngle = ang2 - ang1; + } else { + delAngle = ang1 - ang2; + } + + if (delAngle > PI) { + delAngle = (2 * PI) - delAngle; + } + + return delAngle; +} + +} // namespace geos.algorithm +} //namespace geos + diff -Nru geos-3.1.0/source/algorithm/BoundaryNodeRule.cpp geos-3.2.2/source/algorithm/BoundaryNodeRule.cpp --- geos-3.1.0/source/algorithm/BoundaryNodeRule.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/algorithm/BoundaryNodeRule.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,143 @@ +/********************************************************************** + * $Id: BoundaryNodeRule.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/BoundaryNodeRule.java rev 1.4 (JTS-1.10) + * + **********************************************************************/ + +#include + +namespace geos { +namespace algorithm { // geos.algorithm + +// These classes are public in JTS, and under the BoundaryNodeRule +// namespace. In GEOS they are hidden and only accessible as singleton +// from BoundaryNodeRule static const references +// +namespace { + +/** + * A {@link BoundaryNodeRule} specifies that points are in the + * boundary of a lineal geometry iff + * the point lies on the boundary of an odd number + * of components. + * Under this rule {@link LinearRing}s and closed + * {@link LineString}s have an empty boundary. + *

+ * This is the rule specified by the OGC SFS, + * and is the default rule used in JTS. + * + * @author Martin Davis + * @version 1.7 + */ +class Mod2BoundaryNodeRule : public BoundaryNodeRule +{ +public: + bool isInBoundary(int boundaryCount) const + { + // the "Mod-2 Rule" + return boundaryCount % 2 == 1; + } +}; + + +/** + * A {@link BoundaryNodeRule} which specifies that any points + * which are endpoints + * of lineal components are in the boundary of the + * parent geometry. + * This corresponds to the "intuitive" topological definition + * of boundary. + * Under this rule {@link LinearRing}s have a non-empty boundary + * (the common endpoint of the underlying LineString). + *

+ * This rule is useful when dealing with linear networks. + * For example, it can be used to check + * whether linear networks are correctly noded. + * The usual network topology constraint is that linear segments may + * touch only at endpoints. + * In the case of a segment touching a closed segment (ring) at one + * point, + * the Mod2 rule cannot distinguish between the permitted case of + * touching at the + * node point and the invalid case of touching at some other interior + * (non-node) point. + * The EndPoint rule does distinguish between these cases, + * so is more appropriate for use. + * + * @author Martin Davis + * @version 1.7 + */ +class EndPointBoundaryNodeRule : public BoundaryNodeRule +{ + bool isInBoundary(int boundaryCount) const + { + return boundaryCount > 0; + } +}; + +/** + * A {@link BoundaryNodeRule} which determines that only + * endpoints with valency greater than 1 are on the boundary. + * This corresponds to the boundary of a {@link MultiLineString} + * being all the "attached" endpoints, but not + * the "unattached" ones. + * + * @author Martin Davis + * @version 1.7 + */ +class MultiValentEndPointBoundaryNodeRule : public BoundaryNodeRule +{ + bool isInBoundary(int boundaryCount) const + { + return boundaryCount > 1; + } +}; + +/** + * A {@link BoundaryNodeRule} which determines that only + * endpoints with valency of exactly 1 are on the boundary. + * This corresponds to the boundary of a {@link MultiLineString} + * being all the "unattached" endpoints. + * + * @author Martin Davis + * @version 1.7 + */ +class MonoValentEndPointBoundaryNodeRule : public BoundaryNodeRule +{ + bool isInBoundary(int boundaryCount) const + { + return boundaryCount == 1; + } +}; + + +} // anonymous namespace + +static Mod2BoundaryNodeRule mod2Rule; +static EndPointBoundaryNodeRule endPointRule; +static MultiValentEndPointBoundaryNodeRule multiValentRule; +static MonoValentEndPointBoundaryNodeRule monoValentRule; + +const BoundaryNodeRule& BoundaryNodeRule::MOD2_BOUNDARY_RULE = mod2Rule; +const BoundaryNodeRule& BoundaryNodeRule::ENDPOINT_BOUNDARY_RULE = endPointRule; +const BoundaryNodeRule& BoundaryNodeRule::MULTIVALENT_ENDPOINT_BOUNDARY_RULE = multiValentRule; +const BoundaryNodeRule& BoundaryNodeRule::MONOVALENT_ENDPOINT_BOUNDARY_RULE = monoValentRule; +const BoundaryNodeRule& BoundaryNodeRule::OGC_SFS_BOUNDARY_RULE = BoundaryNodeRule::MOD2_BOUNDARY_RULE; + + +} // namespace geos.algorithm +} // namespace geos + diff -Nru geos-3.1.0/source/algorithm/CGAlgorithms.cpp geos-3.2.2/source/algorithm/CGAlgorithms.cpp --- geos-3.1.0/source/algorithm/CGAlgorithms.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/CGAlgorithms.cpp 2009-04-14 14:23:07.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CGAlgorithms.cpp 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: CGAlgorithms.cpp 2358 2009-04-14 13:23:07Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,15 +14,18 @@ * ********************************************************************** * - * Last port: algorithm/CGAlgorithms.java rev. 1.34 (JTS-1.7.1) + * Last port: algorithm/CGAlgorithms.java rev. 1.46 (JTS-1.9) * **********************************************************************/ #include #include #include +#include #include #include +#include +#include #include //#include @@ -53,48 +56,7 @@ bool CGAlgorithms::isPointInRing(const Coordinate& p, const CoordinateSequence* ring) { - double xInt; // x intersection of segment with ray - int crossings = 0; // number of segment/ray crossings - double x1; // translated coordinates - double y1; - double x2; - double y2; - - /* - * For each segment l = (i-1, i), see if it crosses ray from - * test point in positive x direction. - */ - size_t nPts=ring->getSize(); - for(size_t i=1; igetAt(i); - const Coordinate &p2=ring->getAt(i-1); - x1 = p1.x - p.x; - y1 = p1.y - p.y; - x2 = p2.x - p.x; - y2 = p2.y - p.y; - - if (((y1 > 0) && (y2 <= 0)) || - ((y2 > 0) && (y1 <= 0))) - { - /* - * segment straddles x axis, so compute intersection. - */ - xInt = RobustDeterminant::signOfDet2x2(x1, y1, x2, y2) - / (y2 - y1); - - /* - * crosses ray if strictly positive intersection. - */ - if (0.0 < xInt) crossings++; - } - } - - /* - * p is inside if number of crossings is odd. - */ - if ((crossings % 2) == 1) return true; - return false; + return locatePointInRing(p, *ring) != Location::EXTERIOR; } /*public static*/ @@ -102,47 +64,23 @@ CGAlgorithms::isPointInRing(const Coordinate& p, const Coordinate::ConstVect& ring) { - double xInt; // x intersection of segment with ray - int crossings = 0; // number of segment/ray crossings - double x1; // translated coordinates - double y1; - double x2; - double y2; + return locatePointInRing(p, ring) != Location::EXTERIOR; +} - /* - * For each segment l = (i-1, i), see if it crosses ray from - * test point in positive x direction. - */ - for(size_t i=1, nPts=ring.size(); ix - p.x; - y1 = p1->y - p.y; - x2 = p2->x - p.x; - y2 = p2->y - p.y; - - if (((y1 > 0) && (y2 <= 0)) || - ((y2 > 0) && (y1 <= 0))) - { - /* - * segment straddles x axis, so compute intersection. - */ - xInt = RobustDeterminant::signOfDet2x2(x1, y1, x2, y2) - / (y2 - y1); - - /* - * crosses ray if strictly positive intersection. - */ - if (0.0 < xInt) crossings++; - } - } +/*public static*/ +int +CGAlgorithms::locatePointInRing(const Coordinate& p, + const CoordinateSequence& ring) +{ + return RayCrossingCounter::locatePointInRing(p, ring); +} - /* - * p is inside if number of crossings is odd. - */ - if ((crossings % 2) == 1) return true; - return false; +/*public static*/ +int +CGAlgorithms::locatePointInRing(const Coordinate& p, + const std::vector& ring) +{ + return RayCrossingCounter::locatePointInRing(p, ring); } /*public static*/ @@ -169,12 +107,18 @@ CGAlgorithms::isCCW(const CoordinateSequence* ring) { // # of points without closing endpoint - const std::size_t nPts=ring->getSize()-1; + const std::size_t nPts=ring->getSize()-1; + + // sanity check + if (nPts < 3) + { + throw util::IllegalArgumentException("Ring has fewer than 3 points, so orientation cannot be determined"); + } // find highest point const Coordinate *hiPt=&ring->getAt(0); int hiIndex=0; - for (std::size_t i=1; i<=nPts; ++i) + for (std::size_t i=1; i<=nPts; ++i) { const Coordinate *p=&ring->getAt(i); if (p->y > hiPt->y) { @@ -379,17 +323,32 @@ double CGAlgorithms::length(const CoordinateSequence* pts) { + // optimized for processing CoordinateSequences + size_t npts=pts->getSize(); + if (npts <= 1) return 0.0; - if (npts<1) return 0.0; + double len = 0.0; - double sum=0.0; + const Coordinate& p = pts->getAt(0); + double x0 = p.x; + double y0 = p.y; - for(size_t i=1; igetAt(i).distance(pts->getAt(i - 1)); + const Coordinate& p = pts->getAt(i); + double x1 = p.x; + double y1 = p.y; + double dx = x1 - x0; + double dy = y1 - y0; + + len += sqrt(dx * dx + dy * dy); + + x0 = x1; + y0 = y1; } - return sum; + + return len; } diff -Nru geos-3.1.0/source/algorithm/distance/DiscreteHausdorffDistance.cpp geos-3.2.2/source/algorithm/distance/DiscreteHausdorffDistance.cpp --- geos-3.1.0/source/algorithm/distance/DiscreteHausdorffDistance.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/algorithm/distance/DiscreteHausdorffDistance.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,109 @@ +/********************************************************************** + * $Id: DiscreteHausdorffDistance.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/distance/DiscreteHausdorffDistance.java 1.5 (JTS-1.10) + * + **********************************************************************/ + +#include +#include + +//#include +//#include +//#include +//#include +//#include +//#include + +#include +#include + +using namespace geos::geom; + +namespace geos { +namespace algorithm { // geos.algorithm +namespace distance { // geos.algorithm.distance + +void +DiscreteHausdorffDistance::MaxDensifiedByFractionDistanceFilter::filter_ro( + const geom::CoordinateSequence& seq, size_t index) +{ + /** + * This logic also handles skipping Point geometries + */ + if (index == 0) + return; + + const geom::Coordinate& p0 = seq.getAt(index - 1); + const geom::Coordinate& p1 = seq.getAt(index); + + double delx = (p1.x - p0.x)/numSubSegs; + double dely = (p1.y - p0.y)/numSubSegs; + + for (size_t i = 0; i < numSubSegs; ++i) { + double x = p0.x + i*delx; + double y = p0.y + i*dely; + Coordinate pt(x, y); + minPtDist.initialize(); + DistanceToPoint::computeDistance(geom, pt, minPtDist); + maxPtDist.setMaximum(minPtDist); + } + +} + +/* static public */ +double +DiscreteHausdorffDistance::distance(const geom::Geometry& g0, + const geom::Geometry& g1) +{ + DiscreteHausdorffDistance dist(g0, g1); + return dist.distance(); +} + +/* static public */ +double +DiscreteHausdorffDistance::distance(const geom::Geometry& g0, + const geom::Geometry& g1, + double densifyFrac) +{ + DiscreteHausdorffDistance dist(g0, g1); + dist.setDensifyFraction(densifyFrac); + return dist.distance(); +} + +/* private */ +void +DiscreteHausdorffDistance::computeOrientedDistance( + const geom::Geometry& discreteGeom, + const geom::Geometry& geom, + PointPairDistance& ptDist) +{ + MaxPointDistanceFilter distFilter(geom); + discreteGeom.apply_ro(&distFilter); + ptDist.setMaximum(distFilter.getMaxPointDistance()); + + if (densifyFrac > 0) + { + MaxDensifiedByFractionDistanceFilter fracFilter(geom, + densifyFrac); + discreteGeom.apply_ro(fracFilter); + ptDist.setMaximum(fracFilter.getMaxPointDistance()); + } +} + +} // namespace geos.algorithm.distance +} // namespace geos.algorithm +} // namespace geos + diff -Nru geos-3.1.0/source/algorithm/distance/DistanceToPoint.cpp geos-3.2.2/source/algorithm/distance/DistanceToPoint.cpp --- geos-3.1.0/source/algorithm/distance/DistanceToPoint.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/algorithm/distance/DistanceToPoint.cpp 2010-03-29 18:50:45.000000000 +0100 @@ -0,0 +1,122 @@ +/********************************************************************** + * $Id: DistanceToPoint.cpp 2966 2010-03-29 17:50:45Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/distance/DistanceToPoint.java 1.1 (JTS-1.9) + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include // for dynamic_cast +#include + +using namespace geos::geom; + +namespace geos { +namespace algorithm { // geos.algorithm +namespace distance { // geos.algorithm.distance + +/* public static */ +void +DistanceToPoint::computeDistance(const geom::Geometry& geom, + const geom::Coordinate& pt, + PointPairDistance& ptDist) +{ + if ( const LineString* ls = dynamic_cast(&geom) ) + { + computeDistance(*ls, pt, ptDist); + } + else if ( const Polygon* pl = dynamic_cast(&geom) ) + { + computeDistance(*pl, pt, ptDist); + } + else if ( const GeometryCollection* gc = dynamic_cast(&geom) ) + { + for (size_t i = 0; i < gc->getNumGeometries(); i++) + { + const Geometry* g = gc->getGeometryN(i); + computeDistance(*g, pt, ptDist); + } + } + else + { + // assume geom is Point + ptDist.setMinimum(*(geom.getCoordinate()), pt); + } +} + +/* public static */ +void +DistanceToPoint::computeDistance(const geom::LineString& line, + const geom::Coordinate& pt, + PointPairDistance& ptDist) +{ + const CoordinateSequence* coordsRO = line.getCoordinatesRO(); + const CoordinateSequence& coords = *coordsRO; + + size_t npts = coords.size(); + if ( ! npts ) return; // can this ever be ? + + LineSegment tempSegment; + Coordinate closestPt; + + Coordinate* segPts[2] = { &(tempSegment.p0), &(tempSegment.p1) }; + tempSegment.p0 = coords.getAt(0); + for (size_t i=1; i/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-recursive + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive 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-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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 -Nru geos-3.1.0/source/algorithm/HCoordinate.cpp geos-3.2.2/source/algorithm/HCoordinate.cpp --- geos-3.1.0/source/algorithm/HCoordinate.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/HCoordinate.cpp 2009-04-15 13:56:08.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: HCoordinate.cpp 2043 2007-12-17 23:05:42Z mloskot $ + * $Id: HCoordinate.cpp 2372 2009-04-15 12:56:08Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: algorithm/HCoordinate.java rev. 1.17 (JTS-1.7) + * Last port: algorithm/HCoordinate.java rev. 1.18 (JTS-1.9) * **********************************************************************/ @@ -57,57 +57,49 @@ << " q2: " << q2 << endl; #endif - HCoordinate hc1p1(p1); +#if 0 // NOTE: unrolled computation is intentionally turned off + // as it makes the algorithm less stable numerically + // In particular the first case in TestBufferMitredJoin.xml + // would fail with unrolled computation on and no input + // simplification in operation/buffer/OffsetCurveBuilder.cpp + + // unrolled computation + + double px = p1.y - p2.y; + double py = p2.x - p1.x; + double pw = p1.x * p2.y - p2.x * p1.y; + + double qx = q1.y - q2.y; + double qy = q2.x - q1.x; + double qw = q1.x * q2.y - q2.x * q1.y; + + double x = py * qw - qy * pw; + double y = qx * pw - px * qw; + double w = px * qy - qx * py; -#if GEOS_DEBUG - cerr << "HCoordinate(p1): " - << hc1p1 << endl; -#endif - - HCoordinate hc1p2(p2); - -#if GEOS_DEBUG - cerr << "HCoordinate(p2): " - << hc1p2 << endl; -#endif - - HCoordinate l1(hc1p1, hc1p2); - -#if GEOS_DEBUG - cerr << "L1 - HCoordinate(HCp1, HCp2): " - << l1 << endl; -#endif - - HCoordinate hc2q1(q1); - -#if GEOS_DEBUG - cerr << "HCoordinate(q1): " - << hc2q1 << endl; -#endif - - HCoordinate hc2q2(q2); - -#if GEOS_DEBUG - cerr << "HCoordinate(q2): " - << hc2q2 << endl; -#endif + double xInt = x/w; + double yInt = y/w; - HCoordinate l2(hc2q1, hc2q2); + if ( (!FINITE(xInt)) || (!FINITE(yInt)) ) + { + throw NotRepresentableException(); + } -#if GEOS_DEBUG - cerr << "L2 - HCoordinate(HCq1, HCq2): " - << l2 << endl; -#endif + ret = Coordinate(xInt, yInt); +#else - HCoordinate intHCoord(l1, l2); + HCoordinate hc1p1(p1); + HCoordinate hc1p2(p2); + HCoordinate l1(hc1p1, hc1p2); + + HCoordinate hc2q1(q1); + HCoordinate hc2q2(q2); + HCoordinate l2(hc2q1, hc2q2); -#if GEOS_DEBUG - cerr << "HCoordinate(L1, L2): " - << intHCoord << endl; + HCoordinate intHCoord(l1, l2); + intHCoord.getCoordinate(ret); #endif - intHCoord.getCoordinate(ret); - } /*public*/ @@ -138,6 +130,34 @@ } /*public*/ +HCoordinate::HCoordinate(const Coordinate& p1, const Coordinate& p2) + : + // optimization when it is known that w = 1 + x ( p1.y - p2.y ), + y ( p2.x - p1.x ), + w ( p1.x * p2.y - p2.x * p1.y ) +{ +} + +/*public*/ +HCoordinate::HCoordinate(const Coordinate& p1, const Coordinate& p2, + const Coordinate& q1, const Coordinate& q2) +{ + // unrolled computation + double px = p1.y - p2.y; + double py = p2.x - p1.x; + double pw = p1.x * p2.y - p2.x * p1.y; + + double qx = q1.y - q2.y; + double qy = q2.x - q1.x; + double qw = q1.x * q2.y - q2.x * q1.y; + + x = py * qw - qy * pw; + y = qx * pw - px * qw; + w = px * qy - qx * py; +} + +/*public*/ #ifndef STORE_INTERMEDIATE_COMPUTATION_VALUES HCoordinate::HCoordinate(const HCoordinate &p1, const HCoordinate &p2) @@ -185,9 +205,10 @@ { long double a = x/w; - if (std::fabs(a) > std::numeric_limits::max()) + //if (std::fabs(a) > std::numeric_limits::max()) + if ( !FINITE(a) ) { - throw NotRepresentableException(); + throw NotRepresentableException(); } return a; } @@ -198,7 +219,8 @@ { long double a = y/w; - if (std::fabs(a) > std::numeric_limits::max()) + //if (std::fabs(a) > std::numeric_limits::max()) + if ( !FINITE(a) ) { throw NotRepresentableException(); } diff -Nru geos-3.1.0/source/algorithm/InteriorPointLine.cpp geos-3.2.2/source/algorithm/InteriorPointLine.cpp --- geos-3.1.0/source/algorithm/InteriorPointLine.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/InteriorPointLine.cpp 2009-06-06 22:14:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: InteriorPointLine.cpp 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: InteriorPointLine.cpp 2554 2009-06-06 21:14:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -38,7 +38,7 @@ InteriorPointLine::InteriorPointLine(const Geometry *g) { - minDistance=DoubleInfinity; + minDistance=DoubleMax; hasInterior=false; if ( g->getCentroid(centroid) ) { diff -Nru geos-3.1.0/source/algorithm/InteriorPointPoint.cpp geos-3.2.2/source/algorithm/InteriorPointPoint.cpp --- geos-3.1.0/source/algorithm/InteriorPointPoint.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/InteriorPointPoint.cpp 2009-06-06 22:14:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: InteriorPointPoint.cpp 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: InteriorPointPoint.cpp 2554 2009-06-06 21:14:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,6 +14,7 @@ * **********************************************************************/ +#include #include #include #include @@ -33,7 +34,7 @@ /*public*/ InteriorPointPoint::InteriorPointPoint(const Geometry *g) { - minDistance=DoubleInfinity; + minDistance=DoubleMax; if ( ! g->getCentroid(centroid) ) { hasInterior=false; } else { diff -Nru geos-3.1.0/source/algorithm/LineIntersector.cpp geos-3.2.2/source/algorithm/LineIntersector.cpp --- geos-3.1.0/source/algorithm/LineIntersector.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/LineIntersector.cpp 2009-04-17 14:59:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineIntersector.cpp 1938 2006-12-07 10:45:16Z strk $ + * $Id: LineIntersector.cpp 2381 2009-04-17 13:59:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: algorithm/RobustLineIntersector.java rev. 1.35 + * Last port: algorithm/RobustLineIntersector.java rev. 1.38 (JTS-1.10) * **********************************************************************/ @@ -309,11 +309,11 @@ intPt[0].z = (intPt[0].z+z)/2; } #endif // COMPUTE_Z - result=DO_INTERSECT; + result=POINT_INTERSECTION; return; } } - result = DONT_INTERSECT; + result = NO_INTERSECTION; } /* public static */ @@ -344,9 +344,9 @@ if (!Envelope::intersects(p1,p2,q1,q2)) { #if GEOS_DEBUG - cerr<<" DONT_INTERSECT"<0 && Pq2>0) || (Pq1<0 && Pq2<0)) { #if GEOS_DEBUG - cerr<<" DONT_INTERSECT"<0 && Qp2>0)||(Qp1<0 && Qp2<0)) { #if GEOS_DEBUG - cerr<<" DONT_INTERSECT"<makePrecise(intPt); + if (precisionModel!=NULL) { + precisionModel->makePrecise(intPt); + } #if COMPUTE_Z @@ -761,6 +740,25 @@ } +/*private*/ +void +LineIntersector::intersectionWithNormalization(const Coordinate& p1, + const Coordinate& p2, const Coordinate& q1, const Coordinate& q2, + Coordinate &intPt) const +{ + Coordinate n1=p1; + Coordinate n2=p2; + Coordinate n3=q1; + Coordinate n4=q2; + Coordinate normPt; + normalizeToEnvCentre(n1, n2, n3, n4, normPt); + + safeHCoordinateIntersection(n1, n2, n3, n4, intPt); + + intPt.x += normPt.x; + intPt.y += normPt.y; +} + /*private*/ double diff -Nru geos-3.1.0/source/algorithm/locate/IndexedPointInAreaLocator.cpp geos-3.2.2/source/algorithm/locate/IndexedPointInAreaLocator.cpp --- geos-3.1.0/source/algorithm/locate/IndexedPointInAreaLocator.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/locate/IndexedPointInAreaLocator.cpp 2009-06-05 10:28:04.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IndexedPointInAreaLocator.cpp 2161 2008-08-18 16:29:09Z mloskot $ + * $Id: IndexedPointInAreaLocator.cpp 2540 2009-06-05 09:28:04Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -45,6 +45,11 @@ IndexedPointInAreaLocator::IntervalIndexedGeometry::~IntervalIndexedGeometry( ) { delete index; + + for ( size_t i = 0, ni = allocatedSegments.size(); i < ni; ++i ) + { + delete allocatedSegments[i]; + } } void @@ -70,10 +75,11 @@ for ( size_t i = 1, ni = pts->size(); i < ni; i++ ) { geom::LineSegment * seg = new geom::LineSegment( (*pts)[ i - 1 ], (*pts)[ i ]); - double min = std::min( seg->p0.y, seg->p1.y); double max = std::max( seg->p0.y, seg->p1.y); + // NOTE: seg ownership still ours + allocatedSegments.push_back(seg); index->insert( min, max, seg); } } @@ -113,7 +119,7 @@ int IndexedPointInAreaLocator::locate( const geom::Coordinate * /*const*/ p) { - algorithm::RayCrossingCounter rcc( p); + algorithm::RayCrossingCounter rcc(*p); IndexedPointInAreaLocator::SegmentVisitor visitor( &rcc); @@ -127,7 +133,7 @@ { geom::LineSegment * seg = (geom::LineSegment *)item; - counter->countSegment( &(*seg)[ 0 ], &(*seg)[ 1 ]); + counter->countSegment( (*seg)[ 0 ], (*seg)[ 1 ]); } void diff -Nru geos-3.1.0/source/algorithm/locate/Makefile.in geos-3.2.2/source/algorithm/locate/Makefile.in --- geos-3.1.0/source/algorithm/locate/Makefile.in 2009-03-11 19:13:35.000000000 +0000 +++ geos-3.2.2/source/algorithm/locate/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(liblocation_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,38 +53,70 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liblocation_la_DEPENDENCIES = am_liblocation_la_OBJECTS = IndexedPointInAreaLocator.lo \ PointOnGeometryLocator.lo SimplePointInAreaLocator.lo liblocation_la_OBJECTS = $(am_liblocation_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(liblocation_la_SOURCES) DIST_SOURCES = $(liblocation_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -111,21 +144,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -134,20 +163,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -168,6 +205,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -179,19 +217,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -203,36 +235,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = liblocation.la INCLUDES = -I$(top_srcdir)/source/headers @@ -250,14 +295,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/algorithm/locate/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/algorithm/locate/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/algorithm/locate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/algorithm/locate/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -275,6 +320,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -285,7 +331,7 @@ rm -f "$${dir}/so_locations"; \ done liblocation.la: $(liblocation_la_OBJECTS) $(liblocation_la_DEPENDENCIES) - $(CXXLINK) $(liblocation_la_LDFLAGS) $(liblocation_la_OBJECTS) $(liblocation_la_LIBADD) $(LIBS) + $(CXXLINK) $(liblocation_la_OBJECTS) $(liblocation_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -298,22 +344,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimplePointInAreaLocator.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -324,10 +370,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -352,15 +394,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -387,16 +428,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -404,14 +445,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -423,81 +464,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -527,6 +588,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -540,7 +602,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -548,18 +610,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -580,23 +662,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/algorithm/Makefile.am geos-3.2.2/source/algorithm/Makefile.am --- geos-3.1.0/source/algorithm/Makefile.am 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/Makefile.am 2009-04-30 10:26:28.000000000 +0100 @@ -1,11 +1,14 @@ SUBDIRS = \ - locate + locate \ + distance noinst_LTLIBRARIES = libalgorithm.la INCLUDES = -I$(top_srcdir)/source/headers libalgorithm_la_SOURCES = \ + Angle.cpp \ + BoundaryNodeRule.cpp \ CentroidArea.cpp \ CentroidLine.cpp \ CentroidPoint.cpp \ @@ -31,5 +34,6 @@ #RobustLineIntersector.cpp libalgorithm_la_LIBADD = \ - locate/liblocation.la + locate/liblocation.la \ + distance/libdistance.la diff -Nru geos-3.1.0/source/algorithm/Makefile.in geos-3.2.2/source/algorithm/Makefile.in --- geos-3.1.0/source/algorithm/Makefile.in 2009-03-11 19:13:34.000000000 +0000 +++ geos-3.2.2/source/algorithm/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libalgorithm_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,43 +53,77 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) -libalgorithm_la_DEPENDENCIES = locate/liblocation.la -am_libalgorithm_la_OBJECTS = CentroidArea.lo CentroidLine.lo \ - CentroidPoint.lo CGAlgorithms.lo ConvexHull.lo HCoordinate.lo \ +libalgorithm_la_DEPENDENCIES = locate/liblocation.la \ + distance/libdistance.la +am_libalgorithm_la_OBJECTS = Angle.lo BoundaryNodeRule.lo \ + CentroidArea.lo CentroidLine.lo CentroidPoint.lo \ + CGAlgorithms.lo ConvexHull.lo HCoordinate.lo \ InteriorPointArea.lo InteriorPointLine.lo \ InteriorPointPoint.lo LineIntersector.lo MCPointInRing.lo \ MinimumDiameter.lo NotRepresentableException.lo \ PointLocator.lo RayCrossingCounter.lo RobustDeterminant.lo \ SimplePointInRing.lo SIRtreePointInRing.lo libalgorithm_la_OBJECTS = $(am_libalgorithm_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libalgorithm_la_SOURCES) DIST_SOURCES = $(libalgorithm_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -116,21 +151,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -139,20 +170,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -173,6 +212,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -184,19 +224,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -208,42 +242,58 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ - locate + locate \ + distance noinst_LTLIBRARIES = libalgorithm.la INCLUDES = -I$(top_srcdir)/source/headers libalgorithm_la_SOURCES = \ + Angle.cpp \ + BoundaryNodeRule.cpp \ CentroidArea.cpp \ CentroidLine.cpp \ CentroidPoint.cpp \ @@ -269,7 +319,8 @@ #NonRobustLineIntersector.cpp #RobustLineIntersector.cpp libalgorithm_la_LIBADD = \ - locate/liblocation.la + locate/liblocation.la \ + distance/libdistance.la all: all-recursive @@ -279,14 +330,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/algorithm/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/algorithm/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/algorithm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/algorithm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -304,6 +355,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -314,7 +366,7 @@ rm -f "$${dir}/so_locations"; \ done libalgorithm.la: $(libalgorithm_la_OBJECTS) $(libalgorithm_la_DEPENDENCIES) - $(CXXLINK) $(libalgorithm_la_LDFLAGS) $(libalgorithm_la_OBJECTS) $(libalgorithm_la_LIBADD) $(LIBS) + $(CXXLINK) $(libalgorithm_la_OBJECTS) $(libalgorithm_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -322,6 +374,8 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Angle.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BoundaryNodeRule.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CGAlgorithms.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CentroidArea.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CentroidLine.Plo@am__quote@ @@ -342,22 +396,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimplePointInRing.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -368,10 +422,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -396,15 +446,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -431,16 +480,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -448,14 +497,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -467,81 +516,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -571,6 +640,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -584,7 +654,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -592,18 +662,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -624,23 +714,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/algorithm/MCPointInRing.cpp geos-3.2.2/source/algorithm/MCPointInRing.cpp --- geos-3.1.0/source/algorithm/MCPointInRing.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/MCPointInRing.cpp 2009-05-06 18:10:01.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCPointInRing.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MCPointInRing.cpp 2477 2009-05-06 17:10:01Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -36,15 +36,18 @@ MCPointInRing::MCSelecter::MCSelecter(const Coordinate& newP, MCPointInRing *prt) + : + MonotoneChainSelectAction() { p=newP; parent=prt; } +/* public overridden */ void -MCPointInRing::MCSelecter::select(LineSegment *ls) +MCPointInRing::MCSelecter::select(const LineSegment& ls) { - parent->testLineSegment(p,ls); + parent->testLineSegment(p, ls); } MCPointInRing::MCPointInRing(const LinearRing *newRing) @@ -72,14 +75,29 @@ // Envelope *env=ring->getEnvelopeInternal(); tree=new bintree::Bintree(); pts=CoordinateSequence::removeRepeatedPoints(ring->getCoordinatesRO()); - vector *mcList=chain::MonotoneChainBuilder::getChains(pts); - for(int i=0;i<(int)mcList->size();i++) { + + // NOTE: we take ownership of mcList and it's elements + vector *mcList = + chain::MonotoneChainBuilder::getChains(pts); + + for(size_t i=0, n=mcList->size(); igetEnvelope(); - interval.min=mcEnv->getMinY(); - interval.max=mcEnv->getMaxY(); - tree->insert(&interval,mc); + const Envelope& mcEnv = mc->getEnvelope(); + interval.min = mcEnv.getMinY(); + interval.max = mcEnv.getMaxY(); + + // TODO: is 'mc' ownership transferred here ? (see below) + // by documentation SpatialIndex does NOT take + // ownership of the items, so unless we query it + // all later we've a leak problem here.. + // Need a focused testcase. + // + tree->insert(&interval, mc); } + + // TODO: mcList elements ownership went to tree or what ? + delete mcList; } @@ -123,7 +141,7 @@ } void -MCPointInRing::testLineSegment(Coordinate& p,LineSegment *seg) +MCPointInRing::testLineSegment(const Coordinate& p, const LineSegment& seg) { double xInt; // x intersection of segment with ray double x1; // translated coordinates @@ -132,23 +150,26 @@ double y2; /* - * Test if segment crosses ray from test point in positive x direction. - */ - Coordinate& p1=seg->p0; - Coordinate& p2=seg->p1; - x1=p1.x-p.x; - y1=p1.y-p.y; - x2=p2.x-p.x; - y2=p2.y-p.y; - if (((y1>0)&&(y2<=0)) || ((y2>0)&&(y1<=0))) { + * Test if segment crosses ray from test point in positive x direction. + */ + const Coordinate& p1 = seg.p0; + const Coordinate& p2 = seg.p1; + x1 = p1.x - p.x; + y1 = p1.y - p.y; + x2 = p2.x - p.x; + y2 = p2.y - p.y; + + if (((y1>0)&&(y2<=0)) || ((y2>0)&&(y1<=0))) + { + /* - * segment straddles x axis, so compute intersection. - */ + * segment straddles x axis, so compute intersection. + */ xInt=RobustDeterminant::signOfDet2x2(x1,y1,x2,y2)/(y2-y1); - //xsave=xInt; + /* - * crosses ray if strictly positive intersection. - */ + * crosses ray if strictly positive intersection. + */ if (0.0 @@ -35,36 +39,58 @@ // public: // /*static*/ int -RayCrossingCounter::locatePointInRing( const geom::Coordinate * point, const geom::CoordinateSequence * ring) +RayCrossingCounter::locatePointInRing(const geom::Coordinate& point, + const geom::CoordinateSequence& ring) { - RayCrossingCounter * rcc = new RayCrossingCounter( point); + RayCrossingCounter rcc(point); - for (int i = 1, ni = ring->size(); i < ni; i++) + for (int i = 1, ni = ring.size(); i < ni; i++) { - const geom::Coordinate & p1 = (*ring)[ i ]; - const geom::Coordinate & p2 = (*ring)[ i - 1 ]; + const geom::Coordinate & p1 = ring[ i ]; + const geom::Coordinate & p2 = ring[ i - 1 ]; - rcc->countSegment( &p1, &p2); + rcc.countSegment(p1, p2); - if ( rcc->isOnSegment() ) - return rcc->getLocation(); + if ( rcc.isOnSegment() ) + return rcc.getLocation(); } - return rcc->getLocation(); + return rcc.getLocation(); +} + +/*static*/ int +RayCrossingCounter::locatePointInRing(const geom::Coordinate& point, + const std::vector& ring) +{ + RayCrossingCounter rcc(point); + + for (int i = 1, ni = ring.size(); i < ni; i++) + { + const geom::Coordinate & p1 = *ring[ i ]; + const geom::Coordinate & p2 = *ring[ i - 1 ]; + + rcc.countSegment(p1, p2); + + if ( rcc.isOnSegment() ) + return rcc.getLocation(); + } + return rcc.getLocation(); } void -RayCrossingCounter::countSegment( const geom::Coordinate * p1, const geom::Coordinate * p2) +RayCrossingCounter::countSegment(const geom::Coordinate& p1, + const geom::Coordinate& p2) { // For each segment, check if it crosses - // a horizontal ray running from the test point in the positive x direction. + // a horizontal ray running from the test point in + // the positive x direction. // check if the segment is strictly to the left of the test point - if (p1->x < point->x && p2->x < point->x) + if (p1.x < point.x && p2.x < point.x) return; // check if the point is equal to the current ring vertex - if (point->x == p2->x && point->y == p2->y) + if (point.x == p2.x && point.y == p2.y) { isPointOnSegment = true; return; @@ -72,44 +98,46 @@ // For horizontal segments, check if the point is on the segment. // Otherwise, horizontal segments are not counted. - if (p1->y == point->y && p2->y == point->y) + if (p1.y == point.y && p2.y == point.y) { - double minx = p1->x; - double maxx = p2->x; + double minx = p1.x; + double maxx = p2.x; if (minx > maxx) { - minx = p2->x; - maxx = p1->x; + minx = p2.x; + maxx = p1.x; } - if (point->x >= minx && point->x <= maxx) + if (point.x >= minx && point.x <= maxx) isPointOnSegment = true; return; } - // Evaluate all non-horizontal segments which cross a horizontal ray to the - // right of the test pt. To avoid double-counting shared vertices, we use the - // convention that + // Evaluate all non-horizontal segments which cross a horizontal ray + // to the right of the test pt. + // To avoid double-counting shared vertices, we use the convention that // - an upward edge includes its starting endpoint, and excludes its // final endpoint // - a downward edge excludes its starting endpoint, and includes its // final endpoint - if (((p1->y > point->y) && (p2->y <= point->y)) || - ((p2->y > point->y) && (p1->y <= point->y)) ) + if (((p1.y > point.y) && (p2.y <= point.y)) || + ((p2.y > point.y) && (p1.y <= point.y)) ) { - // translate the segment so that the test point lies on the origin - double x1 = p1->x - point->x; - double y1 = p1->y - point->y; - double x2 = p2->x - point->x; - double y2 = p2->y - point->y; - - // The translated segment straddles the x-axis. Compute the sign of the - // ordinate of intersection with the x-axis. (y2 != y1, so denominator + // translate the segment so that the test point lies + // on the origin + double x1 = p1.x - point.x; + double y1 = p1.y - point.y; + double x2 = p2.x - point.x; + double y2 = p2.y - point.y; + + // The translated segment straddles the x-axis. + // Compute the sign of the ordinate of intersection + // with the x-axis. (y2 != y1, so denominator // will never be 0.0) - double xIntSign = RobustDeterminant::signOfDet2x2( x1, y1, x2, y2); - + // MD - faster & more robust computation? + double xIntSign = RobustDeterminant::signOfDet2x2(x1, y1, x2, y2); if (xIntSign == 0.0) { isPointOnSegment = true; @@ -132,8 +160,8 @@ if (isPointOnSegment) return geom::Location::BOUNDARY; - // The point is in the interior of the ring if the number of X-crossings is - // odd. + // The point is in the interior of the ring if the number + // of X-crossings is odd. if ((crossingCount % 2) == 1) return geom::Location::INTERIOR; diff -Nru geos-3.1.0/source/algorithm/RobustDeterminant.cpp geos-3.2.2/source/algorithm/RobustDeterminant.cpp --- geos-3.1.0/source/algorithm/RobustDeterminant.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/algorithm/RobustDeterminant.cpp 2009-12-03 19:03:04.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RobustDeterminant.cpp 2148 2008-08-07 16:59:14Z pramsey $ + * $Id: RobustDeterminant.cpp 2764 2009-12-03 19:03:04Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -15,28 +15,18 @@ * ********************************************************************** * - * RobustDeterminant implements an algorithm to compute the - * sign of a 2x2 determinant for double precision values robustly. - * It is a direct translation of code developed by Olivier Devillers. - * - ************************************************************************* - * The original code carries the following copyright notice: - * Author : Olivier Devillers - * Olivier.Devillers@sophia.inria.fr - * http:/www.inria.fr:/prisme/personnel/devillers/anglais/determinant.html - ************************************************************************** + * Last port: algorithm/RobustDeterminant.java 1.15 (JTS-1.10) * - ************************************************************************** - * Copyright (c) 1995 by INRIA Prisme Project - * BP 93 06902 Sophia Antipolis Cedex, France. - * All rights reserved - ************************************************************************** - */ + **********************************************************************/ #include #include +#ifdef _MSC_VER +#pragma warning(disable : 4127) +#endif + namespace geos { namespace algorithm { // geos.algorithm diff -Nru geos-3.1.0/source/dirlist.mk geos-3.2.2/source/dirlist.mk --- geos-3.1.0/source/dirlist.mk 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/dirlist.mk 2010-04-07 15:01:45.000000000 +0100 @@ -1,40 +1,45 @@ -# $Id: dirlist.mk 2129 2008-05-20 21:34:42Z mloskot $ +# $Id: dirlist.mk 2973 2010-04-07 14:01:45Z mloskot $ # -# List of directories use by makefile.vc +# List of directories use by makefile.vc to clean .obj files # -GEOS_DIRLIST = algorithm \ - algorithm\locate \ - examples \ - geom \ - geom\util \ - geom\prep \ - geomgraph \ - geomgraph\index \ - headers \ - headers\geos \ - index \ - index\bintree \ - index\chain \ - index\intervalrtree \ - index\quadtree \ - index\strtree \ - index\sweepline \ - io \ - noding \ - noding\snapround \ - operation \ - operation\buffer \ - operation\distance \ - operation\linemerge \ - operation\overlay \ - operation\polygonize \ - operation\predicate \ - operation\relate \ - operation\valid \ - planargraph \ - planargraph\algorithm \ - precision \ - simplify \ - util - +GEOS_DIRLIST = \ + algorithm \ + algorithm\distance \ + algorithm\locate \ + examples \ + geom \ + geom\util \ + geom\prep \ + geomgraph \ + geomgraph\index \ + headers \ + headers\geos \ + index \ + index\bintree \ + index\chain \ + index\intervalrtree \ + index\quadtree \ + index\strtree \ + index\sweepline \ + io \ + linearref \ + noding \ + noding\snapround \ + operation \ + operation\buffer \ + operation\distance \ + operation\linemerge \ + operation\overlay \ + operation\overlay\snap \ + operation\overlay\validate \ + operation\polygonize \ + operation\predicate \ + operation\relate \ + operation\union \ + operation\valid \ + planargraph \ + planargraph\algorithm \ + precision \ + simplify \ + util diff -Nru geos-3.1.0/source/geom/CoordinateArraySequence.cpp geos-3.2.2/source/geom/CoordinateArraySequence.cpp --- geos-3.1.0/source/geom/CoordinateArraySequence.cpp 2009-03-11 19:13:00.000000000 +0000 +++ geos-3.2.2/source/geom/CoordinateArraySequence.cpp 2009-10-17 14:40:25.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateArraySequence.cpp 2275 2009-03-11 12:18:47Z mloskot $ + * $Id: CoordinateArraySequence.cpp 2680 2009-10-17 13:40:25Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -61,35 +61,37 @@ void CoordinateArraySequence::setPoints(const vector &v) { - assert(0 != vect); vect->assign(v.begin(), v.end()); } const vector* CoordinateArraySequence::toVector() const { - assert(0 != vect); return vect; //new vector(vect->begin(),vect->end()); } +void +CoordinateArraySequence::toVector(vector& out) const +{ + // TODO: can this be optimized ? + out.insert(out.end(), vect->begin(), vect->end()); +} + bool CoordinateArraySequence::isEmpty() const { - assert(0 != vect); return vect->empty(); } void CoordinateArraySequence::add(const Coordinate& c) { - assert(0 != vect); vect->push_back(c); } void CoordinateArraySequence::add(const Coordinate& c, bool allowRepeated) { - assert(0 != vect); if (!allowRepeated && ! vect->empty() ) { const Coordinate& last=vect->back(); @@ -98,6 +100,29 @@ vect->push_back(c); } +/*public*/ +void +CoordinateArraySequence::add(size_t i, const Coordinate& coord, + bool allowRepeated) +{ + // don't add duplicate coordinates + if (! allowRepeated) { + size_t sz = size(); + if (sz > 0) { + if (i > 0) { + const Coordinate& prev = getAt(i - 1); + if (prev.equals2D(coord)) return; + } + if (i < sz) { + const Coordinate& next = getAt(i); + if (next.equals2D(coord)) return; + } + } + } + + vect->insert(vect->begin()+i, coord); +} + size_t CoordinateArraySequence::getSize() const { @@ -107,32 +132,24 @@ const Coordinate & CoordinateArraySequence::getAt(size_t pos) const { - assert(0 != vect); - assert(pos < vect->size()); return (*vect)[pos]; } void CoordinateArraySequence::getAt(size_t pos, Coordinate &c) const { - assert(0 != vect); - assert(possize()); c=(*vect)[pos]; } void CoordinateArraySequence::setAt(const Coordinate& c, size_t pos) { - assert(0 != vect); - assert(possize()); (*vect)[pos]=c; } void CoordinateArraySequence::deleteAt(size_t pos) { - assert(0 != vect); - assert(possize()); vect->erase(vect->begin()+pos); } @@ -162,17 +179,13 @@ void CoordinateArraySequence::expandEnvelope(Envelope &env) const { - assert(0 != vect); - size_t size = vect->size(); - for (size_t i=0; isize(); isize()); - switch (ordinateIndex) { case CoordinateSequence::X: @@ -190,14 +203,6 @@ CoordinateArraySequence::setOrdinate(size_t index, size_t ordinateIndex, double value) { - - assert(0 != vect); - assert(indexsize()); - - assert(ordinateIndex == CoordinateSequence::X - || ordinateIndex == CoordinateSequence::Y - || ordinateIndex == CoordinateSequence::Z); - switch (ordinateIndex) { case CoordinateSequence::X: @@ -210,6 +215,7 @@ (*vect)[index].z = value; break; default: + assert(0); break; } } @@ -217,7 +223,6 @@ void CoordinateArraySequence::apply_rw(const CoordinateFilter *filter) { - assert(0 != vect); for (vector::iterator i=vect->begin(), e=vect->end(); i!=e; ++i) { filter->filter_rw(&(*i)); @@ -227,7 +232,6 @@ void CoordinateArraySequence::apply_ro(CoordinateFilter *filter) const { - assert(0 != vect); for (vector::const_iterator i=vect->begin(), e=vect->end(); i!=e; ++i) { filter->filter_ro(&(*i)); @@ -237,7 +241,6 @@ CoordinateSequence& CoordinateArraySequence::removeRepeatedPoints() { - assert(0 != vect); // We use == operator, which is 2D only vector::iterator new_end = \ std::unique(vect->begin(), vect->end()); diff -Nru geos-3.1.0/source/geom/CoordinateSequence.cpp geos-3.2.2/source/geom/CoordinateSequence.cpp --- geos-3.1.0/source/geom/CoordinateSequence.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/CoordinateSequence.cpp 2009-12-04 15:07:37.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateSequence.cpp 2091 2007-12-21 22:49:03Z mloskot $ + * $Id: CoordinateSequence.cpp 2793 2009-12-04 15:07:37Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -25,6 +25,7 @@ #include #include #include +#include using namespace std; @@ -141,6 +142,21 @@ cl->setPoints(v); } +int +CoordinateSequence::increasingDirection(const CoordinateSequence& pts) +{ + size_t ptsize = pts.size(); + for (size_t i=0, n=ptsize/2; i + +namespace geos { +namespace geom { // geos::geom + +CoordinateSequenceFactory::~CoordinateSequenceFactory() +{} + +} // namespace geos::geom +} + +/********************************************************************** + * $Log$ + * Revision 1.4 2006/04/03 10:56:58 strk + * Removed implementation files build spec for fully-inlined classes + * + **********************************************************************/ + diff -Nru geos-3.1.0/source/geom/Envelope.cpp geos-3.2.2/source/geom/Envelope.cpp --- geos-3.1.0/source/geom/Envelope.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/Envelope.cpp 2009-05-05 15:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Envelope.cpp 2240 2009-01-18 20:34:09Z pramsey $ + * $Id: Envelope.cpp 2470 2009-05-05 14:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geom/Envelope.java rev. 1.41 (JTS-1.7) + * Last port: geom/Envelope.java rev 1.46 (JTS-1.10) * **********************************************************************/ @@ -295,33 +295,33 @@ } /*public*/ -bool -Envelope::contains(const Coordinate& p) const +bool +Envelope::covers(double x, double y) const { - return contains(p.x, p.y); + if (isNull()) return false; + return x >= minx && + x <= maxx && + y >= miny && + y <= maxy; } -/*public*/ -bool -Envelope::contains(double x, double y) const -{ - return x >= minx && - x <= maxx && - y >= miny && - y <= maxy; -} /*public*/ -bool -Envelope::contains(const Envelope* other) const +bool +Envelope::covers(const Envelope& other) const { - if (isNull() || other->isNull()) { return false; } - return other->getMinX() >= minx && - other->getMaxX() <= maxx && - other->getMinY() >= miny && - other->getMaxY() <= maxy; + if (isNull() || other.isNull()) return false; + + return + other.getMinX() >= minx && + other.getMaxX() <= maxx && + other.getMinY() >= miny && + other.getMaxY() <= maxy; } + + + /*public*/ bool Envelope::equals(const Envelope* other) const diff -Nru geos-3.1.0/source/geom/GeometryCollection.cpp geos-3.2.2/source/geom/GeometryCollection.cpp --- geos-3.1.0/source/geom/GeometryCollection.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/GeometryCollection.cpp 2009-11-30 13:55:12.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryCollection.cpp 2040 2007-12-13 16:09:25Z mloskot $ + * $Id: GeometryCollection.cpp 2754 2009-11-30 13:55:12Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/GeometryCollection.java rev. 1.41 + * **********************************************************************/ #include #include #include #include +#include #include #include #include @@ -151,12 +156,6 @@ return "GeometryCollection"; } -bool -GeometryCollection::isSimple() const -{ - throw util::IllegalArgumentException("Operation not supported by GeometryCollection\n"); -} - Geometry* GeometryCollection::getBoundary() const { @@ -304,6 +303,34 @@ } } +void +GeometryCollection::apply_rw(CoordinateSequenceFilter& filter) +{ + size_t ngeoms = geometries->size(); + if (ngeoms == 0 ) return; + for (size_t i = 0; i < ngeoms; ++i) + { + (*geometries)[i]->apply_rw(filter); + if (filter.isDone()) break; + } + if (filter.isGeometryChanged()) geometryChanged(); +} + +void +GeometryCollection::apply_ro(CoordinateSequenceFilter& filter) const +{ + size_t ngeoms = geometries->size(); + if (ngeoms == 0 ) return; + for (size_t i = 0; i < ngeoms; ++i) + { + (*geometries)[i]->apply_ro(filter); + if (filter.isDone()) break; + } + + assert(!filter.isGeometryChanged()); // read-only filter... + //if (filter.isGeometryChanged()) geometryChanged(); +} + GeometryCollection::~GeometryCollection() { for(size_t i=0; isize(); ++i) diff -Nru geos-3.1.0/source/geom/GeometryComponentFilter.cpp geos-3.2.2/source/geom/GeometryComponentFilter.cpp --- geos-3.1.0/source/geom/GeometryComponentFilter.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/GeometryComponentFilter.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryComponentFilter.cpp 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: GeometryComponentFilter.cpp 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -23,14 +23,16 @@ namespace geos { namespace geom { // geos::geom -void GeometryComponentFilter::filter_rw(Geometry *geom) { - geom->geometryChangedAction(); +void GeometryComponentFilter::filter_rw(Geometry *geom) +{ + ::geos::ignore_unused_variable_warning(geom); + assert(0); } void GeometryComponentFilter::filter_ro(const Geometry *geom) { - UNREFERENCED_PARAMETER(geom); - //assert(0); + ::geos::ignore_unused_variable_warning(geom); + assert(0); } diff -Nru geos-3.1.0/source/geom/Geometry.cpp geos-3.2.2/source/geom/Geometry.cpp --- geos-3.1.0/source/geom/Geometry.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/Geometry.cpp 2009-11-23 18:06:37.000000000 +0000 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: Geometry.cpp 2252 2009-01-21 22:18:37Z pramsey $ + * $Id: Geometry.cpp 2734 2009-11-23 18:06:37Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * @@ -14,7 +15,7 @@ * ********************************************************************** * - * Last port: geom/Geometry.java rev. 1.100 + * Last port: geom/Geometry.java rev. 1.112 * **********************************************************************/ @@ -45,8 +46,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -70,6 +73,7 @@ using namespace geos::operation::relate; using namespace geos::operation::buffer; using namespace geos::operation::overlay; +using namespace geos::operation::overlay::snap; using namespace geos::operation::distance; using namespace geos::operation; @@ -96,7 +100,7 @@ return GEOS_JTS_PORT; } -GeometryComponentFilter Geometry::geometryChangedFilter; +Geometry::GeometryChangedFilter Geometry::geometryChangedFilter; // REMOVE THIS, use GeometryFactory::getDefaultInstance() directly const GeometryFactory* Geometry::INTERNAL_GEOMETRY_FACTORY=GeometryFactory::getDefaultInstance(); @@ -145,7 +149,7 @@ { size_t npts=list->getSize(); for (size_t i=0; igetAt(i)==Coordinate::getNull()) { + if (list->getAt(i).isNull()) { return true; } } @@ -376,12 +380,15 @@ { #ifdef SHORTCIRCUIT_PREDICATES // short-circuit test - if (! getEnvelopeInternal()->contains(g->getEnvelopeInternal())) + if (! getEnvelopeInternal()->covers(g->getEnvelopeInternal())) return false; #endif + // optimization for rectangle arguments if (isRectangle()) { - return getEnvelopeInternal()->contains(g->getEnvelopeInternal()); + // since we have already tested that the test envelope + // is covered + return true; } auto_ptr im(relate(g)); @@ -525,13 +532,28 @@ Geometry* Geometry::intersection(const Geometry *other) const { - return OverlayOp::overlayOp(this, other, OverlayOp::opINTERSECTION); + /** + * TODO: MD - add optimization for P-A case using Point-In-Polygon + */ + + // special case: if one input is empty ==> empty + if (isEmpty() || other->isEmpty() ) + { + return getFactory()->createGeometryCollection(); + } + + return SnapIfNeededOverlayOp::overlayOp(*this, *other, OverlayOp::opINTERSECTION).release(); } Geometry* Geometry::Union(const Geometry *other) const //throw(TopologyException *, IllegalArgumentException *) { + + // special case: if one input is empty ==> other input + if ( isEmpty() ) return other->clone(); + if ( other->isEmpty() ) return clone(); + Geometry *out = NULL; #ifdef SHORTCIRCUIT_PREDICATES @@ -541,13 +563,18 @@ { //cerr<<"SHORTCIRCUITED-UNION engaged"<getNumGeometries(); + + // Allocated for ownership transfer vector *v = new vector(); + v->reserve(ngeomsThis+ngeomsOther); + if ( NULL != (coll = dynamic_cast(this)) ) { - ngeoms = coll->getNumGeometries(); - for (i=0; ipush_back(coll->getGeometryN(i)->clone()); } else { v->push_back(this->clone()); @@ -555,8 +582,7 @@ if ( NULL != (coll = dynamic_cast(other)) ) { - ngeoms = coll->getNumGeometries(); - for (i=0; ipush_back(coll->getGeometryN(i)->clone()); } else { v->push_back(other->clone()); @@ -567,20 +593,28 @@ } #endif - return OverlayOp::overlayOp(this, other, OverlayOp::opUNION); + return SnapIfNeededOverlayOp::overlayOp(*this, *other, OverlayOp::opUNION).release(); } Geometry* Geometry::difference(const Geometry *other) const //throw(IllegalArgumentException *) { - return OverlayOp::overlayOp(this, other, OverlayOp::opDIFFERENCE); + // special case: if A.isEmpty ==> empty; if B.isEmpty ==> A + if (isEmpty()) return getFactory()->createGeometryCollection(); + if (other->isEmpty()) return clone(); + + return SnapIfNeededOverlayOp::overlayOp(*this, *other, OverlayOp::opDIFFERENCE).release(); } Geometry* Geometry::symDifference(const Geometry *other) const { - return OverlayOp::overlayOp(this, other, OverlayOp::opSYMDIFFERENCE); + // special case: if either input is empty ==> other input + if ( isEmpty() ) return other->clone(); + if ( other->isEmpty() ) return clone(); + + return SnapIfNeededOverlayOp::overlayOp(*this, *other, OverlayOp::opSYMDIFFERENCE).release(); } int @@ -788,403 +822,15 @@ filter->filter_rw(this); } +bool +Geometry::isSimple() const +{ + checkNotGeometryCollection(this); + operation::IsSimpleOp op(*this); + return op.isSimple(); +} + } // namespace geos::geom } // namespace geos -/********************************************************************** - * $Log$ - * Revision 1.119 2006/07/08 00:33:54 strk - * * configure.in: incremented CAPI minor version, to avoid falling behind any future version from the 2.2. branch. - * * source/geom/Geometry.cpp, source/geom/GeometryFactory.cpp, - * source/geomgraph/EdgeRing.cpp, - * source/headers/geos/geom/Geometry.h, - * source/headers/geos/geom/GeometryFactory.h, - * source/headers/geos/geom/GeometryFactory.inl, - * source/headers/geos/geomgraph/EdgeRing.h: - * updated doxygen comments (sync with JTS head). - * * source/headers/geos/platform.h.in: include - * rather then - * - * Revision 1.118 2006/06/13 21:38:41 strk - * Added self comparison check in Geometry::compareTo(). - * - * Revision 1.117 2006/06/12 10:10:39 strk - * Fixed getGeometryN() to take size_t rather then int, changed unsigned int parameters to size_t. - * - * Revision 1.116 2006/06/05 15:36:34 strk - * Given OverlayOp funx code enum a name and renamed values to have a lowercase prefix. Drop all of noding headers from installed header set. - * - * Revision 1.115 2006/05/18 08:56:50 strk - * * source/geom/Geometry.cpp, - * source/headers/geos/geom/Geometry.h: added - * covers() and isCoveredBy() predicates. - * * tests/unit/Makefile.am, - * tests/unit/geom/Geometry/coversTest.cpp: - * added test for covers() predicates. - * - * Revision 1.114 2006/04/11 09:29:42 strk - * Fixed initialization list (removed compiler warning) - * - * Revision 1.113 2006/04/10 18:15:09 strk - * Changed Geometry::envelope member to be of type auto_ptr. - * Changed computeEnvelopeInternal() signater to return auto_ptr - * - * Revision 1.112 2006/04/10 15:05:15 strk - * Fixed a bug introduced by previous commit in getCentroid() - * - * Revision 1.111 2006/04/10 14:18:51 strk - * Fixed getCentroid(Coordinate&) to round using PrecisionModel - * all unit tests succeed. - * - * Revision 1.110 2006/04/10 13:09:47 strk - * Added GeometryFactory::defaultInstance() - * Made Geometry::INTERNAL_GEOMETRY_FACTORY an alias for it - * removed last deletion from Unload::Release class - * - * Revision 1.109 2006/04/07 09:54:30 strk - * Geometry::getNumGeometries() changed to return 'unsigned int' - * rather then 'int' - * - * Revision 1.108 2006/03/31 11:03:39 strk - * Fixed NULL-GeometryFactory constructor to use INTERNAL_GEOMETRY_FACTORY - * (should fix bug #81) - * - * Revision 1.107 2006/03/24 09:52:41 strk - * USE_INLINE => GEOS_INLINE - * - * Revision 1.106 2006/03/23 12:12:00 strk - * Fixes to allow build with -DGEOS_INLINE - * - * Revision 1.105 2006/03/21 17:55:01 strk - * opDistance.h header split - * - * Revision 1.104 2006/03/21 17:11:56 strk - * opPredicate.h header split - * - * Revision 1.103 2006/03/21 13:11:28 strk - * opRelate.h header split - * - * Revision 1.102 2006/03/20 16:57:43 strk - * spatialindex.h and opValid.h headers split - * - * Revision 1.101 2006/03/20 12:03:25 strk - * Added operator<< for Geometry, writing HEXWKB - * - * Revision 1.100 2006/03/17 13:24:58 strk - * opOverlay.h header splitted. Reduced header inclusions in operation/overlay implementation files. ElevationMatrixFilter code moved from own file to ElevationMatrix.cpp (ideally a class-private). - * - * Revision 1.99 2006/03/16 10:42:43 strk - * Bug #64 - Not all control paths return a value in geos::geom::Geometry::getClassSortIndex - * - * Revision 1.98 2006/03/14 12:55:55 strk - * Headers split: geomgraphindex.h, nodingSnapround.h - * - * Revision 1.97 2006/03/13 21:54:56 strk - * Streamlined headers inclusion. - * - * Revision 1.96 2006/03/09 16:46:47 strk - * geos::geom namespace definition, first pass at headers split - * - * Revision 1.95 2006/03/06 19:40:46 strk - * geos::util namespace. New GeometryCollection::iterator interface, many cleanups. - * - * Revision 1.94 2006/03/06 15:23:14 strk - * geos::io namespace - * - * Revision 1.93 2006/03/03 10:46:21 strk - * Removed 'using namespace' from headers, added missing headers in .cpp files, removed useless includes in headers (bug#46) - * - * Revision 1.92 2006/03/01 18:37:07 strk - * Geometry::createPointFromInternalCoord dropped (it's a duplication of GeometryFactory::createPointFromInternalCoord). - * Fixed bugs in InteriorPoint* and getCentroid() inserted by previous commits. - * - * Revision 1.91 2006/03/01 17:16:38 strk - * LineSegment class made final and optionally (compile-time) inlined. - * Reduced heap allocations in Centroid{Area,Line,Point} and InteriorPoint{Area,Line,Point}. - * - * Revision 1.90 2006/02/20 10:14:18 strk - * - namespaces geos::index::* - * - Doxygen documentation cleanup - * - * Revision 1.89 2006/02/19 19:46:49 strk - * Packages <-> namespaces mapping for most GEOS internal code (uncomplete, but working). Dir-level libs for index/ subdirs. - * - * Revision 1.88 2006/02/18 21:08:09 strk - * - new CoordinateSequence::applyCoordinateFilter method (slow but useful) - * - SegmentString::getCoordinates() doesn't return a clone anymore. - * - SegmentString::getCoordinatesRO() obsoleted. - * - SegmentString constructor does not promises constness of passed - * CoordinateSequence anymore. - * - NEW ScaledNoder class - * - Stubs for MCIndexPointSnapper and MCIndexSnapRounder - * - Simplified internal interaces of OffsetCurveBuilder and OffsetCurveSetBuilder - * - * Revision 1.87 2006/02/09 15:52:47 strk - * GEOSException derived from std::exception; always thrown and cought by const ref. - * - * Revision 1.86 2006/02/09 13:44:57 strk - * Added support for SRID in input WKB, undeprecated Geometry::setSRID - * and Geometry::getSRID - * - * Revision 1.85 2006/02/08 17:18:28 strk - * - New WKTWriter::toLineString and ::toPoint convenience methods - * - New IsValidOp::setSelfTouchingRingFormingHoleValid method - * - New Envelope::centre() - * - New Envelope::intersection(Envelope) - * - New Envelope::expandBy(distance, [ydistance]) - * - New LineString::reverse() - * - New MultiLineString::reverse() - * - New Geometry::buffer(distance, quadSeg, endCapStyle) - * - Obsoleted toInternalGeometry/fromInternalGeometry - * - More const-correctness in Buffer "package" - * - * Revision 1.84 2006/02/01 22:21:29 strk - * - Added rectangle-based optimizations of intersects() and contains() ops - * - Inlined all planarGraphComponent class - * - * Revision 1.83 2006/01/31 19:07:33 strk - * - Renamed DefaultCoordinateSequence to CoordinateArraySequence. - * - Moved GetNumGeometries() and GetGeometryN() interfaces - * from GeometryCollection to Geometry class. - * - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence class. - * - Reworked automake scripts to produce a static lib for each subdir and - * then link all subsystem's libs togheter - * - Moved C-API in it's own top-level dir capi/ - * - Moved source/bigtest and source/test to tests/bigtest and test/xmltester - * - Fixed PointLocator handling of LinearRings - * - Changed CoordinateArrayFilter to reduce memory copies - * - Changed UniqueCoordinateArrayFilter to reduce memory copies - * - Added CGAlgorithms::isPointInRing() version working with - * Coordinate::ConstVect type (faster!) - * - Ported JTS-1.7 version of ConvexHull with big attention to - * memory usage optimizations. - * - Improved XMLTester output and user interface - * - geos::geom::util namespace used for geom/util stuff - * - Improved memory use in geos::geom::util::PolygonExtractor - * - New ShortCircuitedGeometryVisitor class - * - New operation/predicate package - * - * Revision 1.82 2005/11/24 23:09:15 strk - * CoordinateSequence indexes switched from int to the more - * the correct unsigned int. Optimizations here and there - * to avoid calling getSize() in loops. - * Update of all callers is not complete yet. - * - * Revision 1.81 2005/11/21 16:03:20 strk - * - * Coordinate interface change: - * Removed setCoordinate call, use assignment operator - * instead. Provided a compile-time switch to - * make copy ctor and assignment operators non-inline - * to allow for more accurate profiling. - * - * Coordinate copies removal: - * NodeFactory::createNode() takes now a Coordinate reference - * rather then real value. This brings coordinate copies - * in the testLeaksBig.xml test from 654818 to 645991 - * (tested in 2.1 branch). In the head branch Coordinate - * copies are 222198. - * Removed useless coordinate copies in ConvexHull - * operations - * - * STL containers heap allocations reduction: - * Converted many containers element from - * pointers to real objects. - * Made some use of .reserve() or size - * initialization when final container size is known - * in advance. - * - * Stateless classes allocations reduction: - * Provided ::instance() function for - * NodeFactories, to avoid allocating - * more then one (they are all - * stateless). - * - * HCoordinate improvements: - * Changed HCoordinate constructor by HCoordinates - * take reference rather then real objects. - * Changed HCoordinate::intersection to avoid - * a new allocation but rather return into a provided - * storage. LineIntersector changed to reflect - * the above change. - * - * Revision 1.80 2005/11/08 10:03:28 strk - * Set library version to 2.2.0. - * Cleaned up Doxygen warnings. - * Inlined more Envelope methods. - * Dropped deprecated Envelope::overlaps methods. - * - * Revision 1.79 2005/08/22 13:31:16 strk - * Fixed comparator functions used with STL sort() algorithm to - * implement StrictWeakOrdering semantic. - * - * Revision 1.78 2005/07/11 10:50:19 strk - * Added parens suggested by compiler - * - * Revision 1.77 2005/07/11 10:23:17 strk - * removed useless assignment - * - * Revision 1.76 2005/06/22 00:46:57 strk - * Shortcircuit tests for Union - * - * Revision 1.75 2005/05/13 17:14:54 strk - * Added comment about 2D-only comparison of ::equal(Coordinate, Coordinate, double) - * - * Revision 1.74 2005/04/29 17:40:35 strk - * Updated Doxygen documentation and some Copyright headers. - * - * Revision 1.73 2004/12/30 13:31:20 strk - * Fixed a segfault on EMPTYGEOM->getCeontroid() - * - * Revision 1.72 2004/11/17 08:13:16 strk - * Indentation changes. - * Some Z_COMPUTATION activated by default. - * - * Revision 1.71 2004/09/16 09:48:40 strk - * Finer short-circuit tests for equals, within, contains. - * - * Revision 1.70 2004/09/16 07:32:15 strk - * Added short-circuit tests. Can be disabled at compile-time - * - * Revision 1.69 2004/07/27 16:35:46 strk - * Geometry::getEnvelopeInternal() changed to return a const Envelope *. - * This should reduce object copies as once computed the envelope of a - * geometry remains the same. - * - * Revision 1.68 2004/07/22 16:58:01 strk - * runtime version extractor functions split. geos::version() is now - * geos::geosversion() and geos::jtsport() - * - * Revision 1.67 2004/07/21 09:55:24 strk - * CoordinateSequence::atLeastNCoordinatesOrNothing definition fix. - * Documentation fixes. - * - * Revision 1.66 2004/07/20 08:34:18 strk - * Fixed a bug in opDistance.h. - * Removed doxygen tags from obsoleted CoordinateList.cpp. - * Got doxygen to run with no warnings. - * - * Revision 1.65 2004/07/19 13:19:30 strk - * Documentation fixes - * - * Revision 1.64 2004/07/17 10:48:04 strk - * fixed typo in documentation - * - * Revision 1.63 2004/07/17 09:18:54 strk - * Added geos::version() - * - * Revision 1.62 2004/07/14 21:20:58 strk - * Added GeometricShapeFactory note on doxygen mainpage - * - * Revision 1.61 2004/07/08 19:34:49 strk - * Mirrored JTS interface of CoordinateSequence, factory and - * default implementations. - * Added CoordinateArraySequenceFactory::instance() function. - * - * Revision 1.60 2004/07/07 09:38:12 strk - * Dropped WKTWriter::stringOfChars (implemented by std::string). - * Dropped WKTWriter default constructor (internally created GeometryFactory). - * Updated XMLTester to respect the changes. - * Main documentation page made nicer. - * - * Revision 1.59 2004/07/06 17:58:21 strk - * Removed deprecated Geometry constructors based on PrecisionModel and - * SRID specification. Removed SimpleGeometryPrecisionReducer capability - * of changing Geometry's factory. Reverted Geometry::factory member - * to be a reference to external factory. - * - * Revision 1.58 2004/07/05 19:40:48 strk - * Added GeometryFactory::destroyGeometry(Geometry *) - * - * Revision 1.57 2004/07/05 15:20:18 strk - * Documentation again. - * - * Revision 1.56 2004/07/05 10:50:20 strk - * deep-dopy construction taken out of Geometry and implemented only - * in GeometryFactory. - * Deep-copy geometry construction takes care of cleaning up copies - * on exception. - * Implemented clone() method for CoordinateSequence - * Changed createMultiPoint(CoordinateSequence) signature to reflect - * copy semantic (by-ref instead of by-pointer). - * Cleaned up documentation. - * - * Revision 1.55 2004/07/03 12:51:37 strk - * Documentation cleanups for DoxyGen. - * - * Revision 1.54 2004/07/02 13:28:26 strk - * Fixed all #include lines to reflect headers layout change. - * Added client application build tips in README. - * - * Revision 1.53 2004/07/01 17:34:07 strk - * GeometryFactory argument in Geometry constructor reverted - * to its copy-and-destroy semantic. - * - * Revision 1.52 2004/07/01 14:12:44 strk - * - * Geometry constructors come now in two flavors: - * - deep-copy args (pass-by-reference) - * - take-ownership of args (pass-by-pointer) - * Same functionality is available through GeometryFactory, - * including buildGeometry(). - * - * Revision 1.51 2004/06/30 20:59:12 strk - * Removed GeoemtryFactory copy from geometry constructors. - * Enforced const-correctness on GeometryFactory arguments. - * - * Revision 1.50 2004/05/21 13:58:47 strk - * ::intersection missed to invalidate geometryCollection inputs - * - * Revision 1.49 2004/05/17 07:23:05 strk - * ::getCeontroid(): reduced dynamic allocations, added missing check for isEmpty - * - * Revision 1.48 2004/05/14 12:14:08 strk - * const correctness - * - * Revision 1.47 2004/05/07 09:05:13 strk - * Some const correctness added. Fixed bug in GeometryFactory::createMultiPoint - * to handle NULL CoordinateSequence. - * - * Revision 1.46 2004/05/05 16:51:29 strk - * avoided copy constructor in Geometry::geometryChangedFilter initializzazion - * - * Revision 1.45 2004/05/05 10:54:48 strk - * Removed some private static heap explicit allocation, less cleanup done by - * the unloader. - * - * Revision 1.44 2004/04/30 09:15:28 strk - * Enlarged exception specifications to allow for AssertionFailedException. - * Added missing initializers. - * - * Revision 1.43 2004/04/20 10:14:20 strk - * Memory leaks removed. - * - * Revision 1.42 2004/04/14 13:56:26 strk - * All geometries returned by {from,to}InternalGeometry calls are - * now deleted after use (unless NOT new). - * Some 'commented' throw specifications in geom.h - * - * Revision 1.41 2004/04/14 07:29:43 strk - * Fixed GeometryFactory constructors to copy given PrecisionModel. Added GeometryFactory copy constructor. Fixed Geometry constructors to copy GeometryFactory. - * - * Revision 1.40 2004/04/01 10:44:33 ybychkov - * All "geom" classes from JTS 1.3 upgraded to JTS 1.4 - * - * Revision 1.39 2004/03/17 02:00:33 ybychkov - * "Algorithm" upgraded to JTS 1.4 - * - * Revision 1.38 2004/03/01 22:04:59 strk - * applied const correctness changes by Manuel Prieto Villegas - * - * Revision 1.37 2003/11/07 01:23:42 pramsey - * Add standard CVS headers licence notices and copyrights to all cpp and h - * files. - * - * Revision 1.36 2003/10/20 15:41:34 strk - * Geometry::checkNotGeometryCollection made static and non-distructive. - * - * Revision 1.35 2003/10/13 12:51:28 strk - * removed sortedClasses strings array from all geometries. - * - **********************************************************************/ diff -Nru geos-3.1.0/source/geom/GeometryFactory.cpp geos-3.2.2/source/geom/GeometryFactory.cpp --- geos-3.1.0/source/geom/GeometryFactory.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/GeometryFactory.cpp 2009-08-03 00:15:54.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryFactory.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryFactory.cpp 2617 2009-08-02 23:15:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -75,7 +75,7 @@ { #if GEOS_DEBUG std::cerr << "GEOS_DEBUG: GeometryFactory["<create(new vector(1, coordinate)); diff -Nru geos-3.1.0/source/geom/GeometryList.cpp geos-3.2.2/source/geom/GeometryList.cpp --- geos-3.1.0/source/geom/GeometryList.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/GeometryList.cpp 2010-03-26 12:00:34.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryList.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryList.cpp 2951 2010-03-26 12:00:34Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -56,6 +56,13 @@ } /*public*/ +GeometryList::size_type +GeometryList::size() const +{ + return geoms.size(); +} + +/*public*/ Geometry * GeometryList::operator[] (GeometryList::size_type i) { diff -Nru geos-3.1.0/source/geom/LinearRing.cpp geos-3.2.2/source/geom/LinearRing.cpp --- geos-3.1.0/source/geom/LinearRing.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/LinearRing.cpp 2009-06-04 16:01:08.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LinearRing.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LinearRing.cpp 2538 2009-06-04 15:01:08Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,13 +12,20 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/LinearRing.java rev. 1.32 (JTS-1.10) + * **********************************************************************/ #include +#include #include #include #include +#include +#include #include #include @@ -52,11 +59,22 @@ void LinearRing::validateConstruction() { - if (!LineString::isEmpty() && !LineString::isClosed()) { - throw util::IllegalArgumentException("points must form a closed linestring"); - } - if (!points->isEmpty() && (points->getSize()>=1 && points->getSize()<=3)) { - throw util::IllegalArgumentException("Number of points must be 0 or >3"); + // Empty ring is valid + if ( points->isEmpty() ) return; + + if ( !LineString::isClosed() ) + { + throw util::IllegalArgumentException( + "Points of LinearRing do not form a closed linestring" + ); + } + + if ( points->getSize() <= 3 ) + { + std::ostringstream os; + os << "Invalid number of points in LinearRing found " + << points->getSize() << " - must be 0 or >= 4"; + throw util::IllegalArgumentException(os.str()); } } @@ -66,15 +84,21 @@ LinearRing::~LinearRing(){ } -bool LinearRing::isSimple() const { +int +LinearRing::getBoundaryDimension() const +{ + return Dimension::False; +} + +bool +LinearRing::isSimple() const +{ return true; } + string LinearRing::getGeometryType() const { return "LinearRing"; } -bool LinearRing::isClosed() const { - return true; -} void LinearRing::setPoints(CoordinateSequence* cl){ const vector *v=cl->toVector(); @@ -87,6 +111,16 @@ return GEOS_LINEARRING; } +Geometry* +LinearRing::reverse() const +{ + assert(points.get()); + CoordinateSequence* seq = points->clone(); + CoordinateSequence::reverse(seq); + assert(getFactory()); + return getFactory()->createLinearRing(seq); +} + } // namespace geos::geom } // namespace geos diff -Nru geos-3.1.0/source/geom/LineSegment.cpp geos-3.2.2/source/geom/LineSegment.cpp --- geos-3.1.0/source/geom/LineSegment.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/LineSegment.cpp 2009-06-06 22:14:51.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: LineSegment.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineSegment.cpp 2554 2009-06-06 21:14:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * @@ -12,14 +13,22 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/LineSegment.java rev. 1.30 (JTS-1.9) + * **********************************************************************/ #include +#include // for toGeometry #include #include +#include #include // should we really be using this? #include #include +#include +#include #include #include @@ -31,6 +40,10 @@ #endif using namespace std; +//using namespace geos::algorithm; +using geos::algorithm::HCoordinate; +using geos::algorithm::NotRepresentableException; +using geos::algorithm::LineIntersector; namespace geos { namespace geom { // geos::geom @@ -71,6 +84,18 @@ } /*public*/ +double +LineSegment::segmentFraction(const Coordinate& inputPt) const +{ + double segFrac = projectionFactor(inputPt); + if (segFrac < 0.0) + segFrac = 0.0; + else if (segFrac > 1.0) + segFrac = 1.0; + return segFrac; +} + +/*public*/ void LineSegment::project(const Coordinate& p, Coordinate& ret) const { @@ -169,7 +194,7 @@ CoordinateSequence *closestPt=new CoordinateArraySequence(2); //vector *cv = new vector(2); - double minDistance=DoubleInfinity; + double minDistance=DoubleMax; double dist; Coordinate close00; @@ -227,6 +252,57 @@ return false; } +bool +LineSegment::lineIntersection(const LineSegment& line, Coordinate& ret) const +{ + try { + HCoordinate::intersection(p0, p1, line.p0, line.p1, ret); + return true; + } + catch (const NotRepresentableException& /*ex*/) { + // eat this exception, and return null; + } + return false; +} + + +/* public */ +void +LineSegment::pointAlongOffset(double segmentLengthFraction, + double offsetDistance, + Coordinate& ret) const +{ + // the point on the segment line + double segx = p0.x + segmentLengthFraction * (p1.x - p0.x); + double segy = p0.y + segmentLengthFraction * (p1.y - p0.y); + + double dx = p1.x - p0.x; + double dy = p1.y - p0.y; + double len = sqrt(dx * dx + dy * dy); + // u is the vector that is the length of the offset, + // in the direction of the segment + double ux = offsetDistance * dx / len; + double uy = offsetDistance * dy / len; + + // the offset point is the seg point plus the offset + // vector rotated 90 degrees CCW + double offsetx = segx - uy; + double offsety = segy + ux; + + ret = Coordinate(offsetx, offsety); +} + +/* public */ +std::auto_ptr +LineSegment::toGeometry(const GeometryFactory& gf) const +{ + CoordinateSequence *cl=new CoordinateArraySequence(); + cl->add(p0); + cl->add(p1); + return std::auto_ptr( + gf.createLineString(cl) // ownership transferred + ); +} } // namespace geos::geom } // namespace geos diff -Nru geos-3.1.0/source/geom/LineString.cpp geos-3.2.2/source/geom/LineString.cpp --- geos-3.1.0/source/geom/LineString.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/LineString.cpp 2009-04-30 13:07:26.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineString.cpp 2091 2007-12-21 22:49:03Z mloskot $ + * $Id: LineString.cpp 2441 2009-04-30 12:07:26Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,14 +12,18 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/LineString.java rev. 1.46 + * **********************************************************************/ #include #include -#include #include #include #include +#include #include #include #include @@ -50,7 +54,7 @@ //points=ls.points->clone(); } -LineString* +Geometry* LineString::reverse() const { assert(points.get()); @@ -203,19 +207,15 @@ return "LineString"; } -bool -LineString::isSimple() const -{ - operation::IsSimpleOp iso; - return iso.isSimple(this); -} - Geometry* LineString::getBoundary() const { if (isEmpty()) { - return getFactory()->createEmptyGeometry(); + return getFactory()->createMultiPoint(); } + + // using the default OGC_SFS MOD2 rule, the boundary of a + // closed LineString is empty if (isClosed()) { return getFactory()->createMultiPoint(); } @@ -382,6 +382,32 @@ filter->filter_ro(this); } +void +LineString::apply_rw(CoordinateSequenceFilter& filter) +{ + size_t npts=points->size(); + if (!npts) return; + for (size_t i = 0; isize(); + if (!npts) return; + for (size_t i = 0; i/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -479,81 +521,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -583,6 +645,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -596,7 +659,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -604,18 +667,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -636,23 +719,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/geom/MultiLineString.cpp geos-3.2.2/source/geom/MultiLineString.cpp --- geos-3.1.0/source/geom/MultiLineString.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/MultiLineString.cpp 2009-04-30 12:36:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiLineString.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiLineString.cpp 2438 2009-04-30 11:36:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,9 +12,12 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiLineString.java rev. 1.40 + * **********************************************************************/ -#include #include #include #include @@ -75,12 +78,9 @@ return true; } -bool MultiLineString::isSimple() const { - operation::IsSimpleOp iso; - return iso.isSimple(this); -} - -Geometry* MultiLineString::getBoundary() const { +Geometry* +MultiLineString::getBoundary() const +{ if (isEmpty()) { return getFactory()->createGeometryCollection(NULL); } diff -Nru geos-3.1.0/source/geom/MultiPoint.cpp geos-3.2.2/source/geom/MultiPoint.cpp --- geos-3.1.0/source/geom/MultiPoint.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/MultiPoint.cpp 2009-04-30 12:42:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiPoint.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiPoint.cpp 2439 2009-04-30 11:42:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,14 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiPoint.java rev. 1.30 + * **********************************************************************/ #include #include -#include #include #include @@ -52,21 +55,9 @@ } Geometry* MultiPoint::getBoundary() const { - return getFactory()->createGeometryCollection(NULL); + return getFactory()->createGeometryCollection(); } -bool MultiPoint::isSimple() const { - operation::IsSimpleOp iso; - return iso.isSimple(this); - - //Geometry *in = toInternalGeometry(this); - //bool issimple = iso.isSimple((MultiPoint *)in); - //if ( (MultiPoint *)in != this ) delete(in); - //return issimple; -} - -//bool MultiPoint::isValid() const { return true; } - bool MultiPoint::equalsExact(const Geometry *other, double tolerance) const { diff -Nru geos-3.1.0/source/geom/MultiPolygon.cpp geos-3.2.2/source/geom/MultiPolygon.cpp --- geos-3.1.0/source/geom/MultiPolygon.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/MultiPolygon.cpp 2009-04-30 12:29:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiPolygon.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiPolygon.cpp 2437 2009-04-30 11:29:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiPolygon.java rev 1.34 + * **********************************************************************/ #include @@ -60,7 +64,7 @@ Geometry* MultiPolygon::getBoundary() const { if (isEmpty()) { - return getFactory()->createGeometryCollection(NULL); + return getFactory()->createMultiLineString(); } vector* allRings=new vector(); for (size_t i = 0; i < geometries->size(); i++) { diff -Nru geos-3.1.0/source/geom/Point.cpp geos-3.2.2/source/geom/Point.cpp --- geos-3.1.0/source/geom/Point.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/Point.cpp 2009-04-30 13:17:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Point.cpp 1921 2006-11-23 20:17:43Z strk $ + * $Id: Point.cpp 2442 2009-04-30 12:17:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/Point.java rev. 1.37 (JTS-1.10) + * **********************************************************************/ #include @@ -19,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -187,6 +192,22 @@ filter->filter_ro(this); } +void +Point::apply_rw(CoordinateSequenceFilter& filter) +{ + if (isEmpty()) return; + filter.filter_rw(*coordinates, 0); + if (filter.isGeometryChanged()) geometryChanged(); +} + +void +Point::apply_ro(CoordinateSequenceFilter& filter) const +{ + if (isEmpty()) return; + filter.filter_ro(*coordinates, 0); + //if (filter.isGeometryChanged()) geometryChanged(); +} + bool Point::equalsExact(const Geometry *other, double tolerance) const { @@ -236,94 +257,3 @@ } // namespace geos::geom } // namesapce geos - -/********************************************************************** - * - * $Log$ - * Revision 1.46 2006/05/04 15:49:39 strk - * updated all Geometry::getDimension() methods to return Dimension::DimensionType (closes bug#93) - * - * Revision 1.45 2006/04/28 10:55:39 strk - * Geometry constructors made protected, to ensure all constructions use GeometryFactory, - * which has been made friend of all Geometry derivates. getNumPoints() changed to return - * size_t. - * - * Revision 1.44 2006/04/10 18:15:09 strk - * Changed Geometry::envelope member to be of type auto_ptr. - * Changed computeEnvelopeInternal() signater to return auto_ptr - * - * Revision 1.43 2006/04/10 17:35:44 strk - * Changed LineString::points and Point::coordinates to be wrapped - * in an auto_ptr<>. This should close bugs #86 and #89 - * - * Revision 1.42 2006/03/22 16:58:34 strk - * Removed (almost) all inclusions of geom.h. - * Removed obsoleted .cpp files. - * Fixed a bug in WKTReader not using the provided CoordinateSequence - * implementation, optimized out some memory allocations. - * - * Revision 1.41 2006/03/09 16:46:47 strk - * geos::geom namespace definition, first pass at headers split - * - * Revision 1.40 2006/03/06 19:40:46 strk - * geos::util namespace. New GeometryCollection::iterator interface, many cleanups. - * - * Revision 1.39 2006/03/03 10:46:21 strk - * Removed 'using namespace' from headers, added missing headers in .cpp files, removed useless includes in headers (bug#46) - * - * Revision 1.38 2006/02/09 15:52:47 strk - * GEOSException derived from std::exception; always thrown and cought by const ref. - * - * Revision 1.37 2006/01/31 19:07:33 strk - * - Renamed DefaultCoordinateSequence to CoordinateArraySequence. - * - Moved GetNumGeometries() and GetGeometryN() interfaces - * from GeometryCollection to Geometry class. - * - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence class. - * - Reworked automake scripts to produce a static lib for each subdir and - * then link all subsystem's libs togheter - * - Moved C-API in it's own top-level dir capi/ - * - Moved source/bigtest and source/test to tests/bigtest and test/xmltester - * - Fixed PointLocator handling of LinearRings - * - Changed CoordinateArrayFilter to reduce memory copies - * - Changed UniqueCoordinateArrayFilter to reduce memory copies - * - Added CGAlgorithms::isPointInRing() version working with - * Coordinate::ConstVect type (faster!) - * - Ported JTS-1.7 version of ConvexHull with big attention to - * memory usage optimizations. - * - Improved XMLTester output and user interface - * - geos::geom::util namespace used for geom/util stuff - * - Improved memory use in geos::geom::util::PolygonExtractor - * - New ShortCircuitedGeometryVisitor class - * - New operation/predicate package - * - * Revision 1.36 2005/12/08 14:14:07 strk - * ElevationMatrixFilter used for both elevation and Matrix fill, - * thus removing CoordinateSequence copy in ElevetaionMatrix::add(Geometry *). - * Changed CoordinateFilter::filter_rw to be a const method: updated - * all apply_rw() methods to take a const CoordinateFilter. - * - * Revision 1.35 2005/06/23 14:22:33 strk - * Inlined and added missing ::clone() for Geometry subclasses - * - * Revision 1.34 2005/05/23 16:42:43 strk - * Added Refractions copyright - * - * Revision 1.33 2005/05/13 17:15:34 strk - * cleanups and indentations - * - * Revision 1.32 2005/04/19 11:49:26 strk - * Fixed segfault in ::isEmpty - * - * Revision 1.31 2004/11/23 16:22:49 strk - * Added ElevationMatrix class and components to do post-processing draping of overlayed geometries. - * - * Revision 1.30 2004/09/13 12:39:14 strk - * Made Point and MultiPoint subject to Validity tests. - * - * Revision 1.29 2004/07/08 19:34:49 strk - * Mirrored JTS interface of CoordinateSequence, factory and - * default implementations. - * Added CoordinateArraySequenceFactory::instance() function. - * - **********************************************************************/ - diff -Nru geos-3.1.0/source/geom/Polygon.cpp geos-3.2.2/source/geom/Polygon.cpp --- geos-3.1.0/source/geom/Polygon.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/Polygon.cpp 2009-10-17 13:28:41.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Polygon.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Polygon.cpp 2678 2009-10-17 12:28:41Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geom/Polygon.java rev. 1.47 + * Last port: geom/Polygon.java rev. 1.50 * **********************************************************************/ @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -73,7 +74,7 @@ } else { - if (newShell->isEmpty() && hasNonEmptyElements(newHoles)) { + if (newHoles != NULL && newShell->isEmpty() && hasNonEmptyElements(newHoles)) { delete newShell; delete newHoles; throw util::IllegalArgumentException("shell is empty but holes are not"); @@ -106,30 +107,21 @@ return getFactory()->getCoordinateSequenceFactory()->create(NULL); } - size_t i, j, npts; - size_t nholes=holes->size(); - vector *cl = new vector; + // reserve space in the vector for all the polygon points + cl->reserve(getNumPoints()); + // Add shell points const CoordinateSequence* shellCoords=shell->getCoordinatesRO(); - npts=shellCoords->getSize(); - - /* - * reserve space in the vector as if all holes have the same - * amount of points. Holes usually have less, so this should - * be a good compromise - */ - cl->reserve((nholes+1)*npts); - - for (j=0; jpush_back(shellCoords->getAt(j)); + shellCoords->toVector(*cl); - for (i=0; isize(); + for (size_t i=0; igetCoordinatesRO(); - npts=childCoords->getSize(); - for (j=0; jpush_back(childCoords->getAt(j)); + childCoords->toVector(*cl); } return getFactory()->getCoordinateSequenceFactory()->create(cl); @@ -208,7 +200,7 @@ const GeometryFactory* gf = getFactory(); if (isEmpty()) { - return gf->createEmptyGeometry(); + return gf->createMultiLineString(); } if ( ! holes->size() ) @@ -409,6 +401,40 @@ } } +void +Polygon::apply_rw(CoordinateSequenceFilter& filter) +{ + shell->apply_rw(filter); + + if (! filter.isDone()) + { + for (size_t i=0, n=holes->size(); iapply_rw(filter); + if (filter.isDone()) + break; + } + } + if (filter.isGeometryChanged()) geometryChanged(); +} + +void +Polygon::apply_ro(CoordinateSequenceFilter& filter) const +{ + shell->apply_ro(filter); + + if (! filter.isDone()) + { + for (size_t i=0, n=holes->size(); iapply_ro(filter); + if (filter.isDone()) + break; + } + } + //if (filter.isGeometryChanged()) geometryChanged(); +} + Polygon::~Polygon() { delete shell; diff -Nru geos-3.1.0/source/geom/PrecisionModel.cpp geos-3.2.2/source/geom/PrecisionModel.cpp --- geos-3.1.0/source/geom/PrecisionModel.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/PrecisionModel.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PrecisionModel.cpp 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: PrecisionModel.cpp 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -110,8 +110,8 @@ : modelType(FIXED) { - UNREFERENCED_PARAMETER(newOffsetX); - UNREFERENCED_PARAMETER(newOffsetY); + ::geos::ignore_unused_variable_warning(newOffsetX); + ::geos::ignore_unused_variable_warning(newOffsetY); #if GEOS_DEBUG cerr<<"PrecisionModel["< @@ -112,8 +117,9 @@ // Do point-in-poly tests first, since they are cheaper and may result // in a quick negative result. // - // If a point of any test components does not lie in target, result is false - bool isAllInTargetArea = isAllTestComponentsInTargetArea( geom); + // If a point of any test components does not lie in target, + // result is false + bool isAllInTargetArea = isAllTestComponentsInTarget( geom); if ( !isAllInTargetArea ) return false; @@ -176,7 +182,7 @@ || geom->getGeometryTypeId() == geos::geom::GEOS_POLYGON ) { // TODO: generalize this to handle GeometryCollections - bool isTargetInTestArea = isAnyTargetComponentInTestArea( geom, prepPoly->getRepresentativePoints()); + bool isTargetInTestArea = isAnyTargetComponentInAreaTest( geom, prepPoly->getRepresentativePoints()); if ( isTargetInTestArea ) return false; diff -Nru geos-3.1.0/source/geom/prep/BasicPreparedGeometry.cpp geos-3.2.2/source/geom/prep/BasicPreparedGeometry.cpp --- geos-3.1.0/source/geom/prep/BasicPreparedGeometry.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/BasicPreparedGeometry.cpp 2009-12-11 13:10:32.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: BasicPreparedGeometry.cpp 2158 2008-08-18 16:24:18Z mloskot $ + * $Id: BasicPreparedGeometry.cpp 2822 2009-12-11 13:10:32Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/BasicPreparedGeometry.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ @@ -62,12 +66,12 @@ bool BasicPreparedGeometry::isAnyTargetComponentInTest( const geom::Geometry * testGeom) const { - algorithm::PointLocator *locator = new algorithm::PointLocator(); + algorithm::PointLocator locator; for (size_t i=0, n=representativePts.size(); iintersects( c, testGeom) ) + const geom::Coordinate& c = *(representativePts[i]); + if ( locator.intersects( c, testGeom) ) return true; } return false; @@ -82,6 +86,15 @@ bool BasicPreparedGeometry::containsProperly(const geom::Geometry * g) const { + // since raw relate is used, provide some optimizations + + // short-circuit test + if (! baseGeom->getEnvelopeInternal()->contains(g->getEnvelopeInternal())) + { + return false; + } + + // otherwise, compute using relate mask return baseGeom->relate(g, "T**FF*FF*"); } diff -Nru geos-3.1.0/source/geom/prep/Makefile.in geos-3.2.2/source/geom/prep/Makefile.in --- geos-3.1.0/source/geom/prep/Makefile.in 2009-03-11 19:13:35.000000000 +0000 +++ geos-3.2.2/source/geom/prep/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libgeomprep_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,6 +53,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libgeomprep_la_LIBADD = am_libgeomprep_la_OBJECTS = AbstractPreparedPolygonContains.lo \ @@ -62,17 +64,19 @@ PreparedPolygonCovers.lo PreparedPolygon.lo \ PreparedPolygonIntersects.lo PreparedPolygonPredicate.lo libgeomprep_la_OBJECTS = $(am_libgeomprep_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libgeomprep_la_SOURCES) DIST_SOURCES = $(libgeomprep_la_SOURCES) ETAGS = etags @@ -80,8 +84,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -109,21 +111,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -132,20 +130,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -166,6 +172,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -177,19 +184,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -201,36 +202,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libgeomprep.la INCLUDES = -I$(top_srcdir)/source/headers @@ -260,14 +274,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geom/prep/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/geom/prep/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geom/prep/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/geom/prep/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -285,6 +299,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -295,7 +310,7 @@ rm -f "$${dir}/so_locations"; \ done libgeomprep.la: $(libgeomprep_la_OBJECTS) $(libgeomprep_la_DEPENDENCIES) - $(CXXLINK) $(libgeomprep_la_LDFLAGS) $(libgeomprep_la_OBJECTS) $(libgeomprep_la_LIBADD) $(LIBS) + $(CXXLINK) $(libgeomprep_la_OBJECTS) $(libgeomprep_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -318,22 +333,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PreparedPolygonPredicate.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -344,82 +359,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -447,6 +465,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -460,7 +479,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -468,18 +487,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -500,19 +539,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/geom/prep/PreparedGeometry.cpp geos-3.2.2/source/geom/prep/PreparedGeometry.cpp --- geos-3.1.0/source/geom/prep/PreparedGeometry.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedGeometry.cpp 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedGeometry.cpp 2158 2008-08-18 16:24:18Z mloskot $ + * $Id: PreparedGeometry.cpp 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedGeometry.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ diff -Nru geos-3.1.0/source/geom/prep/PreparedGeometryFactory.cpp geos-3.2.2/source/geom/prep/PreparedGeometryFactory.cpp --- geos-3.1.0/source/geom/prep/PreparedGeometryFactory.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedGeometryFactory.cpp 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedGeometryFactory.cpp 2187 2008-09-16 20:58:49Z mloskot $ + * $Id: PreparedGeometryFactory.cpp 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedGeometryFactory.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ diff -Nru geos-3.1.0/source/geom/prep/PreparedLineString.cpp geos-3.2.2/source/geom/prep/PreparedLineString.cpp --- geos-3.1.0/source/geom/prep/PreparedLineString.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedLineString.cpp 2009-12-08 17:42:02.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedLineString.cpp 2158 2008-08-18 16:24:18Z mloskot $ + * $Id: PreparedLineString.cpp 2811 2009-12-08 17:42:02Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedLineString.java rev 1.3 (JTS-1.10) + * **********************************************************************/ @@ -27,6 +31,17 @@ * public: */ +PreparedLineString::~PreparedLineString() +{ + delete segIntFinder; + for ( noding::SegmentString::ConstVect::size_type i = 0, + ni = segStrings.size(); i < ni; ++i ) + { + delete segStrings[ i ]->getCoordinates(); + delete segStrings[ i ]; + } +} + noding::FastSegmentSetIntersectionFinder * PreparedLineString::getIntersectionFinder() { diff -Nru geos-3.1.0/source/geom/prep/PreparedLineStringIntersects.cpp geos-3.2.2/source/geom/prep/PreparedLineStringIntersects.cpp --- geos-3.1.0/source/geom/prep/PreparedLineStringIntersects.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedLineStringIntersects.cpp 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedLineStringIntersects.cpp 2218 2008-11-05 20:52:45Z pramsey $ + * $Id: PreparedLineStringIntersects.cpp 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedLineStringIntersects.java rev 1.2 (JTS-1.10) + * **********************************************************************/ diff -Nru geos-3.1.0/source/geom/prep/PreparedPoint.cpp geos-3.2.2/source/geom/prep/PreparedPoint.cpp --- geos-3.1.0/source/geom/prep/PreparedPoint.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedPoint.cpp 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPoint.cpp 2158 2008-08-18 16:24:18Z mloskot $ + * $Id: PreparedPoint.cpp 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedPoint.java rev. 1.2 (JTS-1.10) + * **********************************************************************/ diff -Nru geos-3.1.0/source/geom/prep/PreparedPolygonContains.cpp geos-3.2.2/source/geom/prep/PreparedPolygonContains.cpp --- geos-3.1.0/source/geom/prep/PreparedPolygonContains.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedPolygonContains.cpp 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonContains.cpp 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: PreparedPolygonContains.cpp 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonContains.java rev 1.5 (JTS-1.10) + * **********************************************************************/ diff -Nru geos-3.1.0/source/geom/prep/PreparedPolygonContainsProperly.cpp geos-3.2.2/source/geom/prep/PreparedPolygonContainsProperly.cpp --- geos-3.1.0/source/geom/prep/PreparedPolygonContainsProperly.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedPolygonContainsProperly.cpp 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonContainsProperly.cpp 2198 2008-10-10 17:46:34Z pramsey $ + * $Id: PreparedPolygonContainsProperly.cpp 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,11 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonContainsProperly.java rev 1.5 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ @@ -43,7 +48,8 @@ { // Do point-in-poly tests first, since they are cheaper and may result // in a quick negative result. - // If a point of any test components does not lie in target, result is false + // If a point of any test components does not lie in target, + // result is false bool isAllInPrepGeomArea = isAllTestComponentsInTargetInterior( geom); if ( !isAllInPrepGeomArea ) return false; @@ -54,18 +60,23 @@ bool segsIntersect = prepPoly->getIntersectionFinder()->intersects( &lineSegStr); for ( size_t i = 0, ni = lineSegStr.size(); i < ni; i++ ) { - delete lineSegStr[ i ]; delete lineSegStr[ i ]->getCoordinates(); + delete lineSegStr[ i ]; } if (segsIntersect) return false; + /** + * Given that no segments intersect, if any vertex of the target + * is contained in some test component. + * the test is NOT properly contained. + */ if ( geom->getGeometryTypeId() == geos::geom::GEOS_MULTIPOLYGON || geom->getGeometryTypeId() == geos::geom::GEOS_POLYGON ) { // TODO: generalize this to handle GeometryCollections - bool isTargetGeomInTestArea = isAnyTargetComponentInTestArea( geom, prepPoly->getRepresentativePoints()); + bool isTargetGeomInTestArea = isAnyTargetComponentInAreaTest( geom, prepPoly->getRepresentativePoints()); if (isTargetGeomInTestArea) return false; } diff -Nru geos-3.1.0/source/geom/prep/PreparedPolygonCovers.cpp geos-3.2.2/source/geom/prep/PreparedPolygonCovers.cpp --- geos-3.1.0/source/geom/prep/PreparedPolygonCovers.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedPolygonCovers.cpp 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonCovers.cpp 2158 2008-08-18 16:24:18Z mloskot $ + * $Id: PreparedPolygonCovers.cpp 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,11 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonCovers.java rev 1.2 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ diff -Nru geos-3.1.0/source/geom/prep/PreparedPolygon.cpp geos-3.2.2/source/geom/prep/PreparedPolygon.cpp --- geos-3.1.0/source/geom/prep/PreparedPolygon.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedPolygon.cpp 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygon.cpp 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: PreparedPolygon.cpp 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygon.java rev 1.7 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/geom/prep/PreparedPolygonIntersects.cpp geos-3.2.2/source/geom/prep/PreparedPolygonIntersects.cpp --- geos-3.1.0/source/geom/prep/PreparedPolygonIntersects.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedPolygonIntersects.cpp 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonIntersects.cpp 2197 2008-10-09 16:39:07Z pramsey $ + * $Id: PreparedPolygonIntersects.cpp 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,11 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonIntersects.java rev 1.6 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ @@ -44,7 +49,7 @@ // Do point-in-poly tests first, since they are cheaper and may result // in a quick positive result. // If a point of any test components lie in target, result is true - bool isInPrepGeomArea = isAnyTestComponentInTargetArea( geom); + bool isInPrepGeomArea = isAnyTestComponentInTarget( geom); if ( isInPrepGeomArea ) return true; @@ -68,7 +73,7 @@ if ( geom->getDimension() == 2) { // TODO: generalize this to handle GeometryCollections - bool isPrepGeomInArea = isAnyTargetComponentInTestArea( geom, prepPoly->getRepresentativePoints()); + bool isPrepGeomInArea = isAnyTargetComponentInAreaTest( geom, prepPoly->getRepresentativePoints()); if ( isPrepGeomInArea ) return true; } diff -Nru geos-3.1.0/source/geom/prep/PreparedPolygonPredicate.cpp geos-3.2.2/source/geom/prep/PreparedPolygonPredicate.cpp --- geos-3.1.0/source/geom/prep/PreparedPolygonPredicate.cpp 2009-03-10 16:17:55.000000000 +0000 +++ geos-3.2.2/source/geom/prep/PreparedPolygonPredicate.cpp 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonPredicate.cpp 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: PreparedPolygonPredicate.cpp 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,11 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonPredicate.java rev. 1.4 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ #include @@ -34,7 +39,7 @@ // protected: // bool -PreparedPolygonPredicate::isAllTestComponentsInTargetArea(const geom::Geometry* testGeom) +PreparedPolygonPredicate::isAllTestComponentsInTarget(const geom::Geometry* testGeom) const { geom::Coordinate::ConstVect pts; geom::util::ComponentCoordinateExtracter::getCoordinates(*testGeom, pts); @@ -52,7 +57,8 @@ } bool -PreparedPolygonPredicate::isAllTestComponentsInTargetInterior(const geom::Geometry* testGeom) +PreparedPolygonPredicate::isAllTestComponentsInTargetInterior( + const geom::Geometry* testGeom) const { geom::Coordinate::ConstVect pts; geom::util::ComponentCoordinateExtracter::getCoordinates(*testGeom, pts); @@ -70,7 +76,8 @@ } bool -PreparedPolygonPredicate::isAnyTestComponentInTargetArea(const geom::Geometry* testGeom) +PreparedPolygonPredicate::isAnyTestComponentInTarget( + const geom::Geometry* testGeom) const { geom::Coordinate::ConstVect pts; geom::util::ComponentCoordinateExtracter::getCoordinates(*testGeom, pts); @@ -88,7 +95,8 @@ } bool -PreparedPolygonPredicate::isAnyTestComponentInTargetInterior( const geom::Geometry * testGeom) +PreparedPolygonPredicate::isAnyTestComponentInTargetInterior( + const geom::Geometry * testGeom) const { geom::Coordinate::ConstVect pts; geom::util::ComponentCoordinateExtracter::getCoordinates(*testGeom, pts); @@ -106,25 +114,22 @@ } bool -PreparedPolygonPredicate::isAnyTargetComponentInTestArea(const geom::Geometry* testGeom, - const geom::Coordinate::ConstVect* targetRepPts) +PreparedPolygonPredicate::isAnyTargetComponentInAreaTest( + const geom::Geometry* testGeom, + const geom::Coordinate::ConstVect* targetRepPts) const { - // TODO - mloskot: Replace manual delete with scoped_ptr - algorithm::locate::PointOnGeometryLocator* piaLoc = 0; - piaLoc = new algorithm::locate::SimplePointInAreaLocator(testGeom); + algorithm::locate::SimplePointInAreaLocator piaLoc(testGeom); for (std::size_t i = 0, ni = targetRepPts->size(); i < ni; i++) { const geom::Coordinate * pt = (*targetRepPts)[i]; - const int loc = piaLoc->locate(pt); + const int loc = piaLoc.locate(pt); if (geom::Location::EXTERIOR != loc) { - delete piaLoc; return true; } } - delete piaLoc; return false; } diff -Nru geos-3.1.0/source/geom/util/CoordinateOperation.cpp geos-3.2.2/source/geom/util/CoordinateOperation.cpp --- geos-3.1.0/source/geom/util/CoordinateOperation.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/util/CoordinateOperation.cpp 2009-12-01 16:16:18.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateOperation.cpp 2168 2008-08-19 17:00:43Z mloskot $ + * $Id: CoordinateOperation.cpp 2758 2009-12-01 16:16:18Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -15,8 +15,6 @@ #include -//#include -//#include // to be removed when util.h is finished #include #include #include diff -Nru geos-3.1.0/source/geom/util/GeometryTransformer.cpp geos-3.2.2/source/geom/util/GeometryTransformer.cpp --- geos-3.1.0/source/geom/util/GeometryTransformer.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/util/GeometryTransformer.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryTransformer.cpp 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: GeometryTransformer.cpp 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -115,7 +115,7 @@ const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformCoordinates(CoordinateSequence " << coords <<", Geometry " << parent << ");" << std::endl; #endif @@ -128,7 +128,7 @@ const Point* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformPoint(Point " << geom <<", Geometry " << parent << ");" << std::endl; @@ -145,7 +145,7 @@ const MultiPoint* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformMultiPoint(MultiPoint " << geom <<", Geometry " << parent << ");" << std::endl; @@ -176,7 +176,7 @@ const LinearRing* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformLinearRing(LinearRing " << geom <<", Geometry " << parent << ");" << std::endl; @@ -202,7 +202,7 @@ const LineString* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformLineString(LineString " << geom <<", Geometry " << parent << ");" << std::endl; @@ -218,7 +218,7 @@ const MultiLineString* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformMultiLineString(MultiLineString " << geom <<", Geometry " << parent << ");" << std::endl; @@ -249,7 +249,7 @@ const Polygon* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformPolygon(Polygon " << geom <<", Geometry " << parent << ");" << std::endl; @@ -322,13 +322,13 @@ const MultiPolygon* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformMultiPolygon(MultiPolygon " << geom <<", Geometry " << parent << ");" << std::endl; #endif - vector* transGeomList = new vector(); + auto_ptr< vector > transGeomList( new vector() ); for (unsigned int i=0, n=geom->getNumGeometries(); ipush_back(transformGeom.release()); } - return Geometry::AutoPtr(factory->buildGeometry(transGeomList)); + return Geometry::AutoPtr(factory->buildGeometry(transGeomList.release())); } @@ -353,7 +353,7 @@ const GeometryCollection* geom, const Geometry* parent) { - UNREFERENCED_PARAMETER(parent); + ::geos::ignore_unused_variable_warning(parent); #if GEOS_DEBUG std::cerr << "GeometryTransformer::transformGeometryCollection(GeometryCollection " << geom <<", Geometry " << parent << ");" << std::endl; diff -Nru geos-3.1.0/source/geom/util/Makefile.am geos-3.2.2/source/geom/util/Makefile.am --- geos-3.1.0/source/geom/util/Makefile.am 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/geom/util/Makefile.am 2009-11-26 21:34:40.000000000 +0000 @@ -3,11 +3,6 @@ INCLUDES = -I$(top_srcdir)/source/headers -## these are full inlined -# PolygonExtracter.cpp -# PointExtracter.cpp -# LinearComponentExtracter.cpp - libgeomutil_la_SOURCES = \ ComponentCoordinateExtracter.cpp \ CoordinateOperation.cpp \ @@ -15,7 +10,3 @@ GeometryTransformer.cpp \ ShortCircuitedGeometryVisitor.cpp \ GeometryCombiner.cpp - -# LinearComponentExtracter.cpp -# PointExtracter.cpp -# PolygonExtracter.cpp diff -Nru geos-3.1.0/source/geom/util/Makefile.in geos-3.2.2/source/geom/util/Makefile.in --- geos-3.1.0/source/geom/util/Makefile.in 2009-03-11 19:13:36.000000000 +0000 +++ geos-3.2.2/source/geom/util/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libgeomutil_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,6 +53,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libgeomutil_la_LIBADD = am_libgeomutil_la_OBJECTS = ComponentCoordinateExtracter.lo \ @@ -59,17 +61,19 @@ GeometryTransformer.lo ShortCircuitedGeometryVisitor.lo \ GeometryCombiner.lo libgeomutil_la_OBJECTS = $(am_libgeomutil_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libgeomutil_la_SOURCES) DIST_SOURCES = $(libgeomutil_la_SOURCES) ETAGS = etags @@ -77,8 +81,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -106,21 +108,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -129,20 +127,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -163,6 +169,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -174,19 +181,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -198,42 +199,51 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libgeomutil.la INCLUDES = -I$(top_srcdir)/source/headers - -# PolygonExtracter.cpp -# PointExtracter.cpp -# LinearComponentExtracter.cpp libgeomutil_la_SOURCES = \ ComponentCoordinateExtracter.cpp \ CoordinateOperation.cpp \ @@ -250,14 +260,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geom/util/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/geom/util/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geom/util/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/geom/util/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -275,6 +285,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -285,7 +296,7 @@ rm -f "$${dir}/so_locations"; \ done libgeomutil.la: $(libgeomutil_la_OBJECTS) $(libgeomutil_la_DEPENDENCIES) - $(CXXLINK) $(libgeomutil_la_LDFLAGS) $(libgeomutil_la_OBJECTS) $(libgeomutil_la_LIBADD) $(LIBS) + $(CXXLINK) $(libgeomutil_la_OBJECTS) $(libgeomutil_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -301,22 +312,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ShortCircuitedGeometryVisitor.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -327,82 +338,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -430,6 +444,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -443,7 +458,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -451,18 +466,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -483,24 +518,24 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-am -# LinearComponentExtracter.cpp -# PointExtracter.cpp -# PolygonExtracter.cpp # 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 -Nru geos-3.1.0/source/geomgraph/Depth.cpp geos-3.2.2/source/geomgraph/Depth.cpp --- geos-3.1.0/source/geomgraph/Depth.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/Depth.cpp 2009-06-05 12:03:53.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Depth.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Depth.cpp 2544 2009-06-05 11:03:53Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Depth.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #include @@ -22,7 +26,7 @@ #include #include -#define DEPTHNULL -1 +#define NULL_VALUE -1 using namespace std; using namespace geos::geom; @@ -35,7 +39,7 @@ { if (location == Location::EXTERIOR) return 0; if (location == Location::INTERIOR) return 1; - return DEPTHNULL; + return NULL_VALUE; } Depth::Depth() @@ -43,7 +47,7 @@ // initialize depth array to a sentinel value for (int i=0; i<2; i++) { for (int j=0; j<3;j++) { - depth[i][j]=DEPTHNULL; + depth[i][j]=NULL_VALUE; } } } @@ -87,7 +91,7 @@ { for (int i=0; i<2; i++) { for (int j=0; j<3; j++) { - if (depth[i][j] != DEPTHNULL) + if (depth[i][j] != NULL_VALUE) return false; } } @@ -97,13 +101,13 @@ bool Depth::isNull(int geomIndex) const { - return depth[geomIndex][1] == DEPTHNULL; + return depth[geomIndex][1] == NULL_VALUE; } bool Depth::isNull(int geomIndex, int posIndex) const { - return depth[geomIndex][posIndex] == DEPTHNULL; + return depth[geomIndex][posIndex] == NULL_VALUE; } int diff -Nru geos-3.1.0/source/geomgraph/DirectedEdge.cpp geos-3.2.2/source/geomgraph/DirectedEdge.cpp --- geos-3.1.0/source/geomgraph/DirectedEdge.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/DirectedEdge.cpp 2009-05-12 16:38:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DirectedEdge.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DirectedEdge.cpp 2502 2009-05-12 15:38:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/DirectedEdge.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/geomgraph/DirectedEdgeStar.cpp geos-3.2.2/source/geomgraph/DirectedEdgeStar.cpp --- geos-3.1.0/source/geomgraph/DirectedEdgeStar.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/DirectedEdgeStar.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DirectedEdgeStar.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DirectedEdgeStar.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/DirectedEdgeStar.java rev. 1.4 (JTS-1.7) + * Last port: geomgraph/DirectedEdgeStar.java rev. 1.4 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/geomgraph/Edge.cpp geos-3.2.2/source/geomgraph/Edge.cpp --- geos-3.1.0/source/geomgraph/Edge.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/Edge.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Edge.cpp 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: Edge.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Edge.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifdef _MSC_VER diff -Nru geos-3.1.0/source/geomgraph/EdgeEnd.cpp geos-3.2.2/source/geomgraph/EdgeEnd.cpp --- geos-3.1.0/source/geomgraph/EdgeEnd.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/EdgeEnd.cpp 2009-11-30 17:29:48.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEnd.cpp 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: EdgeEnd.cpp 2755 2009-11-30 17:29:48Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/EdgeEnd.java rev. 1.5 (JTS-1.7) + * Last port: geomgraph/EdgeEnd.java rev. 1.6 (JTS-1.10) * **********************************************************************/ @@ -182,7 +182,7 @@ /*public*/ void -EdgeEnd::computeLabel() +EdgeEnd::computeLabel(const algorithm::BoundaryNodeRule& /*boundaryNodeRule*/) { // subclasses should override this if they are using labels } diff -Nru geos-3.1.0/source/geomgraph/EdgeEndStar.cpp geos-3.2.2/source/geomgraph/EdgeEndStar.cpp --- geos-3.1.0/source/geomgraph/EdgeEndStar.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/EdgeEndStar.cpp 2009-06-05 14:41:50.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndStar.cpp 2062 2007-12-21 20:39:38Z benjubb $ + * $Id: EdgeEndStar.cpp 2547 2009-06-05 13:41:50Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/EdgeEndStar.java rev. 1.4 (JTS-1.7) + * Last port: geomgraph/EdgeEndStar.java rev. 1.8 (JTS-1.10) * **********************************************************************/ @@ -76,10 +76,10 @@ /*public*/ void -EdgeEndStar::computeLabelling(std::vector *geom) +EdgeEndStar::computeLabelling(std::vector *geomGraph) //throw(TopologyException *) { - computeEdgeEndLabels(); + computeEdgeEndLabels((*geomGraph)[0]->getBoundaryNodeRule()); // Propagate side labels around the edges in the star // for each parent Geometry @@ -156,7 +156,7 @@ loc=Location::EXTERIOR; }else { Coordinate& p=e->getCoordinate(); - loc=getLocation(geomi,p,geom); + loc = getLocation(geomi, p, geomGraph); } label->setAllLocationsIfNull(geomi,loc); } @@ -166,14 +166,15 @@ /*private*/ void -EdgeEndStar::computeEdgeEndLabels() +EdgeEndStar::computeEdgeEndLabels( + const algorithm::BoundaryNodeRule& boundaryNodeRule) { // Compute edge label for each EdgeEnd for (EdgeEndStar::iterator it=begin(); it!=end(); ++it) { - EdgeEnd *e=*it; - assert(e); - e->computeLabel(); + EdgeEnd *ee=*it; + assert(ee); + ee->computeLabel(boundaryNodeRule); } } @@ -193,9 +194,9 @@ /*public*/ bool -EdgeEndStar::isAreaLabelsConsistent() +EdgeEndStar::isAreaLabelsConsistent(const GeometryGraph& geomGraph) { - computeEdgeEndLabels(); + computeEdgeEndLabels(geomGraph.getBoundaryNodeRule()); return checkAreaLabelsConsistent(0); } diff -Nru geos-3.1.0/source/geomgraph/EdgeIntersection.cpp geos-3.2.2/source/geomgraph/EdgeIntersection.cpp --- geos-3.1.0/source/geomgraph/EdgeIntersection.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/EdgeIntersection.cpp 2009-04-30 11:43:16.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: EdgeIntersection.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeIntersection.cpp 2429 2009-04-30 10:43:16Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under @@ -11,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/EdgeIntersection.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #include @@ -26,7 +31,8 @@ namespace geomgraph { // geos.geomgraph EdgeIntersection::EdgeIntersection(const Coordinate& newCoord, - int newSegmentIndex, double newDist): + int newSegmentIndex, double newDist) + : coord(newCoord), segmentIndex(newSegmentIndex), dist(newDist) @@ -74,42 +80,3 @@ } // namespace geos -/********************************************************************** - * $Log$ - * Revision 1.9 2006/03/15 17:16:29 strk - * streamlined headers inclusion - * - * Revision 1.8 2006/03/03 10:46:21 strk - * Removed 'using namespace' from headers, added missing headers in .cpp files, removed useless includes in headers (bug#46) - * - * Revision 1.7 2006/02/19 19:46:49 strk - * Packages <-> namespaces mapping for most GEOS internal code (uncomplete, but working). Dir-level libs for index/ subdirs. - * - * Revision 1.6 2005/12/07 23:36:49 strk - * standard indentation - * - * Revision 1.5 2005/11/16 22:21:45 strk - * enforced const-correctness and use of initializer lists. - * - * Revision 1.4 2005/11/07 12:31:24 strk - * Changed EdgeIntersectionList to use a set<> rathern then a vector<>, and - * to avoid dynamic allocation of initial header. - * Inlined short SweepLineEvent methods. - * - * Revision 1.3 2005/01/28 09:47:51 strk - * Replaced sprintf uses with ostringstream. - * - * Revision 1.2 2004/07/02 13:28:26 strk - * Fixed all #include lines to reflect headers layout change. - * Added client application build tips in README. - * - * Revision 1.1 2004/03/19 09:48:45 ybychkov - * "geomgraph" and "geomgraph/indexl" upgraded to JTS 1.4 - * - * Revision 1.9 2003/11/07 01:23:42 pramsey - * Add standard CVS headers licence notices and copyrights to all cpp and h - * files. - * - * - **********************************************************************/ - diff -Nru geos-3.1.0/source/geomgraph/EdgeIntersectionList.cpp geos-3.2.2/source/geomgraph/EdgeIntersectionList.cpp --- geos-3.1.0/source/geomgraph/EdgeIntersectionList.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/EdgeIntersectionList.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeIntersectionList.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeIntersectionList.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/EdgeIntersectionList.java rev. 1.3 + * Last port: geomgraph/EdgeIntersectionList.java rev. 1.5 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/geomgraph/EdgeList.cpp geos-3.2.2/source/geomgraph/EdgeList.cpp --- geos-3.1.0/source/geomgraph/EdgeList.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/EdgeList.cpp 2009-06-05 14:44:48.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeList.cpp 2220 2008-11-11 17:32:38Z pramsey $ + * $Id: EdgeList.cpp 2548 2009-06-05 13:44:48Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/EdgeList.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #include @@ -19,6 +23,7 @@ #include #include +#include #include #ifndef GEOS_DEBUG @@ -26,7 +31,7 @@ #endif using namespace std; -using namespace geos::index::quadtree; +using namespace geos::noding; namespace geos { namespace geomgraph { // geos.geomgraph @@ -40,7 +45,8 @@ EdgeList::add(Edge *e) { edges.push_back(e); - index->insert(e->getEnvelope(), e); + OrientedCoordinateArray* oca = new OrientedCoordinateArray(*(e->getCoordinates())); + ocaMap[oca] = e; } void @@ -52,7 +58,6 @@ } } -// fast lookup for edges /** * If there is an edge equal to e already in the list, return it. * Otherwise return null. @@ -66,26 +71,17 @@ static Profile *prof = profiler->get("EdgeList::findEqualEdge(Edge *e)"); prof->start(); #endif - vector testEdges; - index->query(e->getEnvelope(), testEdges); + + OrientedCoordinateArray oca(*(e->getCoordinates())); + + EdgeMap::iterator it = ocaMap.find(&oca); + #if PROFILE prof->stop(); #endif -#if GEOS_DEBUG - cerr << "EdgeList::findEqualEdge found " << testEdges.size() << - " overlapping edges" << endl; -#endif - - for (std::size_t i=0, s=testEdges.size(); i(testEdges[i]); - if (testEdge->equals(e)) - { - return testEdge; - } - } - return NULL; + if ( it != ocaMap.end() ) return it->second; + return 0; } Edge* @@ -149,6 +145,14 @@ return os; } +EdgeList::~EdgeList() +{ + for (EdgeMap::iterator i=ocaMap.begin(), e=ocaMap.end(); i!=e; ++i) + { + delete i->first; // OrientedCoordinateArray + } +} + } // namespace geos.geomgraph } // namespace geos diff -Nru geos-3.1.0/source/geomgraph/EdgeNodingValidator.cpp geos-3.2.2/source/geomgraph/EdgeNodingValidator.cpp --- geos-3.1.0/source/geomgraph/EdgeNodingValidator.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/EdgeNodingValidator.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeNodingValidator.cpp 1929 2006-12-04 11:38:48Z strk $ + * $Id: EdgeNodingValidator.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,13 +14,15 @@ * ********************************************************************** * + * Last port: geomgraph/EdgeNodingValidator.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #include #include #include -#include +#include #include using namespace std; @@ -38,7 +40,7 @@ Edge *e=edges[i]; CoordinateSequence* cs=e->getCoordinates()->clone(); newCoordSeq.push_back(cs); - segStr.push_back(new SegmentString(cs, e)); + segStr.push_back(new BasicSegmentString(cs, e)); } return segStr; } diff -Nru geos-3.1.0/source/geomgraph/EdgeRing.cpp geos-3.2.2/source/geomgraph/EdgeRing.cpp --- geos-3.1.0/source/geomgraph/EdgeRing.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/EdgeRing.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeRing.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeRing.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/EdgeRing.java rev. 1.9 + * Last port: geomgraph/EdgeRing.java rev. 1.10 (JTS-1.10) * **********************************************************************/ @@ -222,6 +222,7 @@ /*protected*/ void EdgeRing::computePoints(DirectedEdge *newStart) + // throw(const TopologyException &) { startDe=newStart; DirectedEdge *de=newStart; diff -Nru geos-3.1.0/source/geomgraph/GeometryGraph.cpp geos-3.2.2/source/geomgraph/GeometryGraph.cpp --- geos-3.1.0/source/geomgraph/GeometryGraph.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/GeometryGraph.cpp 2009-06-05 13:42:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryGraph.cpp 2143 2008-07-26 23:06:11Z mloskot $ + * $Id: GeometryGraph.cpp 2546 2009-06-05 12:42:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,9 +12,14 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/GeometryGraph.java rev. 1.9 (JTS-1.10) + * **********************************************************************/ #include +#include #include @@ -167,30 +172,35 @@ //throw (UnsupportedOperationException *) { if (g->isEmpty()) return; + // check if this Geometry should obey the Boundary Determination Rule // all collections except MultiPolygons obey the rule - // FIXME - mloskot: Make this condition readable and use paranthesis - if ((typeid(*g)==typeid(GeometryCollection)) || - (typeid(*g)==typeid(MultiPoint)) || - (typeid(*g)==typeid(MultiLineString)) && - !(typeid(*g)==typeid(MultiPolygon))) - useBoundaryDeterminationRule=true; - if (typeid(*g)==typeid(Polygon)) + if ( dynamic_cast(g) ) + useBoundaryDeterminationRule = false; + + + if ( dynamic_cast(g) ) addPolygon((Polygon*) g); - else if (typeid(*g)==typeid(LineString)) - addLineString((LineString*) g); - else if (typeid(*g)==typeid(LinearRing)) + + // LineString also handles LinearRings + else if ( dynamic_cast(g) ) addLineString((LineString*) g); - else if (typeid(*g)==typeid(Point)) + + else if ( dynamic_cast(g) ) addPoint((Point*) g); - else if (typeid(*g)==typeid(MultiPoint)) + + else if ( dynamic_cast(g) ) addCollection((MultiPoint*) g); - else if (typeid(*g)==typeid(MultiLineString)) + + else if ( dynamic_cast(g) ) addCollection((MultiLineString*) g); - else if (typeid(*g)==typeid(MultiPolygon)) + + else if ( dynamic_cast(g) ) addCollection((MultiPolygon*) g); - else if (typeid(*g)==typeid(GeometryCollection)) + + else if ( dynamic_cast(g) ) addCollection((GeometryCollection*) g); + else { string out=typeid(*g).name(); throw util::UnsupportedOperationException("GeometryGraph::add(Geometry *): unknown geometry type: "+out); @@ -227,8 +237,11 @@ GeometryGraph::addPolygonRing(const LinearRing *lr, int cwLeft, int cwRight) // throw IllegalArgumentException (see below) { - const CoordinateSequence *lrcl; - lrcl = lr->getCoordinatesRO(); + // skip empty component (see bug #234) + if ( lr->isEmpty() ) return; + + const CoordinateSequence *lrcl = lr->getCoordinatesRO(); + CoordinateSequence* coord=CoordinateSequence::removeRepeatedPoints(lrcl); if (coord->getSize()<4) { hasTooFewPointsVar=true; @@ -423,7 +436,7 @@ // determine the boundary status of the point according to the // Boundary Determination Rule - int newLoc=determineBoundary(boundaryCount); + int newLoc = determineBoundary(boundaryNodeRule, boundaryCount); lbl->setLocation(argIndex,newLoc); } @@ -482,6 +495,55 @@ return invalidPoint; } +GeometryGraph::GeometryGraph(int newArgIndex, + const geom::Geometry *newParentGeom) + : + PlanarGraph(), + parentGeom(newParentGeom), + useBoundaryDeterminationRule(true), + boundaryNodeRule(algorithm::BoundaryNodeRule::OGC_SFS_BOUNDARY_RULE), + argIndex(newArgIndex), + hasTooFewPointsVar(false) +{ + if (parentGeom!=NULL) add(parentGeom); +} + +GeometryGraph::GeometryGraph(int newArgIndex, + const geom::Geometry *newParentGeom, + const algorithm::BoundaryNodeRule& bnr) + : + PlanarGraph(), + parentGeom(newParentGeom), + useBoundaryDeterminationRule(true), + boundaryNodeRule(bnr), + argIndex(newArgIndex), + hasTooFewPointsVar(false) +{ + if (parentGeom!=NULL) add(parentGeom); +} + +GeometryGraph::GeometryGraph() + : + PlanarGraph(), + parentGeom(NULL), + useBoundaryDeterminationRule(true), + boundaryNodeRule(algorithm::BoundaryNodeRule::OGC_SFS_BOUNDARY_RULE), + argIndex(-1), + hasTooFewPointsVar(false) +{ +} + + +/* public static */ +int +GeometryGraph::determineBoundary( + const algorithm::BoundaryNodeRule& boundaryNodeRule, + int boundaryCount) +{ + return boundaryNodeRule.isInBoundary(boundaryCount) + ? Location::BOUNDARY : Location::INTERIOR; +} + } // namespace geos.geomgraph } // namespace geos diff -Nru geos-3.1.0/source/geomgraph/GraphComponent.cpp geos-3.2.2/source/geomgraph/GraphComponent.cpp --- geos-3.1.0/source/geomgraph/GraphComponent.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/GraphComponent.cpp 2009-06-05 12:03:53.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GraphComponent.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GraphComponent.cpp 2544 2009-06-05 11:03:53Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/GraphComponent.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/geomgraph/index/Makefile.in geos-3.2.2/source/geomgraph/index/Makefile.in --- geos-3.1.0/source/geomgraph/index/Makefile.in 2009-03-11 19:13:36.000000000 +0000 +++ geos-3.2.2/source/geomgraph/index/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libgeomgraphindex_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,6 +53,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libgeomgraphindex_la_LIBADD = am_libgeomgraphindex_la_OBJECTS = MonotoneChainEdge.lo \ @@ -60,17 +62,19 @@ SimpleSweepLineIntersector.lo SweepLineEvent.lo \ SweepLineSegment.lo libgeomgraphindex_la_OBJECTS = $(am_libgeomgraphindex_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libgeomgraphindex_la_SOURCES) DIST_SOURCES = $(libgeomgraphindex_la_SOURCES) ETAGS = etags @@ -78,8 +82,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -107,21 +109,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -130,20 +128,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -164,6 +170,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -175,19 +182,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -199,36 +200,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libgeomgraphindex.la INCLUDES = -I$(top_srcdir)/source/headers libgeomgraphindex_la_SOURCES = \ @@ -249,14 +263,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geomgraph/index/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/geomgraph/index/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geomgraph/index/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/geomgraph/index/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -274,6 +288,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -284,7 +299,7 @@ rm -f "$${dir}/so_locations"; \ done libgeomgraphindex.la: $(libgeomgraphindex_la_OBJECTS) $(libgeomgraphindex_la_DEPENDENCIES) - $(CXXLINK) $(libgeomgraphindex_la_LDFLAGS) $(libgeomgraphindex_la_OBJECTS) $(libgeomgraphindex_la_LIBADD) $(LIBS) + $(CXXLINK) $(libgeomgraphindex_la_OBJECTS) $(libgeomgraphindex_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -302,22 +317,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SweepLineSegment.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -328,82 +343,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -431,6 +449,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -444,7 +463,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -452,18 +471,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -484,19 +523,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/geomgraph/index/SegmentIntersector.cpp geos-3.2.2/source/geomgraph/index/SegmentIntersector.cpp --- geos-3.1.0/source/geomgraph/index/SegmentIntersector.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/index/SegmentIntersector.cpp 2009-11-19 16:40:29.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentIntersector.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentIntersector.cpp 2723 2009-11-19 16:40:29Z pramsey $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -15,6 +15,7 @@ **********************************************************************/ +#include #include #include diff -Nru geos-3.1.0/source/geomgraph/Label.cpp geos-3.2.2/source/geomgraph/Label.cpp --- geos-3.1.0/source/geomgraph/Label.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/Label.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Label.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Label.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/Label.java rev. 1.6 (JTS-1.7) + * Last port: geomgraph/Label.java rev. 1.8 (JTS-1.10) * **********************************************************************/ @@ -256,9 +256,9 @@ std::ostream& operator<< (std::ostream& os, const Label& l) { - os << "a:" + os << "A:" << l.elt[0] - << " b:" + << " B:" << l.elt[1]; return os; } diff -Nru geos-3.1.0/source/geomgraph/Makefile.in geos-3.2.2/source/geomgraph/Makefile.in --- geos-3.1.0/source/geomgraph/Makefile.in 2009-03-11 19:13:36.000000000 +0000 +++ geos-3.2.2/source/geomgraph/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libgeomgraph_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,6 +53,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libgeomgraph_la_DEPENDENCIES = index/libgeomgraphindex.la am_libgeomgraph_la_OBJECTS = Depth.lo DirectedEdge.lo \ @@ -62,33 +64,64 @@ NodeFactory.lo NodeMap.lo PlanarGraph.lo Position.lo \ Quadrant.lo TopologyLocation.lo libgeomgraph_la_OBJECTS = $(am_libgeomgraph_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libgeomgraph_la_SOURCES) DIST_SOURCES = $(libgeomgraph_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -116,21 +149,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -139,20 +168,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -173,6 +210,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -184,19 +222,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -208,36 +240,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = index noinst_LTLIBRARIES = libgeomgraph.la INCLUDES = -I$(top_srcdir)/source/headers @@ -273,14 +318,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geomgraph/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/geomgraph/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/geomgraph/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/geomgraph/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -298,6 +343,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -308,7 +354,7 @@ rm -f "$${dir}/so_locations"; \ done libgeomgraph.la: $(libgeomgraph_la_OBJECTS) $(libgeomgraph_la_DEPENDENCIES) - $(CXXLINK) $(libgeomgraph_la_LDFLAGS) $(libgeomgraph_la_OBJECTS) $(libgeomgraph_la_LIBADD) $(LIBS) + $(CXXLINK) $(libgeomgraph_la_OBJECTS) $(libgeomgraph_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -339,22 +385,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TopologyLocation.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -365,10 +411,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -393,15 +435,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -428,16 +469,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -445,14 +486,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -464,81 +505,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -568,6 +629,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -581,7 +643,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -589,18 +651,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -621,23 +703,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/geomgraph/Node.cpp geos-3.2.2/source/geomgraph/Node.cpp --- geos-3.1.0/source/geomgraph/Node.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/Node.cpp 2009-06-05 14:44:48.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Node.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Node.cpp 2548 2009-06-05 13:44:48Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/Node.java rev. 1.6 (JTS-1.7) + * Last port: geomgraph/Node.java rev. 1.7 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/geomgraph/NodeFactory.cpp geos-3.2.2/source/geomgraph/NodeFactory.cpp --- geos-3.1.0/source/geomgraph/NodeFactory.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/NodeFactory.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodeFactory.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: NodeFactory.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/NodeFactory.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/geomgraph/NodeMap.cpp geos-3.2.2/source/geomgraph/NodeMap.cpp --- geos-3.1.0/source/geomgraph/NodeMap.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/NodeMap.cpp 2009-06-05 12:03:53.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodeMap.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: NodeMap.cpp 2544 2009-06-05 11:03:53Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/NodeMap.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/geomgraph/PlanarGraph.cpp geos-3.2.2/source/geomgraph/PlanarGraph.cpp --- geos-3.1.0/source/geomgraph/PlanarGraph.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/PlanarGraph.cpp 2009-12-03 19:24:55.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PlanarGraph.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PlanarGraph.cpp 2769 2009-12-03 19:24:55Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/PlanarGraph.java rev. 1.4 (JTS-1.7) + * Last port: geomgraph/PlanarGraph.java rev. 1.6 (JTS-1.10) * **********************************************************************/ @@ -35,6 +35,7 @@ #include #include +#include #include #include @@ -378,17 +379,15 @@ string PlanarGraph::printEdges() { - string out="Edges: "; + + std::ostringstream oss; + oss << "Edges: "; for(size_t i=0, n=edges->size(); iprint(); - out+=e->eiList.print(); + Edge *e=(*edges)[i]; + oss << "edge " << i << ":\n" << e->print() << e->eiList.print(); } - return out; + return oss.str(); } NodeMap* diff -Nru geos-3.1.0/source/geomgraph/Position.cpp geos-3.2.2/source/geomgraph/Position.cpp --- geos-3.1.0/source/geomgraph/Position.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/Position.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Position.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Position.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Position.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/geomgraph/Quadrant.cpp geos-3.2.2/source/geomgraph/Quadrant.cpp --- geos-3.1.0/source/geomgraph/Quadrant.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/Quadrant.cpp 2009-04-20 10:37:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Quadrant.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Quadrant.cpp 2394 2009-04-20 09:37:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Quadrant.java rev. 1.8 (JTS-1.10) + * **********************************************************************/ #include @@ -26,11 +30,10 @@ namespace geos { namespace geomgraph { // geos.geomgraph -/** -* Returns the quadrant of a directed line segment (specified as x and y -* displacements, which cannot both be 0). -*/ -int Quadrant::quadrant(double dx, double dy) { +/* public static */ +int +Quadrant::quadrant(double dx, double dy) +{ if (dx == 0.0 && dy == 0.0) { ostringstream s; s<<"Cannot compute the quadrant for point "; @@ -39,34 +42,44 @@ } if (dx >= 0) { if (dy >= 0) - return 0; + return NE; else - return 3; + return SE; } else { if (dy >= 0) - return 1; + return NW; else - return 2; + return SW; } } -/** -* Returns the quadrant of a directed line segment from p0 to p1. -*/ -int Quadrant::quadrant(const Coordinate& p0, const Coordinate& p1) { - double dx=p1.x-p0.x; - double dy=p1.y-p0.y; - if (dx==0.0 && dy==0.0) +/* public static */ +int +Quadrant::quadrant(const Coordinate& p0, const Coordinate& p1) +{ + if (p1.x == p0.x && p1.y == p0.y) { throw util::IllegalArgumentException("Cannot compute the quadrant for two identical points " + p0.toString()); } - return quadrant(dx, dy); + + if (p1.x >= p0.x) { + if (p1.y >= p0.y) + return NE; + else + return SE; + } + else { + if (p1.y >= p0.y) + return NW; + else + return SW; + } } -/** -* Returns true if the quadrants are 1 and 3, or 2 and 4 -*/ -bool Quadrant::isOpposite(int quad1, int quad2){ +/* public static */ +bool +Quadrant::isOpposite(int quad1, int quad2) +{ if (quad1==quad2) return false; int diff=(quad1-quad2+4)%4; // if quadrants are not adjacent, they are opposite @@ -74,12 +87,12 @@ return false; } -/** -* Returns the right-hand quadrant of the halfplane defined by the two quadrants, -* or -1 if the quadrants are opposite, or the quadrant if they are identical. -*/ -int Quadrant::commonHalfPlane(int quad1, int quad2){ - // if quadrants are the same they do not determine a unique common halfplane. +/* public static */ +int +Quadrant::commonHalfPlane(int quad1, int quad2) +{ + // if quadrants are the same they do not determine a unique + // common halfplane. // Simply return one of the two possibilities if (quad1==quad2) return quad1; int diff=(quad1-quad2+4)%4; @@ -90,26 +103,26 @@ int max=(quad1>quad2)? quad1:quad2; // for this one case, the righthand plane is NOT the minimum index; if (min==0 && max==3) return 3; - // in general, the halfplane index is the minimum of the two adjacent quadrants + // in general, the halfplane index is the minimum of the two + // adjacent quadrants return min; } -/** -* Returns whether the given quadrant lies within the given halfplane (specified -* by its right-hand quadrant). -*/ -bool Quadrant::isInHalfPlane(int quad, int halfPlane){ - if (halfPlane==3) { - return quad==3 || quad==0; +/* public static */ +bool +Quadrant::isInHalfPlane(int quad, int halfPlane) +{ + if (halfPlane==SE) { + return quad==SE || quad==SW; } return quad==halfPlane || quad==halfPlane+1; } -/** -* Returns true if the given quadrant is 0 or 1. -*/ -bool Quadrant::isNorthern(int quad) { - return quad==0 || quad==1; +/* public static */ +bool +Quadrant::isNorthern(int quad) +{ + return quad==NE || quad==NW; } } // namespace geos.geomgraph diff -Nru geos-3.1.0/source/geomgraph/TopologyLocation.cpp geos-3.2.2/source/geomgraph/TopologyLocation.cpp --- geos-3.1.0/source/geomgraph/TopologyLocation.cpp 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/geomgraph/TopologyLocation.cpp 2009-06-05 13:07:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TopologyLocation.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TopologyLocation.cpp 2545 2009-06-05 12:07:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/TopologyLocation.java rev. 1.6 (JTS-1.7) + * Last port: geomgraph/TopologyLocation.java rev. 1.6 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/headers/config.h.in geos-3.2.2/source/headers/config.h.in --- geos-3.1.0/source/headers/config.h.in 2009-03-11 19:13:23.000000000 +0000 +++ geos-3.2.2/source/headers/config.h.in 2010-04-18 16:08:06.000000000 +0100 @@ -28,6 +28,9 @@ /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT +/* Has finite */ +#undef HAVE_FINITE + /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY @@ -40,6 +43,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H +/* Has isfinite */ +#undef HAVE_ISFINITE + +/* Has isnan */ +#undef HAVE_ISNAN + /* Set to 1 if `long int' is 64 bits */ #undef HAVE_LONG_INT_64 @@ -99,6 +108,10 @@ /* Define to 1 if you have the `vprintf' function. */ #undef HAVE_VPRINTF +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT @@ -111,12 +124,15 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME +/* Define to the home page for this package. */ +#undef PACKAGE_URL + /* Define to the version of this package. */ #undef PACKAGE_VERSION /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. + automatically deduced at runtime. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ @@ -134,5 +150,5 @@ /* Define to empty if `const' does not conform to ANSI C. */ #undef const -/* Define to `unsigned' if does not define. */ +/* Define to `unsigned int' if does not define. */ #undef size_t diff -Nru geos-3.1.0/source/headers/geos/algorithm/Angle.h geos-3.2.2/source/headers/geos/algorithm/Angle.h --- geos-3.1.0/source/headers/geos/algorithm/Angle.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/algorithm/Angle.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,228 @@ +/********************************************************************** + * $Id: Angle.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/Angle.java rev. 1.6 (JTS-1.9) + * + **********************************************************************/ + +#ifndef GEOS_ALGORITHM_ANGLE_H +#define GEOS_ALGORITHM_ANGLE_H + +#include // for constants + +// Forward declarations +namespace geos { + namespace geom { + class Coordinate; + } +} + +namespace geos { +namespace algorithm { // geos::algorithm + +/// Utility functions for working with angles. +// +/// Unless otherwise noted, methods in this class express angles in radians. +/// +class Angle +{ +public: + + static const double PI_TIMES_2; // 2.0 * PI; + static const double PI_OVER_2; // PI / 2.0; + static const double PI_OVER_4; // PI / 4.0; + + /// Constant representing counterclockwise orientation + static const int COUNTERCLOCKWISE = CGAlgorithms::COUNTERCLOCKWISE; + + /// Constant representing clockwise orientation + static const int CLOCKWISE = CGAlgorithms::CLOCKWISE; + + /// Constant representing no orientation + static const int NONE = CGAlgorithms::COLLINEAR; + + /// Converts from radians to degrees. + // + /// @param radians an angle in radians + /// @return the angle in degrees + /// + static double toDegrees(double radians); + + /// Converts from degrees to radians. + // + /// @param angleDegrees an angle in degrees + /// @return the angle in radians + /// + static double toRadians(double angleDegrees); + + /// \brief + /// Returns the angle of the vector from p0 to p1, + /// relative to the positive X-axis. + // + /// The angle is normalized to be in the range [ -Pi, Pi ]. + /// + /// @return the normalized angle (in radians) that p0-p1 makes + /// with the positive x-axis. + /// + static double angle(const geom::Coordinate& p0, + const geom::Coordinate& p1); + + /// \brief + /// Returns the angle that the vector from (0,0) to p, + /// relative to the positive X-axis. + // + /// The angle is normalized to be in the range ( -Pi, Pi ]. + /// + /// @return the normalized angle (in radians) that p makes + /// with the positive x-axis. + /// + static double angle(const geom::Coordinate& p); + + /// Tests whether the angle between p0-p1-p2 is acute. + // + /// An angle is acute if it is less than 90 degrees. + /// + /// Note: this implementation is not precise (determistic) for + /// angles very close to 90 degrees. + /// + /// @param p0 an endpoint of the angle + /// @param p1 the base of the angle + /// @param p2 the other endpoint of the angle + /// + static bool isAcute(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2); + + /// Tests whether the angle between p0-p1-p2 is obtuse. + // + /// An angle is obtuse if it is greater than 90 degrees. + /// + /// Note: this implementation is not precise (determistic) for + /// angles very close to 90 degrees. + /// + /// @param p0 an endpoint of the angle + /// @param p1 the base of the angle + /// @param p2 the other endpoint of the angle + /// + static bool isObtuse(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2); + + /// Returns the unoriented smallest angle between two vectors. + // + /// The computed angle will be in the range [0, Pi). + /// + /// @param tip1 the tip of one vector + /// @param tail the tail of each vector + /// @param tip2 the tip of the other vector + /// @return the angle between tail-tip1 and tail-tip2 + /// + static double angleBetween(const geom::Coordinate& tip1, + const geom::Coordinate& tail, + const geom::Coordinate& tip2); + + /// Returns the oriented smallest angle between two vectors. + // + /// The computed angle will be in the range (-Pi, Pi]. + /// A positive result corresponds to a counterclockwise rotation + /// from v1 to v2; + /// a negative result corresponds to a clockwise rotation. + /// + /// @param tip1 the tip of v1 + /// @param tail the tail of each vector + /// @param tip2 the tip of v2 + /// @return the angle between v1 and v2, relative to v1 + /// + static double angleBetweenOriented(const geom::Coordinate& tip1, + const geom::Coordinate& tail, + const geom::Coordinate& tip2); + + /// Computes the interior angle between two segments of a ring. + // + /// The ring is assumed to be oriented in a clockwise direction. + /// The computed angle will be in the range [0, 2Pi] + /// + /// @param p0 + /// a point of the ring + /// @param p1 + /// the next point of the ring + /// @param p2 + /// the next point of the ring + /// @return the interior angle based at p1 + /// + static double interiorAngle(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2); + + /// \brief + /// Returns whether an angle must turn clockwise or counterclockwise + /// to overlap another angle. + /// + /// @param ang1 an angle (in radians) + /// @param ang2 an angle (in radians) + /// @return whether a1 must turn CLOCKWISE, COUNTERCLOCKWISE or + /// NONE to overlap a2. + /// + static int getTurn(double ang1, double ang2); + + /// \brief + /// Computes the normalized value of an angle, which is the + /// equivalent angle in the range ( -Pi, Pi ]. + /// + /// @param angle the angle to normalize + /// @return an equivalent angle in the range (-Pi, Pi] + /// + static double normalize(double angle); + + /// \brief + /// Computes the normalized positive value of an angle, + /// which is the equivalent angle in the range [ 0, 2*Pi ). + /// + /// E.g.: + /// - normalizePositive(0.0) = 0.0 + /// - normalizePositive(-PI) = PI + /// - normalizePositive(-2PI) = 0.0 + /// - normalizePositive(-3PI) = PI + /// - normalizePositive(-4PI) = 0 + /// - normalizePositive(PI) = PI + /// - normalizePositive(2PI) = 0.0 + /// - normalizePositive(3PI) = PI + /// - normalizePositive(4PI) = 0.0 + /// + /// @param angle the angle to normalize, in radians + /// @return an equivalent positive angle + /// + static double normalizePositive(double angle); + + + /// Computes the unoriented smallest difference between two angles. + // + /// The angles are assumed to be normalized to the range [-Pi, Pi]. + /// The result will be in the range [0, Pi]. + /// + /// @param ang1 the angle of one vector (in [-Pi, Pi] ) + /// @param ang2 the angle of the other vector (in range [-Pi, Pi] ) + /// @return the angle (in radians) between the two vectors + /// (in range [0, Pi] ) + /// + static double diff(double ang1, double ang2); +}; + + +} // namespace geos::algorithm +} // namespace geos + + +#endif // GEOS_ALGORITHM_ANGLE_H diff -Nru geos-3.1.0/source/headers/geos/algorithm/BoundaryNodeRule.h geos-3.2.2/source/headers/geos/algorithm/BoundaryNodeRule.h --- geos-3.1.0/source/headers/geos/algorithm/BoundaryNodeRule.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/algorithm/BoundaryNodeRule.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,111 @@ +/********************************************************************** + * $Id: BoundaryNodeRule.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/BoundaryNodeRule.java rev 1.4 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_ALGORITHM_BOUNDARYNODERULE_H +#define GEOS_ALGORITHM_BOUNDARYNODERULE_H + +// Forward declarations +// ... + +namespace geos { +namespace algorithm { // geos::algorithm + + +/** + * An interface for rules which determine whether node points + * which are in boundaries of {@link Lineal} geometry components + * are in the boundary of the parent geometry collection. + * The SFS specifies a single kind of boundary node rule, + * the {@link Mod2BoundaryNodeRule} rule. + * However, other kinds of Boundary Node Rules are appropriate + * in specific situations (for instance, linear network topology + * usually follows the {@link EndPointBoundaryNodeRule}.) + * Some JTS operations allow the BoundaryNodeRule to be specified, + * and respect this rule when computing the results of the operation. + * + * @author Martin Davis + * @version 1.7 + * + * @see operation::relate::RelateOp + * @see operation::IsSimpleOp + * @see algorithm::PointLocator + */ +class BoundaryNodeRule { + +public: + + // virtual classes should always have a virtual destructor.. + virtual ~BoundaryNodeRule() {} + + /** + * Tests whether a point that lies in boundaryCount + * geometry component boundaries is considered to form part of + * the boundary of the parent geometry. + * + * @param boundaryCount the number of component boundaries that + * this point occurs in + * @return true if points in this number of boundaries lie in + * the parent boundary + */ + virtual bool isInBoundary(int boundaryCount) const=0; + + /** \brief + * The Mod-2 Boundary Node Rule (which is the rule specified + * in the OGC SFS). + * + * @see Mod2BoundaryNodeRule + */ + static const BoundaryNodeRule& MOD2_BOUNDARY_RULE; + + /** \brief + * The Endpoint Boundary Node Rule. + * + * @see EndPointBoundaryNodeRule + */ + static const BoundaryNodeRule& ENDPOINT_BOUNDARY_RULE; + + /** \brief + * The MultiValent Endpoint Boundary Node Rule. + * + * @see MultiValentEndPointBoundaryNodeRule + */ + static const BoundaryNodeRule& MULTIVALENT_ENDPOINT_BOUNDARY_RULE; + + /** \brief + * The Monovalent Endpoint Boundary Node Rule. + * + * @see MonoValentEndPointBoundaryNodeRule + */ + static const BoundaryNodeRule& MONOVALENT_ENDPOINT_BOUNDARY_RULE; + + /** \brief + * The Boundary Node Rule specified by the OGC Simple Features + * Specification, which is the same as the Mod-2 rule. + * + * @see Mod2BoundaryNodeRule + */ + static const BoundaryNodeRule& OGC_SFS_BOUNDARY_RULE; + +}; + +} // namespace geos::algorithm +} // namespace geos + +#endif // GEOS_ALGORITHM_BOUNDARYNODERULE_H + diff -Nru geos-3.1.0/source/headers/geos/algorithm/CentroidArea.h geos-3.2.2/source/headers/geos/algorithm/CentroidArea.h --- geos-3.1.0/source/headers/geos/algorithm/CentroidArea.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/CentroidArea.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CentroidArea.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CentroidArea.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -18,6 +18,7 @@ #define GEOS_ALGORITHM_CENTROIDAREA_H +#include #include // Forward declarations @@ -46,7 +47,7 @@ * See http://www.faqs.org/faqs/graphics/algorithms-faq/ * for further details of the basic approach. */ -class CentroidArea { +class GEOS_DLL CentroidArea { public: diff -Nru geos-3.1.0/source/headers/geos/algorithm/CentroidLine.h geos-3.2.2/source/headers/geos/algorithm/CentroidLine.h --- geos-3.1.0/source/headers/geos/algorithm/CentroidLine.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/CentroidLine.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CentroidLine.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CentroidLine.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -18,6 +18,7 @@ #define GEOS_ALGORITHM_CENTROIDLINE_H +#include #include // Forward declarations @@ -31,7 +32,7 @@ namespace geos { namespace algorithm { // geos::algorithm -class CentroidLine { +class GEOS_DLL CentroidLine { private: geom::Coordinate centSum; diff -Nru geos-3.1.0/source/headers/geos/algorithm/CentroidPoint.h geos-3.2.2/source/headers/geos/algorithm/CentroidPoint.h --- geos-3.1.0/source/headers/geos/algorithm/CentroidPoint.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/CentroidPoint.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CentroidPoint.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CentroidPoint.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_CENTROIDPOINT_H #define GEOS_ALGORITHM_CENTROIDPOINT_H +#include #include // Forward declarations @@ -30,7 +31,7 @@ namespace geos { namespace algorithm { // geos::algorithm -class CentroidPoint { +class GEOS_DLL CentroidPoint { private: diff -Nru geos-3.1.0/source/headers/geos/algorithm/CGAlgorithms.h geos-3.2.2/source/headers/geos/algorithm/CGAlgorithms.h --- geos-3.1.0/source/headers/geos/algorithm/CGAlgorithms.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/CGAlgorithms.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CGAlgorithms.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CGAlgorithms.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,13 +14,14 @@ * ********************************************************************** * - * Last port: algorithm/CGAlgorithms.java rev. 1.34 (JTS-1.7.1) + * Last port: algorithm/CGAlgorithms.java rev. 1.46 (JTS-1.9) * **********************************************************************/ #ifndef GEOS_ALGORITHM_CGALGORITHM_H #define GEOS_ALGORITHM_CGALGORITHM_H +#include #include // Forward declarations @@ -43,7 +44,7 @@ * floating point. * */ -class CGAlgorithms { +class GEOS_DLL CGAlgorithms { public: @@ -62,18 +63,20 @@ CGAlgorithms(){}; /** \brief - * Test whether a point lies inside a ring. + * Tests whether a point lies inside a ring. * * The ring may be oriented in either direction. - * If the point lies on the ring boundary the result - * of this method is unspecified. + * A point lying exactly on the ring boundary is considered + * to be inside the ring. * - * This algorithm does not attempt to first check the + * This algorithm does not first check the * point against the envelope of the ring. * * @param p point to check for ring inclusion - * @param ring assumed to have first point identical to last point + * @param ring is assumed to have first point identical to last point * @return true if p is inside ring + * + * @see locatePointInRing */ static bool isPointInRing(const geom::Coordinate& p, const geom::CoordinateSequence* ring); @@ -83,7 +86,28 @@ const std::vector& ring); /** \brief - * Test whether a point lies on a linestring. + * Determines whether a point lies in the interior, + * on the boundary, or in the exterior of a ring. + * + * The ring may be oriented in either direction. + * + * This method does not first check the point against + * the envelope of the ring. + * + * @param p point to check for ring inclusion + * @param ring an array of coordinates representing the ring + * (which must have first point identical to last point) + * @return the {@link Location} of p relative to the ring + */ + static int locatePointInRing(const geom::Coordinate& p, + const geom::CoordinateSequence& ring); + + /// Same as above, but taking a vector of const Coordinates + static int locatePointInRing(const geom::Coordinate& p, + const std::vector& ring); + + /** \brief + * Test whether a point lies on the given line segment * * @return true true if * the point is a vertex of the line or lies in the interior of a line diff -Nru geos-3.1.0/source/headers/geos/algorithm/ConvexHull.h geos-3.2.2/source/headers/geos/algorithm/ConvexHull.h --- geos-3.1.0/source/headers/geos/algorithm/ConvexHull.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/ConvexHull.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConvexHull.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConvexHull.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_CONVEXHULL_H #define GEOS_ALGORITHM_CONVEXHULL_H +#include #include // FIXME: avoid using Cordinate:: typedefs to avoid full include @@ -45,7 +46,7 @@ * Last port: algorithm/ConvexHull.java rev. 1.26 (JTS-1.7) * */ -class ConvexHull { +class GEOS_DLL ConvexHull { private: const geom::GeometryFactory *geomFactory; geom::Coordinate::ConstVect inputPts; diff -Nru geos-3.1.0/source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h geos-3.2.2/source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h --- geos-3.1.0/source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/algorithm/distance/DiscreteHausdorffDistance.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,255 @@ +/********************************************************************** + * $Id: DiscreteHausdorffDistance.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/distance/DiscreteHausdorffDistance.java 1.5 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_ALGORITHM_DISTANCE_DISCRETEHAUSDORFFDISTANCE_H +#define GEOS_ALGORITHM_DISTANCE_DISCRETEHAUSDORFFDISTANCE_H + +#include // for composition +#include // for composition +#include // for inlines +#include // for inlines +#include // for inlines +#include // for inheritance +#include // for inheritance + +#include +#include + +namespace geos { + namespace algorithm { + //class RayCrossingCounter; + } + namespace geom { + class Geometry; + class Coordinate; + //class CoordinateSequence; + } + namespace index { + namespace intervalrtree { + //class SortedPackedIntervalRTree; + } + } +} + +namespace geos { +namespace algorithm { // geos::algorithm +namespace distance { // geos::algorithm::distance + +/** \brief + * An algorithm for computing a distance metric + * which is an approximation to the Hausdorff Distance + * based on a discretization of the input {@link Geometry}. + * + * The algorithm computes the Hausdorff distance restricted to discrete points + * for one of the geometries. + * The points can be either the vertices of the geometries (the default), + * or the geometries with line segments densified by a given fraction. + * Also determines two points of the Geometries which are separated by the + * computed distance. + * + * This algorithm is an approximation to the standard Hausdorff distance. + * Specifically, + *

+ *    for all geometries a, b:    DHD(a, b) <= HD(a, b)
+ * 
+ * The approximation can be made as close as needed by densifying the + * input geometries. + * In the limit, this value will approach the true Hausdorff distance: + *
+ *    DHD(A, B, densifyFactor) -> HD(A, B) as densifyFactor -> 0.0
+ * 
+ * The default approximation is exact or close enough for a large subset of + * useful cases. + * Examples of these are: + * + * - computing distance between Linestrings that are roughly parallel to + * each other, and roughly equal in length. This occurs in matching + * linear networks. + * - Testing similarity of geometries. + * + * An example where the default approximation is not close is: + *
+ *   A = LINESTRING (0 0, 100 0, 10 100, 10 100)
+ *   B = LINESTRING (0 100, 0 10, 80 10)
+ *
+ *   DHD(A, B) = 22.360679774997898
+ *   HD(A, B) ~= 47.8
+ * 
+ */ +class DiscreteHausdorffDistance +{ +public: + + static double distance(const geom::Geometry& g0, + const geom::Geometry& g1); + + static double distance(const geom::Geometry& g0, + const geom::Geometry& g1, double densifyFrac); + + DiscreteHausdorffDistance(const geom::Geometry& g0, + const geom::Geometry& g1) + : + g0(g0), + g1(g1), + ptDist(), + densifyFrac(0.0) + {} + + /** + * Sets the fraction by which to densify each segment. + * Each segment will be (virtually) split into a number of equal-length + * subsegments, whose fraction of the total length is closest + * to the given fraction. + * + * @param dFrac + */ + void setDensifyFraction(double dFrac) + { + if ( dFrac > 1.0 || dFrac <= 0.0 ) + { + throw util::IllegalArgumentException( + "Fraction is not in range (0.0 - 1.0]"); + } + + densifyFrac = dFrac; + } + + double distance() + { + compute(g0, g1); + return ptDist.getDistance(); + } + + double orientedDistance() + { + computeOrientedDistance(g0, g1, ptDist); + return ptDist.getDistance(); + } + + const std::vector getCoordinates() const + { + return ptDist.getCoordinates(); + } + + class MaxPointDistanceFilter : public geom::CoordinateFilter + { + public: + MaxPointDistanceFilter(const geom::Geometry& geom) + : + geom(geom) + {} + + void filter_ro(const geom::Coordinate* pt) + { + minPtDist.initialize(); + DistanceToPoint::computeDistance(geom, *pt, + minPtDist); + maxPtDist.setMaximum(minPtDist); + } + + const PointPairDistance& getMaxPointDistance() const + { + return maxPtDist; + } + + private: + PointPairDistance maxPtDist; + PointPairDistance minPtDist; + DistanceToPoint euclideanDist; + const geom::Geometry& geom; + + // Declare type as noncopyable + MaxPointDistanceFilter(const MaxPointDistanceFilter& other); + MaxPointDistanceFilter& operator=(const MaxPointDistanceFilter& rhs); + }; + + class MaxDensifiedByFractionDistanceFilter + : public geom::CoordinateSequenceFilter + { + public: + + MaxDensifiedByFractionDistanceFilter( + const geom::Geometry& geom, double fraction) + : + geom(geom), + numSubSegs( std::size_t(util::round(1.0/fraction)) ) + { + } + + void filter_ro(const geom::CoordinateSequence& seq, + std::size_t index); + + bool isGeometryChanged() const { return false; } + + bool isDone() const { return false; } + + const PointPairDistance& getMaxPointDistance() const { + return maxPtDist; + } + + private: + PointPairDistance maxPtDist; + PointPairDistance minPtDist; + const geom::Geometry& geom; + std::size_t numSubSegs; // = 0; + + // Declare type as noncopyable + MaxDensifiedByFractionDistanceFilter(const MaxDensifiedByFractionDistanceFilter& other); + MaxDensifiedByFractionDistanceFilter& operator=(const MaxDensifiedByFractionDistanceFilter& rhs); + }; + +private: + + void compute(const geom::Geometry& g0, + const geom::Geometry& g1) + { + computeOrientedDistance(g0, g1, ptDist); + computeOrientedDistance(g1, g0, ptDist); + } + + void computeOrientedDistance(const geom::Geometry& discreteGeom, + const geom::Geometry& geom, + PointPairDistance& ptDist); + + const geom::Geometry& g0; + + const geom::Geometry& g1; + + PointPairDistance ptDist; + + /// Value of 0.0 indicates that no densification should take place + double densifyFrac; // = 0.0; + + // Declare type as noncopyable + DiscreteHausdorffDistance(const DiscreteHausdorffDistance& other); + DiscreteHausdorffDistance& operator=(const DiscreteHausdorffDistance& rhs); +}; + + + +} // geos::algorithm::distance +} // geos::algorithm +} // geos + +#endif // GEOS_ALGORITHM_DISTANCE_DISCRETEHAUSDORFFDISTANCE_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/algorithm/distance/DistanceToPoint.h geos-3.2.2/source/headers/geos/algorithm/distance/DistanceToPoint.h --- geos-3.1.0/source/headers/geos/algorithm/distance/DistanceToPoint.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/algorithm/distance/DistanceToPoint.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,81 @@ +/********************************************************************** + * $Id: DistanceToPoint.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/distance/DistanceToPoint.java 1.1 (JTS-1.9) + * + **********************************************************************/ + +#ifndef GEOS_ALGORITHM_DISTANCE_DISTANCETOPOINT_H +#define GEOS_ALGORITHM_DISTANCE_DISTANCETOPOINT_H + +#include // for composition + +namespace geos { + namespace algorithm { + namespace distance { + class PointPairDistance; + } + } + namespace geom { + class Geometry; + class Coordinate; + class LineString; + class Polygon; + } +} + +namespace geos { +namespace algorithm { // geos::algorithm +namespace distance { // geos::algorithm::distance + +/** + * Computes the Euclidean distance (L2 metric) from a Point to a Geometry. + * + * Also computes two points which are separated by the distance. + */ +class DistanceToPoint +{ +public: + + DistanceToPoint() {} + + static void computeDistance(const geom::Geometry& geom, + const geom::Coordinate& pt, + PointPairDistance& ptDist); + + static void computeDistance(const geom::LineString& geom, + const geom::Coordinate& pt, + PointPairDistance& ptDist); + + static void computeDistance(const geom::LineSegment& geom, + const geom::Coordinate& pt, + PointPairDistance& ptDist); + + static void computeDistance(const geom::Polygon& geom, + const geom::Coordinate& pt, + PointPairDistance& ptDist); + +}; + +} // geos::algorithm::distance +} // geos::algorithm +} // geos + +#endif // GEOS_ALGORITHM_DISTANCE_DISTANCETOPOINT_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/algorithm/distance/Makefile.am geos-3.2.2/source/headers/geos/algorithm/distance/Makefile.am --- geos-3.1.0/source/headers/geos/algorithm/distance/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/algorithm/distance/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -0,0 +1,10 @@ +SUBDIRS = + +EXTRA_DIST = + +geosdir = $(includedir)/geos/algorithm/distance + +geos_HEADERS = \ + DiscreteHausdorffDistance.h \ + DistanceToPoint.h \ + PointPairDistance.h diff -Nru geos-3.1.0/source/headers/geos/algorithm/distance/Makefile.in geos-3.2.2/source/headers/geos/algorithm/distance/Makefile.in --- geos-3.1.0/source/headers/geos/algorithm/distance/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/algorithm/distance/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -0,0 +1,668 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = source/headers/geos/algorithm/distance +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = +EXTRA_DIST = +geosdir = $(includedir)/geos/algorithm/distance +geos_HEADERS = \ + DiscreteHausdorffDistance.h \ + DistanceToPoint.h \ + PointPairDistance.h + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/algorithm/distance/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/algorithm/distance/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-geosHEADERS: $(geos_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ + done + +uninstall-geosHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-geosHEADERS + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + + +# 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 -Nru geos-3.1.0/source/headers/geos/algorithm/distance/PointPairDistance.h geos-3.2.2/source/headers/geos/algorithm/distance/PointPairDistance.h --- geos-3.1.0/source/headers/geos/algorithm/distance/PointPairDistance.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/algorithm/distance/PointPairDistance.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,160 @@ +/********************************************************************** + * $Id: PointPairDistance.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/distance/PointPairDistance.java 1.1 (JTS-1.9) + * + **********************************************************************/ + +#ifndef GEOS_ALGORITHM_DISTANCE_POINTPAIRDISTANCE_H +#define GEOS_ALGORITHM_DISTANCE_POINTPAIRDISTANCE_H + +//#include // for composition +#include // for DoubleNotANumber +#include // for inlines + +#include // for composition +#include + +namespace geos { + namespace algorithm { + namespace distance { + //class PointPairDistance; + } + } + namespace geom { + //class Geometry; + class Coordinate; + //class LineString; + //class Polygon; + } +} + +namespace geos { +namespace algorithm { // geos::algorithm +namespace distance { // geos::algorithm::distance + +/** + * Contains a pair of points and the distance between them. + * Provides methods to update with a new point pair with + * either maximum or minimum distance. + */ +class PointPairDistance +{ +public: + + PointPairDistance() + : + pt(2), + distance(DoubleNotANumber), + isNull(true) + { + assert(pt.size() == 2); + } + + void initialize() + { + isNull = true; + } + + void initialize(const geom::Coordinate& p0, const geom::Coordinate& p1) + { + pt[0] = p0; + pt[1] = p1; + distance = p0.distance(p1); + isNull = false; + } + + double getDistance() const + { + return distance; + } + + const std::vector& getCoordinates() const + { + return pt; + } + + const geom::Coordinate& getCoordinate(unsigned int i) const + { + assert(i distance) + initialize(p0, p1, dist); + } + + void setMinimum(const PointPairDistance& ptDist) + { + setMinimum(ptDist.pt[0], ptDist.pt[1]); + } + + void setMinimum(const geom::Coordinate& p0, const geom::Coordinate& p1) + { + if (isNull) { + initialize(p0, p1); + return; + } + double dist = p0.distance(p1); + if (dist < distance) + initialize(p0, p1, dist); + } + +private: + + /** + * Initializes the points, avoiding recomputing the distance. + * @param p0 + * @param p1 + * @param dist the distance between p0 and p1 + */ + void initialize(const geom::Coordinate& p0, const geom::Coordinate& p1, + double dist) + { + pt[0] = p0; + pt[1] = p1; + distance = dist; + isNull = false; + } + + std::vector pt; + + double distance; + + bool isNull; +}; + +} // geos::algorithm::distance +} // geos::algorithm +} // geos + +#endif // GEOS_ALGORITHM_DISTANCE_POINTPAIRDISTANCE_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/algorithm/HCoordinate.h geos-3.2.2/source/headers/geos/algorithm/HCoordinate.h --- geos-3.1.0/source/headers/geos/algorithm/HCoordinate.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/HCoordinate.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: HCoordinate.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: HCoordinate.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,13 +14,14 @@ * ********************************************************************** * - * Last port: algorithm/HCoordinate.java rev. 1.17 (JTS-1.7) + * Last port: algorithm/HCoordinate.java rev. 1.18 (JTS-1.9) * **********************************************************************/ #ifndef GEOS_ALGORITHM_HCOORDINATE_H #define GEOS_ALGORITHM_HCOORDINATE_H +#include #include // Forward declarations @@ -40,24 +41,27 @@ * HCoordinate are used as a clean way * of computing intersections between line segments. */ -class HCoordinate { +class GEOS_DLL HCoordinate { public: friend std::ostream& operator<< (std::ostream& o, const HCoordinate& c); /** \brief - * Computes the (approximate) intersection point between two line segments - * using homogeneous coordinates. + * Computes the (approximate) intersection point between two line + * segments using homogeneous coordinates. * * Note that this algorithm is * not numerically stable; i.e. it can produce intersection points which * lie outside the envelope of the line segments themselves. In order - * to increase the precision of the calculation input points should be normalized - * before passing them to this routine. + * to increase the precision of the calculation input points should be + * normalized before passing them to this routine. */ - static void intersection(const geom::Coordinate &p1, const geom::Coordinate &p2, - const geom::Coordinate &q1, const geom::Coordinate &q2, geom::Coordinate &ret); + static void intersection(const geom::Coordinate &p1, + const geom::Coordinate &p2, + const geom::Coordinate &q1, + const geom::Coordinate &q2, + geom::Coordinate &ret); long double x,y,w; @@ -67,6 +71,19 @@ HCoordinate(const geom::Coordinate& p); + /** \brief + * Constructs a homogeneous coordinate which is the intersection + * of the lines define by the homogenous coordinates represented + * by two {@link Coordinate}s. + * + * @param p1 + * @param p2 + */ + HCoordinate(const geom::Coordinate& p1, const geom::Coordinate& p2); + + HCoordinate(const geom::Coordinate& p1, const geom::Coordinate& p2, + const geom::Coordinate& q1, const geom::Coordinate& q2); + HCoordinate(const HCoordinate &p1, const HCoordinate &p2); long double getX() const; diff -Nru geos-3.1.0/source/headers/geos/algorithm/InteriorPointArea.h geos-3.2.2/source/headers/geos/algorithm/InteriorPointArea.h --- geos-3.1.0/source/headers/geos/algorithm/InteriorPointArea.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/InteriorPointArea.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: InteriorPointArea.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: InteriorPointArea.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_INTERIORPOINTAREA_H #define GEOS_ALGORITHM_INTERIORPOINTAREA_H +#include #include // Forward declarations @@ -50,7 +51,7 @@ * which does not lie in the interior. * */ -class InteriorPointArea { +class GEOS_DLL InteriorPointArea { private: diff -Nru geos-3.1.0/source/headers/geos/algorithm/InteriorPointLine.h geos-3.2.2/source/headers/geos/algorithm/InteriorPointLine.h --- geos-3.1.0/source/headers/geos/algorithm/InteriorPointLine.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/InteriorPointLine.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: InteriorPointLine.h 1880 2006-10-27 11:54:17Z strk $ + * $Id: InteriorPointLine.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_INTERIORPOINTLINE_H #define GEOS_ALGORITHM_INTERIORPOINTLINE_H +#include #include // Forward declarations @@ -42,7 +43,7 @@ * closest to the centroid. * */ -class InteriorPointLine { +class GEOS_DLL InteriorPointLine { public: InteriorPointLine(const geom::Geometry *g); diff -Nru geos-3.1.0/source/headers/geos/algorithm/InteriorPointPoint.h geos-3.2.2/source/headers/geos/algorithm/InteriorPointPoint.h --- geos-3.1.0/source/headers/geos/algorithm/InteriorPointPoint.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/InteriorPointPoint.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: InteriorPointPoint.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: InteriorPointPoint.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_INTERIORPOINTPOINT_H #define GEOS_ALGORITHM_INTERIORPOINTPOINT_H +#include #include // Forward declarations @@ -38,7 +39,7 @@ * * Find a point which is closest to the centroid of the geometry. */ -class InteriorPointPoint { +class GEOS_DLL InteriorPointPoint { private: bool hasInterior; diff -Nru geos-3.1.0/source/headers/geos/algorithm/LineIntersector.h geos-3.2.2/source/headers/geos/algorithm/LineIntersector.h --- geos-3.1.0/source/headers/geos/algorithm/LineIntersector.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/LineIntersector.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineIntersector.h 1938 2006-12-07 10:45:16Z strk $ + * $Id: LineIntersector.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,13 +14,14 @@ * ********************************************************************** * - * Last port: algorithm/RobustLineIntersector.java rev. 1.35 + * Last port: algorithm/RobustLineIntersector.java rev. 1.38 (JTS-1.10) * **********************************************************************/ #ifndef GEOS_ALGORITHM_LINEINTERSECTOR_H #define GEOS_ALGORITHM_LINEINTERSECTOR_H +#include #include #include @@ -46,7 +47,7 @@ * an integer grid.) * */ -class LineIntersector { +class GEOS_DLL LineIntersector { public: /// \brief @@ -124,10 +125,22 @@ /// Same as above but doen's compute intersection point. Faster. static bool hasIntersection(const geom::Coordinate& p,const geom::Coordinate& p1,const geom::Coordinate& p2); + // These are deprecated, due to ambiguous naming enum { - DONT_INTERSECT, - DO_INTERSECT, - COLLINEAR + DONT_INTERSECT=0, + DO_INTERSECT=1, + COLLINEAR=2 + }; + + enum { + /// Indicates that line segments do not intersect + NO_INTERSECTION=0, + + /// Indicates that line segments intersect in a single point + POINT_INTERSECTION=1, + + /// Indicates that line segments intersect in a line segment + COLLINEAR_INTERSECTION=2 }; /// Computes the intersection of the lines p1-p2 and p3-p4 @@ -141,7 +154,7 @@ * * @return true if the input geometries intersect */ - bool hasIntersection() const { return result!=DONT_INTERSECT; } + bool hasIntersection() const { return result!=NO_INTERSECTION; } /// Returns the number of intersection points found. // @@ -232,6 +245,12 @@ private: + void intersectionWithNormalization(const geom::Coordinate& p1, + const geom::Coordinate& p2, + const geom::Coordinate& q1, + const geom::Coordinate& q2, + geom::Coordinate &ret) const; + /** * If makePrecise is true, computed intersection coordinates * will be made precise using Coordinate#makePrecise @@ -258,7 +277,7 @@ //Coordinate &pa; //Coordinate &pb; - bool isCollinear() const { return result==COLLINEAR; } + bool isCollinear() const { return result==COLLINEAR_INTERSECTION; } int computeIntersect(const geom::Coordinate& p1,const geom::Coordinate& p2,const geom::Coordinate& q1,const geom::Coordinate& q2); diff -Nru geos-3.1.0/source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h geos-3.2.2/source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h --- geos-3.1.0/source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/locate/IndexedPointInAreaLocator.h 2009-12-03 19:27:18.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IndexedPointInAreaLocator.h 2263 2009-01-29 18:56:00Z mloskot $ + * $Id: IndexedPointInAreaLocator.h 2770 2009-12-03 19:27:18Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,6 +20,8 @@ #include // inherited #include // inherited +#include // composition + namespace geos { namespace algorithm { class RayCrossingCounter; @@ -28,6 +30,7 @@ class Geometry; class Coordinate; class CoordinateSequence; + class LineSegment; } namespace index { namespace intervalrtree { @@ -61,6 +64,9 @@ void init( const geom::Geometry & g); void addLine( geom::CoordinateSequence * pts); + // To keep track of allocated LineSegments + std::vector< geom::LineSegment* > allocatedSegments; + public: IntervalIndexedGeometry( const geom::Geometry & g); ~IntervalIndexedGeometry(); @@ -91,8 +97,10 @@ void buildIndex( const geom::Geometry & g); + // Declare type as noncopyable + IndexedPointInAreaLocator(const IndexedPointInAreaLocator& other); + IndexedPointInAreaLocator& operator=(const IndexedPointInAreaLocator& rhs); -protected: public: /** * Creates a new locator for a given {@link Geometry} @@ -109,7 +117,7 @@ * @return the location of the point in the geometry */ int locate( const geom::Coordinate * /*const*/ p); - + }; } // geos::algorithm::locate diff -Nru geos-3.1.0/source/headers/geos/algorithm/locate/Makefile.am geos-3.2.2/source/headers/geos/algorithm/locate/Makefile.am --- geos-3.1.0/source/headers/geos/algorithm/locate/Makefile.am 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/locate/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,20 +2,10 @@ EXTRA_DIST = -# Notes: -# -# PointLocator.h is needed by DistanceOp.h and OverlayOp.h for composition -# needed by RelateComputer.h needed by RelateOp.h -# -# LineIntersector.h needed by GeometryGraphOperation.h needed by OverlayOp.h -# needed by RelateComputer.h needed by RelateOp.h -# - geosdir = $(includedir)/geos/algorithm/locate -geos_HEADERS = - -noinst_HEADERS = \ +geos_HEADERS = \ IndexedPointInAreaLocator.h \ PointOnGeometryLocator.h \ SimplePointInAreaLocator.h + diff -Nru geos-3.1.0/source/headers/geos/algorithm/locate/Makefile.in geos-3.2.2/source/headers/geos/algorithm/locate/Makefile.in --- geos-3.1.0/source/headers/geos/algorithm/locate/Makefile.in 2009-03-11 19:13:38.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/locate/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/algorithm/locate -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,50 +241,53 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = EXTRA_DIST = - -# Notes: -# -# PointLocator.h is needed by DistanceOp.h and OverlayOp.h for composition -# needed by RelateComputer.h needed by RelateOp.h -# -# LineIntersector.h needed by GeometryGraphOperation.h needed by OverlayOp.h -# needed by RelateComputer.h needed by RelateOp.h -# geosdir = $(includedir)/geos/algorithm/locate -geos_HEADERS = -noinst_HEADERS = \ +geos_HEADERS = \ IndexedPointInAreaLocator.h \ PointOnGeometryLocator.h \ SimplePointInAreaLocator.h @@ -250,14 +299,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/algorithm/locate/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/algorithm/locate/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/algorithm/locate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/algorithm/locate/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -275,33 +324,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -327,15 +376,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -362,16 +410,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -379,14 +427,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -398,81 +446,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -483,7 +551,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -505,6 +573,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -515,8 +584,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -524,18 +592,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -554,23 +642,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/algorithm/Makefile.am geos-3.2.2/source/headers/geos/algorithm/Makefile.am --- geos-3.1.0/source/headers/geos/algorithm/Makefile.am 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -1,41 +1,33 @@ SUBDIRS = \ - locate + locate \ + distance EXTRA_DIST = -# Notes: -# -# PointLocator.h is needed by DistanceOp.h and OverlayOp.h for composition -# needed by RelateComputer.h needed by RelateOp.h -# -# LineIntersector.h needed by GeometryGraphOperation.h needed by OverlayOp.h -# needed by RelateComputer.h needed by RelateOp.h -# - geosdir = $(includedir)/geos/algorithm geos_HEADERS = \ - LineIntersector.h \ - PointLocator.h - -noinst_HEADERS = \ - CGAlgorithms.h \ + Angle.h \ + BoundaryNodeRule.h \ CentralEndpointIntersector.h \ CentroidArea.h \ CentroidLine.h \ CentroidPoint.h \ + CGAlgorithms.h \ ConvexHull.h \ ConvexHull.inl \ HCoordinate.h \ InteriorPointArea.h \ InteriorPointLine.h \ InteriorPointPoint.h \ + LineIntersector.h \ MCPointInRing.h \ MinimumDiameter.h \ NotRepresentableException.h \ PointInRing.h \ + PointLocator.h \ RayCrossingCounter.h \ RobustDeterminant.h \ - SIRtreePointInRing.h \ - SimplePointInRing.h + SimplePointInRing.h \ + SIRtreePointInRing.h diff -Nru geos-3.1.0/source/headers/geos/algorithm/Makefile.in geos-3.2.2/source/headers/geos/algorithm/Makefile.in --- geos-3.1.0/source/headers/geos/algorithm/Makefile.in 2009-03-11 19:13:38.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/algorithm -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,74 +241,79 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ - locate + locate \ + distance EXTRA_DIST = - -# Notes: -# -# PointLocator.h is needed by DistanceOp.h and OverlayOp.h for composition -# needed by RelateComputer.h needed by RelateOp.h -# -# LineIntersector.h needed by GeometryGraphOperation.h needed by OverlayOp.h -# needed by RelateComputer.h needed by RelateOp.h -# geosdir = $(includedir)/geos/algorithm geos_HEADERS = \ - LineIntersector.h \ - PointLocator.h - -noinst_HEADERS = \ - CGAlgorithms.h \ + Angle.h \ + BoundaryNodeRule.h \ CentralEndpointIntersector.h \ CentroidArea.h \ CentroidLine.h \ CentroidPoint.h \ + CGAlgorithms.h \ ConvexHull.h \ ConvexHull.inl \ HCoordinate.h \ InteriorPointArea.h \ InteriorPointLine.h \ InteriorPointPoint.h \ + LineIntersector.h \ MCPointInRing.h \ MinimumDiameter.h \ NotRepresentableException.h \ PointInRing.h \ + PointLocator.h \ RayCrossingCounter.h \ RobustDeterminant.h \ - SIRtreePointInRing.h \ - SimplePointInRing.h + SimplePointInRing.h \ + SIRtreePointInRing.h all: all-recursive @@ -271,14 +322,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/algorithm/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/algorithm/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/algorithm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/algorithm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -296,33 +347,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -348,15 +399,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -383,16 +433,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -400,14 +450,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -419,81 +469,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -504,7 +574,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -526,6 +596,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -536,8 +607,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -545,18 +615,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -575,23 +665,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/algorithm/MCPointInRing.h geos-3.2.2/source/headers/geos/algorithm/MCPointInRing.h --- geos-3.1.0/source/headers/geos/algorithm/MCPointInRing.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/MCPointInRing.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCPointInRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MCPointInRing.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_MCPOINTINRING_H #define GEOS_ALGORITHM_MCPOINTINRING_H +#include #include // for inheritance #include // for inheritance #include // for composition @@ -47,12 +48,14 @@ namespace geos { namespace algorithm { // geos::algorithm -class MCPointInRing: public PointInRing { +class GEOS_DLL MCPointInRing: public PointInRing { public: MCPointInRing(const geom::LinearRing *newRing); ~MCPointInRing(); bool isInside(const geom::Coordinate& pt); - void testLineSegment(geom::Coordinate& p, geom::LineSegment *seg); + + void testLineSegment(const geom::Coordinate& p, + const geom::LineSegment& seg); class MCSelecter: public index::chain::MonotoneChainSelectAction { using MonotoneChainSelectAction::select; @@ -61,7 +64,7 @@ MCPointInRing *parent; public: MCSelecter(const geom::Coordinate& newP, MCPointInRing *prt); - void select(geom::LineSegment *ls); + void select(const geom::LineSegment& ls); }; private: diff -Nru geos-3.1.0/source/headers/geos/algorithm/MinimumDiameter.h geos-3.2.2/source/headers/geos/algorithm/MinimumDiameter.h --- geos-3.1.0/source/headers/geos/algorithm/MinimumDiameter.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/MinimumDiameter.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MinimumDiameter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MinimumDiameter.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_MINIMUMDIAMETER_H #define GEOS_ALGORITHM_MINIMUMDIAMETER_H +#include // Forward declarations namespace geos { @@ -51,7 +52,7 @@ * @see ConvexHull * */ -class MinimumDiameter { +class GEOS_DLL MinimumDiameter { private: const geom::Geometry* inputGeom; bool isConvex; diff -Nru geos-3.1.0/source/headers/geos/algorithm/NotRepresentableException.h geos-3.2.2/source/headers/geos/algorithm/NotRepresentableException.h --- geos-3.1.0/source/headers/geos/algorithm/NotRepresentableException.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/NotRepresentableException.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NotRepresentableException.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: NotRepresentableException.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_NOTREPRESENTABLEEXCEPTION_H #define GEOS_ALGORITHM_NOTREPRESENTABLEEXCEPTION_H +#include #include #include @@ -32,7 +33,7 @@ * @version 1.4 * @see HCoordinate */ -class NotRepresentableException: public util::GEOSException { +class GEOS_DLL NotRepresentableException: public util::GEOSException { public: NotRepresentableException(); NotRepresentableException(std::string msg); diff -Nru geos-3.1.0/source/headers/geos/algorithm/PointInRing.h geos-3.2.2/source/headers/geos/algorithm/PointInRing.h --- geos-3.1.0/source/headers/geos/algorithm/PointInRing.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/PointInRing.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PointInRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PointInRing.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_POINTINRING_H #define GEOS_ALGORITHM_POINTINRING_H +#include // Forward declarations namespace geos { @@ -28,7 +29,7 @@ namespace geos { namespace algorithm { // geos::algorithm -class PointInRing{ +class GEOS_DLL PointInRing{ public: virtual ~PointInRing(){}; virtual bool isInside(const geom::Coordinate& pt)=0; diff -Nru geos-3.1.0/source/headers/geos/algorithm/PointLocator.h geos-3.2.2/source/headers/geos/algorithm/PointLocator.h --- geos-3.1.0/source/headers/geos/algorithm/PointLocator.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/PointLocator.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PointLocator.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PointLocator.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_POINTLOCATOR_H #define GEOS_ALGORITHM_POINTLOCATOR_H +#include #include // for inlines // Forward declarations @@ -50,7 +51,7 @@ * * Last port: algorithm/PointLocator.java rev. 1.26 (JTS-1.7+) */ -class PointLocator { +class GEOS_DLL PointLocator { public: PointLocator() {} ~PointLocator() {} diff -Nru geos-3.1.0/source/headers/geos/algorithm/RayCrossingCounter.h geos-3.2.2/source/headers/geos/algorithm/RayCrossingCounter.h --- geos-3.1.0/source/headers/geos/algorithm/RayCrossingCounter.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/RayCrossingCounter.h 2009-12-03 19:27:18.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RayCrossingCounter.h 2263 2009-01-29 18:56:00Z mloskot $ + * $Id: RayCrossingCounter.h 2770 2009-12-03 19:27:18Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,18 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: algorithm/RayCrossingCounter.java rev. 1.2 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_ALGORITHM_RAYCROSSINGCOUNTER_H #define GEOS_ALGORITHM_RAYCROSSINGCOUNTER_H +#include + +#include // forward declarations namespace geos { @@ -57,17 +64,20 @@ * @author Martin Davis * */ -class RayCrossingCounter +class GEOS_DLL RayCrossingCounter { private: - const geom::Coordinate * point; + const geom::Coordinate& point; int crossingCount; // true if the test point lies on an input segment - bool isPointOnSegment; + bool isPointOnSegment; + + // Declare type as noncopyable + RayCrossingCounter(const RayCrossingCounter& other); + RayCrossingCounter& operator=(const RayCrossingCounter& rhs); -protected: public: /** * Determines the {@link Location} of a point in a ring. @@ -77,9 +87,14 @@ * @param ring an array of Coordinates forming a ring * @return the location of the point in the ring */ - static int locatePointInRing( const geom::Coordinate * p, const geom::CoordinateSequence * ring); + static int locatePointInRing(const geom::Coordinate& p, + const geom::CoordinateSequence& ring); + + /// Semantically equal to the above, just different args encoding + static int locatePointInRing(const geom::Coordinate& p, + const std::vector& ring); - RayCrossingCounter( const geom::Coordinate * point) + RayCrossingCounter(const geom::Coordinate& point) : point( point), crossingCount( 0), isPointOnSegment( false) @@ -91,7 +106,8 @@ * @param p1 an endpoint of the segment * @param p2 another endpoint of the segment */ - void countSegment( const geom::Coordinate * p1, const geom::Coordinate * p2); + void countSegment(const geom::Coordinate& p1, + const geom::Coordinate& p2); /** * Reports whether the point lies exactly on one of the supplied segments. diff -Nru geos-3.1.0/source/headers/geos/algorithm/RobustDeterminant.h geos-3.2.2/source/headers/geos/algorithm/RobustDeterminant.h --- geos-3.1.0/source/headers/geos/algorithm/RobustDeterminant.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/RobustDeterminant.h 2009-06-16 16:49:53.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RobustDeterminant.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RobustDeterminant.h 2592 2009-06-16 15:49:53Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,17 +12,54 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: algorithm/RobustDeterminant.java 1.15 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_ALGORITHM_ROBUSTDETERMINANT_H #define GEOS_ALGORITHM_ROBUSTDETERMINANT_H +#include namespace geos { namespace algorithm { // geos::algorithm -class RobustDeterminant { +/** \brief + * Implements an algorithm to compute the + * sign of a 2x2 determinant for double precision values robustly. + * + * It is a direct translation of code developed by Olivier Devillers. + * + * The original code carries the following copyright notice: + * + *
+ *************************************************************************
+ * The original code carries the following copyright notice:
+ * Author : Olivier Devillers
+ * Olivier.Devillers@sophia.inria.fr
+ * http:/www.inria.fr:/prisme/personnel/devillers/anglais/determinant.html
+ *
+ **************************************************************************
+ *              Copyright (c) 1995  by  INRIA Prisme Project
+ *                  BP 93 06902 Sophia Antipolis Cedex, France.
+ *                           All rights reserved
+ **********************************************************************
+ * 
+ * + */ +class GEOS_DLL RobustDeterminant { public: + + /** \brief + * Computes the sign of the determinant of the 2x2 matrix + * with the given entries, in a robust way. + * + * @return -1 if the determinant is negative, + * @return 1 if the determinant is positive, + * @return 0 if the determinant is 0. + */ static int signOfDet2x2(double x1,double y1,double x2,double y2); }; diff -Nru geos-3.1.0/source/headers/geos/algorithm/SimplePointInRing.h geos-3.2.2/source/headers/geos/algorithm/SimplePointInRing.h --- geos-3.1.0/source/headers/geos/algorithm/SimplePointInRing.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/SimplePointInRing.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimplePointInRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimplePointInRing.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_SIMPLEPOINTINRING_H #define GEOS_ALGORITHM_SIMPLEPOINTINRING_H +#include #include // for inheritance // Forward declarations @@ -31,7 +32,7 @@ namespace geos { namespace algorithm { // geos::algorithm -class SimplePointInRing: public PointInRing { +class GEOS_DLL SimplePointInRing: public PointInRing { public: SimplePointInRing(geom::LinearRing *ring); virtual ~SimplePointInRing(); diff -Nru geos-3.1.0/source/headers/geos/algorithm/SIRtreePointInRing.h geos-3.2.2/source/headers/geos/algorithm/SIRtreePointInRing.h --- geos-3.1.0/source/headers/geos/algorithm/SIRtreePointInRing.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/algorithm/SIRtreePointInRing.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SIRtreePointInRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SIRtreePointInRing.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_ALGORITHM_SIRTREEPOINTINRING_H #define GEOS_ALGORITHM_SIRTREEPOINTINRING_H +#include #include // for inheritance #include @@ -39,7 +40,7 @@ namespace geos { namespace algorithm { // geos::algorithm -class SIRtreePointInRing: public PointInRing { +class GEOS_DLL SIRtreePointInRing: public PointInRing { private: geom::LinearRing *ring; index::strtree::SIRtree *sirTree; diff -Nru geos-3.1.0/source/headers/geos/export.h geos-3.2.2/source/headers/geos/export.h --- geos-3.1.0/source/headers/geos/export.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/export.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,34 @@ +/********************************************************************** + * $Id: export.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Ragi Y. Burhum + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + **********************************************************************/ + +#ifndef GEOS_EXPORT_H +#define GEOS_EXPORT_H + +#if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || \ + defined( __BCPLUSPLUS__) || defined( __MWERKS__) + +# if defined(GEOS_DLL_EXPORT) +# define GEOS_DLL __declspec(dllexport) +# elif defined(GEOS_DLL_IMPORT) +# define GEOS_DLL __declspec(dllimport) +# else +# define GEOS_DLL +# endif +#else +# define GEOS_DLL +#endif + +#endif // GEOS_EXPORT_H + diff -Nru geos-3.1.0/source/headers/geos/geom/BinaryOp.h geos-3.2.2/source/headers/geos/geom/BinaryOp.h --- geos-3.1.0/source/headers/geos/geom/BinaryOp.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/BinaryOp.h 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: BinaryOp.h 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: BinaryOp.h 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -46,11 +46,16 @@ * **********************************************************************/ +#ifndef GEOS_GEOM_BINARYOP_H +#define GEOS_GEOM_BINARYOP_H + #include #include #include #include -#include + +#include + #include #include #include @@ -105,7 +110,7 @@ namespace geos { namespace geom { // geos::geom -bool +inline bool check_valid(const Geometry& g, const std::string& label) { operation::valid::IsValidOp ivo(&g); @@ -131,7 +136,8 @@ #define CBR_BEFORE_SNAPPING 1 - using geos::precision::GeometrySnapper; + //using geos::precision::GeometrySnapper; + using geos::operation::overlay::snap::GeometrySnapper; // Snap tolerance must be computed on the original // (not commonbits-removed) geoms @@ -257,7 +263,7 @@ } catch (const util::TopologyException& ex) { - UNREFERENCED_PARAMETER(ex); + ::geos::ignore_unused_variable_warning(ex); #if GEOS_DEBUG_BINARYOP std::cerr << "CBR: " << ex.what() << std::endl; #endif @@ -287,7 +293,7 @@ } catch (const util::TopologyException& ex) { - UNREFERENCED_PARAMETER(ex); + ::geos::ignore_unused_variable_warning(ex); #if GEOS_DEBUG_BINARYOP std::cerr << "SNAP: " << ex.what() << std::endl; #endif @@ -399,3 +405,5 @@ } // namespace geos::geom } // namespace geos + +#endif // GEOS_GEOM_BINARYOP_H diff -Nru geos-3.1.0/source/headers/geos/geom/CoordinateArraySequenceFactory.h geos-3.2.2/source/headers/geos/geom/CoordinateArraySequenceFactory.h --- geos-3.1.0/source/headers/geos/geom/CoordinateArraySequenceFactory.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/CoordinateArraySequenceFactory.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateArraySequenceFactory.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CoordinateArraySequenceFactory.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_GEOM_COORDINATEARRAYSEQUENCEFACTORY_H #define GEOS_GEOM_COORDINATEARRAYSEQUENCEFACTORY_H + +#include #include #include // for inheritance @@ -39,7 +41,7 @@ * Creates CoordinateSequences internally represented as an array of * Coordinates. */ -class CoordinateArraySequenceFactory: public CoordinateSequenceFactory { +class GEOS_DLL CoordinateArraySequenceFactory: public CoordinateSequenceFactory { public: diff -Nru geos-3.1.0/source/headers/geos/geom/CoordinateArraySequence.h geos-3.2.2/source/headers/geos/geom/CoordinateArraySequence.h --- geos-3.1.0/source/headers/geos/geom/CoordinateArraySequence.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/CoordinateArraySequence.h 2009-10-17 13:28:41.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateArraySequence.h 1958 2007-01-09 15:08:22Z strk $ + * $Id: CoordinateArraySequence.h 2678 2009-10-17 12:28:41Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_COORDINATEARRAYSEQUENCE_H #define GEOS_GEOM_COORDINATEARRAYSEQUENCE_H +#include #include //#include @@ -35,7 +36,7 @@ namespace geom { // geos.geom /// The default implementation of CoordinateSequence -class CoordinateArraySequence : public CoordinateSequence { +class GEOS_DLL CoordinateArraySequence : public CoordinateSequence { public: CoordinateArraySequence(const CoordinateArraySequence &cl); @@ -50,8 +51,13 @@ //int size() const; size_t getSize() const; + + // @deprecated const std::vector* toVector() const; + // See dox in CoordinateSequence.h + void toVector(std::vector&) const; + /// Construct an empty sequence CoordinateArraySequence(); @@ -69,6 +75,19 @@ virtual void add(const Coordinate& c, bool allowRepeated); + /** \brief + * Inserts the specified coordinate at the specified position in + * this list. + * + * @param i the position at which to insert + * @param coord the coordinate to insert + * @param allowRepeated if set to false, repeated coordinates are + * collapsed + * + * NOTE: this is a CoordinateList interface in JTS + */ + virtual void add(size_t i, const Coordinate& coord, bool allowRepeated); + void setAt(const Coordinate& c, size_t pos); void deleteAt(size_t pos); diff -Nru geos-3.1.0/source/headers/geos/geom/CoordinateFilter.h geos-3.2.2/source/headers/geos/geom/CoordinateFilter.h --- geos-3.1.0/source/headers/geos/geom/CoordinateFilter.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/CoordinateFilter.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateFilter.h 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: CoordinateFilter.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_COORDINATEFILTER_H #define GEOS_GEOM_COORDINATEFILTER_H +#include #include #include @@ -40,7 +41,7 @@ * of having the two versions of filter_rw and filter_ro * */ -class CoordinateFilter { +class GEOS_DLL CoordinateFilter { public: virtual ~CoordinateFilter() {} diff -Nru geos-3.1.0/source/headers/geos/geom/Coordinate.h geos-3.2.2/source/headers/geos/geom/Coordinate.h --- geos-3.1.0/source/headers/geos/geom/Coordinate.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Coordinate.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Coordinate.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Coordinate.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,13 +16,14 @@ #ifndef GEOS_GEOM_COORDINATE_H #define GEOS_GEOM_COORDINATE_H +#include #include // for DoubleNotANumber #include - #include #include #include // for typedefs #include +#include namespace geos { namespace geom { // geos.geom @@ -52,7 +53,7 @@ // Define the following to make assignments and copy constructions // NON-inline (will let profilers report usages) //#define PROFILE_COORDINATE_COPIES 1 -class Coordinate { +class GEOS_DLL Coordinate { private: @@ -84,6 +85,8 @@ static Coordinate& getNull(); + bool isNull() const; + ~Coordinate(); Coordinate(double xNew=0.0, double yNew=0.0, double zNew=DoubleNotANumber); @@ -126,7 +129,7 @@ }; /// Strict weak ordering Functor for Coordinate -struct CoordinateLessThen { +struct GEOS_DLL CoordinateLessThen { bool operator()(const Coordinate* a, const Coordinate* b) const; bool operator()(const Coordinate& a, const Coordinate& b) const; @@ -134,13 +137,13 @@ }; /// Output function -std::ostream& operator<< (std::ostream& os, const Coordinate& c); +GEOS_DLL std::ostream& operator<< (std::ostream& os, const Coordinate& c); /// Equality operator for Coordinate. 2D only. -bool operator==(const Coordinate& a, const Coordinate& b); +GEOS_DLL bool operator==(const Coordinate& a, const Coordinate& b); /// Inequality operator for Coordinate. 2D only. -bool operator!=(const Coordinate& a, const Coordinate& b); +GEOS_DLL bool operator!=(const Coordinate& a, const Coordinate& b); diff -Nru geos-3.1.0/source/headers/geos/geom/Coordinate.inl geos-3.2.2/source/headers/geos/geom/Coordinate.inl --- geos-3.1.0/source/headers/geos/geom/Coordinate.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Coordinate.inl 2009-06-06 22:14:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Coordinate.inl 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: Coordinate.inl 2554 2009-06-06 21:14:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -40,6 +40,12 @@ return nullCoord; } +INLINE bool +Coordinate::isNull() const +{ + return (ISNAN(x) && ISNAN(y) && ISNAN(z)); +} + INLINE Coordinate::~Coordinate() { diff -Nru geos-3.1.0/source/headers/geos/geom/CoordinateList.h geos-3.2.2/source/headers/geos/geom/CoordinateList.h --- geos-3.1.0/source/headers/geos/geom/CoordinateList.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/CoordinateList.h 2009-08-12 20:01:57.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateList.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CoordinateList.h 2619 2009-08-12 19:01:57Z pramsey $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_COORDINATELIST_H #define GEOS_GEOM_COORDINATELIST_H +#include #include #include @@ -41,7 +42,7 @@ * The class keeps ownership of the Coordinates. * */ -class CoordinateList { +class GEOS_DLL CoordinateList { public: @@ -58,6 +59,12 @@ { } + CoordinateList() + : + coords() + { + } + size_type size() const { return coords.size(); diff -Nru geos-3.1.0/source/headers/geos/geom/CoordinateSequenceFactory.h geos-3.2.2/source/headers/geos/geom/CoordinateSequenceFactory.h --- geos-3.1.0/source/headers/geos/geom/CoordinateSequenceFactory.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/CoordinateSequenceFactory.h 2009-11-26 21:21:56.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateSequenceFactory.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CoordinateSequenceFactory.h 2745 2009-11-26 21:21:56Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,12 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/CoordinateSequenceFactory.java rev 1.14 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_COORDINATESEQUENCEFACTORY_H #define GEOS_GEOM_COORDINATESEQUENCEFACTORY_H +#include #include //#include @@ -35,26 +40,34 @@ /** * \brief - * An object that knows how to build a particular implementation of - * CoordinateSequence from an array of Coordinates. + * A factory to create concrete instances of {@link CoordinateSequence}s. + * + * Used to configure {@link GeometryFactory}s + * to provide specific kinds of CoordinateSequences. */ -class CoordinateSequenceFactory { +class GEOS_DLL CoordinateSequenceFactory { public: /** \brief * Returns a CoordinateSequence based on the given array. - * Whether or not the vector is copied is implementation-dependent, - * for this reason caller does give up ownership of it. + * + * Whether the array is copied or simply referenced + * is implementation-dependent. + * For this reason caller does give up ownership of it. * Implementations that will not copy it will need take care * of deleting it. - * Note that a NULL value is allowed as coordinates, and will - * create an empty CoordinateSequence. + * + * This method must handle null arguments by creating + * an empty sequence. + * + * @param coordinates the coordinates */ virtual CoordinateSequence *create( std::vector *coordinates) const=0; /** \brief * Creates a CoordinateSequence of the specified size and dimension. + * * For this to be useful, the CoordinateSequence implementation must * be mutable. * @@ -65,7 +78,7 @@ virtual CoordinateSequence *create(size_t size, size_t dimension) const=0; - virtual ~CoordinateSequenceFactory() {} + virtual ~CoordinateSequenceFactory(); }; } // namespace geos::geom diff -Nru geos-3.1.0/source/headers/geos/geom/CoordinateSequenceFilter.h geos-3.2.2/source/headers/geos/geom/CoordinateSequenceFilter.h --- geos-3.1.0/source/headers/geos/geom/CoordinateSequenceFilter.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/geom/CoordinateSequenceFilter.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,114 @@ +/********************************************************************** + * $Id: CoordinateSequenceFilter.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: geom/CoordinateSequenceFilter.java rev. 1.3 (JTS-1.9) + * + **********************************************************************/ + +#ifndef GEOS_GEOM_COORDINATESEQUENCEFILTER_H +#define GEOS_GEOM_COORDINATESEQUENCEFILTER_H + +#include + +#include + +// Forward declarations +namespace geos { + namespace geom { + class CoordinateSequence; + } +} + +namespace geos { +namespace geom { // geos::geom + +/** + * Interface for classes which provide operations that + * can be applied to the coordinates in a {@link CoordinateSequence}. + * A CoordinateSequence filter can either record information about each + * coordinate or change the coordinate in some way. + * CoordinateSequence filters can be + * used to implement such things as coordinate transformations, centroid and + * envelope computation, and many other functions. + * For maximum efficiency, the execution of filters can be short-circuited. + * {@link Geometry} classes support the concept of applying a + * CoordinateSequenceFilter to each + * {@link CoordinateSequence}s they contain. + *

+ * CoordinateSequenceFilter is + * an example of the Gang-of-Four Visitor pattern. + * + * @see Geometry::apply_ro(CoordinateSequenceFilter) + * @see Geometry::apply_rw(CoordinateSequenceFilter) + * @author Martin Davis + * + */ +class CoordinateSequenceFilter { + +public: + + virtual ~CoordinateSequenceFilter() {} + + /** + * Performs an operation on a coordinate in a {@link CoordinateSequence}. + * + * @param seq the CoordinateSequence to which the filter + * is applied + * @param i the index of the coordinate to apply the filter to + */ + virtual void filter_rw(CoordinateSequence& /*seq*/, size_t /*i*/) + { assert(0); } + + /** + * Performs an operation on a coordinate in a {@link CoordinateSequence}. + * + * @param seq the CoordinateSequence to which the filter + * is applied + * @param i the index of the coordinate to apply the filter to + */ + virtual void filter_ro(const CoordinateSequence& /*seq*/, size_t /*i*/) + { assert(0); } + + /** + * Reports whether the application of this filter can be terminated. + * Once this method returns false, it should + * continue to return false on every subsequent call. + * + * @return true if the application of this filter can be terminated. + */ + virtual bool isDone() const = 0; + + + /** + * Reports whether the execution of this filter + * has modified the coordinates of the geometry. + * If so, {@link Geometry#geometryChanged} will be executed + * after this filter has finished being executed. + * + * Most filters can simply return a constant value reflecting + * whether they are able to change the coordinates. + * + * @return true if this filter has changed the coordinates of the geometry + */ + virtual bool isGeometryChanged() const = 0; + +}; + +} // namespace geos::geom +} // namespace geos + + +#endif // ndef GEOS_GEOM_COORDINATESEQUENCEFILTER_H + diff -Nru geos-3.1.0/source/headers/geos/geom/CoordinateSequence.h geos-3.2.2/source/headers/geos/geom/CoordinateSequence.h --- geos-3.1.0/source/headers/geos/geom/CoordinateSequence.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/CoordinateSequence.h 2009-10-17 13:28:41.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateSequence.h 1958 2007-01-09 15:08:22Z strk $ + * $Id: CoordinateSequence.h 2678 2009-10-17 12:28:41Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_COORDINATESEQUENCE_H #define GEOS_GEOM_COORDINATESEQUENCE_H +#include #include #include @@ -57,7 +58,7 @@ * will use your CoordinateSequence implementation. * */ -class CoordinateSequence { +class GEOS_DLL CoordinateSequence { protected: @@ -141,9 +142,17 @@ * We opted for the second, so the returned object is a const, to * also ensure that returning an internal pointer doesn't make * the object mutable. + * + * @deprecated use toVector(std::vector&) instead */ virtual const std::vector* toVector() const=0; + /// Pushes all Coordinates of this sequence onto the provided vector. + // + /// This method is a port of the toCoordinateArray() method of JTS. + /// + virtual void toVector(std::vector& coords) const=0; + /** * \brief Add an array of coordinates * @param vc The coordinates @@ -180,6 +189,19 @@ */ virtual void add(const Coordinate& c, bool allowRepeated); + /** \brief + * Inserts the specified coordinate at the specified position in + * this list. + * + * @param i the position at which to insert + * @param coord the coordinate to insert + * @param allowRepeated if set to false, repeated coordinates are + * collapsed + * + * NOTE: this is a CoordinateList interface in JTS + */ + virtual void add(size_t i, const Coordinate& coord, bool allowRepeated)=0; + /// Returns true it list contains no coordinates. virtual bool isEmpty() const=0; @@ -217,6 +239,8 @@ /// /// Equality test is 2D based /// + /// Ownership of returned object goes to the caller. + /// static CoordinateSequence* removeRepeatedPoints( const CoordinateSequence *cl); @@ -265,6 +289,25 @@ /// Scroll given CoordinateSequence so to start with given Coordinate. static void scroll(CoordinateSequence *cl, const Coordinate *firstCoordinate); + /** \brief + * Determines which orientation of the {@link Coordinate} array + * is (overall) increasing. + * + * In other words, determines which end of the array is "smaller" + * (using the standard ordering on {@link Coordinate}). + * Returns an integer indicating the increasing direction. + * If the sequence is a palindrome, it is defined to be + * oriented in a positive direction. + * + * @param pts the array of Coordinates to test + * @return 1 if the array is smaller at the start + * or is a palindrome, + * -1 if smaller at the end + * + * NOTE: this method is found in CoordinateArrays class for JTS + */ + static int increasingDirection(const CoordinateSequence& pts); + /// Reverse Coordinate order in given CoordinateSequence static void reverse(CoordinateSequence *cl); diff -Nru geos-3.1.0/source/headers/geos/geom/Dimension.h geos-3.2.2/source/headers/geos/geom/Dimension.h --- geos-3.1.0/source/headers/geos/geom/Dimension.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Dimension.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Dimension.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Dimension.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_DIMENSION_H #define GEOS_GEOM_DIMENSION_H +#include #include namespace geos { @@ -26,7 +27,7 @@ /// Also, constants representing the dimensions of the empty geometry and /// non-empty geometries, and a wildcard dimension meaning "any dimension". /// -class Dimension { +class GEOS_DLL Dimension { public: enum DimensionType { /// Dimension value for any dimension (= {FALSE, TRUE}). diff -Nru geos-3.1.0/source/headers/geos/geom/Envelope.h geos-3.2.2/source/headers/geos/geom/Envelope.h --- geos-3.1.0/source/headers/geos/geom/Envelope.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Envelope.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Envelope.h 2240 2009-01-18 20:34:09Z pramsey $ + * $Id: Envelope.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,14 +13,17 @@ * ********************************************************************** * - * Last port: geom/Envelope.java rev. 1.41 (JTS-1.7) + * Last port: geom/Envelope.java rev 1.46 (JTS-1.10) * **********************************************************************/ #ifndef GEOS_GEOM_ENVELOPE_H #define GEOS_GEOM_ENVELOPE_H + +#include #include +#include #include #include @@ -48,7 +51,7 @@ * the supplies extent values are automatically sorted into the correct order. * */ -class Envelope { +class GEOS_DLL Envelope { public: @@ -193,6 +196,17 @@ double getHeight(void) const; /** + * Gets the area of this envelope. + * + * @return the area of the envelope + * @return 0.0 if the envelope is null + */ + double getArea() const + { + return getWidth() * getHeight(); + } + + /** * Returns the Envelope maximum y-value. min y > max y * indicates that this is a null Envelope. */ @@ -295,6 +309,27 @@ void expandToInclude(const Envelope* other); /** \brief + * Tests if the Envelope other lies wholely + * inside this Envelope (inclusive of the boundary). + * + * Note that this is not the same definition as the SFS + * contains, which would exclude the envelope boundary. + * + * @param other the Envelope to check + * @return true if other is contained in this + * Envelope + * + * @see covers(Envelope) + */ + bool contains(const Envelope& other) const { + return covers(other); + } + + bool contains(const Envelope* other) const { + return contains(*other); + } + + /** \brief * Returns true if the given point lies in * or on the envelope. * @@ -303,7 +338,9 @@ * @return true if the point lies in the interior or * on the boundary of this Envelope. */ - bool contains(const Coordinate& p) const; + bool contains(const Coordinate& p) const { + return covers(p.x, p.y); + } /** \brief * Returns true if the given point lies in @@ -320,23 +357,9 @@ * the interior or on the boundary of this * Envelope. */ - bool contains(double x, double y) const; - - /** \brief - * Returns true if the Envelope other - * lies wholely inside this Envelope (inclusive of - * the boundary). - * - * @param other the Envelope which this - * Envelope is being checked - * for containing - * - * @return true if other - * is contained in this Envelope - */ - bool contains(const Envelope* other) const; - - bool contains(const Envelope& other) const { return contains(&other); } + bool contains(double x, double y) const { + return covers(x, y); + } /** * Check if the point p @@ -393,14 +416,18 @@ bool covers(const Coordinate *p) const; /** - * Tests if the Envelope other - * lies wholely inside this Envelope (inclusive of the boundary). - * - *@param other the Envelope to check - *@return true if this Envelope covers the other - */ - bool covers(const Envelope *other) const; - bool covers(const Envelope &other) const; + * Tests if the Envelope other lies wholely inside + * this Envelope (inclusive of the boundary). + * + * @param other the Envelope to check + * @return true if this Envelope covers the + * other + */ + bool covers(const Envelope& other) const; + + bool covers(const Envelope* other) const { + return covers(*other); + } /** \brief diff -Nru geos-3.1.0/source/headers/geos/geom/Envelope.inl geos-3.2.2/source/headers/geos/geom/Envelope.inl --- geos-3.1.0/source/headers/geos/geom/Envelope.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Envelope.inl 2009-05-05 15:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Envelope.inl 2054 2007-12-21 20:03:37Z benjubb $ + * $Id: Envelope.inl 2470 2009-05-05 14:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/Envelope.java rev 1.46 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_ENVELOPE_INL @@ -83,43 +87,11 @@ /*public*/ INLINE bool -Envelope::covers(double x, double y) const -{ - if (isNull()) return false; - return x >= minx && - x <= maxx && - y >= miny && - y <= maxy; -} - -/*public*/ -INLINE bool -Envelope::covers( const Coordinate *p) const +Envelope::covers(const Coordinate *p) const { return covers(p->x, p->y); } -/*public*/ -INLINE bool -Envelope::covers( const Envelope *other) const -{ - if (isNull() || other->isNull()) return false; - - return - other->getMinX() >= minx && - other->getMaxX() <= maxx && - other->getMinY() >= miny && - other->getMaxY() <= maxy; -} - -/*public*/ -INLINE bool -Envelope::covers( const Envelope &other) const -{ - return covers( &other); -} - - } // namespace geos::geom } // namespace geos diff -Nru geos-3.1.0/source/headers/geos/geom/GeometryCollection.h geos-3.2.2/source/headers/geos/geom/GeometryCollection.h --- geos-3.1.0/source/headers/geos/geom/GeometryCollection.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/GeometryCollection.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryCollection.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryCollection.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/GeometryCollection.java rev. 1.41 + * **********************************************************************/ #ifndef GEOS_GEOS_GEOMETRYCOLLECTION_H #define GEOS_GEOS_GEOMETRYCOLLECTION_H +#include #include // for inheritance //#include #include // for proper use of auto_ptr<> @@ -33,6 +38,7 @@ namespace geom { // geos::geom class Coordinate; class CoordinateArraySequence; + class CoordinateSequenceFilter; } } @@ -48,7 +54,7 @@ * represented by GeometryCollection subclasses MultiPoint, * MultiLineString, MultiPolygon. */ -class GeometryCollection : public Geometry { +class GEOS_DLL GeometryCollection : public Geometry { public: friend class GeometryFactory; @@ -61,6 +67,12 @@ const_iterator end() const; + /** + * Creates and returns a full copy of this GeometryCollection object. + * (including all coordinates contained by it). + * + * @return a clone of this instance + */ virtual Geometry *clone() const { return new GeometryCollection(*this); } @@ -108,8 +120,6 @@ virtual GeometryTypeId getGeometryTypeId() const; - virtual bool isSimple() const; - virtual bool equalsExact(const Geometry *other, double tolerance=0) const; @@ -125,6 +135,10 @@ virtual void apply_rw(GeometryComponentFilter *filter); + virtual void apply_rw(CoordinateSequenceFilter& filter); + + virtual void apply_ro(CoordinateSequenceFilter& filter) const; + virtual void normalize(); virtual const Coordinate* getCoordinate() const; diff -Nru geos-3.1.0/source/headers/geos/geom/GeometryCollection.inl geos-3.2.2/source/headers/geos/geom/GeometryCollection.inl --- geos-3.1.0/source/headers/geos/geom/GeometryCollection.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/GeometryCollection.inl 2009-04-30 12:15:12.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryCollection.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryCollection.inl 2435 2009-04-30 11:15:12Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/GeometryCollection.java rev. 1.41 + * **********************************************************************/ #ifndef GEOS_GEOMETRYCOLLECTION_INL diff -Nru geos-3.1.0/source/headers/geos/geom/GeometryComponentFilter.h geos-3.2.2/source/headers/geos/geom/GeometryComponentFilter.h --- geos-3.1.0/source/headers/geos/geom/GeometryComponentFilter.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/GeometryComponentFilter.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryComponentFilter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryComponentFilter.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_GEOMETRYCOMPONENTFILTER_H #define GEOS_GEOM_GEOMETRYCOMPONENTFILTER_H +#include #include namespace geos { @@ -40,7 +41,7 @@ * is an example of the Gang-of-Four Visitor pattern. * */ -class GeometryComponentFilter { +class GEOS_DLL GeometryComponentFilter { public: /** diff -Nru geos-3.1.0/source/headers/geos/geom/GeometryFactory.h geos-3.2.2/source/headers/geos/geom/GeometryFactory.h --- geos-3.1.0/source/headers/geos/geom/GeometryFactory.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/GeometryFactory.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryFactory.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryFactory.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -22,6 +22,7 @@ //#include //#include +#include #include #include @@ -59,7 +60,7 @@ * In particular, they are not rounded to the supplied PrecisionModel. * It is assumed that input Coordinates meet the given precision. */ -class GeometryFactory { +class GEOS_DLL GeometryFactory { public: /** * \brief diff -Nru geos-3.1.0/source/headers/geos/geom/GeometryFilter.h geos-3.2.2/source/headers/geos/geom/GeometryFilter.h --- geos-3.1.0/source/headers/geos/geom/GeometryFilter.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/GeometryFilter.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryFilter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryFilter.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -18,7 +18,7 @@ #define GEOS_GEOM_GEOMETRYFILTER_H //#include - +#include #include #include @@ -46,7 +46,7 @@ * Geometry filters implement the interface GeometryFilter. * (GeometryFilter is an example of the Gang-of-Four Visitor pattern). */ -class GeometryFilter { +class GEOS_DLL GeometryFilter { public: /* * Performs an operation with or on geom. diff -Nru geos-3.1.0/source/headers/geos/geom/Geometry.h geos-3.2.2/source/headers/geos/geom/Geometry.h --- geos-3.1.0/source/headers/geos/geom/Geometry.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Geometry.h 2009-12-01 15:39:41.000000000 +0000 @@ -1,11 +1,12 @@ /********************************************************************** - * $Id: Geometry.h 2055 2007-12-21 20:30:13Z benjubb $ + * $Id: Geometry.h 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * - * Copyright (C) 2001-2002 Vivid Solutions Inc. + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005 2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published @@ -14,17 +15,19 @@ * ********************************************************************** * - * Last port: geom/Geometry.java rev. 1.100 + * Last port: geom/Geometry.java rev. 1.112 * **********************************************************************/ #ifndef GEOS_GEOM_GEOMETRY_H #define GEOS_GEOM_GEOMETRY_H +#include #include #include #include #include // for Dimension::DimensionType +#include // for inheritance #include #include @@ -37,7 +40,7 @@ class Coordinate; class CoordinateFilter; class CoordinateSequence; - class Envelope; + class CoordinateSequenceFilter; class GeometryComponentFilter; class GeometryFactory; class GeometryFilter; @@ -156,7 +159,7 @@ * remain distinct. This behaviour is desired in many cases. * */ -class Geometry { +class GEOS_DLL Geometry { public: @@ -258,7 +261,7 @@ virtual size_t getNumPoints() const=0; //Abstract /// Returns false if the Geometry not simple. - virtual bool isSimple() const=0; //Abstract + virtual bool isSimple() const; /// Return a string representation of this Geometry type virtual std::string getGeometryType() const=0; //Abstract @@ -296,9 +299,19 @@ /** * \brief - * Returns the boundary as a newly allocated Geometry object. + * Returns the boundary, or an empty geometry of appropriate + * dimension if this Geometry is empty. * - * Returned geometry is empty if this Geometry is empty. + * (In the case of zero-dimensional geometries, + * an empty GeometryCollection is returned.) + * For a discussion of this function, see the OpenGIS Simple + * Features Specification. As stated in SFS Section 2.1.13.1, + * "the boundary of a Geometry is a set of Geometries of the + * next lower dimension." + * + * @return the closure of the combinatorial boundary + * of this Geometry. + * Ownershipof the returned object transferred to caller. */ virtual Geometry* getBoundary() const=0; //Abstract @@ -315,9 +328,20 @@ virtual const Envelope* getEnvelopeInternal() const; /** - * \brief - * Returns true if the DE-9IM intersection matrix for the - * two Geometrys is FF*FF****. + * Tests whether this geometry is disjoint from the specified geometry. + * + * The disjoint predicate has the following equivalent + * definitions: + * - The two geometries have no point in common + * - The DE-9IM Intersection Matrix for the two geometries matches + * [FF*FF****] + * - ! g.intersects(this) + * (disjoint is the inverse of intersects) + * + * @param g the Geometry with which to compare this Geometry + * @return true if the two Geometrys are disjoint + * + * @see Geometry::intersects */ virtual bool disjoint(const Geometry *other) const; @@ -331,10 +355,26 @@ virtual bool intersects(const Geometry *g) const; /** - * \brief - * Returns true if the DE-9IM intersection matrix for the two - * Geometrys is T*T****** (for a point and a curve, a point and - * an area or a line and an area) 0******** (for two curves). + * Tests whether this geometry crosses the specified geometry. + * + * The crosses predicate has the following equivalent + * definitions: + * - The geometries have some but not all interior points in common. + * - The DE-9IM Intersection Matrix for the two geometries matches + * - [T*T******] (for P/L, P/A, and L/A situations) + * - [T*****T**] (for L/P, A/P, and A/L situations) + * - [0********] (for L/L situations) + * For any other combination of dimensions this predicate returns + * false. + * + * The SFS defined this predicate only for P/L, P/A, L/L, and L/A + * situations. + * JTS extends the definition to apply to L/P, A/P and A/L situations + * as well, in order to make the relation symmetric. + * + * @param g the Geometry with which to compare this + * Geometry + *@return true if the two Geometrys cross. */ virtual bool crosses(const Geometry *g) const; @@ -403,14 +443,15 @@ * or ***T**FF* * or ****T*FF* * - g.coveredBy(this) - * (covers is the inverse of coverdBy) + * (covers is the inverse of coveredBy) * - * Note the difference between covers and - * contains - * - covers is a more inclusive relation. - * In particular, unlike contains it does not - * distinguish between points in the boundary and in the interior - * of geometries. + * If either geometry is empty, the value of this predicate + * is false. + * + * This predicate is similar to {@link #contains}, + * but is more inclusive (i.e. returns true for more cases). + * In particular, unlike contains it does not distinguish + * between points in the boundary and in the interior of geometries. * For most situations, covers should be used in * preference to contains. * As an added benefit, covers is more amenable to @@ -421,7 +462,7 @@ * Geometry * * @return true if this Geometry - * covers g + * covers g * * @see Geometry::contains * @see Geometry::coveredBy @@ -429,30 +470,34 @@ bool covers(const Geometry* g) const; /** \brief - * Returns true if this geometry is covered by the + * Tests whether this geometry is covered by the * specified geometry. - * - * - Every point of this geometry is a point of the other geometry. - * - The DE-9IM Intersection Matrix for the two geometries is - * T*F**F*** - * or *TF**F*** - * or **FT*F*** - * or **F*TF*** - * - g.covers(this) - * (coveredBy is the inverse of covers) - * - * Note the difference between coveredBy and - * within - * - coveredBy is a more inclusive relation. * - * @param g - * the Geometry with which to compare this - * Geometry - * @return true if this Geometry is - * covered by g + * The coveredBy predicate has the following + * equivalent definitions: + * + * - Every point of this geometry is a point of the other geometry. + * - The DE-9IM Intersection Matrix for the two geometries matches + * [T*F**F***] + * or [*TF**F***] + * or [**FT*F***] + * or [**F*TF***] + * - g.covers(this) + * (coveredBy is the converse of covers) + * + * If either geometry is empty, the value of this predicate + * is false. + * + * This predicate is similar to {@link #within}, + * but is more inclusive (i.e. returns true for more cases). + * + * @param g the Geometry with which to compare + * this Geometry + * @return true if this Geometry + * is covered by g * - * @see Geometry::within - * @see Geometry::covers + * @see Geometry#within + * @see Geometry#covers */ bool coveredBy(const Geometry* g) const { return g->covers(this); @@ -528,7 +573,8 @@ * this Geometry and other. * * @throws util::TopologyException if a robustness error occurs - * @throws util::IllegalArgumentException if either arg is a collection + * @throws util::IllegalArgumentException if either input is a + * non-empty GeometryCollection * */ virtual Geometry* intersection(const Geometry *other) const; @@ -538,7 +584,8 @@ * and other. * * @throws util::TopologyException if a robustness error occurs - * @throws util::IllegalArgumentException if either arg is a collection + * @throws util::IllegalArgumentException if either input is a + * non-empty GeometryCollection * */ virtual Geometry* Union(const Geometry *other) const; @@ -550,7 +597,8 @@ * Geometry that do not make up other. * * @throws util::TopologyException if a robustness error occurs - * @throws util::IllegalArgumentException if either arg is a collection + * @throws util::IllegalArgumentException if either input is a + * non-empty GeometryCollection * */ virtual Geometry* difference(const Geometry *other) const; @@ -560,7 +608,8 @@ * and the points in other not in this Geometry. * * @throws util::TopologyException if a robustness error occurs - * @throws util::IllegalArgumentException if either arg is a collection + * @throws util::IllegalArgumentException if either input is a + * non-empty GeometryCollection * */ virtual Geometry* symDifference(const Geometry *other) const; @@ -579,6 +628,24 @@ virtual void apply_rw(GeometryComponentFilter *filter); virtual void apply_ro(GeometryComponentFilter *filter) const; + /** + * Performs an operation on the coordinates in this Geometry's + * CoordinateSequences.s + * If the filter reports that a coordinate value has been changed, + * {@link #geometryChanged} will be called automatically. + * + * @param filter the filter to apply + */ + virtual void apply_rw(CoordinateSequenceFilter& filter)=0; + + /** + * Performs a read-only operation on the coordinates in this + * Geometry's CoordinateSequences. + * + * @param filter the filter to apply + */ + virtual void apply_ro(CoordinateSequenceFilter& filter) const=0; + /** \brief * Apply a fiter to each component of this geometry. * The filter is expected to provide a .filter(const Geometry*) @@ -622,7 +689,7 @@ * Computes the centroid of this Geometry. * * The centroid is equal to the centroid of the set of component - * Geometrys of highest dimension (since the lower-dimension geometries + * Geometries of highest dimension (since the lower-dimension geometries * contribute zero "weight" to the centroid) * * @return a {@link Point} which is the centroid of this Geometry @@ -662,6 +729,8 @@ void geometryChangedAction(); protected: + + /// The bounding box of this Geometry mutable std::auto_ptr envelope; /// Returns true if the array contains any non-empty Geometrys. @@ -716,17 +785,40 @@ /** \brief * Construct a geometry with the given GeometryFactory. + * * Will keep a reference to the factory, so don't * delete it until al Geometry objects referring to * it are deleted. + * + * @param factory */ Geometry(const GeometryFactory *factory); private: + + + int getClassSortIndex() const; - static GeometryComponentFilter geometryChangedFilter; + + class GeometryChangedFilter : public GeometryComponentFilter + { + public: + void filter_rw(Geometry* geom) + { + geom->geometryChangedAction(); + } + }; + + static GeometryChangedFilter geometryChangedFilter; + + /// The GeometryFactory used to create this Geometry + // + /// Externally owned + /// const GeometryFactory *factory; + static const GeometryFactory* INTERNAL_GEOMETRY_FACTORY; + void* userData; }; @@ -736,7 +828,7 @@ /// std::ostream& operator<< (std::ostream& os, const Geometry& geom); -struct GeometryGreaterThen { +struct GEOS_DLL GeometryGreaterThen { bool operator()(const Geometry *first, const Geometry *second); }; diff -Nru geos-3.1.0/source/headers/geos/geom/Geometry.inl geos-3.2.2/source/headers/geos/geom/Geometry.inl --- geos-3.1.0/source/headers/geos/geom/Geometry.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Geometry.inl 2009-05-05 00:23:10.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: Geometry.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Geometry.inl 2465 2009-05-04 23:23:10Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2006 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under @@ -11,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/Geometry.java rev. 1.112 + * **********************************************************************/ #ifndef GEOS_GEOM_GEOMETRY_INL diff -Nru geos-3.1.0/source/headers/geos/geom/GeometryList.h geos-3.2.2/source/headers/geos/geom/GeometryList.h --- geos-3.1.0/source/headers/geos/geom/GeometryList.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/GeometryList.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryList.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryList.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,6 +20,7 @@ #ifndef GEOS_GEOM_GEOMETRYLIST_H #define GEOS_GEOM_GEOMETRYLIST_H +#include #include // for auto_ptr #include // for auto_ptr @@ -32,7 +33,7 @@ /** \brief * Manager of Geometry pointers. Owns the Geometries. */ -class GeometryList { +class GEOS_DLL GeometryList { public: diff -Nru geos-3.1.0/source/headers/geos/geom/IntersectionMatrix.h geos-3.2.2/source/headers/geos/geom/IntersectionMatrix.h --- geos-3.1.0/source/headers/geos/geom/IntersectionMatrix.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/IntersectionMatrix.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IntersectionMatrix.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IntersectionMatrix.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,6 +20,7 @@ #ifndef GEOS_GEOM_INTERSECTIONMATRIX_H #define GEOS_GEOM_INTERSECTIONMATRIX_H +#include #include #include @@ -48,7 +49,7 @@ * * \todo Suggestion: add equal and not-equal operator to this class. */ -class IntersectionMatrix { +class GEOS_DLL IntersectionMatrix { public: diff -Nru geos-3.1.0/source/headers/geos/geom/LinearRing.h geos-3.2.2/source/headers/geos/geom/LinearRing.h --- geos-3.1.0/source/headers/geos/geom/LinearRing.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/LinearRing.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LinearRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LinearRing.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/LinearRing.java rev. 1.32 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOS_LINEARRING_H #define GEOS_GEOS_LINEARRING_H +#include #include #include #include @@ -36,15 +41,21 @@ namespace geom { // geos::geom /** + * \brief + * Models an OGC SFS LinearRing. * - * \brief Basic implementation of LinearRing. - * - * The first and last point in the coordinate sequence must be equal. + * A LinearRing is a LineString which is both closed and simple. + * In other words, + * the first and last coordinate in the ring must be equal, + * and the interior of the ring must not self-intersect. * Either orientation of the ring is allowed. - * A valid ring must not self-intersect. - * + * + * A ring must have either 0 or 4 or more points. + * The first and last points must be equal (in 2D). + * If these conditions are not met, the constructors throw + * an {@link IllegalArgumentException} */ -class LinearRing : public LineString { +class GEOS_DLL LinearRing : public LineString { public: @@ -70,13 +81,37 @@ const GeometryFactory *newFactory); virtual Geometry *clone() const { return new LinearRing(*this); } + virtual ~LinearRing(); + + /** \brief + * Returns Dimension.FALSE, since by definition + * LinearRings do not have a boundary. + * + * @return Dimension::False + */ + int getBoundaryDimension() const; + + /** \brief + * Returns true, since by definition LinearRings + * are always simple. + * + * @return true + * + * @see Geometry::isSimple + */ bool isSimple() const; + std::string getGeometryType() const; + virtual GeometryTypeId getGeometryTypeId() const; - bool isClosed() const; + void setPoints(CoordinateSequence* cl); + + Geometry* reverse() const; + private: + void validateConstruction(); }; diff -Nru geos-3.1.0/source/headers/geos/geom/LineSegment.h geos-3.2.2/source/headers/geos/geom/LineSegment.h --- geos-3.1.0/source/headers/geos/geom/LineSegment.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/LineSegment.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: LineSegment.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineSegment.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2006 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under @@ -11,21 +12,29 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/LineSegment.java rev. 1.30 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_GEOM_LINESEGMENT_H #define GEOS_GEOM_LINESEGMENT_H +#include #include // for composition #include #include // for ostream +#include // for auto_ptr // Forward declarations namespace geos { namespace geom { class CoordinateSequence; + class GeometryFactory; + class LineString; } } @@ -45,7 +54,7 @@ * * TODO: have this class keep pointers rather then real Coordinates ? */ -class LineSegment { +class GEOS_DLL LineSegment { public: friend std::ostream& operator<< (std::ostream& o, const LineSegment& l); @@ -61,6 +70,8 @@ /// Constructs a LineSegment with the given start and end Coordinates. LineSegment(const Coordinate& c0, const Coordinate& c1); + LineSegment(double x0, double y0, double x1, double y1); + virtual ~LineSegment(); void setCoordinates(const Coordinate& c0, const Coordinate& c1); @@ -111,8 +122,27 @@ */ int orientationIndex(const LineSegment& seg) const; + // TODO: deprecate this int orientationIndex(const LineSegment* seg) const; + /** \brief + * Determines the orientation index of a Coordinate + * relative to this segment. + * + * The orientation index is as defined in + * CGAlgorithms::computeOrientation. + * + * @param seg the LineSegment to compare + * + * @return 1 if p is to the left of this segment + * @return -1 if p is to the right of this segment + * @return 0 if p is collinear with this segment + * + * @see CGAlgorithms::computeOrientation(Coordinate, Coordinate, + * Coordinate) + */ + int orientationIndex(const Coordinate& p) const; + /// Reverses the direction of the line segment. void reverse(); @@ -126,6 +156,12 @@ /// @return the angle this segment makes with the x-axis (in radians) double angle() const; + /// Computes the midpoint of the segment + // + /// @param ret will be set to the midpoint of the segment + /// + void midPoint(Coordinate& ret) const; + /// Computes the distance between this line segment and another one. double distance(const LineSegment& ls) const; @@ -138,15 +174,85 @@ */ double distancePerpendicular(const Coordinate& p) const; - /** + /** \brief + * Computes the Coordinate that lies a given + * fraction along the line defined by this segment. + * + * A fraction of 0.0 returns the start point of + * the segment; a fraction of 1.0 returns the end + * point of the segment. + * If the fraction is < 0.0 or > 1.0 the point returned + * will lie before the start or beyond the end of the segment. + * + * @param segmentLengthFraction the fraction of the segment length + * along the line + * @param ret will be set to the point at that distance + */ + void pointAlong(double segmentLengthFraction, Coordinate& ret) const; + + /** \brief + * Computes the {@link Coordinate} that lies a given + * fraction along the line defined by this segment and offset from + * the segment by a given distance. + * + * A fraction of 0.0 offsets + * from the start point of the segment; + * a fraction of 1.0 offsets + * from the end point of the segment. + * + * The computed point is offset to the left of the line + * if the offset distance is positive, to the right if negative. + * + * @param segmentLengthFraction the fraction of the segment + * length along the line + * + * @param offsetDistance the distance the point is offset + * from the segment + * (positive is to the left, negative is to the right) + * + * @param ret will be set to the point at that distance and offset + */ + void pointAlongOffset(double segmentLengthFraction, + double offsetDistance, + Coordinate& ret) const; + + /** \brief * Compute the projection factor for the projection of the point p - * onto this LineSegment. The projection factor is the constant k + * onto this LineSegment. + * + * The projection factor is the constant r * by which the vector for this segment must be multiplied to - * equal the vector for the projection of p. + * equal the vector for the projection of p on the line + * defined by this segment. + * + * The projection factor returned will be in the range + * (-inf, +inf) + * + * @param p the point to compute the factor for + * + * @return the projection factor for the point + * */ double projectionFactor(const Coordinate& p) const; /** \brief + * Computes the fraction of distance (in [0.0, 1.0]) + * that the projection of a point occurs along this line segment. + * + * If the point is beyond either ends of the line segment, + * the closest fractional value (0.0 or 1.0) + * is returned. + * + * Essentially, this is the {@link #projectionFactor} clamped to + * the range [0.0, 1.0]. + * + * @param inputPt the point + * @return the fraction along the line segment the projection + * of the point occurs + */ + double segmentFraction(const Coordinate& inputPt) const; + + /** \brief * Compute the projection of a point onto the line determined * by this line segment. * @@ -231,6 +337,33 @@ */ bool intersection(const LineSegment& line, Coordinate& coord) const; + /** \brief + * Computes the intersection point of the lines defined + * by two segments, if there is one. + * + * There may be 0, 1 or an infinite number of intersection points + * between two lines. + * If there is a unique intersection point, it is returned. + * Otherwise, null is returned. + * If more information is required about the details of the + * intersection, the algorithms::LineIntersector class should + * be used. + * + * @param line a line segment defining a straight line + * @param ret will be set to the intersection point (if any) + * @return true if an intersection was found, false otherwise + * + */ + bool lineIntersection(const LineSegment& line, Coordinate& coord) const; + + /** + * Creates a LineString with the same coordinates as this segment + * + * @param gf the geometery factory to use + * @return a LineString with the same geometry as this segment + */ + std::auto_ptr toGeometry(const GeometryFactory& gf) const; + }; std::ostream& operator<< (std::ostream& o, const LineSegment& l); diff -Nru geos-3.1.0/source/headers/geos/geom/LineSegment.inl geos-3.2.2/source/headers/geos/geom/LineSegment.inl --- geos-3.1.0/source/headers/geos/geom/LineSegment.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/LineSegment.inl 2009-04-10 13:08:18.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: LineSegment.inl 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: LineSegment.inl 2345 2009-04-10 12:08:18Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2006 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under @@ -11,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/LineSegment.java rev. 1.30 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_LINESEGMENT_INL @@ -42,6 +47,14 @@ } INLINE +LineSegment::LineSegment(double x0, double y0, double x1, double y1) + : + p0(x0, y0), + p1(x1, y1) +{ +} + +INLINE LineSegment::LineSegment() { } @@ -57,6 +70,14 @@ return algorithm::CGAlgorithms::distancePointLinePerpendicular(p, p0, p1); } +INLINE void +LineSegment::pointAlong(double segmentLengthFraction, Coordinate& ret) const +{ + ret = Coordinate( + p0.x + segmentLengthFraction * (p1.x - p0.x), + p0.y + segmentLengthFraction * (p1.y - p0.y)); +} + INLINE double LineSegment::distance(const LineSegment& ls) const { @@ -130,6 +151,12 @@ return orientationIndex(*seg); } +INLINE int +LineSegment::orientationIndex(const Coordinate& p) const +{ + return algorithm::CGAlgorithms::orientationIndex(p0, p1, p); +} + INLINE CoordinateSequence* LineSegment::closestPoints(const LineSegment* line) { @@ -143,6 +170,13 @@ return std::atan2(p1.y-p0.y,p1.x-p0.x); } +INLINE void +LineSegment::midPoint(Coordinate& ret) const +{ + ret = Coordinate( (p0.x + p1.x) / 2, + (p0.y + p1.y) / 2 ); +} + INLINE std::ostream& operator<< (std::ostream& o, const LineSegment& l) { diff -Nru geos-3.1.0/source/headers/geos/geom/LineString.h geos-3.2.2/source/headers/geos/geom/LineString.h --- geos-3.1.0/source/headers/geos/geom/LineString.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/LineString.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineString.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineString.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/LineString.java rev. 1.46 + * **********************************************************************/ #ifndef GEOS_GEOS_LINESTRING_H #define GEOS_GEOS_LINESTRING_H +#include #include // do we need this ? #include // for inheritance #include // for proper use of auto_ptr<> @@ -33,6 +38,7 @@ namespace geom { class Coordinate; class CoordinateArraySequence; + class CoordinateSequenceFilter; } } @@ -43,7 +49,7 @@ * \class LineString geom.h geos.h * \brief Basic implementation of LineString. */ -class LineString: public Geometry { +class GEOS_DLL LineString: public Geometry { public: @@ -54,6 +60,12 @@ virtual ~LineString(); + /** + * Creates and returns a full copy of this {@link LineString} object. + * (including all coordinates contained by it). + * + * @return a clone of this instance + */ virtual Geometry *clone() const; virtual CoordinateSequence* getCoordinates() const; @@ -106,8 +118,6 @@ virtual GeometryTypeId getGeometryTypeId() const; - virtual bool isSimple() const; - virtual bool isCoordinate(Coordinate& pt) const; virtual bool equalsExact(const Geometry *other, double tolerance=0) @@ -125,6 +135,10 @@ virtual void apply_ro(GeometryComponentFilter *filter) const; + void apply_rw(CoordinateSequenceFilter& filter); + + void apply_ro(CoordinateSequenceFilter& filter) const; + /** \brief * Normalizes a LineString. * @@ -147,7 +161,7 @@ * * @return a LineString with coordinates in the reverse order */ - LineString* reverse() const; + Geometry* reverse() const; protected: @@ -172,7 +186,7 @@ }; -struct LineStringLT { +struct GEOS_DLL LineStringLT { bool operator()(const LineString *ls1, const LineString *ls2) const { return ls1->compareTo(ls2)<0; } diff -Nru geos-3.1.0/source/headers/geos/geom/Location.h geos-3.2.2/source/headers/geos/geom/Location.h --- geos-3.1.0/source/headers/geos/geom/Location.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Location.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Location.h 1835 2006-09-07 10:30:02Z strk $ + * $Id: Location.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_LOCATION_H #define GEOS_GEOM_LOCATION_H +#include #include // for ostream #include @@ -32,7 +33,7 @@ * HREF="http://www.opengis.org/techno/specs.htm">OpenGIS Simple Features * Specification for SQL . */ -class Location { +class GEOS_DLL Location { public: enum Value { diff -Nru geos-3.1.0/source/headers/geos/geom/Makefile.am geos-3.2.2/source/headers/geos/geom/Makefile.am --- geos-3.1.0/source/headers/geos/geom/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -4,41 +4,37 @@ #EXTRA_DIST = -# Notes: -# GeometryComponentFilter.h needed by Polygonizer.h -# LineSegment.h needed by buffer/OffsetCurveBuilder.h needed by BufferOp.h -# Location.h needed by PointLocator.h for inlines - geosdir = $(includedir)/geos/geom geos_HEADERS = \ BinaryOp.h \ - Coordinate.h \ - Coordinate.inl \ - CoordinateArraySequence.h \ CoordinateArraySequenceFactory.h \ CoordinateArraySequenceFactory.inl \ + CoordinateArraySequence.h \ CoordinateFilter.h \ + Coordinate.h \ + Coordinate.inl \ CoordinateList.h \ - CoordinateSequence.h \ CoordinateSequenceFactory.h \ + CoordinateSequenceFilter.h \ + CoordinateSequence.h \ Dimension.h \ Envelope.h \ Envelope.inl \ - Geometry.h \ - Geometry.inl \ - GeometryList.h \ GeometryCollection.h \ GeometryCollection.inl \ GeometryComponentFilter.h \ GeometryFactory.h \ GeometryFactory.inl \ GeometryFilter.h \ + Geometry.h \ + Geometry.inl \ + GeometryList.h \ IntersectionMatrix.h \ + LinearRing.h \ LineSegment.h \ LineSegment.inl \ LineString.h \ - LinearRing.h \ Location.h \ MultiLineString.h \ MultiLineString.inl \ @@ -48,7 +44,5 @@ Point.h \ Polygon.h \ PrecisionModel.h \ - PrecisionModel.inl - -noinst_HEADERS = \ - Triangle.h + PrecisionModel.inl \ + Triangle.h diff -Nru geos-3.1.0/source/headers/geos/geom/Makefile.in geos-3.2.2/source/headers/geos/geom/Makefile.in --- geos-3.1.0/source/headers/geos/geom/Makefile.in 2009-03-11 19:13:39.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/geom -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,76 +241,85 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ util \ prep #EXTRA_DIST = - -# Notes: -# GeometryComponentFilter.h needed by Polygonizer.h -# LineSegment.h needed by buffer/OffsetCurveBuilder.h needed by BufferOp.h -# Location.h needed by PointLocator.h for inlines geosdir = $(includedir)/geos/geom geos_HEADERS = \ BinaryOp.h \ - Coordinate.h \ - Coordinate.inl \ - CoordinateArraySequence.h \ CoordinateArraySequenceFactory.h \ CoordinateArraySequenceFactory.inl \ + CoordinateArraySequence.h \ CoordinateFilter.h \ + Coordinate.h \ + Coordinate.inl \ CoordinateList.h \ - CoordinateSequence.h \ CoordinateSequenceFactory.h \ + CoordinateSequenceFilter.h \ + CoordinateSequence.h \ Dimension.h \ Envelope.h \ Envelope.inl \ - Geometry.h \ - Geometry.inl \ - GeometryList.h \ GeometryCollection.h \ GeometryCollection.inl \ GeometryComponentFilter.h \ GeometryFactory.h \ GeometryFactory.inl \ GeometryFilter.h \ + Geometry.h \ + Geometry.inl \ + GeometryList.h \ IntersectionMatrix.h \ + LinearRing.h \ LineSegment.h \ LineSegment.inl \ LineString.h \ - LinearRing.h \ Location.h \ MultiLineString.h \ MultiLineString.inl \ @@ -274,10 +329,8 @@ Point.h \ Polygon.h \ PrecisionModel.h \ - PrecisionModel.inl - -noinst_HEADERS = \ - Triangle.h + PrecisionModel.inl \ + Triangle.h all: all-recursive @@ -286,14 +339,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geom/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/geom/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geom/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/geom/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -311,33 +364,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -363,15 +416,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -398,16 +450,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -415,14 +467,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -434,81 +486,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -519,7 +591,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -541,6 +613,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -551,8 +624,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -560,18 +632,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -590,23 +682,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/geom/MultiLineString.h geos-3.2.2/source/headers/geos/geom/MultiLineString.h --- geos-3.1.0/source/headers/geos/geom/MultiLineString.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/MultiLineString.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiLineString.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiLineString.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiLineString.java rev. 1.40 + * **********************************************************************/ #ifndef GEOS_GEOS_MULTILINESTRING_H #define GEOS_GEOS_MULTILINESTRING_H +#include #include // for inheritance //#include #include @@ -38,7 +43,7 @@ namespace geom { // geos::geom /// Basic implementation of MultiLineString objects. -class MultiLineString: public GeometryCollection { +class GEOS_DLL MultiLineString: public GeometryCollection { public: @@ -65,8 +70,6 @@ bool isClosed() const; - bool isSimple() const; - bool equalsExact(const Geometry *other, double tolerance=0) const; Geometry *clone() const; diff -Nru geos-3.1.0/source/headers/geos/geom/MultiLineString.inl geos-3.2.2/source/headers/geos/geom/MultiLineString.inl --- geos-3.1.0/source/headers/geos/geom/MultiLineString.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/MultiLineString.inl 2009-04-30 12:36:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiLineString.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiLineString.inl 2438 2009-04-30 11:36:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiLineString.java rev. 1.40 + * **********************************************************************/ #ifndef GEOS_GEOM_MULTILINESTRING_INL diff -Nru geos-3.1.0/source/headers/geos/geom/MultiPoint.h geos-3.2.2/source/headers/geos/geom/MultiPoint.h --- geos-3.1.0/source/headers/geos/geom/MultiPoint.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/MultiPoint.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiPoint.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiPoint.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiPoint.java rev. 1.30 + * **********************************************************************/ #ifndef GEOS_GEOS_MULTIPOINT_H #define GEOS_GEOS_MULTIPOINT_H +#include #include #include #include // for Dimension::DimensionType @@ -40,7 +45,7 @@ * \class MultiPoint geom.h geos.h * \brief Models a collection of Point objects. */ -class MultiPoint: public GeometryCollection { +class GEOS_DLL MultiPoint: public GeometryCollection { public: @@ -54,17 +59,21 @@ /// Returns Dimension::False (Point has no boundary) int getBoundaryDimension() const; - /// Returns an EMPTY Geometry + /** \brief + * Gets the boundary of this geometry. + * + * Zero-dimensional geometries have no boundary by definition, + * so an empty GeometryCollection is returned. + * + * @return an empty GeometryCollection + * @see Geometry#getBoundary + */ Geometry* getBoundary() const; std::string getGeometryType() const; virtual GeometryTypeId getGeometryTypeId() const; - //bool isValid() const; - - bool isSimple() const; - bool equalsExact(const Geometry *other, double tolerance=0) const; Geometry *clone() const { return new MultiPoint(*this); }; diff -Nru geos-3.1.0/source/headers/geos/geom/MultiPolygon.h geos-3.2.2/source/headers/geos/geom/MultiPolygon.h --- geos-3.1.0/source/headers/geos/geom/MultiPolygon.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/MultiPolygon.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiPolygon.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiPolygon.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiPolygon.java rev 1.34 + * **********************************************************************/ #ifndef GEOS_GEOS_MULTIPOLYGON_H #define GEOS_GEOS_MULTIPOLYGON_H +#include #include #include #include @@ -39,7 +44,8 @@ namespace geom { // geos::geom /// Basic implementation of MultiPolygon. -class MultiPolygon: public GeometryCollection { +class GEOS_DLL MultiPolygon: public GeometryCollection +{ public: @@ -53,10 +59,11 @@ /// Returns 1 (MultiPolygon boundary is MultiLineString) int getBoundaryDimension() const; - /** - * \brief - * Returns a MultiLineString composed of one LineString for - * each of the composing Polygon's shells and holes. + /** \brief + * Computes the boundary of this geometry + * + * @return a lineal geometry (which may be empty) + * @see Geometry#getBoundary */ Geometry* getBoundary() const; diff -Nru geos-3.1.0/source/headers/geos/geom/MultiPolygon.inl geos-3.2.2/source/headers/geos/geom/MultiPolygon.inl --- geos-3.1.0/source/headers/geos/geom/MultiPolygon.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/MultiPolygon.inl 2009-04-30 12:29:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MultiPolygon.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MultiPolygon.inl 2437 2009-04-30 11:29:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/MultiPolygon.java rev 1.34 + * **********************************************************************/ #ifndef GEOS_GEOM_MULTIPOLYGON_INL diff -Nru geos-3.1.0/source/headers/geos/geom/Point.h geos-3.2.2/source/headers/geos/geom/Point.h --- geos-3.1.0/source/headers/geos/geom/Point.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Point.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Point.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Point.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/Point.java rev. 1.37 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOS_POINT_H #define GEOS_GEOS_POINT_H +#include #include #include #include // for proper use of auto_ptr<> @@ -35,6 +40,7 @@ class Coordinate; class CoordinateArraySequence; class CoordinateFilter; + class CoordinateSequenceFilter; class GeometryComponentFilter; class GeometryFilter; } @@ -47,7 +53,10 @@ * \class Point geom.h geos.h * \brief Basic implementation of Point. */ -class Point : public Geometry { +class GEOS_DLL Point : public Geometry + + // NOTE: in JTS Point implements Puntual +{ public: @@ -58,6 +67,12 @@ virtual ~Point(); + /** + * Creates and returns a full copy of this {@link Point} object. + * (including all coordinates contained by it). + * + * @return a clone of this instance + */ Geometry *clone() const { return new Point(*this); } CoordinateSequence* getCoordinates(void) const; @@ -75,7 +90,14 @@ /// Returns Dimension::False (Point has no boundary) int getBoundaryDimension() const; - /// Returns an EMPTY Geometry. + /** + * Gets the boundary of this geometry. + * Zero-dimensional geometries have no boundary by definition, + * so an empty GeometryCollection is returned. + * + * @return an empty GeometryCollection + * @see Geometry::getBoundary + */ Geometry* getBoundary() const; double getX() const; @@ -89,9 +111,20 @@ void apply_rw(GeometryFilter *filter); void apply_rw(GeometryComponentFilter *filter); void apply_ro(GeometryComponentFilter *filter) const; + void apply_rw(CoordinateSequenceFilter& filter); + void apply_ro(CoordinateSequenceFilter& filter) const; bool equalsExact(const Geometry *other, double tolerance=0) const; - void normalize(void) { }; + + void normalize(void) + { + // a Point is always in normalized form + } + + Geometry* reverse() const + { + return clone(); + } protected: @@ -132,28 +165,3 @@ #endif // ndef GEOS_GEOS_POINT_H -/********************************************************************** - * $Log$ - * Revision 1.6 2006/05/04 15:49:39 strk - * updated all Geometry::getDimension() methods to return Dimension::DimensionType (closes bug#93) - * - * Revision 1.5 2006/04/28 10:55:39 strk - * Geometry constructors made protected, to ensure all constructions use GeometryFactory, - * which has been made friend of all Geometry derivates. getNumPoints() changed to return - * size_t. - * - * Revision 1.4 2006/04/10 18:15:09 strk - * Changed Geometry::envelope member to be of type auto_ptr. - * Changed computeEnvelopeInternal() signater to return auto_ptr - * - * Revision 1.3 2006/04/10 17:35:44 strk - * Changed LineString::points and Point::coordinates to be wrapped - * in an auto_ptr<>. This should close bugs #86 and #89 - * - * Revision 1.2 2006/03/24 09:52:41 strk - * USE_INLINE => GEOS_INLINE - * - * Revision 1.1 2006/03/09 16:46:49 strk - * geos::geom namespace definition, first pass at headers split - * - **********************************************************************/ diff -Nru geos-3.1.0/source/headers/geos/geom/Polygon.h geos-3.2.2/source/headers/geos/geom/Polygon.h --- geos-3.1.0/source/headers/geos/geom/Polygon.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Polygon.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Polygon.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Polygon.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,13 +14,14 @@ * ********************************************************************** * - * Last port: geom/Polygon.java rev. 1.47 + * Last port: geom/Polygon.java rev. 1.50 * **********************************************************************/ #ifndef GEOS_GEOM_POLYGON_H #define GEOS_GEOM_POLYGON_H +#include #include #include #include @@ -37,6 +38,7 @@ namespace geom { // geos::geom class Coordinate; class CoordinateArraySequence; + class CoordinateSequenceFilter; class LinearRing; class LineString; } @@ -60,7 +62,7 @@ * Specification for SQL . * */ -class Polygon: public Geometry{ +class GEOS_DLL Polygon: public Geometry{ public: @@ -71,6 +73,12 @@ virtual ~Polygon(); + /** + * Creates and returns a full copy of this {@link Polygon} object. + * (including all coordinates contained by it). + * + * @return a clone of this instance + */ virtual Geometry *clone() const { return new Polygon(*this); } CoordinateSequence* getCoordinates() const; @@ -83,11 +91,11 @@ /// Returns 1 (Polygon boundary is a MultiLineString) int getBoundaryDimension() const; - /** - * \brief - * Returns a MultiLineString. - * One LineString for the shell and one for each hole. - * Empty for an empty Polygon. + /** \brief + * Computes the boundary of this geometry + * + * @return a lineal geometry (which may be empty) + * @see Geometry#getBoundary */ Geometry* getBoundary() const; @@ -117,6 +125,8 @@ void apply_ro(CoordinateFilter *filter) const; void apply_rw(GeometryFilter *filter); void apply_ro(GeometryFilter *filter) const; + void apply_rw(CoordinateSequenceFilter& filter); + void apply_ro(CoordinateSequenceFilter& filter) const; Geometry* convexHull() const; diff -Nru geos-3.1.0/source/headers/geos/geom/PrecisionModel.h geos-3.2.2/source/headers/geos/geom/PrecisionModel.h --- geos-3.1.0/source/headers/geos/geom/PrecisionModel.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/PrecisionModel.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PrecisionModel.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PrecisionModel.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,8 +20,10 @@ #ifndef GEOS_GEOM_PRECISIONMODEL_H #define GEOS_GEOM_PRECISIONMODEL_H +#include #include + #include // Forward declarations @@ -78,7 +80,7 @@ * * JTS methods currently do not handle inputs with different precision models. */ -class PrecisionModel { +class GEOS_DLL PrecisionModel { friend class io::Unload; public: diff -Nru geos-3.1.0/source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h geos-3.2.2/source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h --- geos-3.1.0/source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/AbstractPreparedPolygonContains.h 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: AbstractPreparedPolygonContains.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: AbstractPreparedPolygonContains.h 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,11 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/AbstractPreparedPolygonContains.java rev 1.7 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_ABSTRACTPREPAREDPOLYGONCONTAINS_H @@ -50,7 +55,8 @@ * this class is common to both predicates. * * It is not possible to short-circuit in all cases, in particular - * in the case where line segments of the test geometry touches the polygon linework. + * in the case where line segments of the test geometry touches the polygon + * linework. * In this case full topology must be computed. * (However, if the test geometry consists of only points, this * can be evaluated in an optimized fashion. diff -Nru geos-3.1.0/source/headers/geos/geom/prep/BasicPreparedGeometry.h geos-3.2.2/source/headers/geos/geom/prep/BasicPreparedGeometry.h --- geos-3.1.0/source/headers/geos/geom/prep/BasicPreparedGeometry.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/BasicPreparedGeometry.h 2009-04-29 09:22:16.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: BasicPreparedGeometry.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: BasicPreparedGeometry.h 2419 2009-04-29 08:22:16Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/BasicPreparedGeometry.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_BASICPREPAREDGEOMETRY_H @@ -142,6 +146,10 @@ */ bool crosses(const geom::Geometry * g) const; + /** + * Standard implementation for all geometries. + * Supports {@link GeometryCollection}s as input. + */ bool disjoint(const geom::Geometry * g) const; /** diff -Nru geos-3.1.0/source/headers/geos/geom/prep/Makefile.am geos-3.2.2/source/headers/geos/geom/prep/Makefile.am --- geos-3.1.0/source/headers/geos/geom/prep/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -19,4 +19,3 @@ PreparedPolygonIntersects.h \ PreparedPolygonPredicate.h -#noinst_HEADERS = diff -Nru geos-3.1.0/source/headers/geos/geom/prep/Makefile.in geos-3.2.2/source/headers/geos/geom/prep/Makefile.in --- geos-3.1.0/source/headers/geos/geom/prep/Makefile.in 2009-03-11 19:13:39.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,15 +19,12 @@ #EXTRA_DIST = -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -47,6 +45,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -55,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -62,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -100,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -123,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -157,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -168,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -192,36 +207,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/geom/prep geos_HEADERS = \ AbstractPreparedPolygonContains.h \ @@ -245,14 +273,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geom/prep/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/geom/prep/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geom/prep/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/geom/prep/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -270,106 +298,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -378,7 +413,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -400,6 +435,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -410,8 +446,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -419,18 +454,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -449,22 +504,24 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS -#noinst_HEADERS = # 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 -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedGeometryFactory.h geos-3.2.2/source/headers/geos/geom/prep/PreparedGeometryFactory.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedGeometryFactory.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedGeometryFactory.h 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedGeometryFactory.h 2155 2008-08-12 00:09:34Z mloskot $ + * $Id: PreparedGeometryFactory.h 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedGeometryFactory.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDGEOMETRYFACTORY_H diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedGeometry.h geos-3.2.2/source/headers/geos/geom/prep/PreparedGeometry.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedGeometry.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedGeometry.h 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedGeometry.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedGeometry.h 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geom/prep/PreparedGeometry.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDGEOMETRY_H @@ -67,20 +71,43 @@ */ virtual bool contains(const geom::Geometry *geom) const =0; - /** - * Tests whether the base {@link Geometry} contains a given geometry. - *

- * The containsProperly predicate has the following equivalent definitions: - *

    - *
  • Every point of the other geometry is a point of this geometry's interior. - *
  • The DE-9IM Intersection Matrix for the two geometries matches - * [T**FF*FF*] - *
- * The advantage to using this predicate is that it can be computed - * efficiently, with no need to compute topology at individual points. - * - * @param geom the Geometry to test - * @return true if this Geometry containsProperly the given Geometry + /** \brief + * Tests whether the base {@link Geometry} properly contains + * a given geometry. + * + * The containsProperly predicate has the following + * equivalent definitions: + * + * - Every point of the other geometry is a point of this + * geometry's interior. + * - The DE-9IM Intersection Matrix for the two geometries matches + * [T**FF*FF*] + * + * In other words, if the test geometry has any interaction with + * the boundary of the target + * geometry the result of containsProperly is false. + * This is different semantics to the {@link Geometry::contains} + * predicate, * in which test geometries can intersect the target's + * boundary and still be contained. + * + * The advantage of using this predicate is that it can be computed + * efficiently, since it avoids the need to compute the full + * topological relationship of the input boundaries in cases where + * they intersect. + * + * An example use case is computing the intersections + * of a set of geometries with a large polygonal geometry. + * Since intersection is a fairly slow operation, it can + * be more efficient + * to use containsProperly to filter out test geometries + * which lie + * wholly inside the area. In these cases the intersection is + * known a priori to be exactly the original test geometry. + * + * @param geom the Geometry to test + * @return true if this Geometry properly contains the given Geometry + * + * @see Geometry::contains * */ virtual bool containsProperly(const geom::Geometry *geom) const =0; diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedLineString.h geos-3.2.2/source/headers/geos/geom/prep/PreparedLineString.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedLineString.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedLineString.h 2009-12-08 17:42:02.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedLineString.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedLineString.h 2811 2009-12-08 17:42:02Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedLineString.java rev 1.3 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDLINESTRING_H @@ -51,6 +55,8 @@ segIntFinder( NULL) { } + ~PreparedLineString(); + noding::FastSegmentSetIntersectionFinder * getIntersectionFinder(); bool intersects(const geom::Geometry * g) const; diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedLineStringIntersects.h geos-3.2.2/source/headers/geos/geom/prep/PreparedLineStringIntersects.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedLineStringIntersects.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedLineStringIntersects.h 2009-12-08 17:42:59.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedLineStringIntersects.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedLineStringIntersects.h 2812 2009-12-08 17:42:59Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedLineStringIntersects.java rev 1.2 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDLINESTRINGINTERSECTS_H @@ -33,7 +37,8 @@ /** * \brief * Computes the intersects spatial relationship predicate - * for a target {@link PreparedLineString} relative to other {@link Geometry} classes. + * for a target {@link PreparedLineString} relative to all other + * {@link Geometry} classes. * * Uses short-circuit tests and indexing to improve performance. * @@ -42,7 +47,37 @@ */ class PreparedLineStringIntersects { -private: +public: + + /** + * Computes the intersects predicate between a {@link PreparedLineString} + * and a {@link Geometry}. + * + * @param prep the prepared linestring + * @param geom a test geometry + * @return true if the linestring intersects the geometry + */ + static bool intersects( PreparedLineString & prep, const geom::Geometry * geom ) + { + PreparedLineStringIntersects op( prep); + return op.intersects( geom); + } + + /** + * \todo FIXME - mloskot: Why not taking linestring through const reference? + */ + PreparedLineStringIntersects(PreparedLineString & prep) + : prepLine( prep) + { } + + /** + * Tests whether this geometry intersects a given geometry. + * + * @param geom the test geometry + * @return true if the test geometry intersects + */ + bool intersects(const geom::Geometry * g) const; + protected: PreparedLineString & prepLine; //PreparedLineString * prepLine; @@ -75,42 +110,11 @@ // return false; //} - -public: - - /** - * Computes the intersects predicate between a {@link PreparedLineString} - * and a {@link Geometry}. - * - * @param prep the prepared linestring - * @param geom a test geometry - * @return true if the linestring intersects the geometry - */ - static bool intersects( PreparedLineString & prep, const geom::Geometry * geom ) - { - PreparedLineStringIntersects * op = new PreparedLineStringIntersects( prep); - return op->intersects( geom); - } - - /** - * \todo FIXME - mloskot: Why not taking linestring through const reference? - */ - PreparedLineStringIntersects(PreparedLineString & prep) - : prepLine( prep) - { } - - /** - * Tests whether this geometry intersects a given geometry. - * - * @param geom the test geometry - * @return true if the test geometry intersects - */ - bool intersects(const geom::Geometry * g) const; - + // Declare type as noncopyable + PreparedLineStringIntersects(const PreparedLineStringIntersects& other); + PreparedLineStringIntersects& operator=(const PreparedLineStringIntersects& rhs); }; - - } // namespace geos::geom::prep } // namespace geos::geom } // namespace geos diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedPoint.h geos-3.2.2/source/headers/geos/geom/prep/PreparedPoint.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedPoint.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedPoint.h 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPoint.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedPoint.h 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedPoint.java rev. 1.2 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDPOINT_H @@ -41,9 +45,9 @@ /** * Tests whether this point intersects a {@link Geometry}. - *

- * The optimization here is that computing topology for the test geometry - * is avoided. This can be significant for large geometries. + * + * The optimization here is that computing topology for the test + * geometry is avoided. This can be significant for large geometries. */ bool intersects(geom::Geometry* g); diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonContains.h geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonContains.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonContains.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonContains.h 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonContains.h 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: PreparedPolygonContains.h 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonContains.java rev 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGONCONTAINS_H diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonContainsProperly.h 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonContainsProperly.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedPolygonContainsProperly.h 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,11 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonContainsProperly.java rev 1.5 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGONCONTAINSPROPERLY_H diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonCovers.h geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonCovers.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonCovers.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonCovers.h 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonCovers.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedPolygonCovers.h 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,11 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonCovers.java rev 1.2 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGONCOVERS_H @@ -57,7 +62,7 @@ * Used when short-circuit tests are not conclusive. * * @param geom the test geometry - * @return true if this prepared polygon contains the test geometry + * @return true if this prepared polygon covers the test geometry */ bool fullTopologicalPredicate( const geom::Geometry * geom); @@ -89,7 +94,7 @@ * Tests whether this PreparedPolygon covers a given geometry. * * @param geom the test geometry - * @return true if the test geometry is contained + * @return true if the test geometry is covered */ bool covers( const Geometry * geom) { diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygon.h geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygon.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygon.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygon.h 2009-04-29 09:15:21.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygon.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedPolygon.h 2418 2009-04-29 08:15:21Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygon.java rev 1.7 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGON_H diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonIntersects.h geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonIntersects.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonIntersects.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonIntersects.h 2009-04-29 09:56:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonIntersects.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedPolygonIntersects.h 2420 2009-04-29 08:56:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,11 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonIntersects.java rev 1.6 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGONINTERSECTS_H diff -Nru geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonPredicate.h geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonPredicate.h --- geos-3.1.0/source/headers/geos/geom/prep/PreparedPolygonPredicate.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/prep/PreparedPolygonPredicate.h 2009-12-03 19:29:54.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PreparedPolygonPredicate.h 2159 2008-08-18 16:27:02Z mloskot $ + * $Id: PreparedPolygonPredicate.h 2771 2009-12-03 19:29:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,11 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: geom/prep/PreparedPolygonPredicate.java rev. 1.4 (JTS-1.10) + * (2007-12-12) + * **********************************************************************/ #ifndef GEOS_GEOM_PREP_PREPAREDPOLYGONPREDICATE_H @@ -53,58 +58,70 @@ class PreparedPolygonPredicate { private: + // Declare type as noncopyable + PreparedPolygonPredicate(const PreparedPolygonPredicate& other); + PreparedPolygonPredicate& operator=(const PreparedPolygonPredicate& rhs); + protected: const PreparedPolygon * const prepPoly; - /** + /** \brief * Tests whether all components of the test Geometry * are contained in the target geometry. + * * Handles both linear and point components. * * @param geom a geometry to test - * @return true if all componenta of the argument are contained in the target geometry + * @return true if all components of the argument are contained + * in the target geometry */ - bool isAllTestComponentsInTargetArea( const geom::Geometry * testGeom); + bool isAllTestComponentsInTarget(const geom::Geometry * testGeom) const; - /** + /** \brief * Tests whether all components of the test Geometry * are contained in the interior of the target geometry. + * * Handles both linear and point components. * * @param geom a geometry to test - * @return true if all componenta of the argument are contained in the target geometry interior + * @return true if all componenta of the argument are contained in + * the target geometry interior */ - bool isAllTestComponentsInTargetInterior( const geom::Geometry * testGeom); + bool isAllTestComponentsInTargetInterior( const geom::Geometry * testGeom) const; - /** + /** \brief * Tests whether any component of the test Geometry intersects * the area of the target geometry. + * * Handles test geometries with both linear and point components. * * @param geom a geometry to test - * @return true if any component of the argument intersects the prepared geometry + * @return true if any component of the argument intersects the + * prepared geometry */ - bool isAnyTestComponentInTargetArea( const geom::Geometry * testGeom); + bool isAnyTestComponentInTarget( const geom::Geometry * testGeom) const; - /** + /** \brief * Tests whether any component of the test Geometry intersects * the interior of the target geometry. + * * Handles test geometries with both linear and point components. * * @param geom a geometry to test - * @return true if any component of the argument intersects the prepared area geometry interior + * @return true if any component of the argument intersects the + * prepared area geometry interior */ - bool isAnyTestComponentInTargetInterior( const geom::Geometry * testGeom); + bool isAnyTestComponentInTargetInterior( const geom::Geometry * testGeom) const; /** * Tests whether any component of the target geometry - * intersects the area of the test geometry + * intersects the test geometry (which must be an areal geometry) * * @param geom the test geometry * @param repPts the representative points of the target geometry * @return true if any component intersects the areal test geometry */ - bool isAnyTargetComponentInTestArea( const geom::Geometry * testGeom, const geom::Coordinate::ConstVect * targetRepPts); + bool isAnyTargetComponentInAreaTest( const geom::Geometry * testGeom, const geom::Coordinate::ConstVect * targetRepPts) const; public: /** @@ -116,7 +133,7 @@ : prepPoly( prepPoly) { } - ~PreparedPolygonPredicate() + virtual ~PreparedPolygonPredicate() { } }; diff -Nru geos-3.1.0/source/headers/geos/geom/Triangle.h geos-3.2.2/source/headers/geos/geom/Triangle.h --- geos-3.1.0/source/headers/geos/geom/Triangle.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/Triangle.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Triangle.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Triangle.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_GEOM_TRIANGLE_H #define GEOS_GEOM_TRIANGLE_H +#include #include #include @@ -28,7 +29,7 @@ * Represents a planar triangle, and provides methods for calculating various * properties of triangles. */ -class Triangle { +class GEOS_DLL Triangle { public: Coordinate p0, p1, p2; diff -Nru geos-3.1.0/source/headers/geos/geom/util/ComponentCoordinateExtracter.h geos-3.2.2/source/headers/geos/geom/util/ComponentCoordinateExtracter.h --- geos-3.1.0/source/headers/geos/geom/util/ComponentCoordinateExtracter.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/ComponentCoordinateExtracter.h 2009-12-03 19:30:54.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ComponentCoordinateExtracter.h 2263 2009-01-29 18:56:00Z mloskot $ + * $Id: ComponentCoordinateExtracter.h 2772 2009-12-03 19:30:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -38,10 +38,6 @@ */ class ComponentCoordinateExtracter : public GeometryComponentFilter { -private: - - Coordinate::ConstVect &comps; - public: /** * Push the linear components from a single geometry into @@ -89,6 +85,13 @@ // comps.push_back(ls); } +private: + + Coordinate::ConstVect &comps; + + // Declare type as noncopyable + ComponentCoordinateExtracter(const ComponentCoordinateExtracter& other); + ComponentCoordinateExtracter& operator=(const ComponentCoordinateExtracter& rhs); }; } // namespace geos.geom.util diff -Nru geos-3.1.0/source/headers/geos/geom/util/CoordinateOperation.h geos-3.2.2/source/headers/geos/geom/util/CoordinateOperation.h --- geos-3.1.0/source/headers/geos/geom/util/CoordinateOperation.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/CoordinateOperation.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateOperation.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CoordinateOperation.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOM_UTIL_COORDINATEOPERATION_H #define GEOS_GEOM_UTIL_COORDINATEOPERATION_H +#include #include // for inheritance // Forward declarations @@ -38,12 +39,12 @@ * Geometry. * Operates on Geometry subclasses which contains a single coordinate list. */ -class CoordinateOperation: public GeometryEditorOperation { +class GEOS_DLL CoordinateOperation: public GeometryEditorOperation { public: /** - * Return a newly created geometry + * Return a newly created geometry, ownership to caller */ virtual Geometry* edit(const Geometry *geometry, const GeometryFactory *factory); diff -Nru geos-3.1.0/source/headers/geos/geom/util/GeometryCombiner.h geos-3.2.2/source/headers/geos/geom/util/GeometryCombiner.h --- geos-3.1.0/source/headers/geos/geom/util/GeometryCombiner.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/GeometryCombiner.h 2009-12-03 19:30:54.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryCombiner.h 2253 2009-01-23 23:58:18Z mloskot $ + * $Id: GeometryCombiner.h 2772 2009-12-03 19:30:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -101,6 +101,10 @@ private: void extractElements(Geometry* geom, std::vector& elems); + + // Declare type as noncopyable + GeometryCombiner(const GeometryCombiner& other); + GeometryCombiner& operator=(const GeometryCombiner& rhs); }; } // namespace geos.geom.util diff -Nru geos-3.1.0/source/headers/geos/geom/util/GeometryEditor.h geos-3.2.2/source/headers/geos/geom/util/GeometryEditor.h --- geos-3.1.0/source/headers/geos/geom/util/GeometryEditor.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/GeometryEditor.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryEditor.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryEditor.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOM_UTIL_GEOMETRYEDITOR_H #define GEOS_GEOM_UTIL_GEOMETRYEDITOR_H +#include + // Forward declarations namespace geos { namespace geom { @@ -69,7 +71,7 @@ * @see Geometry::isValid * */ -class GeometryEditor { +class GEOS_DLL GeometryEditor { private: /** * The factory used to create the modified Geometry diff -Nru geos-3.1.0/source/headers/geos/geom/util/GeometryEditorOperation.h geos-3.2.2/source/headers/geos/geom/util/GeometryEditorOperation.h --- geos-3.1.0/source/headers/geos/geom/util/GeometryEditorOperation.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/GeometryEditorOperation.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryEditorOperation.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryEditorOperation.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOM_UTIL_GEOMETRYEDITOROPERATION_H #define GEOS_GEOM_UTIL_GEOMETRYEDITOROPERATION_H +#include + // Forward declarations namespace geos { namespace geom { @@ -34,7 +36,7 @@ /** * A interface which specifies an edit operation for Geometries. */ -class GeometryEditorOperation { +class GEOS_DLL GeometryEditorOperation { public: /** diff -Nru geos-3.1.0/source/headers/geos/geom/util/GeometryTransformer.h geos-3.2.2/source/headers/geos/geom/util/GeometryTransformer.h --- geos-3.1.0/source/headers/geos/geom/util/GeometryTransformer.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/GeometryTransformer.h 2009-12-03 19:30:54.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryTransformer.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryTransformer.h 2772 2009-12-03 19:30:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,6 +20,8 @@ #ifndef GEOS_GEOM_UTIL_GEOMETRYTRANSFORMER_H #define GEOS_GEOM_UTIL_GEOMETRYTRANSFORMER_H + +#include #include // destructor visibility for vector #include // destructor visibility for auto_ptr #include // destructor visibility for auto_ptr @@ -87,7 +89,7 @@ * getParent() method to return immediate parent e.g. of LinearRings in Polygons * */ -class GeometryTransformer { +class GEOS_DLL GeometryTransformer { public: @@ -176,7 +178,9 @@ */ bool preserveType; - + // Declare type as noncopyable + GeometryTransformer(const GeometryTransformer& other); + GeometryTransformer& operator=(const GeometryTransformer& rhs); }; diff -Nru geos-3.1.0/source/headers/geos/geom/util/LinearComponentExtracter.h geos-3.2.2/source/headers/geos/geom/util/LinearComponentExtracter.h --- geos-3.1.0/source/headers/geos/geom/util/LinearComponentExtracter.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/LinearComponentExtracter.h 2009-12-03 19:30:54.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LinearComponentExtracter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LinearComponentExtracter.h 2772 2009-12-03 19:30:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOM_UTIL_LINEARCOMPONENTEXTRACTER_H #define GEOS_GEOM_UTIL_LINEARCOMPONENTEXTRACTER_H + +#include #include #include @@ -31,12 +33,16 @@ /** * Extracts all the 1-dimensional (LineString) components from a Geometry. */ -class LinearComponentExtracter: public GeometryComponentFilter { +class GEOS_DLL LinearComponentExtracter: public GeometryComponentFilter { private: LineString::ConstVect &comps; + // Declare type as noncopyable + LinearComponentExtracter(const LinearComponentExtracter& other); + LinearComponentExtracter& operator=(const LinearComponentExtracter& rhs); + public: /** * Push the linear components from a single geometry into diff -Nru geos-3.1.0/source/headers/geos/geom/util/Makefile.am geos-3.2.2/source/headers/geos/geom/util/Makefile.am --- geos-3.1.0/source/headers/geos/geom/util/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -16,4 +16,3 @@ PolygonExtracter.h \ ShortCircuitedGeometryVisitor.h -#noinst_HEADERS = diff -Nru geos-3.1.0/source/headers/geos/geom/util/Makefile.in geos-3.2.2/source/headers/geos/geom/util/Makefile.in --- geos-3.1.0/source/headers/geos/geom/util/Makefile.in 2009-03-11 19:13:39.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,15 +19,12 @@ #EXTRA_DIST = -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -47,6 +45,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -55,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -62,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -100,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -123,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -157,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -168,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -192,36 +207,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/geom/util geos_HEADERS = \ ComponentCoordinateExtracter.h \ @@ -242,14 +270,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geom/util/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/geom/util/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geom/util/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/geom/util/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -267,106 +295,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -375,7 +410,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -397,6 +432,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -407,8 +443,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -416,18 +451,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -446,22 +501,24 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS -#noinst_HEADERS = # 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 -Nru geos-3.1.0/source/headers/geos/geom/util/PointExtracter.h geos-3.2.2/source/headers/geos/geom/util/PointExtracter.h --- geos-3.1.0/source/headers/geos/geom/util/PointExtracter.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/PointExtracter.h 2009-12-03 19:30:54.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PointExtracter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PointExtracter.h 2772 2009-12-03 19:30:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOM_UTIL_POINTEXTRACTER_H #define GEOS_GEOM_UTIL_POINTEXTRACTER_H +#include #include #include #include @@ -29,10 +30,7 @@ /** * Extracts all the 0-dimensional (Point) components from a Geometry. */ -class PointExtracter: public GeometryFilter { - -private: - Point::ConstVect& comps; +class GEOS_DLL PointExtracter: public GeometryFilter { public: /** @@ -68,6 +66,13 @@ comps.push_back(p); } +private: + + Point::ConstVect& comps; + + // Declare type as noncopyable + PointExtracter(const PointExtracter& other); + PointExtracter& operator=(const PointExtracter& rhs); }; } // namespace geos.geom.util diff -Nru geos-3.1.0/source/headers/geos/geom/util/PolygonExtracter.h geos-3.2.2/source/headers/geos/geom/util/PolygonExtracter.h --- geos-3.1.0/source/headers/geos/geom/util/PolygonExtracter.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/PolygonExtracter.h 2009-12-03 19:30:54.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonExtracter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonExtracter.h 2772 2009-12-03 19:30:54Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOM_UTIL_POLYGONEXTRACTER_H #define GEOS_GEOM_UTIL_POLYGONEXTRACTER_H +#include #include #include #include @@ -29,12 +30,7 @@ /** * Extracts all the 2-dimensional (Polygon) components from a Geometry. */ -class PolygonExtracter: public GeometryFilter { - -private: - - /// Reference to provided vector - std::vector& comps; +class GEOS_DLL PolygonExtracter: public GeometryFilter { public: @@ -75,6 +71,14 @@ } } +private: + + /// Reference to provided vector + std::vector& comps; + + // Declare type as noncopyable + PolygonExtracter(const PolygonExtracter& other); + PolygonExtracter& operator=(const PolygonExtracter& rhs); }; } // namespace geos.geom.util diff -Nru geos-3.1.0/source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h geos-3.2.2/source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h --- geos-3.1.0/source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geom/util/ShortCircuitedGeometryVisitor.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ShortCircuitedGeometryVisitor.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ShortCircuitedGeometryVisitor.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOM_UTIL_SHORTCIRCUITEDGEOMETRYVISITOR_H #define GEOS_GEOM_UTIL_SHORTCIRCUITEDGEOMETRYVISITOR_H +#include + // Forward declarations namespace geos { namespace geom { @@ -35,7 +37,7 @@ * * Last port: geom/util/ShortCircuitedGeometryVisitor.java rev. 1.1 (JTS-1.7) */ -class ShortCircuitedGeometryVisitor +class GEOS_DLL ShortCircuitedGeometryVisitor { private: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Depth.h geos-3.2.2/source/headers/geos/geomgraph/Depth.h --- geos-3.1.0/source/headers/geos/geomgraph/Depth.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Depth.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Depth.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Depth.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Depth.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_DEPTH_H #define GEOS_GEOMGRAPH_DEPTH_H +#include #include #include @@ -32,7 +37,7 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class Depth { +class GEOS_DLL Depth { public: static int depthAtLocation(int location); Depth(); @@ -50,9 +55,8 @@ std::string toString() const; private: enum { - DEPTHNULL=-1 //Replaces NULL + NULL_VALUE=-1 //Replaces NULL }; -// static const int DEPTHNULL=-1; //Replaces NULL int depth[2][3]; }; diff -Nru geos-3.1.0/source/headers/geos/geomgraph/DirectedEdge.h geos-3.2.2/source/headers/geos/geomgraph/DirectedEdge.h --- geos-3.1.0/source/headers/geos/geomgraph/DirectedEdge.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/DirectedEdge.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DirectedEdge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DirectedEdge.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/DirectedEdge.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_H #define GEOS_GEOMGRAPH_DIRECTEDEDGE_H +#include #include #include // for inheritance @@ -36,7 +41,7 @@ namespace geomgraph { // geos.geomgraph /// A directed EdgeEnd -class DirectedEdge: public EdgeEnd { +class GEOS_DLL DirectedEdge: public EdgeEnd { public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/DirectedEdge.inl geos-3.2.2/source/headers/geos/geomgraph/DirectedEdge.inl --- geos-3.1.0/source/headers/geos/geomgraph/DirectedEdge.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/DirectedEdge.inl 2009-05-12 16:38:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DirectedEdge.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DirectedEdge.inl 2502 2009-05-12 15:38:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/DirectedEdge.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_INL diff -Nru geos-3.1.0/source/headers/geos/geomgraph/DirectedEdgeStar.h geos-3.2.2/source/headers/geos/geomgraph/DirectedEdgeStar.h --- geos-3.1.0/source/headers/geos/geomgraph/DirectedEdgeStar.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/DirectedEdgeStar.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DirectedEdgeStar.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DirectedEdgeStar.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/DirectedEdgeStar.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_DIRECTEDEDGEENDSTAR_H #define GEOS_GEOMGRAPH_DIRECTEDEDGEENDSTAR_H +#include #include #include #include @@ -46,9 +51,8 @@ * It supports labelling the edges as well as linking the edges to form both * MaximalEdgeRings and MinimalEdgeRings. * - * Last port: geomgraph/DirectedEdgeStar.java rev. 1.4 (JTS-1.7) */ -class DirectedEdgeStar: public EdgeEndStar { +class GEOS_DLL DirectedEdgeStar: public EdgeEndStar { public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/EdgeEnd.h geos-3.2.2/source/headers/geos/geomgraph/EdgeEnd.h --- geos-3.1.0/source/headers/geos/geomgraph/EdgeEnd.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/EdgeEnd.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEnd.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEnd.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/EdgeEnd.java rev. 1.5 (JTS-1.7) + * Last port: geomgraph/EdgeEnd.java rev. 1.6 (JTS-1.10) * **********************************************************************/ @@ -22,6 +22,7 @@ #ifndef GEOS_GEOMGRAPH_EDGEEND_H #define GEOS_GEOMGRAPH_EDGEEND_H +#include #include // for p0,p1 #include @@ -29,6 +30,9 @@ // Forward declarations namespace geos { + namespace algorithm { + class BoundaryNodeRule; + } namespace geomgraph { class Label; class Edge; @@ -49,7 +53,7 @@ * "a has a greater angle with the x-axis than b". * This ordering is used to sort EdgeEnds around a node. */ -class EdgeEnd { +class GEOS_DLL EdgeEnd { public: @@ -109,7 +113,7 @@ */ virtual int compareDirection(const EdgeEnd *e) const; - virtual void computeLabel(); + virtual void computeLabel(const algorithm::BoundaryNodeRule& bnr); virtual std::string print(); @@ -140,7 +144,7 @@ std::ostream& operator<< (std::ostream&, const EdgeEnd&); -struct EdgeEndLT { +struct GEOS_DLL EdgeEndLT { bool operator()(const EdgeEnd *s1, const EdgeEnd *s2) const { return s1->compareTo(s2)<0; } diff -Nru geos-3.1.0/source/headers/geos/geomgraph/EdgeEndStar.h geos-3.2.2/source/headers/geos/geomgraph/EdgeEndStar.h --- geos-3.1.0/source/headers/geos/geomgraph/EdgeEndStar.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/EdgeEndStar.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndStar.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEndStar.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/EdgeEndStar.java rev. 1.4 (JTS-1.7) + * Last port: geomgraph/EdgeEndStar.java rev. 1.8 (JTS-1.10) * **********************************************************************/ @@ -22,6 +22,7 @@ #ifndef GEOS_GEOMGRAPH_EDGEENDSTAR_H #define GEOS_GEOMGRAPH_EDGEENDSTAR_H +#include #include // for EdgeEndLT #include // for p0,p1 @@ -34,6 +35,9 @@ // Forward declarations namespace geos { + namespace algorithm { + class BoundaryNodeRule; + } namespace geomgraph { class GeometryGraph; } @@ -51,7 +55,7 @@ * * @version 1.4 */ -class EdgeEndStar { +class GEOS_DLL EdgeEndStar { public: typedef std::set container; @@ -92,14 +96,10 @@ virtual EdgeEnd* getNextCW(EdgeEnd *ee); - virtual void computeLabelling(std::vector *geom); + virtual void computeLabelling(std::vector *geomGraph); // throw(TopologyException *); - virtual int getLocation(int geomIndex, - const geom::Coordinate& p, - std::vector *geom); - - virtual bool isAreaLabelsConsistent(); + virtual bool isAreaLabelsConsistent(const GeometryGraph& geomGraph); virtual void propagateSideLabels(int geomIndex); // throw(TopologyException *); @@ -124,13 +124,17 @@ private: + virtual int getLocation(int geomIndex, + const geom::Coordinate& p, + std::vector *geom); + /** \brief * The location of the point for this star in * Geometry i Areas */ int ptInAreaLocation[2]; - virtual void computeEdgeEndLabels(); + virtual void computeEdgeEndLabels(const algorithm::BoundaryNodeRule&); virtual bool checkAreaLabelsConsistent(int geomIndex); diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Edge.h geos-3.2.2/source/headers/geos/geomgraph/Edge.h --- geos-3.1.0/source/headers/geos/geomgraph/Edge.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Edge.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Edge.h 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: Edge.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Edge.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_EDGE_H #define GEOS_GEOMGRAPH_EDGE_H +#include #include #include @@ -52,7 +57,7 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class Edge: public GraphComponent{ +class GEOS_DLL Edge: public GraphComponent{ using GraphComponent::updateIM; private: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/EdgeIntersection.h geos-3.2.2/source/headers/geos/geomgraph/EdgeIntersection.h --- geos-3.1.0/source/headers/geos/geomgraph/EdgeIntersection.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/EdgeIntersection.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: EdgeIntersection.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeIntersection.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * @@ -12,12 +13,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/EdgeIntersection.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_EDGEINTERSECTION_H #define GEOS_GEOMGRAPH_EDGEINTERSECTION_H +#include #include #include // for CoordinateLessThen @@ -28,20 +34,58 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class EdgeIntersection { +/** + * Represents a point on an + * edge which intersects with another edge. + * + * The intersection may either be a single point, or a line segment + * (in which case this point is the start of the line segment) + * The intersection point must be precise. + * + */ +class GEOS_DLL EdgeIntersection { public: + + // the point of intersection geom::Coordinate coord; + + // the index of the containing line segment in the parent edge int segmentIndex; + + // the edge distance of this point along the containing line segment double dist; - EdgeIntersection(const geom::Coordinate& newCoord, int newSegmentIndex, double newDist); + + EdgeIntersection(const geom::Coordinate& newCoord, + int newSegmentIndex, double newDist); + virtual ~EdgeIntersection(); + + /** + * @return -1 this EdgeIntersection is located before the + * argument location + * @return 0 this EdgeIntersection is at the argument location + * @return 1 this EdgeIntersection is located after the argument + * location + */ int compare(int newSegmentIndex, double newDist) const; + bool isEndPoint(int maxSegmentIndex); + std::string print() const; + int compareTo(const EdgeIntersection *) const; + + const geom::Coordinate& getCoordinate() const { + return coord; + } + + int getSegmentIndex() const { return segmentIndex; } + + double getDistance() { return dist; } + }; -struct EdgeIntersectionLessThen { +struct GEOS_DLL EdgeIntersectionLessThen { bool operator()(const EdgeIntersection *ei1, const EdgeIntersection *ei2) const { @@ -62,13 +106,4 @@ #endif // ifndef GEOS_GEOMGRAPH_EDGEINTERSECTION_H -/********************************************************************** - * $Log$ - * Revision 1.2 2006/03/24 09:52:41 strk - * USE_INLINE => GEOS_INLINE - * - * Revision 1.1 2006/03/09 16:46:49 strk - * geos::geom namespace definition, first pass at headers split - * - **********************************************************************/ diff -Nru geos-3.1.0/source/headers/geos/geomgraph/EdgeIntersectionList.h geos-3.2.2/source/headers/geos/geomgraph/EdgeIntersectionList.h --- geos-3.1.0/source/headers/geos/geomgraph/EdgeIntersectionList.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/EdgeIntersectionList.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeIntersectionList.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeIntersectionList.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/EdgeIntersectionList.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_EDGEINTERSECTIONLIST_H #define GEOS_GEOMGRAPH_EDGEINTERSECTIONLIST_H +#include #include #include #include @@ -46,7 +51,7 @@ * Implements splitting an edge with intersections * into multiple resultant edges. */ -class EdgeIntersectionList{ +class GEOS_DLL EdgeIntersectionList{ public: typedef std::set container; typedef container::iterator iterator; diff -Nru geos-3.1.0/source/headers/geos/geomgraph/EdgeList.h geos-3.2.2/source/headers/geos/geomgraph/EdgeList.h --- geos-3.1.0/source/headers/geos/geomgraph/EdgeList.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/EdgeList.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeList.h 2220 2008-11-11 17:32:38Z pramsey $ + * $Id: EdgeList.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,17 +12,23 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/EdgeList.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_EDGELIST_H #define GEOS_GEOMGRAPH_EDGELIST_H +#include #include +#include #include #include -#include // for inlined ctor +#include // for map comparator #include @@ -39,22 +45,37 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class EdgeList { +/** + * A EdgeList is a list of Edges. + * + * It supports locating edges + * that are pointwise equals to a target edge. + */ +class GEOS_DLL EdgeList { private: std::vector edges; + struct OcaCmp { + bool operator()( + const noding::OrientedCoordinateArray *oca1, + const noding::OrientedCoordinateArray *oca2) const + { + return oca1->compareTo(*oca2)<0; + } + }; + /** * An index of the edges, for fast lookup. - * - * a Quadtree is used, because this index needs to be dynamic - * (e.g. allow insertions after queries). - * An alternative would be to use an ordered set based on the values - * of the edge coordinates - * + * + * OrientedCoordinateArray objects are owned by us. + * TODO: optimize by dropping the OrientedCoordinateArray + * construction as a whole, and use CoordinateSequence + * directly instead.. */ - geos::index::SpatialIndex* index; + typedef std::map EdgeMap; + EdgeMap ocaMap; public: friend std::ostream& operator<< (std::ostream& os, const EdgeList& el); @@ -62,10 +83,10 @@ EdgeList() : edges(), - index(new geos::index::quadtree::Quadtree()) + ocaMap() {} - virtual ~EdgeList() { delete index; } + virtual ~EdgeList(); /** * Insert an edge unless it is already in the list diff -Nru geos-3.1.0/source/headers/geos/geomgraph/EdgeNodingValidator.h geos-3.2.2/source/headers/geos/geomgraph/EdgeNodingValidator.h --- geos-3.1.0/source/headers/geos/geomgraph/EdgeNodingValidator.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/EdgeNodingValidator.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeNodingValidator.h 1939 2006-12-11 17:42:55Z strk $ + * $Id: EdgeNodingValidator.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,15 +12,19 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/EdgeNodingValidator.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_EDGENODINGVALIDATOR_H #define GEOS_GEOMGRAPH_EDGENODINGVALIDATOR_H +#include #include -//#include // for composition #include // for composition #include @@ -41,13 +45,12 @@ namespace geos { namespace geomgraph { // geos.geomgraph -/** +/** \brief * Validates that a collection of SegmentStrings is correctly noded. - * Throws an appropriate exception if an noding error is found. * - * @version 1.4 + * Throws an appropriate exception if an noding error is found. */ -class EdgeNodingValidator { +class GEOS_DLL EdgeNodingValidator { private: std::vector& toSegmentStrings(std::vector& edges); @@ -65,10 +68,26 @@ std::vector newCoordSeq; noding::FastNodingValidator nv; - //noding::NodingValidator nv; public: + /** \brief + * Checks whether the supplied {@link Edge}s + * are correctly noded. + * + * Throws a {@link TopologyException} if they are not. + * + * @param edges a collection of Edges. + * @throws TopologyException if the SegmentStrings are not + * correctly noded + * + */ + static void checkValid(std::vector& edges) + { + EdgeNodingValidator validator(edges); + validator.checkValid(); + } + EdgeNodingValidator(std::vector& edges) : segStr(), diff -Nru geos-3.1.0/source/headers/geos/geomgraph/EdgeRing.h geos-3.2.2/source/headers/geos/geomgraph/EdgeRing.h --- geos-3.1.0/source/headers/geos/geomgraph/EdgeRing.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/EdgeRing.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeRing.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/EdgeRing.java rev. 1.9 + * Last port: geomgraph/EdgeRing.java rev. 1.10 (JTS-1.10) * **********************************************************************/ @@ -22,6 +22,7 @@ #ifndef GEOS_GEOMGRAPH_EDGERING_H #define GEOS_GEOMGRAPH_EDGERING_H +#include #include // for composition #include @@ -50,7 +51,7 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class EdgeRing { +class GEOS_DLL EdgeRing { public: friend std::ostream& operator<< (std::ostream& os, const EdgeRing& er); @@ -144,6 +145,7 @@ const geom::GeometryFactory *geometryFactory; + /// throw(const TopologyException &) void computePoints(DirectedEdge *newStart); void mergeLabel(Label& deLabel); diff -Nru geos-3.1.0/source/headers/geos/geomgraph/GeometryGraph.h geos-3.2.2/source/headers/geos/geomgraph/GeometryGraph.h --- geos-3.1.0/source/headers/geos/geomgraph/GeometryGraph.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/GeometryGraph.h 2009-12-03 19:36:17.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryGraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryGraph.h 2773 2009-12-03 19:36:17Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/GeometryGraph.java rev. 1.9 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_H #define GEOS_GEOMGRAPH_GEOMETRYGRAPH_H +#include #include #include #include @@ -41,6 +46,7 @@ } namespace algorithm { class LineIntersector; + class BoundaryNodeRule; } namespace geomgraph { class Edge; @@ -55,7 +61,8 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class GeometryGraph: public PlanarGraph { +class GEOS_DLL GeometryGraph: public PlanarGraph +{ using PlanarGraph::add; using PlanarGraph::findEdge; @@ -80,6 +87,8 @@ */ bool useBoundaryDeterminationRule; + const algorithm::BoundaryNodeRule& boundaryNodeRule; + /** * the index of this geometry as an argument to a spatial function * (used for labelling) @@ -117,6 +126,13 @@ void insertPoint(int argIndex, const geom::Coordinate& coord, int onLocation); + /** \brief + * Adds candidate boundary points using the current + * algorithm::BoundaryNodeRule. + * + * This is used to add the boundary + * points of dim-1 geometries (Curves/MultiCurves). + */ void insertBoundaryPoint(int argIndex, const geom::Coordinate& coord); void addSelfIntersectionNodes(int argIndex); @@ -131,16 +147,27 @@ void addSelfIntersectionNode(int argIndex, const geom::Coordinate& coord, int loc); + // Declare type as noncopyable + GeometryGraph(const GeometryGraph& other); + GeometryGraph& operator=(const GeometryGraph& rhs); + public: static bool isInBoundary(int boundaryCount); static int determineBoundary(int boundaryCount); + static int determineBoundary( + const algorithm::BoundaryNodeRule& boundaryNodeRule, + int boundaryCount); + GeometryGraph(); GeometryGraph(int newArgIndex, const geom::Geometry *newParentGeom); + GeometryGraph(int newArgIndex, const geom::Geometry *newParentGeom, + const algorithm::BoundaryNodeRule& boundaryNodeRule); + virtual ~GeometryGraph(); @@ -196,6 +223,9 @@ const geom::Coordinate& getInvalidPoint(); + const algorithm::BoundaryNodeRule& getBoundaryNodeRule() const + { return boundaryNodeRule; } + }; diff -Nru geos-3.1.0/source/headers/geos/geomgraph/GeometryGraph.inl geos-3.2.2/source/headers/geos/geomgraph/GeometryGraph.inl --- geos-3.1.0/source/headers/geos/geomgraph/GeometryGraph.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/GeometryGraph.inl 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryGraph.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryGraph.inl 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/GeometryGraph.java rev. 1.9 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_GEOMETRYGRAPH_INL @@ -46,30 +50,6 @@ { } -INLINE -GeometryGraph::GeometryGraph(int newArgIndex, - const geom::Geometry *newParentGeom) - : - PlanarGraph(), - parentGeom(newParentGeom), - useBoundaryDeterminationRule(false), - argIndex(newArgIndex), - hasTooFewPointsVar(false) -{ - if (parentGeom!=NULL) add(parentGeom); -} - -INLINE -GeometryGraph::GeometryGraph() - : - PlanarGraph(), - parentGeom(NULL), - useBoundaryDeterminationRule(false), - argIndex(-1), - hasTooFewPointsVar(false) -{ -} - } // namespace geos::geomgraph } // namespace geos diff -Nru geos-3.1.0/source/headers/geos/geomgraph/GraphComponent.h geos-3.2.2/source/headers/geos/geomgraph/GraphComponent.h --- geos-3.1.0/source/headers/geos/geomgraph/GraphComponent.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/GraphComponent.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GraphComponent.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GraphComponent.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/GraphComponent.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_GRAPHCOMPONENT_H #define GEOS_GEOMGRAPH_GRAPHCOMPONENT_H +#include #include // Forward declarations @@ -34,7 +39,7 @@ namespace geomgraph { // geos.geomgraph -class GraphComponent { +class GEOS_DLL GraphComponent { public: GraphComponent(); diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/EdgeSetIntersector.h geos-3.2.2/source/headers/geos/geomgraph/index/EdgeSetIntersector.h --- geos-3.1.0/source/headers/geos/geomgraph/index/EdgeSetIntersector.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/EdgeSetIntersector.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeSetIntersector.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeSetIntersector.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOMGRAPH_INDEX_EDGESETINTERSECTOR_H #define GEOS_GEOMGRAPH_INDEX_EDGESETINTERSECTOR_H +#include #include // Forward declarations @@ -36,7 +37,7 @@ /* * This is derived from a Java interface. */ -class EdgeSetIntersector { +class GEOS_DLL EdgeSetIntersector { public: /** * Computes all self-intersections between edges in a set of edges, diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/Makefile.am geos-3.2.2/source/headers/geos/geomgraph/index/Makefile.am --- geos-3.1.0/source/headers/geos/geomgraph/index/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -17,4 +17,3 @@ SweepLineEventObj.h \ SweepLineSegment.h -#noinst_HEADERS = diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/Makefile.in geos-3.2.2/source/headers/geos/geomgraph/index/Makefile.in --- geos-3.1.0/source/headers/geos/geomgraph/index/Makefile.in 2009-03-11 19:13:40.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,15 +19,12 @@ #EXTRA_DIST = -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -47,6 +45,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -55,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -62,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -100,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -123,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -157,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -168,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -192,36 +207,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/geomgraph/index geos_HEADERS = \ EdgeSetIntersector.h \ @@ -243,14 +271,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geomgraph/index/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/geomgraph/index/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geomgraph/index/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/geomgraph/index/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -268,106 +296,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -376,7 +411,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -398,6 +433,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -408,8 +444,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -417,18 +452,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -447,22 +502,24 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS -#noinst_HEADERS = # 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 -Nru geos-3.1.0/source/headers/geos/geomgraph/index/MonotoneChainEdge.h geos-3.2.2/source/headers/geos/geomgraph/index/MonotoneChainEdge.h --- geos-3.1.0/source/headers/geos/geomgraph/index/MonotoneChainEdge.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/MonotoneChainEdge.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MonotoneChainEdge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MonotoneChainEdge.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOMGRAPH_INDEX_MONOTONECHAINEDGE_H #define GEOS_GEOMGRAPH_INDEX_MONOTONECHAINEDGE_H + +#include #include // for composition // Forward declarations @@ -36,7 +38,7 @@ namespace geomgraph { // geos::geomgraph namespace index { // geos::geomgraph::index -class MonotoneChainEdge { +class GEOS_DLL MonotoneChainEdge { public: //MonotoneChainEdge(); ~MonotoneChainEdge(); diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/MonotoneChain.h geos-3.2.2/source/headers/geos/geomgraph/index/MonotoneChain.h --- geos-3.1.0/source/headers/geos/geomgraph/index/MonotoneChain.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/MonotoneChain.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MonotoneChain.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MonotoneChain.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOMGRAPH_INDEX_MONOTONECHAIN_H #define GEOS_GEOMGRAPH_INDEX_MONOTONECHAIN_H + +#include #include // for inheritance #include // for inline @@ -38,7 +40,7 @@ /** * Last port: geomgraph/index/MonotoneChain.java rev. 1.3 (JTS-1.7) */ -class MonotoneChain: public SweepLineEventOBJ { +class GEOS_DLL MonotoneChain: public SweepLineEventOBJ { private: MonotoneChainEdge *mce; int chainIndex; diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/MonotoneChainIndexer.h geos-3.2.2/source/headers/geos/geomgraph/index/MonotoneChainIndexer.h --- geos-3.1.0/source/headers/geos/geomgraph/index/MonotoneChainIndexer.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/MonotoneChainIndexer.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MonotoneChainIndexer.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MonotoneChainIndexer.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOMGRAPH_INDEX_MONOTONECHAININDEXER_H #define GEOS_GEOMGRAPH_INDEX_MONOTONECHAININDEXER_H +#include #include // Forward declarations @@ -31,7 +32,7 @@ namespace index { // geos::geomgraph::index -class MonotoneChainIndexer{ +class GEOS_DLL MonotoneChainIndexer{ public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/SegmentIntersector.h geos-3.2.2/source/headers/geos/geomgraph/index/SegmentIntersector.h --- geos-3.1.0/source/headers/geos/geomgraph/index/SegmentIntersector.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/SegmentIntersector.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentIntersector.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentIntersector.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOMGRAPH_INDEX_SEGMENTINTERSECTOR_H #define GEOS_GEOMGRAPH_INDEX_SEGMENTINTERSECTOR_H + +#include #include #include // for composition @@ -37,7 +39,7 @@ namespace index { // geos::geomgraph::index -class SegmentIntersector{ +class GEOS_DLL SegmentIntersector{ private: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/SimpleEdgeSetIntersector.h geos-3.2.2/source/headers/geos/geomgraph/index/SimpleEdgeSetIntersector.h --- geos-3.1.0/source/headers/geos/geomgraph/index/SimpleEdgeSetIntersector.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/SimpleEdgeSetIntersector.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleEdgeSetIntersector.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleEdgeSetIntersector.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOMGRAPH_INDEX_SIMPLEEDGESETINTERSECTOR_H #define GEOS_GEOMGRAPH_INDEX_SIMPLEEDGESETINTERSECTOR_H +#include #include #include // for inheritance @@ -35,7 +36,7 @@ namespace geomgraph { // geos::geomgraph namespace index { // geos::geomgraph::index -class SimpleEdgeSetIntersector: public EdgeSetIntersector { +class GEOS_DLL SimpleEdgeSetIntersector: public EdgeSetIntersector { public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/SimpleMCSweepLineIntersector.h geos-3.2.2/source/headers/geos/geomgraph/index/SimpleMCSweepLineIntersector.h --- geos-3.1.0/source/headers/geos/geomgraph/index/SimpleMCSweepLineIntersector.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/SimpleMCSweepLineIntersector.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleMCSweepLineIntersector.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleMCSweepLineIntersector.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOMGRAPH_INDEX_SIMPLEMCSWEEPLINEINTERSECTOR_H #define GEOS_GEOMGRAPH_INDEX_SIMPLEMCSWEEPLINEINTERSECTOR_H +#include #include #include // for inheritance @@ -45,7 +46,7 @@ * The use of MonotoneChains as the items in the index * seems to offer an improvement in performance over a sweep-line alone. */ -class SimpleMCSweepLineIntersector: public EdgeSetIntersector { +class GEOS_DLL SimpleMCSweepLineIntersector: public EdgeSetIntersector { public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/SimpleSweepLineIntersector.h geos-3.2.2/source/headers/geos/geomgraph/index/SimpleSweepLineIntersector.h --- geos-3.1.0/source/headers/geos/geomgraph/index/SimpleSweepLineIntersector.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/SimpleSweepLineIntersector.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleSweepLineIntersector.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleSweepLineIntersector.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOMGRAPH_INDEX_SIMPLESWEEPLINEINTERSECTOR_H #define GEOS_GEOMGRAPH_INDEX_SIMPLESWEEPLINEINTERSECTOR_H +#include #include #include // for inheritance @@ -43,7 +44,7 @@ * While still O(n^2) in the worst case, this algorithm * drastically improves the average-case time. */ -class SimpleSweepLineIntersector: public EdgeSetIntersector { +class GEOS_DLL SimpleSweepLineIntersector: public EdgeSetIntersector { public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/SweepLineEvent.h geos-3.2.2/source/headers/geos/geomgraph/index/SweepLineEvent.h --- geos-3.1.0/source/headers/geos/geomgraph/index/SweepLineEvent.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/SweepLineEvent.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweepLineEvent.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweepLineEvent.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENT_H #define GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENT_H + +#include #include // Forward declarations @@ -34,7 +36,7 @@ //class SweepLineEventLessThen; // needed ?? -class SweepLineEvent{ +class GEOS_DLL SweepLineEvent{ friend class SweepLineEventLessThen; public: @@ -85,7 +87,7 @@ int deleteEventIndex; }; -class SweepLineEventLessThen { +class GEOS_DLL SweepLineEventLessThen { public: bool operator()(const SweepLineEvent *f, const SweepLineEvent *s) const { diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/SweepLineEventObj.h geos-3.2.2/source/headers/geos/geomgraph/index/SweepLineEventObj.h --- geos-3.1.0/source/headers/geos/geomgraph/index/SweepLineEventObj.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/SweepLineEventObj.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweepLineEventObj.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweepLineEventObj.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENTOBJ_H #define GEOS_GEOMGRAPH_INDEX_SWEEPLINEEVENTOBJ_H +#include namespace geos { namespace geomgraph { // geos::geomgraph @@ -26,7 +27,7 @@ // can use it as argument type. // Both SweepLineSegment and MonotoneChain will // inherit from it. -class SweepLineEventOBJ { +class GEOS_DLL SweepLineEventOBJ { public: virtual ~SweepLineEventOBJ(){}; }; diff -Nru geos-3.1.0/source/headers/geos/geomgraph/index/SweepLineSegment.h geos-3.2.2/source/headers/geos/geomgraph/index/SweepLineSegment.h --- geos-3.1.0/source/headers/geos/geomgraph/index/SweepLineSegment.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/index/SweepLineSegment.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweepLineSegment.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweepLineSegment.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_GEOMGRAPH_INDEX_SWEEPLINESEGMENT_H #define GEOS_GEOMGRAPH_INDEX_SWEEPLINESEGMENT_H + +#include #include // for inheritance // Forward declarations @@ -36,7 +38,7 @@ namespace geomgraph { // geos::geomgraph namespace index { // geos::geomgraph::index -class SweepLineSegment: public SweepLineEventOBJ { +class GEOS_DLL SweepLineSegment: public SweepLineEventOBJ { public: SweepLineSegment(Edge *newEdge, int newPtIndex); ~SweepLineSegment(); diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Label.h geos-3.2.2/source/headers/geos/geomgraph/Label.h --- geos-3.1.0/source/headers/geos/geomgraph/Label.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Label.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Label.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Label.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/Label.java rev. 1.6 (JTS-1.7) + * Last port: geomgraph/Label.java rev. 1.8 (JTS-1.10) * **********************************************************************/ @@ -22,6 +22,7 @@ #ifndef GEOS_GEOMGRAPH_LABEL_H #define GEOS_GEOMGRAPH_LABEL_H +#include #include #include @@ -54,7 +55,7 @@ * with specific geometries. * */ -class Label { +class GEOS_DLL Label { public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Makefile.am geos-3.2.2/source/headers/geos/geomgraph/Makefile.am --- geos-3.1.0/source/headers/geos/geomgraph/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,61 +2,30 @@ #EXTRA_DIST = -# NOTES: -# -# EdgeList.h is needed by OverlayOp.h for composition -# -# PlanarGraph.h is needed by OverlayOp.h for inlines -# -# Depth.h needed by Edge.h -# -# EdgeRing.h needed by operation/overlay/{Minimal,Maximal}EdgeRing.h -# for inheritance, but they are NOT installed -# -# Node.h needed by NodeMap.h for invariant testing -# -# NodeMap.h needed by RelateComputer.h needed by RelateOp.h -# also needed by PlanarGraph.h for typedefs -# -# NodeFactory.h needed by operation/overlay/OverlayNodeFactory.h -# and operation/relate/RelateNodeFactory.h for inheritance. -# Both NOT installed -# -# GraphComponent.h needed by Node.h and Edge.h for inheritance -# -# EdgeEnd.h needed by Node.h for invariant tester -# -# EdgeEndStar.h needed by Node.h for invariant tester -# -# Depth.h needed by Edge.h for composition, which is NOT installed -# -# - geosdir = $(includedir)/geos/geomgraph geos_HEADERS = \ - EdgeEnd.h \ - EdgeEndStar.h \ - EdgeList.h \ - GeometryGraph.h \ - GeometryGraph.inl \ - GraphComponent.h \ - Node.h \ - NodeMap.h \ - PlanarGraph.h - -noinst_HEADERS = \ Depth.h \ DirectedEdge.h \ DirectedEdge.inl \ DirectedEdgeStar.h \ + EdgeEnd.h \ + EdgeEndStar.h \ Edge.h \ EdgeIntersection.h \ EdgeIntersectionList.h \ + EdgeList.h \ EdgeNodingValidator.h \ EdgeRing.h \ + GeometryGraph.h \ + GeometryGraph.inl \ + GraphComponent.h \ Label.h \ NodeFactory.h \ + Node.h \ + NodeMap.h \ + PlanarGraph.h \ Position.h \ Quadrant.h \ - TopologyLocation.h + TopologyLocation.h + diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Makefile.in geos-3.2.2/source/headers/geos/geomgraph/Makefile.in --- geos-3.1.0/source/headers/geos/geomgraph/Makefile.in 2009-03-11 19:13:40.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/geomgraph -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,96 +241,77 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = index #EXTRA_DIST = - -# NOTES: -# -# EdgeList.h is needed by OverlayOp.h for composition -# -# PlanarGraph.h is needed by OverlayOp.h for inlines -# -# Depth.h needed by Edge.h -# -# EdgeRing.h needed by operation/overlay/{Minimal,Maximal}EdgeRing.h -# for inheritance, but they are NOT installed -# -# Node.h needed by NodeMap.h for invariant testing -# -# NodeMap.h needed by RelateComputer.h needed by RelateOp.h -# also needed by PlanarGraph.h for typedefs -# -# NodeFactory.h needed by operation/overlay/OverlayNodeFactory.h -# and operation/relate/RelateNodeFactory.h for inheritance. -# Both NOT installed -# -# GraphComponent.h needed by Node.h and Edge.h for inheritance -# -# EdgeEnd.h needed by Node.h for invariant tester -# -# EdgeEndStar.h needed by Node.h for invariant tester -# -# Depth.h needed by Edge.h for composition, which is NOT installed -# -# geosdir = $(includedir)/geos/geomgraph geos_HEADERS = \ - EdgeEnd.h \ - EdgeEndStar.h \ - EdgeList.h \ - GeometryGraph.h \ - GeometryGraph.inl \ - GraphComponent.h \ - Node.h \ - NodeMap.h \ - PlanarGraph.h - -noinst_HEADERS = \ Depth.h \ DirectedEdge.h \ DirectedEdge.inl \ DirectedEdgeStar.h \ + EdgeEnd.h \ + EdgeEndStar.h \ Edge.h \ EdgeIntersection.h \ EdgeIntersectionList.h \ + EdgeList.h \ EdgeNodingValidator.h \ EdgeRing.h \ + GeometryGraph.h \ + GeometryGraph.inl \ + GraphComponent.h \ Label.h \ NodeFactory.h \ + Node.h \ + NodeMap.h \ + PlanarGraph.h \ Position.h \ Quadrant.h \ - TopologyLocation.h + TopologyLocation.h all: all-recursive @@ -293,14 +320,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geomgraph/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/geomgraph/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/geomgraph/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/geomgraph/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -318,33 +345,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -370,15 +397,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -405,16 +431,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -422,14 +448,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -441,81 +467,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -526,7 +572,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -548,6 +594,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -558,8 +605,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -567,18 +613,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -597,23 +663,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/geomgraph/NodeFactory.h geos-3.2.2/source/headers/geos/geomgraph/NodeFactory.h --- geos-3.1.0/source/headers/geos/geomgraph/NodeFactory.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/NodeFactory.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodeFactory.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: NodeFactory.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/NodeFactory.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_NODEFACTORY_H #define GEOS_GEOMGRAPH_NODEFACTORY_H +#include #include // Forward declarations @@ -33,7 +38,7 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class NodeFactory { +class GEOS_DLL NodeFactory { public: virtual Node* createNode(const geom::Coordinate &coord) const; static const NodeFactory &instance(); diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Node.h geos-3.2.2/source/headers/geos/geomgraph/Node.h --- geos-3.1.0/source/headers/geos/geomgraph/Node.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Node.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Node.h 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: Node.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/Node.java rev. 1.6 (JTS-1.7) + * Last port: geomgraph/Node.java rev. 1.7 (JTS-1.10) * **********************************************************************/ @@ -22,6 +22,7 @@ #ifndef GEOS_GEOMGRAPH_NODE_H #define GEOS_GEOMGRAPH_NODE_H +#include #include // for inheritance #include // for member @@ -52,7 +53,7 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class Node: public GraphComponent { +class GEOS_DLL Node: public GraphComponent { using GraphComponent::setLabel; public: diff -Nru geos-3.1.0/source/headers/geos/geomgraph/NodeMap.h geos-3.2.2/source/headers/geos/geomgraph/NodeMap.h --- geos-3.1.0/source/headers/geos/geomgraph/NodeMap.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/NodeMap.h 2009-12-03 19:36:17.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodeMap.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: NodeMap.h 2773 2009-12-03 19:36:17Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/NodeMap.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_NODEMAP_H #define GEOS_GEOMGRAPH_NODEMAP_H +#include #include #include #include @@ -39,7 +44,7 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class NodeMap{ +class GEOS_DLL NodeMap{ public: typedef std::map container; @@ -97,6 +102,12 @@ } #endif } + +private: + + // Declare type as noncopyable + NodeMap(const NodeMap& other); + NodeMap& operator=(const NodeMap& rhs); }; } // namespace geos.geomgraph diff -Nru geos-3.1.0/source/headers/geos/geomgraph/PlanarGraph.h geos-3.2.2/source/headers/geos/geomgraph/PlanarGraph.h --- geos-3.1.0/source/headers/geos/geomgraph/PlanarGraph.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/PlanarGraph.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PlanarGraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PlanarGraph.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: geomgraph/PlanarGraph.java rev. 1.4 (JTS-1.7) + * Last port: geomgraph/PlanarGraph.java rev. 1.6 (JTS-1.10) * **********************************************************************/ @@ -22,6 +22,7 @@ #ifndef GEOS_GEOMGRAPH_PLANARGRAPH_H #define GEOS_GEOMGRAPH_PLANARGRAPH_H +#include #include #include #include @@ -71,7 +72,7 @@ * different graphs * */ -class PlanarGraph { +class GEOS_DLL PlanarGraph { public: /** \brief diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Position.h geos-3.2.2/source/headers/geos/geomgraph/Position.h --- geos-3.1.0/source/headers/geos/geomgraph/Position.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Position.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Position.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Position.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Position.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_POSITION_H #define GEOS_GEOMGRAPH_POSITION_H +#include #include #include #include @@ -28,7 +33,7 @@ namespace geos { namespace geomgraph { // geos.geomgraph -class Position { +class GEOS_DLL Position { public: enum { /* diff -Nru geos-3.1.0/source/headers/geos/geomgraph/Quadrant.h geos-3.2.2/source/headers/geos/geomgraph/Quadrant.h --- geos-3.1.0/source/headers/geos/geomgraph/Quadrant.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/geomgraph/Quadrant.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Quadrant.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Quadrant.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: geomgraph/Quadrant.java rev. 1.8 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_GEOMGRAPH_QUADRANT_H #define GEOS_GEOMGRAPH_QUADRANT_H +#include #include #include @@ -41,18 +46,30 @@ *

  *
  */
-class Quadrant {
+class GEOS_DLL Quadrant {
+
 public:
+
+        static const int NE = 0;
+        static const int NW = 1;
+        static const int SW = 2;
+        static const int SE = 3;
+
 	/**
 	 * Returns the quadrant of a directed line segment
 	 * (specified as x and y displacements, which cannot both be 0).
+	 *
+	 * @throws IllegalArgumentException if the displacements are both 0
 	 */
 	static int quadrant(double dx, double dy);
 
 	/**
 	 * Returns the quadrant of a directed line segment from p0 to p1.
+	 *
+	 * @throws IllegalArgumentException if the points are equal
 	 */
-	static int quadrant(const geom::Coordinate& p0, const geom::Coordinate& p1);
+	static int quadrant(const geom::Coordinate& p0,
+	                    const geom::Coordinate& p1);
 
 	/**
 	 * Returns true if the quadrants are 1 and 3, or 2 and 4
diff -Nru geos-3.1.0/source/headers/geos/geomgraph/TopologyLocation.h geos-3.2.2/source/headers/geos/geomgraph/TopologyLocation.h
--- geos-3.1.0/source/headers/geos/geomgraph/TopologyLocation.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/geomgraph/TopologyLocation.h	2009-06-08 10:30:55.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: TopologyLocation.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: TopologyLocation.h 2557 2009-06-08 09:30:55Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -14,7 +14,7 @@
  *
  **********************************************************************
  *
- * Last port: geomgraph/TopologyLocation.java rev. 1.6 (JTS-1.7)
+ * Last port: geomgraph/TopologyLocation.java rev. 1.6 (JTS-1.10)
  *
  **********************************************************************/
 
@@ -22,6 +22,7 @@
 #ifndef GEOS_GEOMGRAPH_TOPOLOGYLOCATION_H
 #define GEOS_GEOMGRAPH_TOPOLOGYLOCATION_H
 
+#include 
 #include 
 
 #include 
@@ -50,7 +51,7 @@
  * The labelling is stored in an array location[j] where
  * where j has the values ON, LEFT, RIGHT
  */
-class TopologyLocation {
+class GEOS_DLL TopologyLocation {
 
 public:
 
diff -Nru geos-3.1.0/source/headers/geos/geom.h geos-3.2.2/source/headers/geos/geom.h
--- geos-3.1.0/source/headers/geos/geom.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/geom.h	2009-12-14 18:58:24.000000000 +0000
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: geom.h 2045 2007-12-19 20:18:24Z mloskot $
+ * $Id: geom.h 2825 2009-12-14 18:58:24Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -32,7 +32,8 @@
  * API and the ABI of the library during performance improvements
  * that will likely change classes definitions.
  *
- * If you prefer troubles you can use the \ref cpp_iface.
+ * If you don't care about adapting/rebuilding your client code
+ * you can still use the \ref cpp_iface.
  */
 
 /** \page c_iface C wrapper interface
@@ -55,7 +56,7 @@
  *
  * \section Overview
  *
- * Main class is geos::Geometry, from which all geometry types
+ * Main class is geos::geom::Geometry, from which all geometry types
  * derive.
  *
  * Construction and destruction of Geometries is done
@@ -82,7 +83,7 @@
  * Internal exceptions are thrown as instances geos::util::GEOSException or
  * derived classes. GEOSException derives from std::exception.
  *
- * Note that prior to version 3.0.0, GEOSException were trown by
+ * Note that prior to version 3.0.0, GEOSException were thrown by
  * pointer, and did not derive from std::exception.
  *
  */ 
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/Bintree.h geos-3.2.2/source/headers/geos/index/bintree/Bintree.h
--- geos-3.1.0/source/headers/geos/index/bintree/Bintree.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/Bintree.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: Bintree.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: Bintree.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -16,6 +16,7 @@
 #ifndef GEOS_IDX_BINTREE_BINTREE_H
 #define GEOS_IDX_BINTREE_BINTREE_H
 
+#include 
 #include 
 
 // Forward declarations
@@ -48,11 +49,22 @@
  * This index is different to the Interval Tree of Edelsbrunner
  * or the Segment Tree of Bentley.
  */
-class Bintree {
+class GEOS_DLL Bintree {
 
 public:
 
-	static Interval* ensureExtent(Interval *itemInterval, double minExtent);
+	/**
+	 * Ensure that the Interval for the inserted item has non-zero extents.
+	 * Use the current minExtent to pad it, if necessary
+	 *
+	 * NOTE: in GEOS this function always return a newly allocated object
+	 *       with ownership transferred to caller. TODO: change this ?
+	 *
+	 * @param itemInterval
+	 *      Source interval, ownership left to caller, no references hold.
+	 */
+	static Interval* ensureExtent(const Interval *itemInterval,
+	                                                 double minExtent);
 
 	Bintree();
 
@@ -64,7 +76,13 @@
 
 	int nodeSize();
 
-	void insert(Interval *itemInterval,void* item);
+	/// @param itemInterval
+	///     Ownership left to caller, NO reference hold by this class.
+	///
+	/// @param item
+	///     Ownership left to caller, reference kept by this class.
+	///
+	void insert(Interval *itemInterval, void* item);
 
 	std::vector* iterator();
 
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/Interval.h geos-3.2.2/source/headers/geos/index/bintree/Interval.h
--- geos-3.1.0/source/headers/geos/index/bintree/Interval.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/Interval.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: Interval.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: Interval.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -16,12 +16,14 @@
 #ifndef GEOS_IDX_BINTREE_INTERVAL_H
 #define GEOS_IDX_BINTREE_INTERVAL_H
 
+#include 
+
 namespace geos {
 namespace index { // geos::index
 namespace bintree { // geos::index::bintree
 
 /// Represents an (1-dimensional) closed interval on the Real number line.
-class Interval {
+class GEOS_DLL Interval {
 
 public:
 
@@ -33,27 +35,28 @@
 
 	Interval(double nmin, double nmax);
 
-	Interval(Interval *interval);
+	/// TODO: drop this, rely on copy ctor
+	Interval(const Interval *interval);
 
 	void init(double nmin, double nmax);
 
-	double getMin();
+	double getMin() const;
 
-	double getMax();
+	double getMax() const;
 
-	double getWidth();
+	double getWidth() const;
 
 	void expandToInclude(Interval *interval);
 
-	bool overlaps(Interval *interval);
+	bool overlaps(const Interval *interval) const;
 
-	bool overlaps(double nmin, double nmax);
+	bool overlaps(double nmin, double nmax) const;
 
-	bool contains(Interval *interval);
+	bool contains(const Interval *interval) const;
 
-	bool contains(double nmin, double nmax);
+	bool contains(double nmin, double nmax) const;
 
-	bool contains(double p);
+	bool contains(double p) const;
 };
 
 } // namespace geos::index::bintree
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/Key.h geos-3.2.2/source/headers/geos/index/bintree/Key.h
--- geos-3.1.0/source/headers/geos/index/bintree/Key.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/Key.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: Key.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: Key.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -16,6 +16,8 @@
 #ifndef GEOS_IDX_BINTREE_KEY_H
 #define GEOS_IDX_BINTREE_KEY_H
 
+#include 
+
 // Forward declarations
 namespace geos {
 	namespace index { 
@@ -35,7 +37,7 @@
  * It contains a lower-left point and a level number.
  * The level number is the power of two for the size of the node envelope
  */
-class Key {
+class GEOS_DLL Key {
 
 public:
 
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/Makefile.am geos-3.2.2/source/headers/geos/index/bintree/Makefile.am
--- geos-3.1.0/source/headers/geos/index/bintree/Makefile.am	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/Makefile.am	2009-06-08 10:30:55.000000000 +0100
@@ -3,18 +3,13 @@
 EXTRA_DIST = 
 
 
-# NOTES:
-#
-# Interval.h is needed by algorithm/MCPointInRing.h for composition
-
 geosdir = $(includedir)/geos/index/bintree
 
 geos_HEADERS =		\
 	Bintree.h	\
-	Interval.h
-
-noinst_HEADERS =	\
+	Interval.h	\
 	Key.h		\
 	NodeBase.h	\
 	Node.h		\
-	Root.h
+	Root.h		
+
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/Makefile.in geos-3.2.2/source/headers/geos/index/bintree/Makefile.in
--- geos-3.1.0/source/headers/geos/index/bintree/Makefile.in	2009-03-11 19:13:41.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/Makefile.in	2010-04-18 16:08:10.000000000 +0100
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -14,15 +15,12 @@
 
 @SET_MAKE@
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -38,11 +36,16 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = source/headers/geos/index/bintree
-DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \
 	$(top_srcdir)/macros/ac_python_devel.m4 \
+	$(top_srcdir)/macros/libtool.m4 \
+	$(top_srcdir)/macros/ltoptions.m4 \
+	$(top_srcdir)/macros/ltsugar.m4 \
+	$(top_srcdir)/macros/ltversion.m4 \
+	$(top_srcdir)/macros/lt~obsolete.m4 \
 	$(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \
 	$(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -51,31 +54,75 @@
 CONFIG_HEADER = $(top_builddir)/source/headers/config.h \
 	$(top_builddir)/source/headers/geos/platform.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(geosdir)"
-geosHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(geos_HEADERS) $(noinst_HEADERS)
+HEADERS = $(geos_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
 AR = @AR@
 AS = @AS@
@@ -103,21 +150,17 @@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
-ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@
-ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@
-ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@
-ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@
-ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@
-ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
 INLINE_FLAGS = @INLINE_FLAGS@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -126,20 +169,28 @@
 INTERFACE_CURRENT = @INTERFACE_CURRENT@
 INTERFACE_REVISION = @INTERFACE_REVISION@
 JTS_PORT = @JTS_PORT@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PYTHON = @PYTHON@
@@ -160,6 +211,7 @@
 RUBY_SHARED_LIB = @RUBY_SHARED_LIB@
 RUBY_SO_NAME = @RUBY_SO_NAME@
 RUBY_VERSION = @RUBY_VERSION@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -171,19 +223,13 @@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MINOR = @VERSION_MINOR@
 VERSION_PATCH = @VERSION_PATCH@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -195,52 +241,59 @@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 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@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 SUBDIRS = 
 EXTRA_DIST = 
-
-# NOTES:
-#
-# Interval.h is needed by algorithm/MCPointInRing.h for composition
 geosdir = $(includedir)/geos/index/bintree
 geos_HEADERS = \
 	Bintree.h	\
-	Interval.h
-
-noinst_HEADERS = \
+	Interval.h	\
 	Key.h		\
 	NodeBase.h	\
 	Node.h		\
-	Root.h
+	Root.h		
 
 all: all-recursive
 
@@ -249,14 +302,14 @@
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  source/headers/geos/index/bintree/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  source/headers/geos/index/bintree/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/bintree/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu source/headers/geos/index/bintree/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -274,33 +327,33 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
 install-geosHEADERS: $(geos_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)"
-	@list='$(geos_HEADERS)'; for p in $$list; do \
+	test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)"
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \
-	  $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \
 	done
 
 uninstall-geosHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(geos_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(geosdir)/$$f"; \
-	done
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(geosdir)" && rm -f $$files
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -326,15 +379,14 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
+$(RECURSIVE_CLEAN_TARGETS):
 	@failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -361,16 +413,16 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -378,14 +430,14 @@
 	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; }'`; \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -397,81 +449,101 @@
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	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 \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(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" \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__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; \
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
 	  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 \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -482,7 +554,7 @@
 installdirs: installdirs-recursive
 installdirs-am:
 	for dir in "$(DESTDIR)$(geosdir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -504,6 +576,7 @@
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -514,8 +587,7 @@
 
 distclean: distclean-recursive
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
 
 dvi: dvi-recursive
 
@@ -523,18 +595,38 @@
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-geosHEADERS
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -553,23 +645,26 @@
 
 ps-am:
 
-uninstall-am: uninstall-geosHEADERS uninstall-info-am
+uninstall-am: uninstall-geosHEADERS
 
-uninstall-info: uninstall-info-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-libtool clean-recursive ctags \
-	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am check check-am clean clean-generic clean-libtool \
+	ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-geosHEADERS install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip installcheck installcheck-am installdirs \
 	installdirs-am maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-generic \
-	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am \
-	uninstall-geosHEADERS uninstall-info-am
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-geosHEADERS
+
 
 # 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.
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/NodeBase.h geos-3.2.2/source/headers/geos/index/bintree/NodeBase.h
--- geos-3.1.0/source/headers/geos/index/bintree/NodeBase.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/NodeBase.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: NodeBase.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: NodeBase.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -16,6 +16,7 @@
 #ifndef GEOS_IDX_BINTREE_NODEBASE_H
 #define GEOS_IDX_BINTREE_NODEBASE_H
 
+#include 
 #include 
 
 // Forward declarations
@@ -33,7 +34,7 @@
 namespace bintree { // geos::index::bintree
 
 /// The base class for nodes in a Bintree.
-class NodeBase {
+class GEOS_DLL NodeBase {
 
 public:
 
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/Node.h geos-3.2.2/source/headers/geos/index/bintree/Node.h
--- geos-3.1.0/source/headers/geos/index/bintree/Node.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/Node.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: Node.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: Node.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -16,6 +16,7 @@
 #ifndef GEOS_IDX_BINTREE_NODE_H
 #define GEOS_IDX_BINTREE_NODE_H
 
+#include 
 #include  // for inheritance
 
 // Forward declarations
@@ -32,7 +33,7 @@
 namespace bintree { // geos::index::bintree
 
 /// A node of a Bintree.
-class Node: public NodeBase {
+class GEOS_DLL Node: public NodeBase {
 
 public:
 
diff -Nru geos-3.1.0/source/headers/geos/index/bintree/Root.h geos-3.2.2/source/headers/geos/index/bintree/Root.h
--- geos-3.1.0/source/headers/geos/index/bintree/Root.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/bintree/Root.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: Root.h 1986 2007-06-08 15:27:42Z mloskot $
+ * $Id: Root.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -16,6 +16,7 @@
 #ifndef GEOS_IDX_BINTREE_ROOT_H
 #define GEOS_IDX_BINTREE_ROOT_H
 
+#include 
 #include  // for inheritance
 
 // Forward declarations
@@ -38,7 +39,7 @@
  * It is centred at the origin,
  * and does not have a defined extent.
  */
-class Root: public NodeBase {
+class GEOS_DLL Root: public NodeBase {
 
 private:
 
@@ -55,7 +56,13 @@
 
 	~Root() {}
 
-	void insert(Interval *itemInterval,void* item);
+	/// @param itemInterval
+	///     Ownership left to caller, references kept in this class.
+	///
+	/// @param item
+	///     Ownership left to caller, references kept in this class.
+	///
+	void insert(Interval *itemInterval, void* item);
 
 protected:
 
diff -Nru geos-3.1.0/source/headers/geos/index/chain/Makefile.am geos-3.2.2/source/headers/geos/index/chain/Makefile.am
--- geos-3.1.0/source/headers/geos/index/chain/Makefile.am	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/chain/Makefile.am	2009-06-08 10:30:55.000000000 +0100
@@ -2,20 +2,11 @@
 
 EXTRA_DIST = 
 
-# NOTES:
-#
-# MonotoneChainSelectAction.h needed by algorithm/MCPointInRing.h
-#		for inheritance
-# MonotoneChainOverlapAction.h needed by algorithm/MCIndexNoder.h
-#		for inheritance
-#
-
 geosdir = $(includedir)/geos/index/chain
 
 geos_HEADERS = \
-	MonotoneChain.h	\
+	MonotoneChain.h			\
+	MonotoneChainBuilder.h		\
 	MonotoneChainOverlapAction.h	\
 	MonotoneChainSelectAction.h
 
-noinst_HEADERS = \
-	MonotoneChainBuilder.h
diff -Nru geos-3.1.0/source/headers/geos/index/chain/Makefile.in geos-3.2.2/source/headers/geos/index/chain/Makefile.in
--- geos-3.1.0/source/headers/geos/index/chain/Makefile.in	2009-03-11 19:13:45.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/chain/Makefile.in	2010-04-18 16:08:10.000000000 +0100
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -14,15 +15,12 @@
 
 @SET_MAKE@
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -38,11 +36,16 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = source/headers/geos/index/chain
-DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \
 	$(top_srcdir)/macros/ac_python_devel.m4 \
+	$(top_srcdir)/macros/libtool.m4 \
+	$(top_srcdir)/macros/ltoptions.m4 \
+	$(top_srcdir)/macros/ltsugar.m4 \
+	$(top_srcdir)/macros/ltversion.m4 \
+	$(top_srcdir)/macros/lt~obsolete.m4 \
 	$(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \
 	$(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -51,31 +54,75 @@
 CONFIG_HEADER = $(top_builddir)/source/headers/config.h \
 	$(top_builddir)/source/headers/geos/platform.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(geosdir)"
-geosHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(geos_HEADERS) $(noinst_HEADERS)
+HEADERS = $(geos_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
 AR = @AR@
 AS = @AS@
@@ -103,21 +150,17 @@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
-ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@
-ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@
-ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@
-ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@
-ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@
-ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
 INLINE_FLAGS = @INLINE_FLAGS@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -126,20 +169,28 @@
 INTERFACE_CURRENT = @INTERFACE_CURRENT@
 INTERFACE_REVISION = @INTERFACE_REVISION@
 JTS_PORT = @JTS_PORT@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PYTHON = @PYTHON@
@@ -160,6 +211,7 @@
 RUBY_SHARED_LIB = @RUBY_SHARED_LIB@
 RUBY_SO_NAME = @RUBY_SO_NAME@
 RUBY_VERSION = @RUBY_VERSION@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -171,19 +223,13 @@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MINOR = @VERSION_MINOR@
 VERSION_PATCH = @VERSION_PATCH@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -195,55 +241,58 @@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 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@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 SUBDIRS = 
 EXTRA_DIST = 
-
-# NOTES:
-#
-# MonotoneChainSelectAction.h needed by algorithm/MCPointInRing.h
-#		for inheritance
-# MonotoneChainOverlapAction.h needed by algorithm/MCIndexNoder.h
-#		for inheritance
-#
 geosdir = $(includedir)/geos/index/chain
 geos_HEADERS = \
-	MonotoneChain.h	\
+	MonotoneChain.h			\
+	MonotoneChainBuilder.h		\
 	MonotoneChainOverlapAction.h	\
 	MonotoneChainSelectAction.h
 
-noinst_HEADERS = \
-	MonotoneChainBuilder.h
-
 all: all-recursive
 
 .SUFFIXES:
@@ -251,14 +300,14 @@
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  source/headers/geos/index/chain/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  source/headers/geos/index/chain/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/chain/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu source/headers/geos/index/chain/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -276,33 +325,33 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
 install-geosHEADERS: $(geos_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)"
-	@list='$(geos_HEADERS)'; for p in $$list; do \
+	test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)"
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \
-	  $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \
 	done
 
 uninstall-geosHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(geos_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(geosdir)/$$f"; \
-	done
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(geosdir)" && rm -f $$files
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -328,15 +377,14 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
+$(RECURSIVE_CLEAN_TARGETS):
 	@failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -363,16 +411,16 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -380,14 +428,14 @@
 	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; }'`; \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -399,81 +447,101 @@
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	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 \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(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" \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__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; \
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
 	  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 \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -484,7 +552,7 @@
 installdirs: installdirs-recursive
 installdirs-am:
 	for dir in "$(DESTDIR)$(geosdir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -506,6 +574,7 @@
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -516,8 +585,7 @@
 
 distclean: distclean-recursive
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
 
 dvi: dvi-recursive
 
@@ -525,18 +593,38 @@
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-geosHEADERS
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -555,23 +643,26 @@
 
 ps-am:
 
-uninstall-am: uninstall-geosHEADERS uninstall-info-am
+uninstall-am: uninstall-geosHEADERS
 
-uninstall-info: uninstall-info-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-libtool clean-recursive ctags \
-	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am check check-am clean clean-generic clean-libtool \
+	ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-geosHEADERS install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip installcheck installcheck-am installdirs \
 	installdirs-am maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-generic \
-	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am \
-	uninstall-geosHEADERS uninstall-info-am
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-geosHEADERS
+
 
 # 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.
diff -Nru geos-3.1.0/source/headers/geos/index/chain/MonotoneChainBuilder.h geos-3.2.2/source/headers/geos/index/chain/MonotoneChainBuilder.h
--- geos-3.1.0/source/headers/geos/index/chain/MonotoneChainBuilder.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/chain/MonotoneChainBuilder.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: MonotoneChainBuilder.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: MonotoneChainBuilder.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -11,11 +11,16 @@
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: index/chain/MonotoneChainBuilder.java rev 1.12 (JTS-1.10)
+ *
  **********************************************************************/
 
 #ifndef GEOS_IDX_CHAIN_MONOTONECHAINBUILDER_H
 #define GEOS_IDX_CHAIN_MONOTONECHAINBUILDER_H
 
+#include 
 #include 
 
 // Forward declarations
@@ -35,13 +40,12 @@
 namespace chain { // geos::index::chain
 
 /** \brief
- * A MonotoneChainBuilder implements functions to determine the monotone chains
- * in a sequence of points.
- *
- * TODO: use vector instead
+ * Constructs {@link MonotoneChain}s
+ * for sequences of {@link Coordinate}s.
  *
+ * TODO: use vector instead ?
  */
-class MonotoneChainBuilder {
+class GEOS_DLL MonotoneChainBuilder {
 
 public:
 
@@ -73,17 +77,28 @@
 	/** \brief
 	 * Fill the given vector with start/end indexes of the monotone chains
 	 * for the given CoordinateSequence.
-	 * The last entry in the array points to the end point of the point array,
+	 * The last entry in the array points to the end point of the point
+	 * array,
 	 * for use as a sentinel.
 	 */
-	static void getChainStartIndices(const geom::CoordinateSequence *pts,
-			std::vector& startIndexList);
+	static void getChainStartIndices(const geom::CoordinateSequence& pts,
+			std::vector& startIndexList);
 
-	/** \brief
+private:
+
+	/**
+	 * Finds the index of the last point in a monotone chain
+	 * starting at a given point.
+	 * Any repeated points (0-length segments) will be included
+	 * in the monotone chain returned.
+	 *
 	 * @return the index of the last point in the monotone chain
-	 * starting at start.
+	 *         starting at start.
+	 *
+	 * NOTE: aborts if 'start' is >= pts.getSize()
 	 */
-	static int findChainEnd(const geom::CoordinateSequence *pts, int start);
+	static size_t findChainEnd(const geom::CoordinateSequence& pts,
+	                                                   size_t start);
 };
 
 } // namespace geos::index::chain
diff -Nru geos-3.1.0/source/headers/geos/index/chain/MonotoneChain.h geos-3.2.2/source/headers/geos/index/chain/MonotoneChain.h
--- geos-3.1.0/source/headers/geos/index/chain/MonotoneChain.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/chain/MonotoneChain.h	2009-12-03 19:36:56.000000000 +0000
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: MonotoneChain.h 2194 2008-09-23 23:01:00Z mloskot $
+ * $Id: MonotoneChain.h 2774 2009-12-03 19:36:56Z mloskot $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -11,13 +11,20 @@
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: index/chain/MonotoneChain.java rev. 1.15 (JTS-1.10)
+ *
  **********************************************************************/
 
 #ifndef GEOS_IDX_CHAIN_MONOTONECHAIN_H
 #define GEOS_IDX_CHAIN_MONOTONECHAIN_H
 
+#include 
 #include  // for inline
 
+#include  // for auto_ptr
+
 // Forward declarations
 namespace geos {
 	namespace geom {
@@ -38,21 +45,22 @@
 namespace chain { // geos::index::chain
 
 /** \brief
- * MonotoneChains are a way of partitioning the segments of a linestring to
+ * Monotone Chains are a way of partitioning the segments of a linestring to
  * allow for fast searching of intersections.
  *
  * They have the following properties:
  * 
- * - the segments within a monotone chain will never intersect each other
- * - the envelope of any contiguous subset of the segments in a monotone chain
- *   is equal to the envelope of the endpoints of the subset.
+ * - the segments within a monotone chain never intersect each other
+ * - the envelope of any contiguous subset of the segments in a monotone
+ *   chain is equal to the envelope of the endpoints of the subset.
  * 
- * Property 1 means that there is no need to test pairs of segments from within
- * the same monotone chain for intersection.
- * Property 2 allows
- * binary search to be used to find the intersection points of two monotone chains.
- * For many types of real-world data, these properties eliminate a large number of
- * segment comparisons, producing substantial speed gains.
+ * Property 1 means that there is no need to test pairs of segments from
+ * within the same monotone chain for intersection.
+ * Property 2 allows an efficient binary search to be used to find the
+ * intersection points of two monotone chains.
+ *
+ * For many types of real-world data, these properties eliminate
+ * a large number of segment comparisons, producing substantial speed gains.
  *
  * One of the goals of this implementation of MonotoneChains is to be
  * as space and time efficient as possible. One design choice that aids this
@@ -74,30 +82,45 @@
  * returned by the query.
  * However, it does mean that the queries are not thread-safe.
  *
- * Last port: index/chain/MonotoneChain.java rev. 1.13 (JTS-1.7)
  */
-class MonotoneChain
+class GEOS_DLL MonotoneChain
 {
 public:
 
-	MonotoneChain(const geom::CoordinateSequence *newPts,
-                  int nstart, int nend, void* nContext);
+	/// @param pts
+	///   Ownership left to caller, this class holds a reference.
+	///
+	/// @param start
+	///
+	/// @param end
+	///
+	/// @param context
+	///   Ownership left to caller, this class holds a reference.
+	///
+	MonotoneChain(const geom::CoordinateSequence& pts,
+                  size_t start, size_t end, void* context);
 
 	~MonotoneChain();
 
-	geom::Envelope* getEnvelope();
+	/// Returned envelope is owned by this class
+	const geom::Envelope& getEnvelope() const;
 
-	int getStartIndex() { return start; }
+	size_t getStartIndex() const { return start; }
 
-	int getEndIndex() { return end; }
+	size_t getEndIndex() const { return end; }
 
-	void getLineSegment(unsigned int index, geom::LineSegment *ls);
+	/** \brief
+	 *  Set given LineSegment with points of the segment starting
+	 *  at the given index.
+	 */
+	void getLineSegment(size_t index, geom::LineSegment& ls) const;
 
 	/**
 	 * Return the subsequence of coordinates forming this chain.
 	 * Allocates a new CoordinateSequence to hold the Coordinates
+	 *
 	 */
-	geom::CoordinateSequence* getCoordinates();
+	std::auto_ptr getCoordinates() const;
 
 	/**
 	 * Determine all the line segments in the chain whose envelopes overlap
@@ -111,29 +134,42 @@
 
 	void setId(int nId) { id=nId; }
 
-	inline int getId() { return id; }
+	inline int getId() const { return id; }
 
 	void* getContext() { return context; }
 
 private:
 
 	void computeSelect(const geom::Envelope& searchEnv,
-			unsigned int start0,
-			unsigned int end0,
+			size_t start0,
+			size_t end0,
 			MonotoneChainSelectAction& mcs);
 
-	void computeOverlaps(int start0, int end0, MonotoneChain* mc,
-			int start1, int end1, MonotoneChainOverlapAction* mco);
+	void computeOverlaps(size_t start0, size_t end0, MonotoneChain& mc,
+			     size_t start1, size_t end1,
+	                     MonotoneChainOverlapAction& mco);
+
+	/// Externally owned 
+	const geom::CoordinateSequence& pts;
+
+	/// Owned by this class, lazely created
+	mutable geom::Envelope* env;
 
-	const geom::CoordinateSequence* pts;
-    geom::Envelope* env;
 	/// user-defined information
 	void* context;
-    int start;
-    int end;
-    /// useful for optimizing chain comparisons
+
+	/// Index of chain start vertex into the CoordinateSequence, 0 based.
+	size_t start;
+
+	/// Index of chain end vertex into the CoordinateSequence, 0 based.
+	size_t end;
+
+	/// useful for optimizing chain comparisons
 	int id;
 
+    // Declare type as noncopyable
+    MonotoneChain(const MonotoneChain& other);
+    MonotoneChain& operator=(const MonotoneChain& rhs);
 };
 
 } // namespace geos::index::chain
diff -Nru geos-3.1.0/source/headers/geos/index/chain/MonotoneChainOverlapAction.h geos-3.2.2/source/headers/geos/index/chain/MonotoneChainOverlapAction.h
--- geos-3.1.0/source/headers/geos/index/chain/MonotoneChainOverlapAction.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/chain/MonotoneChainOverlapAction.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: MonotoneChainOverlapAction.h 1986 2007-06-08 15:27:42Z mloskot $
+ * $Id: MonotoneChainOverlapAction.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -11,18 +11,22 @@
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: index/chain/MonotoneChainOverlapAction.java rev. 1.6 (JTS-1.10)
+ *
  **********************************************************************/
 
 #ifndef GEOS_IDX_CHAIN_MONOTONECHAINOVERLAPACTION_H
 #define GEOS_IDX_CHAIN_MONOTONECHAINOVERLAPACTION_H
 
+#include 
+#include 
+#include 
+
 
 // Forward declarations
 namespace geos {
-	namespace geom {
-		class Envelope;
-		class LineSegment;
-	}
 	namespace index { 
 		namespace chain { 
 			class MonotoneChain;
@@ -38,42 +42,44 @@
  * The action for the internal iterator for performing
  * overlap queries on a MonotoneChain
  */
-class MonotoneChainOverlapAction {
+class GEOS_DLL MonotoneChainOverlapAction {
 
 protected:
 
-	geom::LineSegment *overlapSeg1;
+	geom::LineSegment overlapSeg1;
 
-	geom::LineSegment *overlapSeg2;
+	geom::LineSegment overlapSeg2;
 
 public:
 
-	MonotoneChainOverlapAction();
+	MonotoneChainOverlapAction() {};
 
-	virtual ~MonotoneChainOverlapAction();
+	virtual ~MonotoneChainOverlapAction() {};
 
 	/**
 	 * This function can be overridden if the original chains are needed
 	 *
-	 * @param start1 the index of the start of the overlapping segment from mc1
-	 * @param start2 the index of the start of the overlapping segment from mc2
+	 * @param start1 the index of the start of the overlapping segment
+	 *               from mc1
+	 * @param start2 the index of the start of the overlapping segment
+	 *               from mc2
 	 */
-	virtual void overlap(MonotoneChain *mc1, int start1,
-			MonotoneChain *mc2, int start2);
+	virtual void overlap(MonotoneChain& mc1, size_t start1,
+	                     MonotoneChain& mc2, size_t start2);
 
 	/**
-	 * This is a convenience function which can be overridden to obtain the actual
-	 * line segments which overlap
+	 * This is a convenience function which can be overridden to
+	 * obtain the actual line segments which overlap
 	 * @param seg1
 	 * @param seg2
 	 */
-	virtual void overlap(geom::LineSegment* /*newSeg1*/,
-			geom::LineSegment* /*newSeg2*/)
+	virtual void overlap(const geom::LineSegment& /*seg1*/,
+	                     const geom::LineSegment& /*seg2*/)
 	{}
 
 	// these envelopes are used during the MonotoneChain search process
-	geom::Envelope *tempEnv1;
-	geom::Envelope *tempEnv2;
+	geom::Envelope tempEnv1;
+	geom::Envelope tempEnv2;
 };
 
 } // namespace geos::index::chain
diff -Nru geos-3.1.0/source/headers/geos/index/chain/MonotoneChainSelectAction.h geos-3.2.2/source/headers/geos/index/chain/MonotoneChainSelectAction.h
--- geos-3.1.0/source/headers/geos/index/chain/MonotoneChainSelectAction.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/chain/MonotoneChainSelectAction.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: MonotoneChainSelectAction.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: MonotoneChainSelectAction.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -11,18 +11,22 @@
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: index/chain/MonotoneChainSelectAction.java rev. 1.6 (JTS-1.10)
+ *
  **********************************************************************/
 
 #ifndef GEOS_IDX_CHAIN_MONOTONECHAINSELECTACTION_H
 #define GEOS_IDX_CHAIN_MONOTONECHAINSELECTACTION_H
 
+#include 
+#include  // composition
+#include  // composition
+
 
 // Forward declarations
 namespace geos {
-	namespace geom {
-		class Envelope;
-		class LineSegment;
-	}
 	namespace index { 
 		namespace chain { 
 			class MonotoneChain;
@@ -38,32 +42,33 @@
  *  The action for the internal iterator for performing
  *  Envelope select queries on a MonotoneChain
  *
- * Last port: index/chain/MonotoneChainSelectAction.java rev. 1.6 (JTS-1.7)
  */
-class MonotoneChainSelectAction {
+class GEOS_DLL MonotoneChainSelectAction {
 
 protected:
 
-	geom::LineSegment* selectedSegment;
+	geom::LineSegment selectedSegment;
 
 public:
 
-	MonotoneChainSelectAction();
+	MonotoneChainSelectAction() {}
 
-	virtual ~MonotoneChainSelectAction();
+	virtual ~MonotoneChainSelectAction() {}
 
 	/// This function can be overridden if the original chain is needed
 	virtual void select(MonotoneChain& mc, unsigned int start);
 
 	/**
-	 * This is a convenience function which can be overridden to obtain the actual
-	 * line segment which is selected
+	 * This is a convenience function which can be overridden
+	 * to obtain the actual line segment which is selected
+	 *
 	 * @param seg
 	 */
-	virtual void select(geom::LineSegment* newSeg)=0;
+	virtual void select(const geom::LineSegment& seg) = 0;
 
 	// these envelopes are used during the MonotoneChain search process
-	geom::Envelope* tempEnv1;
+	// should only be visible by classes in this package
+	geom::Envelope tempEnv1;
 };
 
 
diff -Nru geos-3.1.0/source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h geos-3.2.2/source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h
--- geos-3.1.0/source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/intervalrtree/IntervalRTreeLeafNode.h	2009-06-05 10:28:04.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: IntervalRTreeLeafNode.h 2263 2009-01-29 18:56:00Z mloskot $
+ * $Id: IntervalRTreeLeafNode.h 2540 2009-06-05 09:28:04Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -36,10 +36,13 @@
 class IntervalRTreeLeafNode : public IntervalRTreeNode
 {
 private:
+	/// externally owned
 	void * item;
 
 protected:
 public:
+
+	/// @param item externally owned
 	IntervalRTreeLeafNode( double min, double max, void * item)
 	:	IntervalRTreeNode( min, max),
 		item( item)
@@ -47,7 +50,6 @@
 
 	~IntervalRTreeLeafNode()
 	{
-		delete item;
 	}
 	
 	void query( double queryMin, double queryMax, index::ItemVisitor * visitor) const;
diff -Nru geos-3.1.0/source/headers/geos/index/intervalrtree/IntervalRTreeNode.h geos-3.2.2/source/headers/geos/index/intervalrtree/IntervalRTreeNode.h
--- geos-3.1.0/source/headers/geos/index/intervalrtree/IntervalRTreeNode.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/intervalrtree/IntervalRTreeNode.h	2009-06-06 22:14:51.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: IntervalRTreeNode.h 2263 2009-01-29 18:56:00Z mloskot $
+ * $Id: IntervalRTreeNode.h 2554 2009-06-06 21:14:51Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -17,6 +17,7 @@
 #ifndef GEOS_INDEX_INTERVALRTREE_INTERVALRTREENODE_H
 #define GEOS_INDEX_INTERVALRTREE_INTERVALRTREENODE_H
 
+#include 
 #include 
 #include 
 
@@ -51,8 +52,8 @@
 	typedef std::vector ConstVect;
 
 	IntervalRTreeNode()
-	:	min( std::numeric_limits::min() ),
-		max( std::numeric_limits::max() )
+	:	min( DoubleInfinity ),
+		max( DoubleNegInfinity )
 	{ }
 
 	IntervalRTreeNode( double min, double max)
diff -Nru geos-3.1.0/source/headers/geos/index/intervalrtree/Makefile.am geos-3.2.2/source/headers/geos/index/intervalrtree/Makefile.am
--- geos-3.1.0/source/headers/geos/index/intervalrtree/Makefile.am	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/intervalrtree/Makefile.am	2009-06-08 10:30:55.000000000 +0100
@@ -4,10 +4,9 @@
 
 geosdir = $(includedir)/geos/index/intervalrtree
 
-geos_HEADERS = 
-
-noinst_HEADERS = \
+geos_HEADERS = \
 	IntervalRTreeBranchNode.h \
 	IntervalRTreeLeafNode.h \
 	IntervalRTreeNode.h \
 	SortedPackedIntervalRTree.h
+
diff -Nru geos-3.1.0/source/headers/geos/index/intervalrtree/Makefile.in geos-3.2.2/source/headers/geos/index/intervalrtree/Makefile.in
--- geos-3.1.0/source/headers/geos/index/intervalrtree/Makefile.in	2009-03-11 19:13:45.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/intervalrtree/Makefile.in	2010-04-18 16:08:10.000000000 +0100
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -14,15 +15,12 @@
 
 @SET_MAKE@
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -38,11 +36,16 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = source/headers/geos/index/intervalrtree
-DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \
 	$(top_srcdir)/macros/ac_python_devel.m4 \
+	$(top_srcdir)/macros/libtool.m4 \
+	$(top_srcdir)/macros/ltoptions.m4 \
+	$(top_srcdir)/macros/ltsugar.m4 \
+	$(top_srcdir)/macros/ltversion.m4 \
+	$(top_srcdir)/macros/lt~obsolete.m4 \
 	$(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \
 	$(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -51,31 +54,75 @@
 CONFIG_HEADER = $(top_builddir)/source/headers/config.h \
 	$(top_builddir)/source/headers/geos/platform.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(geosdir)"
-geosHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(geos_HEADERS) $(noinst_HEADERS)
+HEADERS = $(geos_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
 AR = @AR@
 AS = @AS@
@@ -103,21 +150,17 @@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
-ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@
-ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@
-ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@
-ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@
-ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@
-ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
 INLINE_FLAGS = @INLINE_FLAGS@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -126,20 +169,28 @@
 INTERFACE_CURRENT = @INTERFACE_CURRENT@
 INTERFACE_REVISION = @INTERFACE_REVISION@
 JTS_PORT = @JTS_PORT@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PYTHON = @PYTHON@
@@ -160,6 +211,7 @@
 RUBY_SHARED_LIB = @RUBY_SHARED_LIB@
 RUBY_SO_NAME = @RUBY_SO_NAME@
 RUBY_VERSION = @RUBY_VERSION@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -171,19 +223,13 @@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MINOR = @VERSION_MINOR@
 VERSION_PATCH = @VERSION_PATCH@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -195,41 +241,53 @@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 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@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 SUBDIRS = 
 EXTRA_DIST = 
 geosdir = $(includedir)/geos/index/intervalrtree
-geos_HEADERS = 
-noinst_HEADERS = \
+geos_HEADERS = \
 	IntervalRTreeBranchNode.h \
 	IntervalRTreeLeafNode.h \
 	IntervalRTreeNode.h \
@@ -242,14 +300,14 @@
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  source/headers/geos/index/intervalrtree/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  source/headers/geos/index/intervalrtree/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/intervalrtree/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu source/headers/geos/index/intervalrtree/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -267,33 +325,33 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
 install-geosHEADERS: $(geos_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)"
-	@list='$(geos_HEADERS)'; for p in $$list; do \
+	test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)"
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \
-	  $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \
 	done
 
 uninstall-geosHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(geos_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(geosdir)/$$f"; \
-	done
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(geosdir)" && rm -f $$files
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -319,15 +377,14 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
+$(RECURSIVE_CLEAN_TARGETS):
 	@failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -354,16 +411,16 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -371,14 +428,14 @@
 	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; }'`; \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -390,81 +447,101 @@
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	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 \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(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" \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__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; \
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
 	  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 \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -475,7 +552,7 @@
 installdirs: installdirs-recursive
 installdirs-am:
 	for dir in "$(DESTDIR)$(geosdir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -497,6 +574,7 @@
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -507,8 +585,7 @@
 
 distclean: distclean-recursive
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
 
 dvi: dvi-recursive
 
@@ -516,18 +593,38 @@
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-geosHEADERS
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -546,23 +643,26 @@
 
 ps-am:
 
-uninstall-am: uninstall-geosHEADERS uninstall-info-am
+uninstall-am: uninstall-geosHEADERS
 
-uninstall-info: uninstall-info-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-libtool clean-recursive ctags \
-	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am check check-am clean clean-generic clean-libtool \
+	ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-geosHEADERS install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip installcheck installcheck-am installdirs \
 	installdirs-am maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-generic \
-	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am \
-	uninstall-geosHEADERS uninstall-info-am
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-geosHEADERS
+
 
 # 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.
diff -Nru geos-3.1.0/source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h geos-3.2.2/source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h
--- geos-3.1.0/source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/intervalrtree/SortedPackedIntervalRTree.h	2009-06-05 10:28:04.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: SortedPackedIntervalRTree.h 2263 2009-01-29 18:56:00Z mloskot $
+ * $Id: SortedPackedIntervalRTree.h 2540 2009-06-05 09:28:04Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -45,6 +45,7 @@
  * can be optimized based on a fixed set of items.
  * 
  * @author Martin Davis
+ *
  */
 class SortedPackedIntervalRTree 
 {
@@ -68,7 +69,7 @@
 	 * 
 	 * @param min the lower bound of the item interval
 	 * @param max the upper bound of the item interval
-	 * @param item the item to insert
+	 * @param item the item to insert, ownership left to caller
 	 * 
 	 * @throw IllegalStateException if the index has already been queried
 	 */
diff -Nru geos-3.1.0/source/headers/geos/index/ItemVisitor.h geos-3.2.2/source/headers/geos/index/ItemVisitor.h
--- geos-3.1.0/source/headers/geos/index/ItemVisitor.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/ItemVisitor.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: ItemVisitor.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: ItemVisitor.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -17,6 +17,8 @@
 #ifndef GEOS_INDEX_ITEMVISITOR_H
 #define GEOS_INDEX_ITEMVISITOR_H
 
+#include 
+
 namespace geos {
 namespace index {
 
@@ -25,7 +27,7 @@
  *
  * Last port: index/ItemVisitor.java rev. 1.2 (JTS-1.7)
  */
-class ItemVisitor {
+class GEOS_DLL ItemVisitor {
 public:
 	virtual void visitItem(void *)=0;
 
diff -Nru geos-3.1.0/source/headers/geos/index/Makefile.am geos-3.2.2/source/headers/geos/index/Makefile.am
--- geos-3.1.0/source/headers/geos/index/Makefile.am	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/Makefile.am	2009-06-08 10:30:55.000000000 +0100
@@ -14,4 +14,3 @@
 	ItemVisitor.h \
 	SpatialIndex.h 
 
-noinst_HEADERS = 
diff -Nru geos-3.1.0/source/headers/geos/index/Makefile.in geos-3.2.2/source/headers/geos/index/Makefile.in
--- geos-3.1.0/source/headers/geos/index/Makefile.in	2009-03-11 19:13:40.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/Makefile.in	2010-04-18 16:08:10.000000000 +0100
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -14,15 +15,12 @@
 
 @SET_MAKE@
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -38,11 +36,16 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = source/headers/geos/index
-DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \
 	$(top_srcdir)/macros/ac_python_devel.m4 \
+	$(top_srcdir)/macros/libtool.m4 \
+	$(top_srcdir)/macros/ltoptions.m4 \
+	$(top_srcdir)/macros/ltsugar.m4 \
+	$(top_srcdir)/macros/ltversion.m4 \
+	$(top_srcdir)/macros/lt~obsolete.m4 \
 	$(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \
 	$(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -51,31 +54,75 @@
 CONFIG_HEADER = $(top_builddir)/source/headers/config.h \
 	$(top_builddir)/source/headers/geos/platform.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(geosdir)"
-geosHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(geos_HEADERS) $(noinst_HEADERS)
+HEADERS = $(geos_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
 AR = @AR@
 AS = @AS@
@@ -103,21 +150,17 @@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
-ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@
-ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@
-ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@
-ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@
-ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@
-ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
 INLINE_FLAGS = @INLINE_FLAGS@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -126,20 +169,28 @@
 INTERFACE_CURRENT = @INTERFACE_CURRENT@
 INTERFACE_REVISION = @INTERFACE_REVISION@
 JTS_PORT = @JTS_PORT@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PYTHON = @PYTHON@
@@ -160,6 +211,7 @@
 RUBY_SHARED_LIB = @RUBY_SHARED_LIB@
 RUBY_SO_NAME = @RUBY_SO_NAME@
 RUBY_VERSION = @RUBY_VERSION@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -171,19 +223,13 @@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MINOR = @VERSION_MINOR@
 VERSION_PATCH = @VERSION_PATCH@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -195,36 +241,49 @@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 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@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 SUBDIRS = \
 	intervalrtree \
 	sweepline \
@@ -239,7 +298,6 @@
 	ItemVisitor.h \
 	SpatialIndex.h 
 
-noinst_HEADERS = 
 all: all-recursive
 
 .SUFFIXES:
@@ -247,14 +305,14 @@
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  source/headers/geos/index/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  source/headers/geos/index/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu source/headers/geos/index/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -272,33 +330,33 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
 install-geosHEADERS: $(geos_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)"
-	@list='$(geos_HEADERS)'; for p in $$list; do \
+	test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)"
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \
-	  $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \
 	done
 
 uninstall-geosHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(geos_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(geosdir)/$$f"; \
-	done
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(geosdir)" && rm -f $$files
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -324,15 +382,14 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
+$(RECURSIVE_CLEAN_TARGETS):
 	@failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -359,16 +416,16 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -376,14 +433,14 @@
 	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; }'`; \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -395,81 +452,101 @@
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	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 \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(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" \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__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; \
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
 	  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 \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -480,7 +557,7 @@
 installdirs: installdirs-recursive
 installdirs-am:
 	for dir in "$(DESTDIR)$(geosdir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -502,6 +579,7 @@
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -512,8 +590,7 @@
 
 distclean: distclean-recursive
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
 
 dvi: dvi-recursive
 
@@ -521,18 +598,38 @@
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-geosHEADERS
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -551,23 +648,26 @@
 
 ps-am:
 
-uninstall-am: uninstall-geosHEADERS uninstall-info-am
+uninstall-am: uninstall-geosHEADERS
 
-uninstall-info: uninstall-info-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-libtool clean-recursive ctags \
-	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am check check-am clean clean-generic clean-libtool \
+	ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-geosHEADERS install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip installcheck installcheck-am installdirs \
 	installdirs-am maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-generic \
-	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am \
-	uninstall-geosHEADERS uninstall-info-am
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-geosHEADERS
+
 
 # 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.
diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/DoubleBits.h geos-3.2.2/source/headers/geos/index/quadtree/DoubleBits.h
--- geos-3.1.0/source/headers/geos/index/quadtree/DoubleBits.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/quadtree/DoubleBits.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: DoubleBits.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: DoubleBits.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -13,13 +13,14 @@
  *
  **********************************************************************
  *
- * Last port: index/quadtree/DoubleBits.java rev. 1.7 (JTS-1.7.1)
+ * Last port: index/quadtree/DoubleBits.java rev. 1.7 (JTS-1.10)
  *
  **********************************************************************/
 
 #ifndef GEOS_IDX_QUADTREE_DOUBLEBITS_H
 #define GEOS_IDX_QUADTREE_DOUBLEBITS_H
 
+#include 
 #include  // for int64
 
 #include 
@@ -41,7 +42,7 @@
  * apply only to IEEE-754 double-precision floating point format.
  *
  */
-class DoubleBits {
+class GEOS_DLL DoubleBits {
 
 public:
 
diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/IntervalSize.h geos-3.2.2/source/headers/geos/index/quadtree/IntervalSize.h
--- geos-3.1.0/source/headers/geos/index/quadtree/IntervalSize.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/quadtree/IntervalSize.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: IntervalSize.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: IntervalSize.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -11,11 +11,17 @@
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: index/quadtree/IntervalSize.java rev 1.7 (JTS-1.10)
+ *
  **********************************************************************/
 
 #ifndef GEOS_IDX_QUADTREE_INTERVALSIZE_H
 #define GEOS_IDX_QUADTREE_INTERVALSIZE_H
 
+#include 
+
 namespace geos {
 namespace index { // geos::index
 namespace quadtree { // geos::index::quadtree
@@ -33,16 +39,22 @@
  * computing a midpoint value which does not lie strictly between the
  * endpoints.
  */
-class IntervalSize {
+class GEOS_DLL IntervalSize {
 public:
 	/**
 	 * This value is chosen to be a few powers of 2 less than the
 	 * number of bits available in the double representation (i.e. 53).
 	 * This should allow enough extra precision for simple computations
-	 * to be correct,
-	 * at least for comparison purposes.
+	 * to be correct, at least for comparison purposes.
+	 */
+	static const int MIN_BINARY_EXPONENT = -50;
+
+	/**
+	 * Computes whether the interval [min, max] is effectively zero width.
+	 * I.e. the width of the interval is so much less than the
+	 * location of the interval that the midpoint of the interval
+	 * cannot be represented precisely.
 	 */
-	static const int MIN_BINARY_EXPONENT=-50;
 	static bool isZeroWidth(double min, double max);
 };
 
diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/Key.h geos-3.2.2/source/headers/geos/index/quadtree/Key.h
--- geos-3.1.0/source/headers/geos/index/quadtree/Key.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/quadtree/Key.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,28 +1,33 @@
 /**********************************************************************
- * $Id: Key.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: Key.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
  *
+ * Copyright (C) 2009  Sandro Santilli 
  * Copyright (C) 2006 Refractions Research Inc.
+ * Copyright (C) 2001-2002 Vivid Solutions Inc.
  *
  * This is free software; you can redistribute and/or modify it under
  * the terms of the GNU Lesser General Public Licence as published
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: index/quadtree/Key.java rev 1.8 (JTS-1.10)
+ *
  **********************************************************************/
 
 #ifndef GEOS_IDX_QUADTREE_KEY_H
 #define GEOS_IDX_QUADTREE_KEY_H
 
+#include 
+#include  // for composition
+#include  // for composition
+
 // Forward declarations
-namespace geos {
-	namespace geom {
-		class Envelope;
-		class Coordinate;
-	}
-}
+// ...
 
 namespace geos {
 namespace index { // geos::index
@@ -35,23 +40,47 @@
  * It contains a lower-left point and a level number. The level number
  * is the power of two for the size of the node envelope
  */
-class Key {
+class GEOS_DLL Key {
 public:
-	static int computeQuadLevel(geom::Envelope *env);
-	Key(geom::Envelope *itemEnv);
-	virtual ~Key();
-	geom::Coordinate* getPoint();
-	int getLevel();
-	geom::Envelope* getEnvelope();
-	geom::Coordinate* getCentre();
-	void computeKey(geom::Envelope *itemEnv);
+
+	// Doesn't touch the Envelope, might as well be const
+	static int computeQuadLevel(const geom::Envelope& env);
+
+	// Reference to argument won't be used after construction
+	Key(const geom::Envelope& itemEnv);
+
+	// used to be virtual, but I don't see subclasses...
+	~Key();
+
+	/// Returned object ownership retained by this class
+	const geom::Coordinate& getPoint() const;
+
+	int getLevel() const;
+
+	/// Returned object ownership retained by this class
+	const geom::Envelope& getEnvelope() const;
+
+	/// Returns newly allocated object (ownership transferred)
+	geom::Coordinate* getCentre() const;
+
+	/**
+	 * return a square envelope containing the argument envelope,
+	 * whose extent is a power of two and which is based at a power of 2
+	 */
+	void computeKey(const geom::Envelope& itemEnv);
+
 private:	
 	// the fields which make up the key
-	geom::Coordinate *pt;
+
+	// Owned by this class
+	geom::Coordinate pt;
+
 	int level;
+
 	// auxiliary data which is derived from the key for use in computation
-	geom::Envelope *env;
-	void computeKey(int level,geom::Envelope *itemEnv);
+	geom::Envelope env;
+
+	void computeKey(int level, const geom::Envelope& itemEnv);
 };
 
 } // namespace geos::index::quadtree
diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/Makefile.am geos-3.2.2/source/headers/geos/index/quadtree/Makefile.am
--- geos-3.1.0/source/headers/geos/index/quadtree/Makefile.am	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/quadtree/Makefile.am	2009-06-08 10:30:55.000000000 +0100
@@ -2,19 +2,14 @@
 
 EXTRA_DIST = 
 
-# NOTES:
-# Root.h is needed by Quadtree.h for inlines
-# NodeBase.h is needed by Root.h for inheritance
-
 geosdir = $(includedir)/geos/index/quadtree
 
 geos_HEADERS = \
+	DoubleBits.h	\
+	IntervalSize.h	\
+	Key.h		\
 	NodeBase.h	\
+	Node.h		\
 	Quadtree.h	\
-	Root.h
+	Root.h		
 
-noinst_HEADERS = \
-	DoubleBits.h	\
-	IntervalSize.h	\
-	Key.h	\
-	Node.h
diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/Makefile.in geos-3.2.2/source/headers/geos/index/quadtree/Makefile.in
--- geos-3.1.0/source/headers/geos/index/quadtree/Makefile.in	2009-03-11 19:13:46.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/quadtree/Makefile.in	2010-04-18 16:08:10.000000000 +0100
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.11 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009  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.
@@ -14,15 +15,12 @@
 
 @SET_MAKE@
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 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
@@ -38,11 +36,16 @@
 host_triplet = @host@
 target_triplet = @target@
 subdir = source/headers/geos/index/quadtree
-DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \
+DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \
 	$(top_srcdir)/macros/ac_python_devel.m4 \
+	$(top_srcdir)/macros/libtool.m4 \
+	$(top_srcdir)/macros/ltoptions.m4 \
+	$(top_srcdir)/macros/ltsugar.m4 \
+	$(top_srcdir)/macros/ltversion.m4 \
+	$(top_srcdir)/macros/lt~obsolete.m4 \
 	$(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \
 	$(top_srcdir)/configure.in
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -51,31 +54,75 @@
 CONFIG_HEADER = $(top_builddir)/source/headers/config.h \
 	$(top_builddir)/source/headers/geos/platform.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
-	install-exec-recursive install-info-recursive \
-	install-recursive installcheck-recursive installdirs-recursive \
-	pdf-recursive ps-recursive uninstall-info-recursive \
-	uninstall-recursive
+	install-dvi-recursive install-exec-recursive \
+	install-html-recursive install-info-recursive \
+	install-pdf-recursive install-ps-recursive install-recursive \
+	installcheck-recursive installdirs-recursive pdf-recursive \
+	ps-recursive uninstall-recursive
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
 am__installdirs = "$(DESTDIR)$(geosdir)"
-geosHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(geos_HEADERS) $(noinst_HEADERS)
+HEADERS = $(geos_HEADERS)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+	$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+	distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
 ALLOCA = @ALLOCA@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
 AR = @AR@
 AS = @AS@
@@ -103,21 +150,17 @@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
 EGREP = @EGREP@
-ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@
-ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@
-ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@
-ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@
-ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@
-ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@
 EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
+GREP = @GREP@
 INLINE_FLAGS = @INLINE_FLAGS@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -126,20 +169,28 @@
 INTERFACE_CURRENT = @INTERFACE_CURRENT@
 INTERFACE_REVISION = @INTERFACE_REVISION@
 JTS_PORT = @JTS_PORT@
+LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PYTHON = @PYTHON@
@@ -160,6 +211,7 @@
 RUBY_SHARED_LIB = @RUBY_SHARED_LIB@
 RUBY_SO_NAME = @RUBY_SO_NAME@
 RUBY_VERSION = @RUBY_VERSION@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -171,19 +223,13 @@
 VERSION_MAJOR = @VERSION_MAJOR@
 VERSION_MINOR = @VERSION_MINOR@
 VERSION_PATCH = @VERSION_PATCH@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
@@ -195,53 +241,60 @@
 build_cpu = @build_cpu@
 build_os = @build_os@
 build_vendor = @build_vendor@
+builddir = @builddir@
 datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
 exec_prefix = @exec_prefix@
 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@
+lt_ECHO = @lt_ECHO@
 mandir = @mandir@
 mkdir_p = @mkdir_p@
 oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
 pkgpyexecdir = @pkgpyexecdir@
 pkgpythondir = @pkgpythondir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
+psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
 sysconfdir = @sysconfdir@
 target = @target@
 target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 SUBDIRS = 
 EXTRA_DIST = 
-
-# NOTES:
-# Root.h is needed by Quadtree.h for inlines
-# NodeBase.h is needed by Root.h for inheritance
 geosdir = $(includedir)/geos/index/quadtree
 geos_HEADERS = \
-	NodeBase.h	\
-	Quadtree.h	\
-	Root.h
-
-noinst_HEADERS = \
 	DoubleBits.h	\
 	IntervalSize.h	\
-	Key.h	\
-	Node.h
+	Key.h		\
+	NodeBase.h	\
+	Node.h		\
+	Quadtree.h	\
+	Root.h		
 
 all: all-recursive
 
@@ -250,14 +303,14 @@
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
-	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-		&& exit 0; \
+	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+	        && { if test -f $@; then exit 0; else break; fi; }; \
 	      exit 1;; \
 	  esac; \
 	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  source/headers/geos/index/quadtree/Makefile'; \
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  source/headers/geos/index/quadtree/Makefile
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/quadtree/Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu source/headers/geos/index/quadtree/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 	@case '$?' in \
@@ -275,33 +328,33 @@
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
 	-rm -f *.lo
 
 clean-libtool:
 	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
 install-geosHEADERS: $(geos_HEADERS)
 	@$(NORMAL_INSTALL)
-	test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)"
-	@list='$(geos_HEADERS)'; for p in $$list; do \
+	test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)"
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \
-	  $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \
+	  $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \
 	done
 
 uninstall-geosHEADERS:
 	@$(NORMAL_UNINSTALL)
-	@list='$(geos_HEADERS)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(geosdir)/$$f"; \
-	done
+	@list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(geosdir)" && rm -f $$files
 
 # This directory's subdirectories are mostly independent; you can cd
 # into them and run `make' without going through this Makefile.
@@ -327,15 +380,14 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done; \
 	if test "$$dot_seen" = "no"; then \
 	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
 	fi; test -z "$$fail"
 
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
+$(RECURSIVE_CLEAN_TARGETS):
 	@failcom='exit 1'; \
 	for f in x $$MAKEFLAGS; do \
 	  case $$f in \
@@ -362,16 +414,16 @@
 	  else \
 	    local_target="$$target"; \
 	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
 	  || eval $$failcom; \
 	done && test -z "$$fail"
 tags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
 	done
 ctags-recursive:
 	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	  test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
 	done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -379,14 +431,14 @@
 	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; }'`; \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
 	mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 		$(TAGS_FILES) $(LISP)
-	tags=; \
+	set x; \
 	here=`pwd`; \
 	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
 	  include_option=--etags-include; \
@@ -398,81 +450,101 @@
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test ! -f $$subdir/TAGS || \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	      set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
 	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 \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	shift; \
+	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 	  test -n "$$unique" || unique=$$empty_fix; \
-	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	    $$tags $$unique; \
+	  if test $$# -gt 0; then \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      "$$@" $$unique; \
+	  else \
+	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	      $$unique; \
+	  fi; \
 	fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(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" \
+	  $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+	      END { if (nonempty) { for (i in files) print i; }; }'`; \
+	test -z "$(CTAGS_ARGS)$$unique" \
 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
+	     $$unique
 
 GTAGS:
 	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
+	  && $(am__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; \
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
 	  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 \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d "$(distdir)/$$file"; then \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+	    fi; \
 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
+	    test -f "$(distdir)/$$file" \
+	    || cp -p $$d/$$file "$(distdir)/$$file" \
 	    || exit 1; \
 	  fi; \
 	done
-	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
 	    test -d "$(distdir)/$$subdir" \
-	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || $(MKDIR_P) "$(distdir)/$$subdir" \
 	    || exit 1; \
-	    distdir=`$(am__cd) $(distdir) && pwd`; \
-	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
-	    (cd $$subdir && \
+	  fi; \
+	done
+	@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+	    $(am__relativize); \
+	    new_distdir=$$reldir; \
+	    dir1=$$subdir; dir2="$(top_distdir)"; \
+	    $(am__relativize); \
+	    new_top_distdir=$$reldir; \
+	    echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+	    echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+	    ($(am__cd) $$subdir && \
 	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$$top_distdir" \
-	        distdir="$$distdir/$$subdir" \
+	        top_distdir="$$new_top_distdir" \
+	        distdir="$$new_distdir" \
+		am__remove_distdir=: \
+		am__skip_length_check=: \
+		am__skip_mode_fix=: \
 	        distdir) \
 	      || exit 1; \
 	  fi; \
@@ -483,7 +555,7 @@
 installdirs: installdirs-recursive
 installdirs-am:
 	for dir in "$(DESTDIR)$(geosdir)"; do \
-	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -505,6 +577,7 @@
 
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
@@ -515,8 +588,7 @@
 
 distclean: distclean-recursive
 	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
 
 dvi: dvi-recursive
 
@@ -524,18 +596,38 @@
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-geosHEADERS
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -554,23 +646,26 @@
 
 ps-am:
 
-uninstall-am: uninstall-geosHEADERS uninstall-info-am
+uninstall-am: uninstall-geosHEADERS
 
-uninstall-info: uninstall-info-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+	install-am install-strip tags-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-	clean clean-generic clean-libtool clean-recursive ctags \
-	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am html \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+	all all-am check check-am clean clean-generic clean-libtool \
+	ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-geosHEADERS install-html \
+	install-html-am install-info install-info-am install-man \
+	install-pdf install-pdf-am install-ps install-ps-am \
 	install-strip installcheck installcheck-am installdirs \
 	installdirs-am maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-generic \
-	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
-	tags tags-recursive uninstall uninstall-am \
-	uninstall-geosHEADERS uninstall-info-am
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am tags tags-recursive uninstall uninstall-am \
+	uninstall-geosHEADERS
+
 
 # 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.
diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/NodeBase.h geos-3.2.2/source/headers/geos/index/quadtree/NodeBase.h
--- geos-3.1.0/source/headers/geos/index/quadtree/NodeBase.h	2009-03-10 16:18:00.000000000 +0000
+++ geos-3.2.2/source/headers/geos/index/quadtree/NodeBase.h	2009-06-06 23:22:28.000000000 +0100
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: NodeBase.h 1820 2006-09-06 16:54:23Z mloskot $
+ * $Id: NodeBase.h 2556 2009-06-06 22:22:28Z strk $
  *
  * GEOS - Geometry Engine Open Source
  * http://geos.refractions.net
@@ -11,11 +11,16 @@
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: index/quadtree/NodeBase.java rev 1.9 (JTS-1.10)
+ *
  **********************************************************************/
 
 #ifndef GEOS_IDX_QUADTREE_NODEBASE_H
 #define GEOS_IDX_QUADTREE_NODEBASE_H
 
+#include 
 #include 
 #include 
 
@@ -42,7 +47,7 @@
  * The base class for nodes in a Quadtree.
  *
  */
-class NodeBase {
+class GEOS_DLL NodeBase {
 
 private:
 
@@ -58,20 +63,23 @@
 
 	virtual ~NodeBase();
 
-	virtual std::vector* getItems();
+	std::vector& getItems();
 
-	virtual void add(void* item);
+	/// Add an item to this node.
+	/// Ownership of the item is left to caller.
+	void add(void* item);
 
-	virtual std::vector* addAllItems(std::vector *resultItems);
+	/// Push all node items to the given vector, return the argument
+	std::vector& addAllItems(std::vector& resultItems) const;
 
-	virtual void addAllItemsFromOverlapping(const geom::Envelope *searchEnv,
-			std::vector *resultItems);
+	virtual void addAllItemsFromOverlapping(const geom::Envelope& searchEnv,
+			std::vector& resultItems) const;
 
-	virtual int depth();
+	unsigned int depth() const;
 
-	virtual int size();
+	unsigned int size() const;
 
-	virtual int nodeCount();
+	unsigned int getNodeCount() const;
 
 	virtual std::string toString() const;
 
@@ -94,7 +102,8 @@
 
 protected:
 
-	std::vector *items;
+	/// Actual items are NOT owned by this class
+	std::vector items;
 
 	/**
 	 * subquads are numbered as follows:
@@ -103,10 +112,12 @@
 	 *  --+--
 	 *  0 | 1
 	 * 
+ * + * Nodes are owned by this class */ Node* subnode[4]; - virtual bool isSearchMatch(const geom::Envelope *searchEnv)=0; + virtual bool isSearchMatch(const geom::Envelope& searchEnv) const=0; }; @@ -129,7 +140,7 @@ inline bool NodeBase::hasItems() const { - return ! items->empty(); + return ! items.empty(); } } // namespace geos::index::quadtree diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/Node.h geos-3.2.2/source/headers/geos/index/quadtree/Node.h --- geos-3.1.0/source/headers/geos/index/quadtree/Node.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/quadtree/Node.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Node.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Node.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,16 +11,22 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/quadtree/Node.java rev 1.8 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_IDX_QUADTREE_NODE_H #define GEOS_IDX_QUADTREE_NODE_H +#include #include // for inheritance #include // for composition #include // for inline #include +#include // Forward declarations namespace geos { @@ -42,46 +48,60 @@ * the node's position in the quadtree. * */ -class Node: public NodeBase { +class GEOS_DLL Node: public NodeBase { private: - geom::Envelope *env; + /// Owned by this class + std::auto_ptr env; geom::Coordinate centre; int level; + /** + * Get the subquad for the index. + * If it doesn't exist, create it. + * + * Ownership of the returned object belongs to this class. + */ Node* getSubnode(int index); - Node* createSubnode(int index); + std::auto_ptr createSubnode(int index); protected: - bool isSearchMatch(const geom::Envelope *searchEnv) { + bool isSearchMatch(const geom::Envelope& searchEnv) const { return env->intersects(searchEnv); } public: - static Node* createNode(geom::Envelope *env); + // Create a node computing level from given envelope + static std::auto_ptr createNode(const geom::Envelope& env); - static Node* createExpanded(Node *node, - const geom::Envelope *addEnv); + /// Create a node containing the given node and envelope + // + /// @param node if not null, will be inserted to the returned node + /// @param addEnv minimum envelope to use for the node + /// + static std::auto_ptr createExpanded(std::auto_ptr node, + const geom::Envelope& addEnv); - // Takes ownership of envelope - Node(geom::Envelope *nenv, int nlevel) + Node(std::auto_ptr nenv, int nlevel) : env(nenv), - centre((nenv->getMinX()+nenv->getMaxX())/2, - (nenv->getMinY()+nenv->getMaxY())/2), + centre((env->getMinX()+env->getMaxX())/2, + (env->getMinY()+env->getMaxY())/2), level(nlevel) { } - virtual ~Node() { delete env; } + virtual ~Node() {} - geom::Envelope* getEnvelope() { return env; } + /// Return Envelope associated with this node + /// ownership retained by this object + geom::Envelope* getEnvelope() { return env.get(); } /** \brief * Returns the subquad containing the envelope. @@ -96,7 +116,7 @@ */ NodeBase* find(const geom::Envelope *searchEnv); - void insertNode(Node *node); + void insertNode(std::auto_ptr node); std::string toString() const; diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/Quadtree.h geos-3.2.2/source/headers/geos/index/quadtree/Quadtree.h --- geos-3.1.0/source/headers/geos/index/quadtree/Quadtree.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/quadtree/Quadtree.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Quadtree.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Quadtree.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,15 +13,16 @@ * ********************************************************************** * - * Last port: index/quadtree/Quadtree.java rev. 1.14 + * Last port: index/quadtree/Quadtree.java rev. 1.16 (JTS-1.10) * **********************************************************************/ #ifndef GEOS_IDX_QUADTREE_QUADTREE_H #define GEOS_IDX_QUADTREE_QUADTREE_H +#include #include // for inheritance -#include // for inline +#include // for composition #include #include @@ -64,15 +65,15 @@ * This data structure is also known as an MX-CIF quadtree * following the usage of Samet and others. */ -class Quadtree: public SpatialIndex { +class GEOS_DLL Quadtree: public SpatialIndex { private: std::vector newEnvelopes; - void collectStats(const geom::Envelope *itemEnv); + void collectStats(const geom::Envelope& itemEnv); - Root *root; + Root root; /** * Statistics @@ -104,7 +105,7 @@ */ Quadtree() : - root(new Root()), + root(), minExtent(1.0) {} @@ -118,22 +119,57 @@ void insert(const geom::Envelope *itemEnv, void *item); + /** \brief + * Queries the tree and returns items which may lie + * in the given search envelope. + * + * Precisely, the items that are returned are all items in the tree + * whose envelope may intersect the search Envelope. + * Note that some items with non-intersecting envelopes may be + * returned as well; + * the client is responsible for filtering these out. + * In most situations there will be many items in the tree which do not + * intersect the search envelope and which are not returned - thus + * providing improved performance over a simple linear scan. + * + * @param searchEnv the envelope of the desired query area. + * @param ret a vector where items which may intersect the + * search envelope are pushed + */ void query(const geom::Envelope *searchEnv, std::vector& ret); - void query(const geom::Envelope *searchEnv, ItemVisitor& visitor) { + + /** \brief + * Queries the tree and visits items which may lie in + * the given search envelope. + * + * Precisely, the items that are visited are all items in the tree + * whose envelope may intersect the search Envelope. + * Note that some items with non-intersecting envelopes may be + * visited as well; + * the client is responsible for filtering these out. + * In most situations there will be many items in the tree which do not + * intersect the search envelope and which are not visited - thus + * providing improved performance over a simple linear scan. + * + * @param searchEnv the envelope of the desired query area. + * @param visitor a visitor object which is passed the visited items + */ + void query(const geom::Envelope *searchEnv, ItemVisitor& visitor) + { /* * the items that are matched are the items in quads which * overlap the search envelope */ - root->visit(searchEnv, visitor); + root.visit(searchEnv, visitor); } /** * Removes a single item from the tree. * - * @param itemEnv the Envelope of the item to remove + * @param itemEnv the Envelope of the item to be removed * @param item the item to remove - * @return true if the item was found + * @return true if the item was found (and thus removed) */ bool remove(const geom::Envelope* itemEnv, void* item); diff -Nru geos-3.1.0/source/headers/geos/index/quadtree/Root.h geos-3.2.2/source/headers/geos/index/quadtree/Root.h --- geos-3.1.0/source/headers/geos/index/quadtree/Root.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/quadtree/Root.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Root.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Root.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/quadtree/Root.java rev 1.7 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_IDX_QUADTREE_ROOT_H #define GEOS_IDX_QUADTREE_ROOT_H +#include #include // for inheritance #include // for composition @@ -42,19 +47,20 @@ * QuadRoot is the root of a single Quadtree. It is centred at the origin, * and does not have a defined extent. */ -class Root: public NodeBase { +class GEOS_DLL Root: public NodeBase { //friend class Unload; private: - static geom::Coordinate origin; + static const geom::Coordinate origin; /** * insert an item which is known to be contained in the tree rooted at * the given QuadNode root. Lower levels of the tree will be created * if necessary to hold the item. */ - void insertContained(Node *tree, const geom::Envelope *itemEnv, void* item); + void insertContained(Node *tree, const geom::Envelope *itemEnv, + void* item); public: @@ -69,7 +75,9 @@ protected: - bool isSearchMatch(const geom::Envelope* /* searchEnv */) { return true; } + bool isSearchMatch(const geom::Envelope& /* searchEnv */) const { + return true; + } }; diff -Nru geos-3.1.0/source/headers/geos/index/SpatialIndex.h geos-3.2.2/source/headers/geos/index/SpatialIndex.h --- geos-3.1.0/source/headers/geos/index/SpatialIndex.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/SpatialIndex.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SpatialIndex.h 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: SpatialIndex.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_INDEX_SPATIALINDEX_H #define GEOS_INDEX_SPATIALINDEX_H +#include + #include // Forward declarations @@ -43,7 +45,7 @@ * Last port: index/SpatialIndex.java rev. 1.11 (JTS-1.7) * */ -class SpatialIndex { +class GEOS_DLL SpatialIndex { public: virtual ~SpatialIndex() {} @@ -51,6 +53,14 @@ /** \brief * Adds a spatial item with an extent specified by the given Envelope * to the index + * + * @param itemEnv + * Envelope of the item, ownership left to caller. + * TODO: Reference hold by this class ? + * + * @param item + * Opaque item, ownership left to caller. + * Reference hold by this class. */ virtual void insert(const geom::Envelope *itemEnv, void *item) = 0; diff -Nru geos-3.1.0/source/headers/geos/index/strtree/AbstractNode.h geos-3.2.2/source/headers/geos/index/strtree/AbstractNode.h --- geos-3.1.0/source/headers/geos/index/strtree/AbstractNode.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/AbstractNode.h 2009-11-19 18:52:45.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: AbstractNode.h 1971 2007-02-07 00:34:26Z strk $ + * $Id: AbstractNode.h 2724 2009-11-19 18:52:45Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_INDEX_STRTREE_ABSTRACTNODE_H #define GEOS_INDEX_STRTREE_ABSTRACTNODE_H +#include #include // for inheritance #include @@ -34,19 +35,24 @@ * then we say that this node is a "leaf node". * */ -class AbstractNode: public Boundable { +class GEOS_DLL AbstractNode: public Boundable { private: - std::vector *childBoundables; + std::vector childBoundables; int level; public: AbstractNode(int newLevel, int capacity=10); virtual ~AbstractNode(); + + // TODO: change signature to return by ref, + // document ownership of the return inline std::vector* getChildBoundables() { - return childBoundables; + return &childBoundables; } + // TODO: change signature to return by ref, + // document ownership of the return inline const std::vector* getChildBoundables() const { - return childBoundables; + return &childBoundables; } /** diff -Nru geos-3.1.0/source/headers/geos/index/strtree/AbstractSTRtree.h geos-3.2.2/source/headers/geos/index/strtree/AbstractSTRtree.h --- geos-3.1.0/source/headers/geos/index/strtree/AbstractSTRtree.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/AbstractSTRtree.h 2009-10-20 17:59:30.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: AbstractSTRtree.h 2240 2009-01-18 20:34:09Z pramsey $ + * $Id: AbstractSTRtree.h 2685 2009-10-20 16:59:30Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_INDEX_STRTREE_ABSTRACTSTRTREE_H #define GEOS_INDEX_STRTREE_ABSTRACTSTRTREE_H +#include + #include // for inlines #include @@ -128,7 +130,7 @@ * data, both of which are treated here as Boundables. * */ -class AbstractSTRtree { +class GEOS_DLL AbstractSTRtree { private: bool built; @@ -200,6 +202,7 @@ } virtual AbstractNode* getRoot() { + assert(built); return root; } @@ -217,8 +220,6 @@ return matches; } #endif - - /// Also builds the tree, if necessary. void query(const void* searchBounds, ItemVisitor& visitor); @@ -258,7 +259,11 @@ } static bool compareDoubles(double a, double b) { - return a* matches); /** + * Iterate over all items added thus far. Explicitly does not build + * the tree. + */ + void iterate(ItemVisitor& visitor); + + + /** * @param level -1 to get items */ virtual void boundablesAtLevel(int level, AbstractNode* top, diff -Nru geos-3.1.0/source/headers/geos/index/strtree/Boundable.h geos-3.2.2/source/headers/geos/index/strtree/Boundable.h --- geos-3.1.0/source/headers/geos/index/strtree/Boundable.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/Boundable.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Boundable.h 1971 2007-02-07 00:34:26Z strk $ + * $Id: Boundable.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,12 +16,14 @@ #ifndef GEOS_INDEX_STRTREE_BOUNDABLE_H #define GEOS_INDEX_STRTREE_BOUNDABLE_H +#include + namespace geos { namespace index { // geos::index namespace strtree { // geos::index::strtree /// A spatial object in an AbstractSTRtree. -class Boundable { +class GEOS_DLL Boundable { public: /** * Returns a representation of space that encloses this Boundable, diff -Nru geos-3.1.0/source/headers/geos/index/strtree/Interval.h geos-3.2.2/source/headers/geos/index/strtree/Interval.h --- geos-3.1.0/source/headers/geos/index/strtree/Interval.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/Interval.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Interval.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Interval.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_INDEX_STRTREE_INTERVAL_H #define GEOS_INDEX_STRTREE_INTERVAL_H +#include + namespace geos { namespace index { // geos::index namespace strtree { // geos::index::strtree @@ -24,7 +26,7 @@ // /// @see SIRtree /// -class Interval { +class GEOS_DLL Interval { public: Interval(Interval *other); Interval(double newMin, double newMax); diff -Nru geos-3.1.0/source/headers/geos/index/strtree/ItemBoundable.h geos-3.2.2/source/headers/geos/index/strtree/ItemBoundable.h --- geos-3.1.0/source/headers/geos/index/strtree/ItemBoundable.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/ItemBoundable.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ItemBoundable.h 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: ItemBoundable.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -15,6 +15,8 @@ #ifndef GEOS_INDEX_STRTREE_ITEMBOUNDABLE_H #define GEOS_INDEX_STRTREE_ITEMBOUNDABLE_H +#include + #include // for inheritance namespace geos { @@ -28,7 +30,7 @@ * * \todo TODO: It's unclear who takes ownership of passed newBounds and newItem objects. */ -class ItemBoundable: public Boundable +class GEOS_DLL ItemBoundable: public Boundable { public: diff -Nru geos-3.1.0/source/headers/geos/index/strtree/Makefile.am geos-3.2.2/source/headers/geos/index/strtree/Makefile.am --- geos-3.1.0/source/headers/geos/index/strtree/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,23 +2,14 @@ EXTRA_DIST = -# NOTES: -# -# AbstractSTRtree.h needed by STRtree.h for inheritance -# AbstractSTRtree.h needed by SIRtree.h for inheritance -# Interval.h needed by SIRtree.h for inlines -# Boundable.h needed by ItemBoundable.h and AbstractNode.h for inheritance -# AbstractNode.h needed by AbstractSTRtree.h for inlines - geosdir = $(includedir)/geos/index/strtree geos_HEADERS = \ - AbstractNode.h \ + AbstractNode.h \ AbstractSTRtree.h \ - Boundable.h \ - Interval.h \ - SIRtree.h \ - STRtree.h + Boundable.h \ + Interval.h \ + ItemBoundable.h \ + SIRtree.h \ + STRtree.h -noinst_HEADERS = \ - ItemBoundable.h diff -Nru geos-3.1.0/source/headers/geos/index/strtree/Makefile.in geos-3.2.2/source/headers/geos/index/strtree/Makefile.in --- geos-3.1.0/source/headers/geos/index/strtree/Makefile.in 2009-03-11 19:13:46.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/index/strtree -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,57 +241,60 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = EXTRA_DIST = - -# NOTES: -# -# AbstractSTRtree.h needed by STRtree.h for inheritance -# AbstractSTRtree.h needed by SIRtree.h for inheritance -# Interval.h needed by SIRtree.h for inlines -# Boundable.h needed by ItemBoundable.h and AbstractNode.h for inheritance -# AbstractNode.h needed by AbstractSTRtree.h for inlines geosdir = $(includedir)/geos/index/strtree geos_HEADERS = \ - AbstractNode.h \ + AbstractNode.h \ AbstractSTRtree.h \ - Boundable.h \ - Interval.h \ - SIRtree.h \ - STRtree.h - -noinst_HEADERS = \ - ItemBoundable.h + Boundable.h \ + Interval.h \ + ItemBoundable.h \ + SIRtree.h \ + STRtree.h all: all-recursive @@ -254,14 +303,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/strtree/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/index/strtree/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/strtree/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/index/strtree/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -279,33 +328,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -331,15 +380,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -366,16 +414,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -383,14 +431,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -402,81 +450,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -487,7 +555,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -509,6 +577,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -519,8 +588,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -528,18 +596,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -558,23 +646,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/index/strtree/SIRtree.h geos-3.2.2/source/headers/geos/index/strtree/SIRtree.h --- geos-3.1.0/source/headers/geos/index/strtree/SIRtree.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/SIRtree.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SIRtree.h 1971 2007-02-07 00:34:26Z strk $ + * $Id: SIRtree.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_INDEX_STRTREE_SIRTREE_H #define GEOS_INDEX_STRTREE_SIRTREE_H +#include + #include // for inheritance #include // for inline @@ -37,7 +39,7 @@ * * @see STRtree */ -class SIRtree: public AbstractSTRtree { +class GEOS_DLL SIRtree: public AbstractSTRtree { using AbstractSTRtree::insert; using AbstractSTRtree::query; diff -Nru geos-3.1.0/source/headers/geos/index/strtree/STRtree.h geos-3.2.2/source/headers/geos/index/strtree/STRtree.h --- geos-3.1.0/source/headers/geos/index/strtree/STRtree.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/strtree/STRtree.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: STRtree.h 1971 2007-02-07 00:34:26Z strk $ + * $Id: STRtree.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,6 +20,8 @@ #ifndef GEOS_INDEX_STRTREE_STRTREE_H #define GEOS_INDEX_STRTREE_STRTREE_H +#include + #include // for inheritance #include // for inheritance #include // for inlines @@ -55,7 +57,7 @@ * Databases With Application To GIS. Morgan Kaufmann, San Francisco, 2002. * */ -class STRtree: public AbstractSTRtree, public SpatialIndex +class GEOS_DLL STRtree: public AbstractSTRtree, public SpatialIndex { using AbstractSTRtree::insert; using AbstractSTRtree::query; diff -Nru geos-3.1.0/source/headers/geos/index/sweepline/Makefile.am geos-3.2.2/source/headers/geos/index/sweepline/Makefile.am --- geos-3.1.0/source/headers/geos/index/sweepline/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/sweepline/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,17 +2,11 @@ EXTRA_DIST = -# NOTES: -# -# SweepLineOverlapAction.h needed by operation/valid/SweeplineNestedRingTester.h -# for inheritance (but that header is not installed) - geosdir = $(includedir)/geos/index/sweepline geos_HEADERS = \ - SweepLineOverlapAction.h - -noinst_HEADERS = \ SweepLineEvent.h \ SweepLineIndex.h \ - SweepLineInterval.h + SweepLineInterval.h \ + SweepLineOverlapAction.h + diff -Nru geos-3.1.0/source/headers/geos/index/sweepline/Makefile.in geos-3.2.2/source/headers/geos/index/sweepline/Makefile.in --- geos-3.1.0/source/headers/geos/index/sweepline/Makefile.in 2009-03-11 19:13:46.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/sweepline/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/index/sweepline -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,51 +241,57 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = EXTRA_DIST = - -# NOTES: -# -# SweepLineOverlapAction.h needed by operation/valid/SweeplineNestedRingTester.h -# for inheritance (but that header is not installed) geosdir = $(includedir)/geos/index/sweepline geos_HEADERS = \ - SweepLineOverlapAction.h - -noinst_HEADERS = \ SweepLineEvent.h \ SweepLineIndex.h \ - SweepLineInterval.h + SweepLineInterval.h \ + SweepLineOverlapAction.h all: all-recursive @@ -248,14 +300,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/sweepline/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/index/sweepline/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/index/sweepline/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/index/sweepline/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -273,33 +325,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -325,15 +377,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -360,16 +411,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -377,14 +428,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -396,81 +447,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -481,7 +552,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -503,6 +574,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -513,8 +585,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -522,18 +593,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -552,23 +643,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/index/sweepline/SweepLineEvent.h geos-3.2.2/source/headers/geos/index/sweepline/SweepLineEvent.h --- geos-3.1.0/source/headers/geos/index/sweepline/SweepLineEvent.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/sweepline/SweepLineEvent.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweepLineEvent.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweepLineEvent.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_INDEX_SWEEPLINE_SWEEPLINEEVENT_H #define GEOS_INDEX_SWEEPLINE_SWEEPLINEEVENT_H +#include + // Forward declarations namespace geos { namespace index { @@ -29,7 +31,7 @@ namespace index { // geos.index namespace sweepline { // geos:index:sweepline -class SweepLineEvent { +class GEOS_DLL SweepLineEvent { public: @@ -81,7 +83,7 @@ // temp typedefs for backward compatibility //typedef SweepLineEvent indexSweepLineEvent; -struct SweepLineEventLessThen { +struct GEOS_DLL SweepLineEventLessThen { bool operator() (const SweepLineEvent* first, const SweepLineEvent* second) const; }; diff -Nru geos-3.1.0/source/headers/geos/index/sweepline/SweepLineIndex.h geos-3.2.2/source/headers/geos/index/sweepline/SweepLineIndex.h --- geos-3.1.0/source/headers/geos/index/sweepline/SweepLineIndex.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/sweepline/SweepLineIndex.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweepLineIndex.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweepLineIndex.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_INDEX_SWEEPLINE_SWEEPLINEINDEX_H #define GEOS_INDEX_SWEEPLINE_SWEEPLINEINDEX_H +#include + #include // Forward declarations @@ -38,7 +40,7 @@ * * It is used to compute all overlaps between the interval in the index. */ -class SweepLineIndex { +class GEOS_DLL SweepLineIndex { public: diff -Nru geos-3.1.0/source/headers/geos/index/sweepline/SweepLineInterval.h geos-3.2.2/source/headers/geos/index/sweepline/SweepLineInterval.h --- geos-3.1.0/source/headers/geos/index/sweepline/SweepLineInterval.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/sweepline/SweepLineInterval.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweepLineInterval.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweepLineInterval.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,11 +16,13 @@ #ifndef GEOS_INDEX_SWEEPLINE_SWEEPLINEINTERVAL_H #define GEOS_INDEX_SWEEPLINE_SWEEPLINEINTERVAL_H +#include + namespace geos { namespace index { // geos.index namespace sweepline { // geos:index:sweepline -class SweepLineInterval { +class GEOS_DLL SweepLineInterval { public: SweepLineInterval(double newMin, double newMax, void* newItem=0); double getMin(); diff -Nru geos-3.1.0/source/headers/geos/index/sweepline/SweepLineOverlapAction.h geos-3.2.2/source/headers/geos/index/sweepline/SweepLineOverlapAction.h --- geos-3.1.0/source/headers/geos/index/sweepline/SweepLineOverlapAction.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/index/sweepline/SweepLineOverlapAction.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweepLineOverlapAction.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweepLineOverlapAction.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_INDEX_SWEEPLINE_SWEEPLINEOVERLAPACTION_H #define GEOS_INDEX_SWEEPLINE_SWEEPLINEOVERLAPACTION_H +#include + // Forward declarations namespace geos { namespace index { @@ -29,7 +31,7 @@ namespace index { // geos.index namespace sweepline { // geos:index:sweepline -class SweepLineOverlapAction { +class GEOS_DLL SweepLineOverlapAction { public: virtual void overlap(SweepLineInterval *s0,SweepLineInterval *s1)=0; diff -Nru geos-3.1.0/source/headers/geos/inline.h geos-3.2.2/source/headers/geos/inline.h --- geos-3.1.0/source/headers/geos/inline.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/inline.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: inline.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: inline.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -22,4 +22,5 @@ # define INLINE #endif + #endif // ndef GEOS_INLINE_H diff -Nru geos-3.1.0/source/headers/geos/io/ByteOrderDataInStream.h geos-3.2.2/source/headers/geos/io/ByteOrderDataInStream.h --- geos-3.1.0/source/headers/geos/io/ByteOrderDataInStream.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/ByteOrderDataInStream.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ByteOrderDataInStream.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ByteOrderDataInStream.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/ByteOrderDataInStream.java rev. 1.1 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_IO_BYTEORDERDATAINSTREAM_H #define GEOS_IO_BYTEORDERDATAINSTREAM_H +#include + //#include //#include //#include @@ -34,7 +40,7 @@ * istream, with the representation being in either common byte ordering. * */ -class ByteOrderDataInStream { +class GEOS_DLL ByteOrderDataInStream { public: diff -Nru geos-3.1.0/source/headers/geos/io/ByteOrderDataInStream.inl geos-3.2.2/source/headers/geos/io/ByteOrderDataInStream.inl --- geos-3.1.0/source/headers/geos/io/ByteOrderDataInStream.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/ByteOrderDataInStream.inl 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ByteOrderDataInStream.inl 1997 2007-08-22 23:45:12Z mloskot $ + * $Id: ByteOrderDataInStream.inl 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/ByteOrderDataInStream.java rev. 1.1 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_IO_BYTEORDERDATAINSTREAM_INL diff -Nru geos-3.1.0/source/headers/geos/io/ByteOrderValues.h geos-3.2.2/source/headers/geos/io/ByteOrderValues.h --- geos-3.1.0/source/headers/geos/io/ByteOrderValues.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/ByteOrderValues.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ByteOrderValues.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ByteOrderValues.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/ByteOrderValues.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_IO_BYTEORDERVALUES_H #define GEOS_IO_BYTEORDERVALUES_H +#include + #include namespace geos { @@ -30,7 +36,7 @@ * * Similar to the standard Java ByteBuffer class. */ -class ByteOrderValues { +class GEOS_DLL ByteOrderValues { public: diff -Nru geos-3.1.0/source/headers/geos/io/CLocalizer.h geos-3.2.2/source/headers/geos/io/CLocalizer.h --- geos-3.1.0/source/headers/geos/io/CLocalizer.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/CLocalizer.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,3 +1,24 @@ +/********************************************************************** + * $Id: CLocalizer.h 2579 2009-06-15 14:03:52Z strk $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2008 Sean Gillies + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: ORIGINAL WORK + * + **********************************************************************/ + +#include + #include namespace geos { @@ -6,7 +27,7 @@ /** * \class CLocalizer io.h geos.h */ -class CLocalizer +class GEOS_DLL CLocalizer { public: diff -Nru geos-3.1.0/source/headers/geos/io/Makefile.am geos-3.2.2/source/headers/geos/io/Makefile.am --- geos-3.1.0/source/headers/geos/io/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,12 +2,6 @@ EXTRA_DIST = -# NOTES: -# ByteOrderDataInStream.{h,inl} needed by WKBReader.h for composition -# ByteOrderValues.h needed by ByteOrderDataInStream.inl for inlines -# ParseException.h needed by ByteOrderDataInStream.inl for inlines -# WKBConstants.h is worth exposing - geosdir = $(includedir)/geos/io geos_HEADERS = \ @@ -16,13 +10,12 @@ ByteOrderValues.h \ CLocalizer.h \ ParseException.h \ + StringTokenizer.h \ WKBConstants.h \ WKBReader.h \ WKBWriter.h \ WKTReader.h \ WKTReader.inl \ - WKTWriter.h + WKTWriter.h \ + Writer.h -noinst_HEADERS = \ - StringTokenizer.h \ - Writer.h diff -Nru geos-3.1.0/source/headers/geos/io/Makefile.in geos-3.2.2/source/headers/geos/io/Makefile.in --- geos-3.1.0/source/headers/geos/io/Makefile.in 2009-03-11 19:13:47.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/io -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,44 +241,51 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = EXTRA_DIST = - -# NOTES: -# ByteOrderDataInStream.{h,inl} needed by WKBReader.h for composition -# ByteOrderValues.h needed by ByteOrderDataInStream.inl for inlines -# ParseException.h needed by ByteOrderDataInStream.inl for inlines -# WKBConstants.h is worth exposing geosdir = $(includedir)/geos/io geos_HEADERS = \ ByteOrderDataInStream.h \ @@ -240,16 +293,14 @@ ByteOrderValues.h \ CLocalizer.h \ ParseException.h \ + StringTokenizer.h \ WKBConstants.h \ WKBReader.h \ WKBWriter.h \ WKTReader.h \ WKTReader.inl \ - WKTWriter.h - -noinst_HEADERS = \ - StringTokenizer.h \ - Writer.h + WKTWriter.h \ + Writer.h all: all-recursive @@ -258,14 +309,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/io/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/io/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/io/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/io/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -283,33 +334,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -335,15 +386,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -370,16 +420,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -387,14 +437,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -406,81 +456,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -491,7 +561,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -513,6 +583,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -523,8 +594,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -532,18 +602,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -562,23 +652,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/io/ParseException.h geos-3.2.2/source/headers/geos/io/ParseException.h --- geos-3.1.0/source/headers/geos/io/ParseException.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/ParseException.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ParseException.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ParseException.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/ParseException.java rev. 1.13 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_IO_PARSEEXCEPTION_H #define GEOS_IO_PARSEEXCEPTION_H +#include + #include namespace geos { @@ -26,7 +32,7 @@ * \class ParseException io.h geos.h * \brief Notifies a parsing error */ -class ParseException : public util::GEOSException +class GEOS_DLL ParseException : public util::GEOSException { public: diff -Nru geos-3.1.0/source/headers/geos/io/StringTokenizer.h geos-3.2.2/source/headers/geos/io/StringTokenizer.h --- geos-3.1.0/source/headers/geos/io/StringTokenizer.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/StringTokenizer.h 2009-12-03 19:38:12.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: StringTokenizer.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: StringTokenizer.h 2775 2009-12-03 19:38:12Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,17 +12,23 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: ORIGINAL WORK + * **********************************************************************/ #ifndef GEOS_IO_STRINGTOKENIZER_H #define GEOS_IO_STRINGTOKENIZER_H +#include + #include namespace geos { namespace io { -class StringTokenizer { +class GEOS_DLL StringTokenizer { public: enum { TT_EOF, @@ -42,6 +48,10 @@ std::string stok; double ntok; std::string::const_iterator iter; + + // Declare type as noncopyable + StringTokenizer(const StringTokenizer& other); + StringTokenizer& operator=(const StringTokenizer& rhs); }; } // namespace io diff -Nru geos-3.1.0/source/headers/geos/io/WKBConstants.h geos-3.2.2/source/headers/geos/io/WKBConstants.h --- geos-3.1.0/source/headers/geos/io/WKBConstants.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/WKBConstants.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKBConstants.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: WKBConstants.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKBConstants.java rev. 1.1 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_IO_WKBCONSTANTS_H diff -Nru geos-3.1.0/source/headers/geos/io/WKBReader.h geos-3.2.2/source/headers/geos/io/WKBReader.h --- geos-3.1.0/source/headers/geos/io/WKBReader.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/WKBReader.h 2009-12-03 19:38:12.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKBReader.h 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: WKBReader.h 2775 2009-12-03 19:38:12Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKBReader.java rev. 1.1 (JTS-1.7) + * **********************************************************************/ #ifndef GEOS_IO_WKBREADER_H #define GEOS_IO_WKBREADER_H +#include + #include #include // for composition @@ -24,6 +30,9 @@ #include #include +#define BAD_GEOM_TYPE_MSG "Bad geometry type encountered in" + + // Forward declarations namespace geos { namespace geom { @@ -64,7 +73,7 @@ * representing 3-dimensional coordinates. * */ -class WKBReader { +class GEOS_DLL WKBReader { public: @@ -105,8 +114,6 @@ private: - static std::string BAD_GEOM_TYPE_MSG; - const geom::GeometryFactory &factory; // for now support the WKB standard only - may be generalized later @@ -147,7 +154,9 @@ void readCoordinate(); // throws IOException - + // Declare type as noncopyable + WKBReader(const WKBReader& other); + WKBReader& operator=(const WKBReader& rhs); }; } // namespace io diff -Nru geos-3.1.0/source/headers/geos/io/WKBWriter.h geos-3.2.2/source/headers/geos/io/WKBWriter.h --- geos-3.1.0/source/headers/geos/io/WKBWriter.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/WKBWriter.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKBWriter.h 2192 2008-09-22 21:48:07Z mloskot $ + * $Id: WKBWriter.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKBWriter.java rev. 1.1 (JTS-1.7) + * **********************************************************************/ #ifndef GEOS_IO_WKBWRITER_H #define GEOS_IO_WKBWRITER_H +#include + #include // for getMachineByteOrder #include @@ -64,7 +70,7 @@ * * @see WKBReader */ -class WKBWriter { +class GEOS_DLL WKBWriter { public: /* diff -Nru geos-3.1.0/source/headers/geos/io/WKTReader.h geos-3.2.2/source/headers/geos/io/WKTReader.h --- geos-3.1.0/source/headers/geos/io/WKTReader.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/WKTReader.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKTReader.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: WKTReader.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKTReader.java rev. 1.1 (JTS-1.7) + * **********************************************************************/ #ifndef GEOS_IO_WKTREADER_H #define GEOS_IO_WKTREADER_H +#include + #include #include #include @@ -50,7 +56,7 @@ * \class WKTReader io.h geos.h * \brief WKT parser class; see also WKTWriter. */ -class WKTReader { +class GEOS_DLL WKTReader { public: //WKTReader(); diff -Nru geos-3.1.0/source/headers/geos/io/WKTReader.inl geos-3.2.2/source/headers/geos/io/WKTReader.inl --- geos-3.1.0/source/headers/geos/io/WKTReader.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/WKTReader.inl 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKTReader.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: WKTReader.inl 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKTReader.java rev. 1.1 (JTS-1.7) + * **********************************************************************/ #ifndef GEOS_IO_WKTREADER_INL diff -Nru geos-3.1.0/source/headers/geos/io/WKTWriter.h geos-3.2.2/source/headers/geos/io/WKTWriter.h --- geos-3.1.0/source/headers/geos/io/WKTWriter.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/WKTWriter.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKTWriter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: WKTWriter.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKTWriter.java rev. 1.34 (JTS-1.7) + * **********************************************************************/ #ifndef GEOS_IO_WKTWRITER_H #define GEOS_IO_WKTWRITER_H +#include + #include // Forward declarations @@ -65,7 +71,7 @@ * See WKTReader for parsing. * */ -class WKTWriter { +class GEOS_DLL WKTWriter { public: WKTWriter(); ~WKTWriter(); diff -Nru geos-3.1.0/source/headers/geos/io/Writer.h geos-3.2.2/source/headers/geos/io/Writer.h --- geos-3.1.0/source/headers/geos/io/Writer.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/io/Writer.h 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Writer.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Writer.h 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,17 +12,23 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: ORIGINAL WORK to be used like java.io.Writer + * **********************************************************************/ #ifndef GEOS_IO_WRITER_H #define GEOS_IO_WRITER_H +#include + #include namespace geos { namespace io { -class Writer { +class GEOS_DLL Writer { public: Writer(); ~Writer(); diff -Nru geos-3.1.0/source/headers/geos/linearref/ExtractLineByLocation.h geos-3.2.2/source/headers/geos/linearref/ExtractLineByLocation.h --- geos-3.1.0/source/headers/geos/linearref/ExtractLineByLocation.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/ExtractLineByLocation.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,91 @@ +/********************************************************************** + * $Id: ExtractLineByLocation.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/ExtractLineByLocation.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_EXTRACTLINEBYLOCATION_H +#define GEOS_LINEARREF_EXTRACTLINEBYLOCATION_H + +#include +#include +#include + +namespace geos +{ +namespace linearref // geos::linearref +{ + +/** + * Extracts the subline of a linear {@link Geometry} between + * two {@link LinearLocation}s on the line. + */ +class ExtractLineByLocation +{ + +private: + const geom::Geometry *line; + geom::Geometry *reverse(const geom::Geometry *linear); + + /** + * Assumes input is valid (e.g. start <= end) + * + * @param start + * @param end + * @return a linear geometry + */ + geom::LineString* computeLine(const LinearLocation& start, const LinearLocation& end); + + /** + * Assumes input is valid (e.g. start <= end) + * + * @param start + * @param end + * @return a linear geometry + */ + geom::Geometry *computeLinear(const LinearLocation& start, const LinearLocation& end); + +public: + /** + * Computes the subline of a {@link LineString} between + * two {@link LineStringLocation}s on the line. + * If the start location is after the end location, + * the computed geometry is reversed. + * + * @param line the line to use as the baseline + * @param start the start location + * @param end the end location + * @return the extracted subline + */ + static geom::Geometry *extract(const geom::Geometry *line, const LinearLocation& start, const LinearLocation& end); + + ExtractLineByLocation(const geom::Geometry *line); + + /** + * Extracts a subline of the input. + * If end < start the linear geometry computed will be reversed. + * + * @param start the start location + * @param end the end location + * @return a linear geometry + */ + geom::Geometry *extract(const LinearLocation& start, const LinearLocation& end); + +}; +} +} +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/LengthIndexedLine.h geos-3.2.2/source/headers/geos/linearref/LengthIndexedLine.h --- geos-3.1.0/source/headers/geos/linearref/LengthIndexedLine.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LengthIndexedLine.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,203 @@ +/********************************************************************** + * $Id: LengthIndexedLine.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LengthIndexedLine.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LENGTHINDEXEDLINE_H +#define GEOS_LINEARREF_LENGTHINDEXEDLINE_H + +#include +#include +#include + +namespace geos +{ +namespace linearref // geos::linearref +{ + +/** \brief + * Supports linear referencing along a linear {@link Geometry} + * using the length along the line as the index. + * Negative length values are taken as measured in the reverse direction + * from the end of the geometry. + * Out-of-range index values are handled by clamping + * them to the valid range of values. + * Non-simple lines (i.e. which loop back to cross or touch + * themselves) are supported. + */ + +class LengthIndexedLine +{ +private: + const geom::Geometry *linearGeom; + LinearLocation locationOf(double index) const; + +public: + + /** \brief + * Constructs an object which allows a linear {@link Geometry} + * to be linearly referenced using length as an index. + * + * @param linearGeom the linear geometry to reference along + */ + + LengthIndexedLine(const geom::Geometry *linearGeom); + + /** \brief + * Computes the {@link Coordinate} for the point + * on the line at the given index. + * If the index is out of range the first or last point on the + * line will be returned. + * The Z-ordinate of the computed point will be interpolated from + * the Z-ordinates of the line segment containing it, if they exist. + * + * @param index the index of the desired point + * @return the Coordinate at the given index + */ + geom::Coordinate extractPoint(double index) const; + + + /** + * Computes the {@link Coordinate} for the point + * on the line at the given index, offset by the given distance. + * If the index is out of range the first or last point on the + * line will be returned. + * The computed point is offset to the left of the line if the offset distance is + * positive, to the right if negative. + * + * The Z-ordinate of the computed point will be interpolated from + * the Z-ordinates of the line segment containing it, if they exist. + * + * @param index the index of the desired point + * @param offsetDistance the distance the point is offset from the segment + * (positive is to the left, negative is to the right) + * @return the Coordinate at the given index + */ + geom::Coordinate extractPoint(double index, double offsetDistance) const; + + /** + * Computes the {@link LineString} for the interval + * on the line between the given indices. + * If the endIndex lies before the startIndex, + * the computed geometry is reversed. + * + * @param startIndex the index of the start of the interval + * @param endIndex the index of the end of the interval + * @return the linear interval between the indices + */ + geom::Geometry *extractLine(double startIndex, double endIndex) const; + + + /** + * Computes the minimum index for a point on the line. + * If the line is not simple (i.e. loops back on itself) + * a single point may have more than one possible index. + * In this case, the smallest index is returned. + * + * The supplied point does not necessarily have to lie precisely + * on the line, but if it is far from the line the accuracy and + * performance of this function is not guaranteed. + * Use {@link #project} to compute a guaranteed result for points + * which may be far from the line. + * + * @param pt a point on the line + * @return the minimum index of the point + * + * @see project + */ + double indexOf(const geom::Coordinate& pt) const; + + /** + * Finds the index for a point on the line + * which is greater than the given index. + * If no such index exists, returns minIndex. + * This method can be used to determine all indexes for + * a point which occurs more than once on a non-simple line. + * It can also be used to disambiguate cases where the given point lies + * slightly off the line and is equidistant from two different + * points on the line. + * + * The supplied point does not necessarily have to lie precisely + * on the line, but if it is far from the line the accuracy and + * performance of this function is not guaranteed. + * Use {@link #project} to compute a guaranteed result for points + * which may be far from the line. + * + * @param pt a point on the line + * @param minIndex the value the returned index must be greater than + * @return the index of the point greater than the given minimum index + * + * @see project + */ + double indexOfAfter(const geom::Coordinate& pt, double minIndex) const; + + /** + * Computes the indices for a subline of the line. + * (The subline must conform to the line; that is, + * all vertices in the subline (except possibly the first and last) + * must be vertices of the line and occcur in the same order). + * + * @param subLine a subLine of the line + * @return a pair of indices for the start and end of the subline. + */ + double* indicesOf(const geom::Geometry *subLine) const; + + + /** + * Computes the index for the closest point on the line to the given point. + * If more than one point has the closest distance the first one along the line + * is returned. + * (The point does not necessarily have to lie precisely on the line.) + * + * @param pt a point on the line + * @return the index of the point + */ + double project(const geom::Coordinate& pt) const; + + /** + * Returns the index of the start of the line + * @return the start index + */ + double getStartIndex() const; + + /** + * Returns the index of the end of the line + * @return the end index + */ + double getEndIndex() const; + + /** + * Tests whether an index is in the valid index range for the line. + * + * @param length the index to test + * @return true if the index is in the valid range + */ + bool isValidIndex(double index) const; + + + /** + * Computes a valid index for this line + * by clamping the given index to the valid range of index values + * + * @return a valid index value + */ + double clampIndex(double index) const; +}; +} +} +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/LengthIndexOfPoint.h geos-3.2.2/source/headers/geos/linearref/LengthIndexOfPoint.h --- geos-3.1.0/source/headers/geos/linearref/LengthIndexOfPoint.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LengthIndexOfPoint.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,83 @@ +/********************************************************************** + * $Id: LengthIndexOfPoint.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LengthIndexOfPoint.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LENGTHINDEXOFPOINT_H +#define GEOS_LINEARREF_LENGTHINDEXOFPOINT_H + +#include + +#include +#include +#include +#include + + +namespace geos +{ +namespace linearref // geos::linearref +{ + +class LengthIndexOfPoint +{ + +private: + const geom::Geometry *linearGeom; + + double indexOfFromStart(const geom::Coordinate& inputPt, const double minIndex) const; + + double segmentNearestMeasure(const geom::LineSegment *seg, + const geom::Coordinate& inputPt, + double segmentStartMeasure) const; +public: + static double indexOf(const geom::Geometry *linearGeom, const geom::Coordinate& inputPt); + + static double indexOfAfter(const geom::Geometry *linearGeom, const geom::Coordinate& inputPt, double minIndex); + + LengthIndexOfPoint(const geom::Geometry *linearGeom); + + /** + * Find the nearest location along a linear {@link Geometry} to a given point. + * + * @param inputPt the coordinate to locate + * @return the location of the nearest point + */ + double indexOf(const geom::Coordinate& inputPt) const; + + /** + * Finds the nearest index along the linear {@link Geometry} + * to a given {@link Coordinate} + * after the specified minimum index. + * If possible the location returned will be strictly greater than the + * minLocation. + * If this is not possible, the + * value returned will equal minLocation. + * (An example where this is not possible is when + * minLocation = [end of line] ). + * + * @param inputPt the coordinate to locate + * @param minLocation the minimum location for the point location + * @return the location of the nearest point + */ + double indexOfAfter(const geom::Coordinate& inputPt, double minIndex) const; + +}; +} +} +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/LengthLocationMap.h geos-3.2.2/source/headers/geos/linearref/LengthLocationMap.h --- geos-3.1.0/source/headers/geos/linearref/LengthLocationMap.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LengthLocationMap.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,91 @@ +/********************************************************************** + * $Id: LengthLocationMap.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LengthLocationMap.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LENGTHLOCATIONMAP_H +#define GEOS_LINEARREF_LENGTHLOCATIONMAP_H + +#include +#include +#include + +namespace geos +{ +namespace linearref // geos::linearref +{ + +/** + * Computes the {@link LinearLocation} for a given length + * along a linear {@link Geometry}. + * Negative lengths are measured in reverse from end of the linear geometry. + * Out-of-range values are clamped. + */ +class LengthLocationMap +{ + + +private: + const geom::Geometry *linearGeom; + + LinearLocation getLocationForward(double length) const; + +public: + + // TODO: cache computed cumulative length for each vertex + // TODO: support user-defined measures + // TODO: support measure index for fast mapping to a location + + /** + * Computes the {@link LinearLocation} for a + * given length along a linear {@link Geometry}. + * + * @param line the linear geometry to use + * @param length the length index of the location + * @return the {@link LinearLocation} for the length + */ + static LinearLocation getLocation(const geom::Geometry *linearGeom, double length); + + /** + * Computes the length for a given {@link LinearLocation} + * on a linear {@link Geometry}. + * + * @param line the linear geometry to use + * @param loc the {@link LinearLocation} index of the location + * @return the length for the {@link LinearLocation} + */ + static double getLength(const geom::Geometry *linearGeom, const LinearLocation& loc); + + LengthLocationMap(const geom::Geometry *linearGeom); + + /** + * Compute the {@link LinearLocation} corresponding to a length. + * Negative lengths are measured in reverse from end of the linear geometry. + * Out-of-range values are clamped. + * + * @param length the length index + * @return the corresponding LinearLocation + */ + LinearLocation getLocation(double length) const; + + double getLength(const LinearLocation& loc) const; + +}; +} +} +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/LinearGeometryBuilder.h geos-3.2.2/source/headers/geos/linearref/LinearGeometryBuilder.h --- geos-3.1.0/source/headers/geos/linearref/LinearGeometryBuilder.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LinearGeometryBuilder.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,108 @@ +/********************************************************************** + * $Id: LinearGeometryBuilder.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearGeometryBuilder.java rev. 1.1 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LINEARGEOMETRYBUILDER_H +#define GEOS_LINEARREF_LINEARGEOMETRYBUILDER_H + +#include +#include +#include +#include +#include + +#include + +namespace geos +{ +namespace linearref // geos::linearref +{ + +/** + * Builds a linear geometry ({@link LineString} or {@link MultiLineString}) + * incrementally (point-by-point). + * + * @version 1.7 + */ +class LinearGeometryBuilder +{ +private: + const geom::GeometryFactory* geomFact; + + typedef std::vector GeomPtrVect; + + // Geometry elements owned by this class + GeomPtrVect lines; + + bool ignoreInvalidLines; + bool fixInvalidLines; + geom::CoordinateSequence* coordList; + + geom::Coordinate lastPt; + +public: + LinearGeometryBuilder(const geom::GeometryFactory* geomFact); + + ~LinearGeometryBuilder(); + + /** + * Allows invalid lines to be ignored rather than causing Exceptions. + * An invalid line is one which has only one unique point. + * + * @param ignoreShortLines true if short lines are + * to be ignored + */ + void setIgnoreInvalidLines(bool ignoreInvalidLines); + + /** + * Allows invalid lines to be ignored rather than causing Exceptions. + * An invalid line is one which has only one unique point. + * + * @param ignoreShortLines true if short lines are + * to be ignored + */ + void setFixInvalidLines(bool fixInvalidLines); + + /** + * Adds a point to the current line. + * + * @param pt the Coordinate to add + */ + void add(const geom::Coordinate& pt); + + /** + * Adds a point to the current line. + * + * @param pt the Coordinate to add + */ + void add(const geom::Coordinate& pt, bool allowRepeatedPoints); + + /// NOTE strk: why return by value ? + geom::Coordinate getLastCoordinate() const; + + /// Terminate the current LineString. + void endLine(); + + geom::Geometry *getGeometry(); +}; + +} // namespace geos.linearref +} // namespace geos + +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/LinearIterator.h geos-3.2.2/source/headers/geos/linearref/LinearIterator.h --- geos-3.1.0/source/headers/geos/linearref/LinearIterator.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LinearIterator.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,156 @@ +/********************************************************************** + * $Id: LinearIterator.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearIterator.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LINEARITERATOR_H +#define GEOS_LINEARREF_LINEARITERATOR_H + +#include + +#include +#include +#include +#include + +namespace geos { namespace linearref +{ + +/** + * An iterator over the components and coordinates of a linear geometry + * ({@link LineString}s and {@link MultiLineString}s. + * + * The standard usage pattern for a {@link LinearIterator} is: + * + *
+ * for (LinearIterator it = new LinearIterator(...); it.hasNext(); it.next()) {
+ *   ...
+ *   int ci = it.getComponentIndex();   // for example
+ *   int vi = it.getVertexIndex();      // for example
+ *   ...
+ * }
+ * 
+ * + * @version 1.7 + */ +class LinearIterator +{ +public: + /** + * Creates an iterator initialized to the start of a linear {@link Geometry} + * + * @param linear the linear geometry to iterate over + */ + LinearIterator(const geom::Geometry *linear); + + /** + * Creates an iterator starting at + * a {@link LinearLocation} on a linear {@link Geometry} + * + * @param linear the linear geometry to iterate over + * @param start the location to start at + */ + LinearIterator(const geom::Geometry *linear, const LinearLocation& start); + + /** + * Creates an iterator starting at + * a component and vertex in a linear {@link Geometry} + * + * @param linear the linear geometry to iterate over + * @param componentIndex the component to start at + * @param vertexIndex the vertex to start at + */ + LinearIterator(const geom::Geometry *linear, unsigned int componentIndex, unsigned int vertexIndex); + + /** + * Tests whether there are any vertices left to iterator over. + * @return true if there are more vertices to scan + */ + bool hasNext() const; + + + /** + * Moves the iterator ahead to the next vertex and (possibly) linear component. + */ + void next(); + + /** + * Checks whether the iterator cursor is pointing to the + * endpoint of a linestring. + * + * @return true if the iterator is at an endpoint + */ + bool isEndOfLine() const; + + /** + * The component index of the vertex the iterator is currently at. + * @return the current component index + */ + unsigned int getComponentIndex() const; + + /** + * The vertex index of the vertex the iterator is currently at. + * @return the current vertex index + */ + unsigned int getVertexIndex() const; + + /** + * Gets the {@link LineString} component the iterator is current at. + * @return a linestring + */ + const geom::LineString* getLine() const; + + /** + * Gets the first {@link Coordinate} of the current segment. + * (the coordinate of the current vertex). + * @return a {@link Coordinate} + */ + geom::Coordinate getSegmentStart() const; + + /** + * Gets the second {@link Coordinate} of the current segment. + * (the coordinate of the next vertex). + * If the iterator is at the end of a line, null is returned. + * + * @return a {@link Coordinate} or null + */ + geom::Coordinate getSegmentEnd() const; + +private: + + static unsigned int segmentEndVertexIndex(const LinearLocation& loc); + + const geom::LineString *currentLine; + unsigned int vertexIndex; + unsigned int componentIndex; + const geom::Geometry *linear; + const unsigned int numLines; + + /** + * Invariant: currentLine <> null if the iterator is pointing at a valid coordinate + */ + void loadCurrentLine(); + + // Declare type as noncopyable + LinearIterator(const LinearIterator& other); + LinearIterator& operator=(const LinearIterator& rhs); +}; + +}} // namespace geos::linearref + +#endif // GEOS_LINEARREF_LINEARITERATOR_H diff -Nru geos-3.1.0/source/headers/geos/linearref/LinearLocation.h geos-3.2.2/source/headers/geos/linearref/LinearLocation.h --- geos-3.1.0/source/headers/geos/linearref/LinearLocation.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LinearLocation.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,238 @@ +/********************************************************************** + * $Id: LinearLocation.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearLocation.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LINEARLOCATION_H +#define GEOS_LINEARREF_LINEARLOCATION_H + +#include +#include // for std::auto_ptr + +#include +#include +#include + +namespace geos { +namespace linearref { // geos::linearref + + +/** \brief + * Represents a location along a {@link LineString} or {@link MultiLineString}. + * + * The referenced geometry is not maintained within + * this location, but must be provided for operations which require it. + * Various methods are provided to manipulate the location value + * and query the geometry it references. + */ +class LinearLocation +{ +private: + unsigned int componentIndex; + unsigned int segmentIndex; + double segmentFraction; + + /** + * Ensures the individual values are locally valid. + * Does not ensure that the indexes are valid for + * a particular linear geometry. + * + * @see clamp + */ + void normalize(); + +public: + /** + * Gets a location which refers to the end of a linear {@link Geometry}. + * @param linear the linear geometry + * @return a new LinearLocation + */ + static LinearLocation getEndLocation(const geom::Geometry* linear); + + /** + * Computes the {@link Coordinate} of a point a given fraction + * along the line segment (p0, p1). + * If the fraction is greater than 1.0 the last + * point of the segment is returned. + * If the fraction is less than or equal to 0.0 the first point + * of the segment is returned. + * The Z ordinate is interpolated from the Z-ordinates of + * the given points, if they are specified. + * + * @param p0 the first point of the line segment + * @param p1 the last point of the line segment + * @param frac the length to the desired point + * @return the Coordinate of the desired point + */ + static geom::Coordinate pointAlongSegmentByFraction(const geom::Coordinate& p0, const geom::Coordinate& p1, double frac); + + + /** + * Creates a location referring to the start of a linear geometry + */ + LinearLocation(unsigned int segmentIndex = 0, double segmentFraction = 0.0); + + LinearLocation(unsigned int componentIndex, unsigned int segmentIndex, double segmentFraction); + + /** + * Ensures the indexes are valid for a given linear {@link Geometry}. + * + * @param linear a linear geometry + */ + void clamp(const geom::Geometry* linear); + + /** + * Snaps the value of this location to + * the nearest vertex on the given linear {@link Geometry}, + * if the vertex is closer than minDistance. + * + * @param linearGeom a linear geometry + * @param minDistance the minimum allowable distance to a vertex + */ + void snapToVertex(const geom::Geometry* linearGeom, double minDistance); + + /** + * Gets the length of the segment in the given + * Geometry containing this location. + * + * @param linearGeom a linear geometry + * @return the length of the segment + */ + double getSegmentLength(const geom::Geometry* linearGeom) const; + + /** + * Sets the value of this location to + * refer the end of a linear geometry + * + * @param linear the linear geometry to set + */ + void setToEnd(const geom::Geometry* linear); + + /** + * Gets the component index for this location. + * + * @return the component index + */ + unsigned int getComponentIndex() const; + + /** + * Gets the segment index for this location + * + * @return the segment index + */ + unsigned int getSegmentIndex() const; + + /** + * Gets the segment fraction for this location + * + * @return the segment fraction + */ + double getSegmentFraction() const; + + /** + * Tests whether this location refers to a vertex + * + * @return true if the location is a vertex + */ + bool isVertex() const; + + /** + * Gets the {@link Coordinate} along the + * given linear {@link Geometry} which is + * referenced by this location. + * + * @param linearGeom a linear geometry + * @return the Coordinate at the location + */ + geom::Coordinate getCoordinate(const geom::Geometry* linearGeom) const; + + /** + * Gets a {@link LineSegment} representing the segment of the + * given linear {@link Geometry} which contains this location. + * + * @param linearGeom a linear geometry + * @return the LineSegment containing the location + */ + std::auto_ptr getSegment(const geom::Geometry* linearGeom) const; + + /** + * Tests whether this location refers to a valid + * location on the given linear {@link Geometry}. + * + * @param linearGeom a linear geometry + * @return true if this location is valid + */ + bool isValid(const geom::Geometry* linearGeom) const; + + /** + * Compares this object with the specified object for order. + * + *@param o the LineStringLocation with which this Coordinate + * is being compared + *@return a negative integer, zero, or a positive integer as this LineStringLocation + * is less than, equal to, or greater than the specified LineStringLocation + */ + int compareTo(const LinearLocation& other) const; + + /** + * Compares this object with the specified index values for order. + * + * @param componentIndex1 a component index + * @param segmentIndex1 a segment index + * @param segmentFraction1 a segment fraction + * @return a negative integer, zero, or a positive integer as this LineStringLocation + * is less than, equal to, or greater than the specified locationValues + */ + int compareLocationValues(unsigned int componentIndex1, unsigned int segmentIndex1, double segmentFraction1) const; + + /** + * Compares two sets of location values for order. + * + * @param componentIndex0 a component index + * @param segmentIndex0 a segment index + * @param segmentFraction0 a segment fraction + * @param componentIndex1 another component index + * @param segmentIndex1 another segment index + * @param segmentFraction1 another segment fraction + *@return a negative integer, zero, or a positive integer + * as the first set of location values + * is less than, equal to, or greater than the second set of locationValues + */ + static int compareLocationValues( + unsigned int componentIndex0, unsigned int segmentIndex0, double segmentFraction0, + unsigned int componentIndex1, unsigned int segmentIndex1, double segmentFraction1); + + /** + * Tests whether two locations + * are on the same segment in the parent {@link Geometry}. + * + * @param loc a location on the same geometry + * @return true if the locations are on the same segment of the parent geometry + */ + bool isOnSameSegment(const LinearLocation& loc) const; + + + friend std::ostream& operator<< (std::ostream& out, const LinearLocation& obj ); + +}; + + +} // namespace geos.linearref +} // namespace geos + +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/LocationIndexOfLine.h geos-3.2.2/source/headers/geos/linearref/LocationIndexOfLine.h --- geos-3.1.0/source/headers/geos/linearref/LocationIndexOfLine.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LocationIndexOfLine.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,77 @@ +/********************************************************************** + * $Id: LocationIndexOfLine.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearGeometryBuilder.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LINEARGEOMETRYBUILDER_H +#define GEOS_LINEARREF_LINEARGEOMETRYBUILDER_H + +#include +#include +#include + +namespace geos +{ +namespace linearref // geos::linearref +{ + +/** + * Determines the location of a subline along a linear {@link Geometry}. + * The location is reported as a pair of {@link LinearLocation}s. + *

+ * Note: Currently this algorithm is not guaranteed to + * return the correct substring in some situations where + * an endpoint of the test line occurs more than once in the input line. + * (However, the common case of a ring is always handled correctly). + */ +class LocationIndexOfLine +{ + /** + * MD - this algorithm has been extracted into a class + * because it is intended to validate that the subline truly is a subline, + * and also to use the internal vertex information to unambiguously locate the subline. + */ +private: + const geom::Geometry* linearGeom; + +public: + + /** \brief + * Determines the location of a subline along a linear {@link Geometry}. + * + * The location is reported as a pair of {@link LinearLocation}s. + * + * Note: Currently this algorithm is not guaranteed to + * return the correct substring in some situations where + * an endpoint of the test line occurs more than once in the input line. + * (However, the common case of a ring is always handled correctly). + * + * Caller must take of releasing with delete[] + * + */ + static LinearLocation* indicesOf(const geom::Geometry* linearGeom, const geom::Geometry* subLine); + + LocationIndexOfLine(const geom::Geometry* linearGeom); + + /// Caller must take of releasing with delete[] + LinearLocation* indicesOf(const geom::Geometry* subLine) const; +}; +} +} + +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/LocationIndexOfPoint.h geos-3.2.2/source/headers/geos/linearref/LocationIndexOfPoint.h --- geos-3.1.0/source/headers/geos/linearref/LocationIndexOfPoint.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/LocationIndexOfPoint.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,81 @@ +/********************************************************************** + * $Id: LocationIndexOfPoint.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearGeometryBuilder.java rev. 1.10 + * + **********************************************************************/ + +#ifndef GEOS_LINEARREF_LOCATIONINDEXOFPOINT_H +#define GEOS_LINEARREF_LOCATIONINDEXOFPOINT_H + +#include +#include +#include + +namespace geos +{ +namespace linearref // geos::linearref +{ + +/** + * Computes the {@link LinearLocation} of the point + * on a linear {@link Geometry} nearest a given {@link Coordinate}. + * The nearest point is not necessarily unique; this class + * always computes the nearest point closest to + * the start of the geometry. + */ +class LocationIndexOfPoint +{ + +private: + const geom::Geometry *linearGeom; + + LinearLocation indexOfFromStart(const geom::Coordinate& inputPt, LinearLocation* minIndex) const; + +public: + static LinearLocation indexOf(const geom::Geometry *linearGeom, const geom::Coordinate& inputPt); + + static LinearLocation indexOfAfter(const geom::Geometry *linearGeom, const geom::Coordinate& inputPt, LinearLocation* minIndex); + + LocationIndexOfPoint(const geom::Geometry *linearGeom); + + /** + * Find the nearest location along a linear {@link Geometry} to a given point. + * + * @param inputPt the coordinate to locate + * @return the location of the nearest point + */ + LinearLocation indexOf(const geom::Coordinate& inputPt) const; + /** + * Find the nearest {@link LinearLocation} along the linear {@link Geometry} + * to a given {@link Coordinate} + * after the specified minimum {@link LinearLocation}. + * If possible the location returned will be strictly greater than the + * minLocation. + * If this is not possible, the + * value returned will equal minLocation. + * (An example where this is not possible is when + * minLocation = [end of line] ). + * + * @param inputPt the coordinate to locate + * @param minLocation the minimum location for the point location + * @return the location of the nearest point + */ + LinearLocation indexOfAfter(const geom::Coordinate& inputPt, LinearLocation* minIndex) const; +}; +} +} +#endif diff -Nru geos-3.1.0/source/headers/geos/linearref/Makefile.am geos-3.2.2/source/headers/geos/linearref/Makefile.am --- geos-3.1.0/source/headers/geos/linearref/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/Makefile.am 2009-08-12 20:01:57.000000000 +0100 @@ -0,0 +1,15 @@ + +EXTRA_DIST = + +geosdir = $(includedir)/geos/algorithm + +geos_HEADERS = \ + ExtractLineByLocation.h \ + LengthIndexedLine.h \ + LengthIndexOfPoint.h \ + LengthLocationMap.h \ + LinearIterator.h \ + LinearGeometryBuilder.h \ + LinearLocation.h \ + LocationIndexOfLine.h \ + LocationIndexOfPoint.h diff -Nru geos-3.1.0/source/headers/geos/linearref/Makefile.in geos-3.2.2/source/headers/geos/linearref/Makefile.in --- geos-3.1.0/source/headers/geos/linearref/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/linearref/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -0,0 +1,520 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = source/headers/geos/linearref +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = +geosdir = $(includedir)/geos/algorithm +geos_HEADERS = \ + ExtractLineByLocation.h \ + LengthIndexedLine.h \ + LengthIndexOfPoint.h \ + LengthLocationMap.h \ + LinearIterator.h \ + LinearGeometryBuilder.h \ + LinearLocation.h \ + LocationIndexOfLine.h \ + LocationIndexOfPoint.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/linearref/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/linearref/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-geosHEADERS: $(geos_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ + done + +uninstall-geosHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean 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-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-geosHEADERS + + +# 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 -Nru geos-3.1.0/source/headers/geos/Makefile.am geos-3.2.2/source/headers/geos/Makefile.am --- geos-3.1.0/source/headers/geos/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/Makefile.am 2009-08-12 20:01:57.000000000 +0100 @@ -4,6 +4,7 @@ geomgraph \ index \ io \ + linearref \ noding \ operation \ planargraph \ @@ -17,10 +18,11 @@ geosdir = $(includedir)/geos geos_HEADERS = \ - geom.h \ - geomUtil.h \ + export.h \ geomgraph.h \ geomgraphindex.h \ + geom.h \ + geomUtil.h \ geosAlgorithm.h \ indexBintree.h \ indexChain.h \ @@ -33,24 +35,20 @@ nodingSnapround.h \ opBuffer.h \ opDistance.h \ + operation.h \ opLinemerge.h \ opOverlay.h \ opPolygonize.h \ opPredicate.h \ opRelate.h \ opValid.h \ - operation.h \ - operation.h \ planargraph.h \ + platform.h \ precision.h \ + profiler.h \ spatialIndex.h \ timeval.h \ unload.h \ - util.h - -nodist_geos_HEADERS = \ - platform.h \ - version.h + util.h \ + version.h -noinst_HEADERS = \ - profiler.h diff -Nru geos-3.1.0/source/headers/geos/Makefile.in geos-3.2.2/source/headers/geos/Makefile.in --- geos-3.1.0/source/headers/geos/Makefile.in 2009-03-11 19:13:38.000000000 +0000 +++ geos-3.2.2/source/headers/geos/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,12 +36,17 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/platform.h.in \ $(srcdir)/version.h.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,32 +54,75 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/source/headers/config.h platform.h CONFIG_CLEAN_FILES = version.h +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; -am__installdirs = "$(DESTDIR)$(geosdir)" "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -nodist_geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(nodist_geos_HEADERS) $(noinst_HEADERS) +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -104,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -127,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -161,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -172,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -196,42 +241,56 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ algorithm \ geom \ geomgraph \ index \ io \ + linearref \ noding \ operation \ planargraph \ @@ -242,10 +301,11 @@ EXTRA_DIST = platform.h.vc version.h version.h.vc geosdir = $(includedir)/geos geos_HEADERS = \ - geom.h \ - geomUtil.h \ + export.h \ geomgraph.h \ geomgraphindex.h \ + geom.h \ + geomUtil.h \ geosAlgorithm.h \ indexBintree.h \ indexChain.h \ @@ -258,27 +318,22 @@ nodingSnapround.h \ opBuffer.h \ opDistance.h \ + operation.h \ opLinemerge.h \ opOverlay.h \ opPolygonize.h \ opPredicate.h \ opRelate.h \ opValid.h \ - operation.h \ - operation.h \ planargraph.h \ + platform.h \ precision.h \ + profiler.h \ spatialIndex.h \ timeval.h \ unload.h \ - util.h - -nodist_geos_HEADERS = \ - platform.h \ - version.h - -noinst_HEADERS = \ - profiler.h + util.h \ + version.h all: platform.h $(MAKE) $(AM_MAKEFLAGS) all-recursive @@ -288,14 +343,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -313,18 +368,19 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): platform.h: stamp-h2 @if test ! -f $@; then \ rm -f stamp-h2; \ - $(MAKE) stamp-h2; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h2; \ else :; fi stamp-h2: $(srcdir)/platform.h.in $(top_builddir)/config.status @rm -f stamp-h2 cd $(top_builddir) && $(SHELL) ./config.status source/headers/geos/platform.h $(srcdir)/platform.h.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h2 touch $@ @@ -338,44 +394,26 @@ clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done -install-nodist_geosHEADERS: $(nodist_geos_HEADERS) - @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(nodist_geos_HEADERS)'; for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(nodist_geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(nodist_geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ - done - -uninstall-nodist_geosHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nodist_geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -401,15 +439,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -436,16 +473,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -453,14 +490,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) platform.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -472,81 +509,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) platform.h.in $(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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) platform.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ list='$(SOURCES) $(HEADERS) platform.h.in $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -556,8 +613,8 @@ all-am: Makefile $(HEADERS) platform.h installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(geosdir)" "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -579,6 +636,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -589,8 +647,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive @@ -598,18 +655,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: -install-data-am: install-geosHEADERS install-nodist_geosHEADERS +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -628,25 +705,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am \ - uninstall-nodist_geosHEADERS +uninstall-am: uninstall-geosHEADERS + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive -uninstall-info: uninstall-info-recursive +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-recursive 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-geosHEADERS install-info install-info-am install-man \ - install-nodist_geosHEADERS install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-geosHEADERS uninstall-info-am \ - uninstall-nodist_geosHEADERS # 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. diff -Nru geos-3.1.0/source/headers/geos/noding/BasicSegmentString.h geos-3.2.2/source/headers/geos/noding/BasicSegmentString.h --- geos-3.1.0/source/headers/geos/noding/BasicSegmentString.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/noding/BasicSegmentString.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,111 @@ +/********************************************************************** + * $Id: BasicSegmentString.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: noding/BasicSegmentString.java rev. 1.1 (JTS-1.9) + * + **********************************************************************/ + +#ifndef GEOS_NODING_BASICSEGMENTSTRING_H +#define GEOS_NODING_BASICSEGMENTSTRING_H + +#include // for inheritance +#include // for inlines (size()) + +#include + +#include + +// Forward declarations +namespace geos { + namespace algorithm { + //class LineIntersector; + } +} + +namespace geos { +namespace noding { // geos.noding + +/** + * Represents a list of contiguous line segments, + * and supports noding the segments. + * The line segments are represented by an array of {@link Coordinate}s. + * Intended to optimize the noding of contiguous segments by + * reducing the number of allocated objects. + * SegmentStrings can carry a context object, which is useful + * for preserving topological or parentage information. + * All noded substrings are initialized with the same context object. + */ +class BasicSegmentString : public SegmentString { + +public: + + /// Construct a BasicSegmentString. + // + /// @param newPts CoordinateSequence representing the string, + /// externally owned + /// @param newContext the context associated to this SegmentString + /// + BasicSegmentString(geom::CoordinateSequence *newPts, + const void* newContext) + : + SegmentString(newContext), + pts(newPts) + {} + + virtual ~BasicSegmentString() + {} + + /// see dox in SegmentString.h + virtual unsigned int size() const + { + return pts->size(); + } + + /// see dox in SegmentString.h + virtual const geom::Coordinate& getCoordinate(unsigned int i) const; + + /// see dox in SegmentString.h + virtual geom::CoordinateSequence* getCoordinates() const; + + /// see dox in SegmentString.h + virtual bool isClosed() const; + + /// see dox in SegmentString.h + virtual std::ostream& print(std::ostream& os) const; + + /** \brief + * Gets the octant of the segment starting at vertex index. + * + * @param index the index of the vertex starting the segment. + * Must not be the last index in the vertex list + * @return the octant of the segment at the vertex + */ + int getSegmentOctant(unsigned int index) const; + +private: + + geom::CoordinateSequence *pts; + +}; + +} // namespace geos.noding +} // namespace geos + +#ifdef GEOS_INLINE +# include "geos/noding/SegmentString.inl" +#endif + +#endif // ndef GEOS_NODING_BASICSEGMENTSTRING_H + diff -Nru geos-3.1.0/source/headers/geos/noding/FastNodingValidator.h geos-3.2.2/source/headers/geos/noding/FastNodingValidator.h --- geos-3.1.0/source/headers/geos/noding/FastNodingValidator.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/FastNodingValidator.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: FastNodingValidator.h 2143 2008-07-26 23:06:11Z mloskot $ + * $Id: FastNodingValidator.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -111,7 +111,9 @@ void checkInteriorIntersections(); - + // Declare type as noncopyable + FastNodingValidator(const FastNodingValidator& other); + FastNodingValidator& operator=(const FastNodingValidator& rhs); }; } // namespace geos.noding diff -Nru geos-3.1.0/source/headers/geos/noding/IntersectionAdder.h geos-3.2.2/source/headers/geos/noding/IntersectionAdder.h --- geos-3.1.0/source/headers/geos/noding/IntersectionAdder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/IntersectionAdder.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IntersectionAdder.h 2143 2008-07-26 23:06:11Z mloskot $ + * $Id: IntersectionAdder.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/IntersectionAdder.java rev. 1.6 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_INTERSECTIONADDER_H #define GEOS_NODING_INTERSECTIONADDER_H +#include + #include #include #include // for abs() @@ -49,10 +55,8 @@ * detects that two SegmentStrings might intersect. * This class is an example of the Strategy pattern. * - * Last port: noding/IntersectionAdder.java rev. 1.4 (JTS-1.7) - * */ -class IntersectionAdder: public SegmentIntersector { +class GEOS_DLL IntersectionAdder: public SegmentIntersector { private: @@ -81,7 +85,9 @@ bool isTrivialIntersection(const SegmentString* e0, int segIndex0, const SegmentString* e1, int segIndex1); - + // Declare type as noncopyable + IntersectionAdder(const IntersectionAdder& other); + IntersectionAdder& operator=(const IntersectionAdder& rhs); public: @@ -160,6 +166,14 @@ return std::abs(i1 - i2) == 1; } + /** + * Always process all intersections + * + * @return false always + */ + virtual bool isDone() const { + return false; + } }; diff -Nru geos-3.1.0/source/headers/geos/noding/IntersectionFinderAdder.h geos-3.2.2/source/headers/geos/noding/IntersectionFinderAdder.h --- geos-3.1.0/source/headers/geos/noding/IntersectionFinderAdder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/IntersectionFinderAdder.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IntersectionFinderAdder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IntersectionFinderAdder.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/IntersectionFinderAdder.java rev. 1.5 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_INTERSECTIONFINDERADDER_H #define GEOS_NODING_INTERSECTIONFINDERADDER_H +#include + #include #include @@ -44,14 +50,8 @@ * Finds proper and interior intersections in a set of SegmentStrings, * and adds them as nodes. * - * Last port: noding/IntersectionFinderAdder.java rev. 1.2 (JTS-1.7) - * */ -class IntersectionFinderAdder: public SegmentIntersector { - -private: - algorithm::LineIntersector& li; - std::vector& interiorIntersections; +class GEOS_DLL IntersectionFinderAdder: public SegmentIntersector { public: @@ -87,6 +87,22 @@ return interiorIntersections; } + /** + * Always process all intersections + * + * @return false always + */ + virtual bool isDone() const { + return false; + } + +private: + algorithm::LineIntersector& li; + std::vector& interiorIntersections; + + // Declare type as noncopyable + IntersectionFinderAdder(const IntersectionFinderAdder& other); + IntersectionFinderAdder& operator=(const IntersectionFinderAdder& rhs); }; } // namespace geos.noding diff -Nru geos-3.1.0/source/headers/geos/noding/IteratedNoder.h geos-3.2.2/source/headers/geos/noding/IteratedNoder.h --- geos-3.1.0/source/headers/geos/noding/IteratedNoder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/IteratedNoder.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IteratedNoder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IteratedNoder.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/IteratedNoder.java rev. 1.6 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_ITERATEDNODER_H #define GEOS_NODING_ITERATEDNODER_H +#include + #include #include @@ -45,9 +51,8 @@ * due to roundoff error. This problem is detected and an exception is thrown. * Clients can choose to rerun the noding using a lower precision model. * - * Last port: noding/IteratedNoder.java rev. 1.6 (JTS-1.7) */ -class IteratedNoder : public Noder { // implements Noder +class GEOS_DLL IteratedNoder : public Noder { // implements Noder private: static const int MAX_ITER = 5; @@ -89,7 +94,7 @@ void setMaximumIterations(int n) { maxIter = n; } std::vector* getNodedSubstrings() const { - return SegmentString::getNodedSubstrings(*nodedSegStrings); + return nodedSegStrings; } diff -Nru geos-3.1.0/source/headers/geos/noding/Makefile.am geos-3.2.2/source/headers/geos/noding/Makefile.am --- geos-3.1.0/source/headers/geos/noding/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -1,23 +1,25 @@ SUBDIRS = snapround -EXTRA_DIST = MCIndexNoder.inl SegmentString.inl +EXTRA_DIST = -# NOTES: -# +geosdir = $(includedir)/geos/noding -noinst_HEADERS = \ +geos_HEADERS = \ + BasicSegmentString.h \ FastNodingValidator.h \ FastSegmentSetIntersectionFinder.h \ IntersectionAdder.h \ IntersectionFinderAdder.h \ IteratedNoder.h \ MCIndexNoder.h \ + MCIndexNoder.inl \ MCIndexSegmentSetMutualIntersector.h \ NodableSegmentString.h \ NodedSegmentString.h \ Noder.h \ NodingValidator.h \ Octant.h \ + OrientedCoordinateArray.h \ ScaledNoder.h \ SegmentIntersectionDetector.h \ SegmentIntersector.h \ @@ -25,11 +27,8 @@ SegmentNodeList.h \ SegmentSetMutualIntersector.h \ SegmentString.h \ + SegmentString.inl \ SegmentStringUtil.h \ SimpleNoder.h \ SingleInteriorIntersectionFinder.h \ - SinglePassNoder.h - -#geosdir = $(includedir)/geos/noding - -#geos_HEADERS = + SinglePassNoder.h diff -Nru geos-3.1.0/source/headers/geos/noding/Makefile.in geos-3.2.2/source/headers/geos/noding/Makefile.in --- geos-3.1.0/source/headers/geos/noding/Makefile.in 2009-03-11 19:13:47.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/noding -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,23 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive -HEADERS = $(noinst_HEADERS) + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -95,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -118,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -152,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -163,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -187,54 +241,68 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = snapround -EXTRA_DIST = MCIndexNoder.inl SegmentString.inl - -# NOTES: -# -noinst_HEADERS = \ +EXTRA_DIST = +geosdir = $(includedir)/geos/noding +geos_HEADERS = \ + BasicSegmentString.h \ FastNodingValidator.h \ FastSegmentSetIntersectionFinder.h \ IntersectionAdder.h \ IntersectionFinderAdder.h \ IteratedNoder.h \ MCIndexNoder.h \ + MCIndexNoder.inl \ MCIndexSegmentSetMutualIntersector.h \ NodableSegmentString.h \ NodedSegmentString.h \ Noder.h \ NodingValidator.h \ Octant.h \ + OrientedCoordinateArray.h \ ScaledNoder.h \ SegmentIntersectionDetector.h \ SegmentIntersector.h \ @@ -242,10 +310,11 @@ SegmentNodeList.h \ SegmentSetMutualIntersector.h \ SegmentString.h \ + SegmentString.inl \ SegmentStringUtil.h \ SimpleNoder.h \ SingleInteriorIntersectionFinder.h \ - SinglePassNoder.h + SinglePassNoder.h all: all-recursive @@ -254,14 +323,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/noding/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/noding/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/noding/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/noding/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -279,16 +348,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +install-geosHEADERS: $(geos_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ + done -distclean-libtool: - -rm -f libtool -uninstall-info-am: +uninstall-geosHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -314,15 +400,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -349,16 +434,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -366,14 +451,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -385,81 +470,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -469,6 +574,9 @@ all-am: Makefile $(HEADERS) installdirs: installdirs-recursive installdirs-am: + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive @@ -489,6 +597,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -499,8 +608,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -508,18 +616,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: -install-data-am: +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-recursive + +install-dvi-am: install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -538,27 +666,27 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-info-am - + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS -#geosdir = $(includedir)/geos/noding -#geos_HEADERS = # 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 -Nru geos-3.1.0/source/headers/geos/noding/MCIndexNoder.h geos-3.2.2/source/headers/geos/noding/MCIndexNoder.h --- geos-3.1.0/source/headers/geos/noding/MCIndexNoder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/MCIndexNoder.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexNoder.h 2240 2009-01-18 20:34:09Z pramsey $ + * $Id: MCIndexNoder.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/MCIndexNoder.java rev. 1.6 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_MCINDEXNODER_H #define GEOS_NODING_MCINDEXNODER_H +#include + #include #include // for inheritance @@ -50,7 +56,7 @@ * * Last port: noding/MCIndexNoder.java rev. 1.4 (JTS-1.7) */ -class MCIndexNoder : public SinglePassNoder { +class GEOS_DLL MCIndexNoder : public SinglePassNoder { private: std::vector monoChains; @@ -86,23 +92,21 @@ void computeNodes(std::vector* inputSegmentStrings); class SegmentOverlapAction : public index::chain::MonotoneChainOverlapAction { - private: - SegmentIntersector& si; public: SegmentOverlapAction(SegmentIntersector& newSi) : + index::chain::MonotoneChainOverlapAction(), si(newSi) {} - void overlap(index::chain::MonotoneChain* mc1, int start1, - index::chain::MonotoneChain* mc2, int start2); - - void overlap(geom::LineSegment* s1, geom::LineSegment* s2) - { - UNREFERENCED_PARAMETER(s1); - UNREFERENCED_PARAMETER(s2); - assert(0); - } + void overlap(index::chain::MonotoneChain& mc1, size_t start1, + index::chain::MonotoneChain& mc2, size_t start2); + private: + SegmentIntersector& si; + + // Declare type as noncopyable + SegmentOverlapAction(const SegmentOverlapAction& other); + SegmentOverlapAction& operator=(const SegmentOverlapAction& rhs); }; }; diff -Nru geos-3.1.0/source/headers/geos/noding/MCIndexNoder.inl geos-3.2.2/source/headers/geos/noding/MCIndexNoder.inl --- geos-3.1.0/source/headers/geos/noding/MCIndexNoder.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/MCIndexNoder.inl 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexNoder.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MCIndexNoder.inl 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/MCIndexNoder.java rev. 1.6 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODINGMCINDEXNODER_INL @@ -18,6 +22,7 @@ #include #include +#include #include @@ -34,7 +39,7 @@ MCIndexNoder::getNodedSubstrings() const { assert(nodedSegStrings); // must have colled computeNodes before! - return SegmentString::getNodedSubstrings(*nodedSegStrings); + return NodedSegmentString::getNodedSubstrings(*nodedSegStrings); } } // namespace geos::noding diff -Nru geos-3.1.0/source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h geos-3.2.2/source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h --- geos-3.1.0/source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/MCIndexSegmentSetMutualIntersector.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexSegmentSetMutualIntersector.h 2196 2008-10-04 18:14:09Z pramsey $ + * $Id: MCIndexSegmentSetMutualIntersector.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -56,7 +56,7 @@ ~MCIndexSegmentSetMutualIntersector(); - std::vector* getMonotoneChains() + std::vector& getMonotoneChains() { return monoChains; } @@ -70,23 +70,28 @@ void process(SegmentString::ConstVect* segStrings); - class SegmentOverlapAction : public index::chain::MonotoneChainOverlapAction - { - private: - SegmentIntersector & si; - - public: - - SegmentOverlapAction(SegmentIntersector & si) - : si(si) - {} - - void overlap(index::chain::MonotoneChain* mc1, int start1, index::chain::MonotoneChain* mc2, int start2); - }; + class SegmentOverlapAction : public index::chain::MonotoneChainOverlapAction + { + private: + SegmentIntersector & si; + + // Declare type as noncopyable + SegmentOverlapAction(const SegmentOverlapAction& other); + SegmentOverlapAction& operator=(const SegmentOverlapAction& rhs); + + public: + SegmentOverlapAction(SegmentIntersector & si) : + index::chain::MonotoneChainOverlapAction(), si(si) + {} + + void overlap(index::chain::MonotoneChain& mc1, size_t start1, + index::chain::MonotoneChain& mc2, size_t start2); + }; private: - std::vector * monoChains; + typedef std::vector MonoChains; + MonoChains monoChains; /* * The {@link SpatialIndex} used should be something that supports diff -Nru geos-3.1.0/source/headers/geos/noding/NodableSegmentString.h geos-3.2.2/source/headers/geos/noding/NodableSegmentString.h --- geos-3.1.0/source/headers/geos/noding/NodableSegmentString.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/NodableSegmentString.h 2009-04-08 10:42:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodableSegmentString.h 2263 2009-01-29 18:56:00Z mloskot $ + * $Id: NodableSegmentString.h 2320 2009-04-08 09:42:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,7 +17,7 @@ #ifndef GEOS_NODING_NODABLESEGMENTSTRING_H #define GEOS_NODING_NODABLESEGMENTSTRING_H -#include +#include // for inheritance namespace geos { namespace geom { @@ -39,8 +39,9 @@ private: protected: public: - NodableSegmentString( geom::CoordinateSequence *newPts, const void* newContext) - : SegmentString( newPts, newContext ) + NodableSegmentString(const void* newContext) + : + SegmentString( newContext ) { } /** diff -Nru geos-3.1.0/source/headers/geos/noding/NodedSegmentString.h geos-3.2.2/source/headers/geos/noding/NodedSegmentString.h --- geos-3.1.0/source/headers/geos/noding/NodedSegmentString.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/NodedSegmentString.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodedSegmentString.h 2263 2009-01-29 18:56:00Z mloskot $ + * $Id: NodedSegmentString.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,20 +12,28 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: noding/NodedSegmentString.java rev. 1.2 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_NODEDSEGMENTSTRING_H #define GEOS_NODING_NODEDSEGMENTSTRING_H +#include // for inheritance +#include // for inlines #include -#include #include #include #include //#include #include -//using namespace +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4355) // warning C4355: 'this' : used in base member initializer list +#endif namespace geos { namespace noding { // geos::noding @@ -41,14 +49,13 @@ * for preserving topological or parentage information. * All noded substrings are initialized with the same context object. * - * @version 1.7 */ class NodedSegmentString : public NodableSegmentString { -private: -protected: public: - static void getNodedSubstrings( SegmentString::ConstVect * segStrings, SegmentString::NonConstVect * resultEdgelist) + + static void getNodedSubstrings(SegmentString::ConstVect* segStrings, + SegmentString::NonConstVect* resultEdgelist) { for (size_t i=0, n=segStrings->size(); isize(); + } + + virtual const geom::Coordinate& getCoordinate(unsigned int i) const; + + virtual geom::CoordinateSequence* getCoordinates() const; + + virtual bool isClosed() const; + + virtual std::ostream& print(std::ostream& os) const; + + + /** \brief + * Gets the octant of the segment starting at vertex index. + * + * @param index the index of the vertex starting the segment. + * Must not be the last index in the vertex list + * @return the octant of the segment at the vertex + */ + int getSegmentOctant(unsigned int index) const; + + /** \brief + * Add {SegmentNode}s for one or both + * intersections found for a segment of an edge to the edge + * intersection list. + */ + void addIntersections(algorithm::LineIntersector *li, + unsigned int segmentIndex, int geomIndex); + + /** \brief + * Add an SegmentNode for intersection intIndex. + * + * An intersection that falls exactly on a vertex + * of the SegmentString is normalized + * to use the higher of the two possible segmentIndexes + */ + void addIntersection(algorithm::LineIntersector *li, + unsigned int segmentIndex, + int geomIndex, int intIndex); + + /** \brief + * Add an SegmentNode for intersection intIndex. + * + * An intersection that falls exactly on a vertex of the + * edge is normalized + * to use the higher of the two possible segmentIndexes + */ + void addIntersection(const geom::Coordinate& intPt, + unsigned int segmentIndex); + + +private: + + SegmentNodeList nodeList; + + geom::CoordinateSequence *pts; + }; } // namespace geos::noding } // namespace geos +#ifdef _MSC_VER +#pragma warning(pop) +#endif + #endif // GEOS_NODING_NODEDSEGMENTSTRING_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/noding/Noder.h geos-3.2.2/source/headers/geos/noding/Noder.h --- geos-3.1.0/source/headers/geos/noding/Noder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/Noder.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Noder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Noder.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_NODING_NODER_H #define GEOS_NODING_NODER_H +#include + #include #include @@ -45,7 +47,7 @@ * TODO: this was really an interface, we should avoid making it a Base class * */ -class Noder { +class GEOS_DLL Noder { public: /** \brief * Computes the noding for a collection of {@link SegmentString}s. diff -Nru geos-3.1.0/source/headers/geos/noding/NodingValidator.h geos-3.2.2/source/headers/geos/noding/NodingValidator.h --- geos-3.1.0/source/headers/geos/noding/NodingValidator.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/NodingValidator.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodingValidator.h 1931 2006-12-05 09:59:04Z strk $ + * $Id: NodingValidator.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_NODING_NODINGVALIDATOR_H #define GEOS_NODING_NODINGVALIDATOR_H +#include + #include #include @@ -44,7 +46,7 @@ * Last port: noding/NodingValidator.java rev. 1.6 (JTS-1.7) * */ -class NodingValidator { +class GEOS_DLL NodingValidator { private: algorithm::LineIntersector li; const std::vector& segStrings; @@ -89,6 +91,10 @@ bool hasInteriorIntersection(const algorithm::LineIntersector& aLi, const geom::Coordinate& p0, const geom::Coordinate& p1) const; + // Declare type as noncopyable + NodingValidator(const NodingValidator& other); + NodingValidator& operator=(const NodingValidator& rhs); + public: NodingValidator(const std::vector& newSegStrings): diff -Nru geos-3.1.0/source/headers/geos/noding/Octant.h geos-3.2.2/source/headers/geos/noding/Octant.h --- geos-3.1.0/source/headers/geos/noding/Octant.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/Octant.h 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Octant.h 2229 2008-11-26 19:41:44Z pramsey $ + * $Id: Octant.h 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_NODING_OCTANT_H #define GEOS_NODING_OCTANT_H +#include + #include #include @@ -45,7 +47,7 @@ * * Last port: noding/Octant.java rev. 1.2 (JTS-1.7) */ -class Octant { +class GEOS_DLL Octant { private: Octant() {} // Can't instanciate it public: @@ -63,7 +65,7 @@ static int octant(const geom::Coordinate* p0, const geom::Coordinate* p1) { - UNREFERENCED_PARAMETER(p0); + ::geos::ignore_unused_variable_warning(p0); return octant(*p0, *p1); } }; diff -Nru geos-3.1.0/source/headers/geos/noding/OrientedCoordinateArray.h geos-3.2.2/source/headers/geos/noding/OrientedCoordinateArray.h --- geos-3.1.0/source/headers/geos/noding/OrientedCoordinateArray.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/noding/OrientedCoordinateArray.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,110 @@ +/********************************************************************** + * $Id: OrientedCoordinateArray.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: noding/OrientedCoordinateArray.java rev. 1.1 (JTS-1.9) + * + **********************************************************************/ + +#ifndef GEOS_NODING_ORIENTEDCOORDINATEARRAY_H +#define GEOS_NODING_ORIENTEDCOORDINATEARRAY_H + +#include + +//#include +//#include + +//#include + +// Forward declarations +namespace geos { + namespace geom { + class CoordinateSequence; + } + namespace noding { + //class SegmentString; + } +} + +namespace geos { +namespace noding { // geos.noding + +/** \brief + * Allows comparing {@link geom::CoordinateSequence}s + * in an orientation-independent way. + */ +class GEOS_DLL OrientedCoordinateArray +{ +public: + + /** + * Creates a new {@link OrientedCoordinateArray} + * for the given {@link geom::CoordinateSequence}. + * + * @param pts the coordinates to orient + */ + OrientedCoordinateArray(const geom::CoordinateSequence& pts) + : + pts(pts), + orientationVar(orientation(pts)) + { + } + + /** \brief + * Compares two {@link OrientedCoordinateArray}s for their + * relative order + * + * @return -1 this one is smaller + * @return 0 the two objects are equal + * @return 1 this one is greater + * + * In JTS, this is used automatically by ordered lists. + * In C++, operator< would be used instead.... + */ + int compareTo(const OrientedCoordinateArray& o1) const; + + +private: + + static int compareOriented(const geom::CoordinateSequence& pts1, + bool orientation1, + const geom::CoordinateSequence& pts2, + bool orientation2); + + + /** + * Computes the canonical orientation for a coordinate array. + * + * @param pts the array to test + * @return true if the points are oriented forwards + * @return false + #include #include @@ -52,33 +54,7 @@ * available precision. * */ -class ScaledNoder : public Noder { // , public geom::CoordinateFilter { // implements Noder - -private: - - Noder& noder; - - double scaleFactor; - - double offsetX; - - double offsetY; - - bool isScaled; - - void rescale(std::vector& segStrings) const; - - void scale(std::vector& segStrings) const; - - class Scaler; - - class ReScaler; - - friend class ScaledNoder::Scaler; - - friend class ScaledNoder::ReScaler; - - mutable std::vector newCoordSeq; +class GEOS_DLL ScaledNoder : public Noder { // , public geom::CoordinateFilter { // implements Noder public: @@ -104,12 +80,41 @@ void filter_ro(const geom::Coordinate* c) { - UNREFERENCED_PARAMETER(c); + ::geos::ignore_unused_variable_warning(c); assert(0); } void filter_rw(geom::Coordinate* c) const; +private: + + Noder& noder; + + double scaleFactor; + + double offsetX; + + double offsetY; + + bool isScaled; + + void rescale(std::vector& segStrings) const; + + void scale(std::vector& segStrings) const; + + class Scaler; + + class ReScaler; + + friend class ScaledNoder::Scaler; + + friend class ScaledNoder::ReScaler; + + mutable std::vector newCoordSeq; + + // Declare type as noncopyable + ScaledNoder(const ScaledNoder& other); + ScaledNoder& operator=(const ScaledNoder& rhs); }; } // namespace geos.noding diff -Nru geos-3.1.0/source/headers/geos/noding/SegmentIntersector.h geos-3.2.2/source/headers/geos/noding/SegmentIntersector.h --- geos-3.1.0/source/headers/geos/noding/SegmentIntersector.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SegmentIntersector.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentIntersector.h 2114 2008-01-29 17:55:09Z benjubb $ + * $Id: SegmentIntersector.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_NODING_SEGMENTINTERSECTOR_H #define GEOS_NODING_SEGMENTINTERSECTOR_H +#include + #include // Forward declarations @@ -43,7 +45,7 @@ * * @version 1.7 */ -class SegmentIntersector { +class GEOS_DLL SegmentIntersector { public: diff -Nru geos-3.1.0/source/headers/geos/noding/SegmentNode.h geos-3.2.2/source/headers/geos/noding/SegmentNode.h --- geos-3.1.0/source/headers/geos/noding/SegmentNode.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SegmentNode.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentNode.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentNode.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/SegmentNode.java rev. 1.6 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SEGMENTNODE_H #define GEOS_NODING_SEGMENTNODE_H +#include + #include #include @@ -26,27 +32,29 @@ // Forward declarations namespace geos { namespace noding { - class SegmentString; + class NodedSegmentString; } } namespace geos { namespace noding { // geos.noding -/// Represents an intersection point between two SegmentString. +/// Represents an intersection point between two NodedSegmentString. // /// Final class. /// -/// Last port: noding/SegmentNode.java rev. 1.5 (JTS-1.7) -/// -class SegmentNode { +class GEOS_DLL SegmentNode { private: - const SegmentString& segString; + const NodedSegmentString& segString; int segmentOctant; bool isInteriorVar; + // Declare type as noncopyable + SegmentNode(const SegmentNode& other); + SegmentNode& operator=(const SegmentNode& rhs); + public: friend std::ostream& operator<< (std::ostream& os, const SegmentNode& n); @@ -56,18 +64,20 @@ /// the index of the containing line segment in the parent edge unsigned int segmentIndex; - /// Construct a node on the given SegmentString + /// Construct a node on the given NodedSegmentString // - /// @param ss the parent SegmentString + /// @param ss the parent NodedSegmentString /// /// @param coord the coordinate of the intersection, will be copied /// - /// @param nSegmentIndex the index of the segment on parent SegmentString + /// @param nSegmentIndex the index of the segment on parent + /// NodedSegmentString /// where the Node is located. /// /// @param nSegmentOctant /// - SegmentNode(const SegmentString& ss, const geom::Coordinate& nCoord, + SegmentNode(const NodedSegmentString& ss, + const geom::Coordinate& nCoord, unsigned int nSegmentIndex, int nSegmentOctant); ~SegmentNode() {} @@ -95,7 +105,7 @@ std::ostream& operator<< (std::ostream& os, const SegmentNode& n); -struct SegmentNodeLT { +struct GEOS_DLL SegmentNodeLT { bool operator()(SegmentNode *s1, SegmentNode *s2) const { return s1->compareTo(*s2)<0; } diff -Nru geos-3.1.0/source/headers/geos/noding/SegmentNodeList.h geos-3.2.2/source/headers/geos/noding/SegmentNodeList.h --- geos-3.1.0/source/headers/geos/noding/SegmentNodeList.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SegmentNodeList.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentNodeList.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentNodeList.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/SegmentNodeList.java rev. 1.8 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_NODING_SEGMENTNODELIST_H #define GEOS_NODING_SEGMENTNODELIST_H +#include + #include #include @@ -23,7 +29,7 @@ #include #include -#include +#include // for composition // Forward declarations namespace geos { @@ -32,6 +38,7 @@ } namespace noding { class SegmentString; + class NodedSegmentString; } } @@ -40,19 +47,14 @@ /** \brief * A list of the SegmentNode present along a - * noded SegmentString. - * - * Last port: noding/SegmentNodeList.java rev. 1.7 (JTS-1.7) + * NodedSegmentString. */ -class SegmentNodeList { +class GEOS_DLL SegmentNodeList { private: std::set nodeMap; // the parent edge - const SegmentString& edge; - - // UNUSED - //std::vector *sortedNodes; + const NodedSegmentString& edge; // This vector is here to keep track of created splitEdges std::vector splitEdges; @@ -105,6 +107,11 @@ bool findCollapseIndex(SegmentNode& ei0, SegmentNode& ei1, size_t& collapsedVertexIndex); + + // Declare type as noncopyable + SegmentNodeList(const SegmentNodeList& other); + SegmentNodeList& operator=(const SegmentNodeList& rhs); + public: friend std::ostream& operator<< (std::ostream& os, const SegmentNodeList& l); @@ -113,11 +120,11 @@ typedef container::iterator iterator; typedef container::const_iterator const_iterator; - SegmentNodeList(const SegmentString* newEdge): edge(*newEdge) {} + SegmentNodeList(const NodedSegmentString* newEdge): edge(*newEdge) {} - SegmentNodeList(const SegmentString& newEdge): edge(newEdge) {} + SegmentNodeList(const NodedSegmentString& newEdge): edge(newEdge) {} - const SegmentString& getEdge() const { return edge; } + const NodedSegmentString& getEdge() const { return edge; } // TODO: Is this a final class ? // Should remove the virtual in that case diff -Nru geos-3.1.0/source/headers/geos/noding/SegmentString.h geos-3.2.2/source/headers/geos/noding/SegmentString.h --- geos-3.1.0/source/headers/geos/noding/SegmentString.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SegmentString.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentString.h 2057 2007-12-21 20:33:25Z benjubb $ + * $Id: SegmentString.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,13 +11,18 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/SegmentString.java rev. 1.6 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SEGMENTSTRING_H #define GEOS_NODING_SEGMENTSTRING_H +#include + #include -#include // for testInvariant #include @@ -34,25 +39,13 @@ namespace noding { // geos.noding /** \brief - * Represents a list of contiguous line segments, - * and supports noding the segments. - * - * The line segments are represented by a CoordinateSequence. - * - * TODO: - * This should be changed to use a vector of Coordinate, - * to optimize the noding of contiguous segments by - * reducing the number of allocated objects. + * An interface for classes which represent a sequence of contiguous + * line segments. * * SegmentStrings can carry a context object, which is useful * for preserving topological or parentage information. - * All noded substrings are initialized with the same context object. - * - * Final class. - * - * Last port: noding/SegmentString.java rev. 1.5 (JTS-1.7) */ -class SegmentString { +class GEOS_DLL SegmentString { public: typedef std::vector ConstVect; typedef std::vector NonConstVect; @@ -60,39 +53,35 @@ friend std::ostream& operator<< (std::ostream& os, const SegmentString& ss); -private: - SegmentNodeList nodeList; - geom::CoordinateSequence *pts; - mutable unsigned int npts; // this is a cache - const void* context; - bool isIsolatedVar; - -public: - - void testInvariant() const; - /// Construct a SegmentString. // - /// @param newPts CoordinateSequence representing the string, - /// externally owned - /// /// @param newContext the context associated to this SegmentString /// - SegmentString(geom::CoordinateSequence *newPts, const void* newContext); + SegmentString(const void* newContext) + : + context(newContext) + {} - virtual ~SegmentString(); + virtual ~SegmentString() {} - //const void* getContext() const { return getData(); } - - const void* getData() const; + /** + * Gets the user-defined data for this segment string. + * + * @return the user-defined data + */ + const void* getData() const { return context; } - const SegmentNodeList& getNodeList() const; + /** + * Sets the user-defined data for this segment string. + * + * @param data an Object containing user-defined data + */ + void setData(const void* data) { context=data; } - SegmentNodeList& getNodeList(); - unsigned int size() const; + virtual unsigned int size() const=0; - const geom::Coordinate& getCoordinate(unsigned int i) const; + virtual const geom::Coordinate& getCoordinate(unsigned int i) const=0; /// \brief /// Return a pointer to the CoordinateSequence associated @@ -101,81 +90,24 @@ /// Note that the CoordinateSequence is not owned by /// this SegmentString! /// - geom::CoordinateSequence* getCoordinates() const; - - /// \brief - /// Notify this object that the CoordinateSequence associated - /// with it might have been updated. - // - /// This must be called so that the SegmentString object makes - /// all the necessary checks and updates to verify consistency - /// - void notifyCoordinatesChange() const; + virtual geom::CoordinateSequence* getCoordinates() const=0; // Return a read-only pointer to this SegmentString CoordinateSequence //const CoordinateSequence* getCoordinatesRO() const { return pts; } - void setIsolated(bool isIsolated); - - bool isIsolated() const; - - bool isClosed() const; - - /** \brief - * Gets the octant of the segment starting at vertex - * index. - * - * @param index the index of the vertex starting the segment. - * Must not be the last index in the vertex list - * @return the octant of the segment at the vertex - */ - int getSegmentOctant(unsigned int index) const; - - /** \brief - * Add {SegmentNode}s for one or both - * intersections found for a segment of an edge to the edge - * intersection list. - */ - void addIntersections(algorithm::LineIntersector *li, - unsigned int segmentIndex, int geomIndex); + virtual bool isClosed() const=0; - /** \brief - * Add an SegmentNode for intersection intIndex. - * - * An intersection that falls exactly on a vertex - * of the SegmentString is normalized - * to use the higher of the two possible segmentIndexes - */ - void addIntersection(algorithm::LineIntersector *li, - unsigned int segmentIndex, - int geomIndex, int intIndex); + virtual std::ostream& print(std::ostream& os) const; - /** \brief - * Add an SegmentNode for intersection intIndex. - * - * An intersection that falls exactly on a vertex of the - * edge is normalized - * to use the higher of the two possible segmentIndexes - */ - void addIntersection(const geom::Coordinate& intPt, - unsigned int segmentIndex); +private: - static void getNodedSubstrings( - const SegmentString::NonConstVect& segStrings, - SegmentString::NonConstVect* resultEdgeList); + const void* context; - static SegmentString::NonConstVect* getNodedSubstrings( - const SegmentString::NonConstVect& segStrings); + // Declare type as noncopyable + SegmentString(const SegmentString& other); + SegmentString& operator=(const SegmentString& rhs); }; -inline void -SegmentString::testInvariant() const -{ - assert(pts); - assert(pts->size() > 1); - assert(pts->size() == npts); -} - std::ostream& operator<< (std::ostream& os, const SegmentString& ss); } // namespace geos.noding diff -Nru geos-3.1.0/source/headers/geos/noding/SegmentString.inl geos-3.2.2/source/headers/geos/noding/SegmentString.inl --- geos-3.1.0/source/headers/geos/noding/SegmentString.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SegmentString.inl 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentString.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentString.inl 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/SegmentString.java rev. 1.6 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SEGMENTSTRING_INL @@ -24,83 +28,7 @@ namespace geos { namespace noding { // geos.noding -INLINE -SegmentString::SegmentString(geom::CoordinateSequence *newPts, const void* newContext) - : - nodeList(this), - pts(newPts), - npts(pts->size()), - context(newContext), - isIsolatedVar(false) -{ - testInvariant(); -} - -INLINE -SegmentString::~SegmentString() {} - -INLINE const void* -SegmentString::getData() const -{ - testInvariant(); - return context; -} - -INLINE const SegmentNodeList& -SegmentString::getNodeList() const -{ - testInvariant(); - return nodeList; -} - -INLINE SegmentNodeList& -SegmentString::getNodeList() -{ - testInvariant(); - return nodeList; -} - -INLINE unsigned int -SegmentString::size() const -{ - testInvariant(); - return npts; -} - -INLINE const geom::Coordinate& -SegmentString::getCoordinate(unsigned int i) const -{ - testInvariant(); - return pts->getAt(i); -} - -INLINE geom::CoordinateSequence* -SegmentString::getCoordinates() const -{ - testInvariant(); - return pts; -} - -INLINE void -SegmentString::setIsolated(bool isIsolated) -{ - isIsolatedVar=isIsolated; - testInvariant(); -} - -INLINE bool -SegmentString::isIsolated() const -{ - testInvariant(); - return isIsolatedVar; -} - -INLINE bool -SegmentString::isClosed() const -{ - testInvariant(); - return pts->getAt(0)==pts->getAt(npts-1); -} + } // namespace geos.noding } // namespace geos diff -Nru geos-3.1.0/source/headers/geos/noding/SegmentStringUtil.h geos-3.2.2/source/headers/geos/noding/SegmentStringUtil.h --- geos-3.1.0/source/headers/geos/noding/SegmentStringUtil.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SegmentStringUtil.h 2009-04-08 14:02:06.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentStringUtil.h 2263 2009-01-29 18:56:00Z mloskot $ + * $Id: SegmentStringUtil.h 2325 2009-04-08 13:02:06Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * See the COPYING file for more information. * * + ********************************************************************** + * + * Last port: noding/SegmentStringUtil.java rev. 1.2 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SEGMENTSTRINGUTIL_H @@ -33,29 +37,41 @@ */ class SegmentStringUtil { -private: -protected: public: - /** + /** \brief * Extracts all linear components from a given {@link Geometry} * to {@link SegmentString}s. + * * The SegmentString data item is set to be the source Geometry. * * @param geom the geometry to extract from - * @return a List of SegmentStrings + * @param segStr a List of SegmentStrings (output parameter). + * Ownership of elements pushed to the vector + * is transferred to caller. Note that the + * CoordinateSequence associated with the + * returned SegmentString elements are allocated + * by this function, so must also be destroyed + * by caller. + * TODO: check if this can be optimized by leaving + * ownership of actual CoordinateSequence + * to the passed Geometry. */ - static void extractSegmentStrings( const geom::Geometry * g, SegmentString::ConstVect & segStr) + static void extractSegmentStrings(const geom::Geometry * g, + SegmentString::ConstVect& segStr) { geom::LineString::ConstVect lines; - geom::util::LinearComponentExtracter::getLines( *g, lines); + geom::util::LinearComponentExtracter::getLines(*g, lines); for (size_t i=0, n=lines.size(); igetCoordinates(); + // we take ownership of the coordinates here + // TODO: check if this can be optimized by getting + // the internal CS. + geom::CoordinateSequence* pts = line->getCoordinates(); - segStr.push_back( new NodedSegmentString( pts, g)); + segStr.push_back(new NodedSegmentString(pts, g)); } } diff -Nru geos-3.1.0/source/headers/geos/noding/SimpleNoder.h geos-3.2.2/source/headers/geos/noding/SimpleNoder.h --- geos-3.1.0/source/headers/geos/noding/SimpleNoder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SimpleNoder.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleNoder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleNoder.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,17 +11,23 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/SimpleNoder.java rev. 1.7 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SIMPLENODER_H #define GEOS_NODING_SIMPLENODER_H +#include + #include #include #include -#include // for inlined (FIXME) +#include // for inlined (FIXME) // Forward declarations namespace geos { @@ -43,7 +49,7 @@ * * @version 1.7 */ -class SimpleNoder: public SinglePassNoder { +class GEOS_DLL SimpleNoder: public SinglePassNoder { private: std::vector* nodedSegStrings; virtual void computeIntersects(SegmentString *e0, SegmentString *e1); @@ -57,7 +63,7 @@ void computeNodes(std::vector* inputSegmentStrings); std::vector* getNodedSubstrings() const { - return SegmentString::getNodedSubstrings(*nodedSegStrings); + return NodedSegmentString::getNodedSubstrings(*nodedSegStrings); } }; diff -Nru geos-3.1.0/source/headers/geos/noding/SingleInteriorIntersectionFinder.h geos-3.2.2/source/headers/geos/noding/SingleInteriorIntersectionFinder.h --- geos-3.1.0/source/headers/geos/noding/SingleInteriorIntersectionFinder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SingleInteriorIntersectionFinder.h 2009-12-03 19:44:00.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SingleInteriorIntersectionFinder.h 2137 2008-07-25 21:00:09Z mloskot $ + * $Id: SingleInteriorIntersectionFinder.h 2778 2009-12-03 19:44:00Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -44,11 +44,6 @@ class SingleInteriorIntersectionFinder: public SegmentIntersector { -private: - algorithm::LineIntersector& li; - geom::Coordinate interiorIntersection; - std::vector intSegments; - public: /** \brief @@ -71,7 +66,7 @@ */ bool hasIntersection() const { - return interiorIntersection != geom::Coordinate::getNull(); + return !interiorIntersection.isNull(); } /** \brief @@ -110,9 +105,17 @@ bool isDone() const { - // TODO: add Coordinate::isNull() - return interiorIntersection != geom::Coordinate::getNull(); + return !interiorIntersection.isNull(); } + +private: + algorithm::LineIntersector& li; + geom::Coordinate interiorIntersection; + std::vector intSegments; + + // Declare type as noncopyable + SingleInteriorIntersectionFinder(const SingleInteriorIntersectionFinder& other); + SingleInteriorIntersectionFinder& operator=(const SingleInteriorIntersectionFinder& rhs); }; } // namespace geos.noding diff -Nru geos-3.1.0/source/headers/geos/noding/SinglePassNoder.h geos-3.2.2/source/headers/geos/noding/SinglePassNoder.h --- geos-3.1.0/source/headers/geos/noding/SinglePassNoder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/SinglePassNoder.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SinglePassNoder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SinglePassNoder.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_NODING_SINGLEPASSNODER_H #define GEOS_NODING_SINGLEPASSNODER_H +#include + #include #include @@ -46,7 +48,7 @@ * TODO: Noder inheritance (that's just an interface!) * */ -class SinglePassNoder : public Noder { // implements Noder +class GEOS_DLL SinglePassNoder : public Noder { // implements Noder protected: diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/HotPixel.h geos-3.2.2/source/headers/geos/noding/snapround/HotPixel.h --- geos-3.1.0/source/headers/geos/noding/snapround/HotPixel.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/HotPixel.h 2009-12-03 19:41:15.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: HotPixel.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: HotPixel.h 2777 2009-12-03 19:41:15Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,13 +13,15 @@ * ********************************************************************** * - * Last port: noding/snapround/HotPixel.java rev. 1.2 (JTS-1.7) + * Last port: noding/snapround/HotPixel.java rev. 1.3 (JTS-1.9) * **********************************************************************/ #ifndef GEOS_NODING_SNAPROUND_HOTPIXEL_H #define GEOS_NODING_SNAPROUND_HOTPIXEL_H +#include + #include #include // for composition @@ -33,6 +35,9 @@ namespace algorithm { class LineIntersector; } + namespace noding { + class NodedSegmentString; + } } namespace geos { @@ -50,7 +55,7 @@ * to avoid rounding problems. * */ -class HotPixel { +class GEOS_DLL HotPixel { private: @@ -60,6 +65,9 @@ const geom::Coordinate& originalPt; geom::Coordinate ptScaled; + mutable geom::Coordinate p0Scaled; + mutable geom::Coordinate p1Scaled; + double scaleFactor; double minx; @@ -128,6 +136,10 @@ bool intersectsPixelClosure(const geom::Coordinate& p0, const geom::Coordinate& p1); + // Declare type as noncopyable + HotPixel(const HotPixel& other); + HotPixel& operator=(const HotPixel& rhs); + public: HotPixel(const geom::Coordinate& pt, @@ -151,6 +163,15 @@ bool intersects(const geom::Coordinate& p0, const geom::Coordinate& p1) const; + /** + * Adds a new node (equal to the snap pt) to the specified segment + * if the segment passes through the hot pixel + * + * @param segStr + * @param segIndex + * @return true if a node was added to the segment + */ + bool addSnappedNode(NodedSegmentString& segStr, size_t segIndex); }; diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/HotPixel.inl geos-3.2.2/source/headers/geos/noding/snapround/HotPixel.inl --- geos-3.1.0/source/headers/geos/noding/snapround/HotPixel.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/HotPixel.inl 2009-04-07 12:11:33.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: HotPixel.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: HotPixel.inl 2317 2009-04-07 11:11:33Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/snapround/HotPixel.java rev. 1.3 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SNAPROUND_HOTPIXEL_INL diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/Makefile.am geos-3.2.2/source/headers/geos/noding/snapround/Makefile.am --- geos-3.1.0/source/headers/geos/noding/snapround/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,11 +2,9 @@ #EXTRA_DIST = -#geosdir = $(includedir)/geos/noding/snapround +geosdir = $(includedir)/geos/noding/snapround -#geos_HEADERS = - -noinst_HEADERS = \ +geos_HEADERS = \ HotPixel.h \ HotPixel.inl \ MCIndexPointSnapper.h \ diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/Makefile.in geos-3.2.2/source/headers/geos/noding/snapround/Makefile.in --- geos-3.1.0/source/headers/geos/noding/snapround/Makefile.in 2009-03-11 19:13:48.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/Makefile.in 2010-04-18 16:08:10.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,19 +19,12 @@ #EXTRA_DIST = -#geosdir = $(includedir)/geos/noding/snapround - -#geos_HEADERS = - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -46,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/noding/snapround -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -59,16 +58,37 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = -HEADERS = $(noinst_HEADERS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -96,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -119,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -153,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -164,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -188,37 +207,51 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ -noinst_HEADERS = \ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +geosdir = $(includedir)/geos/noding/snapround +geos_HEADERS = \ HotPixel.h \ HotPixel.inl \ MCIndexPointSnapper.h \ @@ -233,14 +266,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/noding/snapround/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/noding/snapround/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/noding/snapround/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/noding/snapround/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -258,89 +291,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +install-geosHEADERS: $(geos_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ + done -distclean-libtool: - -rm -f libtool -uninstall-info-am: +uninstall-geosHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -348,6 +405,9 @@ check: check-am all-am: Makefile $(HEADERS) installdirs: + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-am install-exec: install-exec-am install-data: install-data-am @@ -368,6 +428,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -378,8 +439,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -387,18 +447,38 @@ html: html-am +html-am: + info: info-am info-am: -install-data-am: +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -417,18 +497,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/MCIndexPointSnapper.h geos-3.2.2/source/headers/geos/noding/snapround/MCIndexPointSnapper.h --- geos-3.1.0/source/headers/geos/noding/snapround/MCIndexPointSnapper.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/MCIndexPointSnapper.h 2009-12-03 19:41:15.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexPointSnapper.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MCIndexPointSnapper.h 2777 2009-12-03 19:41:15Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/snapround/MCIndexPointSnapper.java rev. 1.4 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SNAPROUND_MCINDEXPOINTSNAPPER_H #define GEOS_NODING_SNAPROUND_MCINDEXPOINTSNAPPER_H +#include + #include // Forward declarations @@ -39,13 +45,8 @@ * "Snaps" all {@link SegmentString}s in a {@link SpatialIndex} containing * {@link MonotoneChain}s to a given {@link HotPixel}. * - * Last port: noding/snapround/MCIndexPointSnapper.java rev. 1.2 (JTS-1.7) */ -class MCIndexPointSnapper { - -private: - - index::SpatialIndex& index; +class GEOS_DLL MCIndexPointSnapper { public: @@ -55,7 +56,6 @@ index(nIndex) {} - /** * Snaps (nodes) all interacting segments to this hot pixel. * The hot pixel may represent a vertex of an edge, @@ -68,13 +68,21 @@ * @param vertexIndex the index of the vertex, if applicable, or -1 * @return true if a node was added for this pixel */ - bool snap(const HotPixel& hotPixel, SegmentString* parentEdge, + bool snap(HotPixel& hotPixel, SegmentString* parentEdge, unsigned int vertexIndex); - bool snap(const HotPixel& hotPixel) { + bool snap(HotPixel& hotPixel) { return snap(hotPixel, 0, 0); } - + + +private: + + index::SpatialIndex& index; + + // Declare type as noncopyable + MCIndexPointSnapper(const MCIndexPointSnapper& other); + MCIndexPointSnapper& operator=(const MCIndexPointSnapper& rhs); }; diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/MCIndexSnapRounder.h geos-3.2.2/source/headers/geos/noding/snapround/MCIndexSnapRounder.h --- geos-3.1.0/source/headers/geos/noding/snapround/MCIndexSnapRounder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/MCIndexSnapRounder.h 2009-12-03 19:41:15.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexSnapRounder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MCIndexSnapRounder.h 2777 2009-12-03 19:41:15Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/snapround/MCIndexSnapRounder.java rev. 1.3 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SNAPROUND_MCINDEXSNAPROUNDER_H #define GEOS_NODING_SNAPROUND_MCINDEXSNAPROUNDER_H +#include + #include #include @@ -34,6 +40,7 @@ } namespace noding { class SegmentString; + class NodedSegmentString; class MCIndexNoder; namespace snapround { //class HotPixel; @@ -66,11 +73,26 @@ * * It will function with non-integer precision models, but the * results are not 100% guaranteed to be correctly noded. - * - * Last port: noding/snapround/MCIndexSnapRounder.java rev. 1.1 (JTS-1.7) - * */ -class MCIndexSnapRounder: public Noder { // implments Noder +class GEOS_DLL MCIndexSnapRounder: public Noder { // implments Noder + +public: + + MCIndexSnapRounder(geom::PrecisionModel& nPm); + + std::vector* getNodedSubstrings() const; + + void computeNodes(std::vector* segStrings); + + /** + * Computes nodes introduced as a result of + * snapping segments to vertices of other segments + * + * @param segStrings the list of segment strings to snap together + * NOTE: they *must* be instances of NodedSegmentString, or + * an assertion will fail. + */ + void computeVertexSnaps(std::vector& edges); private: @@ -109,26 +131,13 @@ * Performs a brute-force comparison of every segment in each {@link SegmentString}. * This has n^2 performance. */ - void computeEdgeVertexSnaps(SegmentString* e); + void computeVertexSnaps(NodedSegmentString* e); void checkCorrectness(std::vector& inputSegmentStrings); -public: - - MCIndexSnapRounder(geom::PrecisionModel& nPm); - - std::vector* getNodedSubstrings() const; - - void computeNodes(std::vector* segStrings); - - /** - * Computes nodes introduced as a result of - * snapping segments to vertices of other segments - * - * @param segStrings the list of segment strings to snap together - */ - void computeVertexSnaps(std::vector& edges); - + // Declare type as noncopyable + MCIndexSnapRounder(const MCIndexSnapRounder& other); + MCIndexSnapRounder& operator=(const MCIndexSnapRounder& rhs); }; diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/MCIndexSnapRounder.inl geos-3.2.2/source/headers/geos/noding/snapround/MCIndexSnapRounder.inl --- geos-3.1.0/source/headers/geos/noding/snapround/MCIndexSnapRounder.inl 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/MCIndexSnapRounder.inl 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexSnapRounder.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MCIndexSnapRounder.inl 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/snapround/MCIndexSnapRounder.java rev. 1.3 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SNAPROUND_MCINDEXSNAPROUNDER_INL @@ -19,6 +23,7 @@ #include #include #include +#include #include #include @@ -30,7 +35,7 @@ INLINE std::vector* MCIndexSnapRounder::getNodedSubstrings() const { - return SegmentString::getNodedSubstrings(*nodedSegStrings); + return NodedSegmentString::getNodedSubstrings(*nodedSegStrings); } INLINE diff -Nru geos-3.1.0/source/headers/geos/noding/snapround/SimpleSnapRounder.h geos-3.2.2/source/headers/geos/noding/snapround/SimpleSnapRounder.h --- geos-3.1.0/source/headers/geos/noding/snapround/SimpleSnapRounder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/noding/snapround/SimpleSnapRounder.h 2009-12-03 19:41:15.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleSnapRounder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleSnapRounder.h 2777 2009-12-03 19:41:15Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/snapround/SimpleSnapRounder.java rev. 1.4 (JTS-1.9) + * **********************************************************************/ #ifndef GEOS_NODING_SNAPROUND_SIMPLESNAPROUNDER_H #define GEOS_NODING_SNAPROUND_SIMPLESNAPROUNDER_H +#include + #include #include @@ -35,6 +41,7 @@ } namespace noding { class SegmentString; + class NodedSegmentString; namespace snapround { class HotPixel; } @@ -62,12 +69,30 @@ * It will function with non-integer precision models, but the * results are not 100% guaranteed to be correctly noded. * - * Last port: noding/snapround/SimpleSnapRounder.java rev. 1.2 (JTS-1.7) - * */ -class SimpleSnapRounder: public Noder { // implements NoderIface +class GEOS_DLL SimpleSnapRounder: public Noder { // implements NoderIface + +public: + + SimpleSnapRounder(const geom::PrecisionModel& newPm); + + std::vector* getNodedSubstrings() const; + + void computeNodes(std::vector* inputSegmentStrings); + + void add(const SegmentString* segStr); + + /** + * Computes nodes introduced as a result of + * snapping segments to vertices of other segments + * + * @param segStrings the list of segment strings to snap together. + * Must be NodedSegmentString or an assertion will fail. + */ + void computeVertexSnaps(const std::vector& edges); private: + const geom::PrecisionModel& pm; algorithm::LineIntersector li; double scaleFactor; @@ -100,45 +125,18 @@ void computeSnaps(const std::vector& segStrings, std::vector& snapPts); - void computeSnaps(SegmentString* ss, std::vector& snapPts); + void computeSnaps(NodedSegmentString* ss, std::vector& snapPts); /** \brief * Performs a brute-force comparison of every segment in each * {@link SegmentString}. * This has n^2 performance. */ - void computeVertexSnaps(SegmentString* e0, SegmentString* e1); - -public: - - SimpleSnapRounder(const geom::PrecisionModel& newPm); - - std::vector* getNodedSubstrings() const; - - void computeNodes(std::vector* inputSegmentStrings); - - void add(const SegmentString* segStr); + void computeVertexSnaps(NodedSegmentString* e0, NodedSegmentString* e1); - /** - * Adds a new node (equal to the snap pt) to the segment if the segment - * passes through the hot pixel. - * - * @param hotPix - * @param segStr - * @param segIndex - * @return true if a node was added - */ - static bool addSnappedNode(const HotPixel& hotPix, - SegmentString& segStr, - unsigned int segIndex); - - /** - * Computes nodes introduced as a result of - * snapping segments to vertices of other segments - * - * @param segStrings the list of segment strings to snap together - */ - void computeVertexSnaps(const std::vector& edges); + // Declare type as noncopyable + SimpleSnapRounder(const SimpleSnapRounder& other); + SimpleSnapRounder& operator=(const SimpleSnapRounder& rhs); }; } // namespace geos::noding::snapround diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/BufferBuilder.h geos-3.2.2/source/headers/geos/operation/buffer/BufferBuilder.h --- geos-3.1.0/source/headers/geos/operation/buffer/BufferBuilder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/BufferBuilder.h 2009-12-03 19:45:53.000000000 +0000 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: BufferBuilder.h 1969 2007-02-06 01:57:23Z strk $ + * $Id: BufferBuilder.h 2779 2009-12-03 19:45:53Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2006-2007 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under @@ -11,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/buffer/BufferBuilder.java rev. 1.30 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_BUFFER_BUFFERBUILDER_H #define GEOS_OP_BUFFER_BUFFERBUILDER_H +#include + #include #include // for inlines (BufferOp enums) @@ -73,10 +80,63 @@ * Retrying the computation in a fixed precision * can produce more robust results. * - * Last port: operation/buffer/BufferBuilder.java rev. 1.21 (JTS-1.7) - * */ -class BufferBuilder { +class GEOS_DLL BufferBuilder { + +public: + /** + * Creates a new BufferBuilder + * + * @param nBufParams buffer parameters, this object will + * keep a reference to the passed parameters + * so caller must make sure the object is + * kept alive for the whole lifetime of + * the buffer builder. + */ + BufferBuilder(const BufferParameters& nBufParams) + : + bufParams(nBufParams), + workingPrecisionModel(NULL), + li(NULL), + intersectionAdder(NULL), + workingNoder(NULL), + geomFact(NULL), + edgeList() + {} + + ~BufferBuilder(); + + + /** + * Sets the precision model to use during the curve computation + * and noding, + * if it is different to the precision model of the Geometry. + * If the precision model is less than the precision of the + * Geometry precision model, + * the Geometry must have previously been rounded to that precision. + * + * @param pm the precision model to use + */ + void setWorkingPrecisionModel(const geom::PrecisionModel *pm) { + workingPrecisionModel=pm; + } + + /** + * Sets the {@link noding::Noder} to use during noding. + * This allows choosing fast but non-robust noding, or slower + * but robust noding. + * + * @param noder the noder to use + */ + void setNoder(noding::Noder* newNoder) { workingNoder = newNoder; } + + geom::Geometry* buffer(const geom::Geometry *g, double distance); + // throw (GEOSException); + + /// Not in JTS: this is a GEOS extension + geom::Geometry* bufferLineSingleSided( const geom::Geometry* g, + double distance, bool leftSide ) ; + // throw (GEOSException); private: /** @@ -84,9 +144,7 @@ */ static int depthDelta(geomgraph::Label *label); - int quadrantSegments; - - int endCapStyle; + const BufferParameters& bufParams; const geom::PrecisionModel* workingPrecisionModel; @@ -102,7 +160,7 @@ std::vector newLabels; - void computeNodedEdges(std::vector& bufferSegStrList, + void computeNodedEdges(std::vector& bufSegStr, const geom::PrecisionModel *precisionModel); // throw(GEOSException); @@ -115,7 +173,7 @@ * The function takes responsability of releasing the Edge parameter * memory when appropriate. */ - void insertEdge(geomgraph::Edge *e); + void insertUniqueEdge(geomgraph::Edge *e); void createSubgraphs(geomgraph::PlanarGraph *graph, std::vector& list); @@ -152,66 +210,10 @@ * @return the empty result geometry, transferring ownership to caller. */ geom::Geometry* createEmptyResultGeometry() const; - -public: - /** - * Creates a new BufferBuilder - */ - BufferBuilder() - : - quadrantSegments(OffsetCurveBuilder::DEFAULT_QUADRANT_SEGMENTS), - endCapStyle(BufferOp::CAP_ROUND), - workingPrecisionModel(NULL), - li(NULL), - intersectionAdder(NULL), - workingNoder(NULL), - geomFact(NULL), - edgeList() - {} - - ~BufferBuilder(); - - /** - * Sets the number of segments used to approximate a angle fillet - * - * @param quadrantSegments the number of segments in a fillet for - * a quadrant - */ - void setQuadrantSegments(int nQuadrantSegments) { - quadrantSegments=nQuadrantSegments; - } - - - /** - * Sets the precision model to use during the curve computation - * and noding, - * if it is different to the precision model of the Geometry. - * If the precision model is less than the precision of the - * Geometry precision model, - * the Geometry must have previously been rounded to that precision. - * - * @param pm the precision model to use - */ - void setWorkingPrecisionModel(const geom::PrecisionModel *pm) { - workingPrecisionModel=pm; - } - - /** - * Sets the {@link noding::Noder} to use during noding. - * This allows choosing fast but non-robust noding, or slower - * but robust noding. - * - * @param noder the noder to use - */ - void setNoder(noding::Noder* newNoder) { workingNoder = newNoder; } - - void setEndCapStyle(int nEndCapStyle) { - endCapStyle=nEndCapStyle; - } - - geom::Geometry* buffer(const geom::Geometry *g, double distance); - // throw (GEOSException); - + + // Declare type as noncopyable + BufferBuilder(const BufferBuilder& other); + BufferBuilder& operator=(const BufferBuilder& rhs); }; } // namespace geos::operation::buffer diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/BufferOp.h geos-3.2.2/source/headers/geos/operation/buffer/BufferOp.h --- geos-3.1.0/source/headers/geos/operation/buffer/BufferOp.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/BufferOp.h 2009-06-26 22:59:14.000000000 +0100 @@ -1,22 +1,30 @@ /********************************************************************** - * $Id: BufferOp.h 1969 2007-02-06 01:57:23Z strk $ + * $Id: BufferOp.h 2605 2009-06-26 21:59:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * - * Copyright (C) 2006 Refractions Research Inc. + * Copyright (C) 2009 Sandro Santilli + * Copyright (C) 2005-2007 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/buffer/BufferOp.java rev. 1.43 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_BUFFER_BUFFEROP_H #define GEOS_OP_BUFFER_BUFFEROP_H -#include // for enum values +#include //#include // for enum values +#include // for enum values + #include // for composition // Forward declarations @@ -60,10 +68,8 @@ * - CAP_SQUARE - end caps are squared off at the buffer distance * beyond the line ends * - * Last port: operation/buffer/BufferOp.java rev. 1.31 (JTS-1.7) - * */ -class BufferOp { +class GEOS_DLL BufferOp { private: @@ -101,9 +107,9 @@ double distance; - int quadrantSegments; - - int endCapStyle; + //int quadrantSegments; + //int endCapStyle; + BufferParameters bufParams; geom::Geometry* resultGeometry; @@ -121,11 +127,16 @@ enum { /// Specifies a round line buffer end cap style. - CAP_ROUND, + /// @deprecated use BufferParameters + CAP_ROUND = BufferParameters::CAP_ROUND, + /// Specifies a butt (or flat) line buffer end cap style. - CAP_BUTT, + /// @deprecated use BufferParameters + CAP_BUTT = BufferParameters::CAP_FLAT, + /// Specifies a square line buffer end cap style. - CAP_SQUARE + /// @deprecated use BufferParameters + CAP_SQUARE = BufferParameters::CAP_SQUARE }; /** @@ -142,8 +153,8 @@ static geom::Geometry* bufferOp(const geom::Geometry *g, double distance, int quadrantSegments= - OffsetCurveBuilder::DEFAULT_QUADRANT_SEGMENTS, - int endCapStyle=BufferOp::CAP_ROUND); + BufferParameters::DEFAULT_QUADRANT_SEGMENTS, + int endCapStyle=BufferParameters::CAP_ROUND); /** * Initializes a buffer computation for the given geometry @@ -153,10 +164,27 @@ BufferOp(const geom::Geometry *g) : argGeom(g), - quadrantSegments(OffsetCurveBuilder::DEFAULT_QUADRANT_SEGMENTS), - endCapStyle(BufferOp::CAP_ROUND), + bufParams(), resultGeometry(NULL) - {} + { + } + + /** + * Initializes a buffer computation for the given geometry + * with the given set of parameters + * + * @param g the geometry to buffer + * @param params the buffer parameters to use. This class will + * copy it to private memory. + */ + BufferOp(const geom::Geometry* g, const BufferParameters& params) + : + argGeom(g), + bufParams(params), + resultGeometry(NULL) + { + } + /** * Specifies the end cap style of the generated buffer. @@ -186,24 +214,20 @@ */ geom::Geometry* getResultGeometry(double nDistance); - /** - * Comutes the buffer for a geometry for a given buffer distance - * and accuracy of approximation. - * - * @param g the geometry to buffer - * @param distance the buffer distance - * @param quadrantSegments the number of segments used to - * approximate a quarter circle - * @return the buffer of the input geometry - * - * @deprecated use setQuadrantSegments instead - */ - geom::Geometry* getResultGeometry(double nDistance, int nQuadrantSegments); }; // BufferOp inlines -void BufferOp::setQuadrantSegments(int q) { quadrantSegments=q; } -void BufferOp::setEndCapStyle(int s) { endCapStyle=s; } +void +BufferOp::setQuadrantSegments(int q) +{ + bufParams.setQuadrantSegments(q); +} + +void +BufferOp::setEndCapStyle(int s) +{ + bufParams.setEndCapStyle((BufferParameters::EndCapStyle)s); +} } // namespace geos::operation::buffer diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/BufferParameters.h geos-3.2.2/source/headers/geos/operation/buffer/BufferParameters.h --- geos-3.1.0/source/headers/geos/operation/buffer/BufferParameters.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/buffer/BufferParameters.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,268 @@ +/********************************************************************** + * $Id: BufferParameters.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: operation/buffer/BufferParameters.java rev 1.5 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_BUFFER_BUFFERPARAMETERS_H +#define GEOS_OP_BUFFER_BUFFERPARAMETERS_H + +//#include + +//#include // for composition +//#include // for composition +//#include // for composition + +// Forward declarations +namespace geos { + namespace geom { + class CoordinateSequence; + class PrecisionModel; + } + namespace operation { + namespace buffer { + class OffsetCurveVertexList; + } + } +} + +namespace geos { +namespace operation { // geos.operation +namespace buffer { // geos.operation.buffer + +/** \brief + * Contains the parameters which + * describe how a buffer should be constructed. + * + */ +class BufferParameters +{ + +public: + + /// End cap styles + enum EndCapStyle { + + /// Specifies a round line buffer end cap style. + CAP_ROUND=1, + + /// Specifies a flat line buffer end cap style. + CAP_FLAT=2, + + /// Specifies a square line buffer end cap style. + CAP_SQUARE=3 + }; + + /// Join styles + enum JoinStyle { + + /// Specifies a round join style. + JOIN_ROUND=1, + + /// Specifies a mitre join style. + JOIN_MITRE=2, + + /// Specifies a bevel join style. + JOIN_BEVEL=3 + }; + + /// \brief + /// The default number of facets into which to divide a fillet + /// of 90 degrees. + // + /// A value of 8 gives less than 2% max error in the buffer distance. + /// For a max error of < 1%, use QS = 12. + /// For a max error of < 0.1%, use QS = 18. + /// + static const int DEFAULT_QUADRANT_SEGMENTS = 8; + + /// The default mitre limit + // + /// Allows fairly pointy mitres. + /// + static const double DEFAULT_MITRE_LIMIT; // 5.0 (in .cpp file) + + /// Creates a default set of parameters + BufferParameters() + : + quadrantSegments(DEFAULT_QUADRANT_SEGMENTS), + endCapStyle(CAP_ROUND), + joinStyle(JOIN_ROUND), + mitreLimit(DEFAULT_MITRE_LIMIT) + {} + + /// Creates a set of parameters with the given quadrantSegments value. + // + /// @param quadrantSegments the number of quadrant segments to use + /// + BufferParameters(int quadrantSegments); + + /// \brief + /// Creates a set of parameters with the + /// given quadrantSegments and endCapStyle values. + // + /// @param quadrantSegments the number of quadrant segments to use + /// @param endCapStyle the end cap style to use + /// + BufferParameters(int quadrantSegments, EndCapStyle endCapStyle); + + /// \brief + /// Creates a set of parameters with the + /// given parameter values. + // + /// @param quadrantSegments the number of quadrant segments to use + /// @param endCapStyle the end cap style to use + /// @param joinStyle the join style to use + /// @param mitreLimit the mitre limit to use + /// + BufferParameters(int quadrantSegments, EndCapStyle endCapStyle, + JoinStyle joinStyle, double mitreLimit); + + /// Gets the number of quadrant segments which will be used + // + /// @return the number of quadrant segments + /// + int getQuadrantSegments() const { return quadrantSegments; } + + /// \brief + /// Sets the number of line segments used to approximate + /// an angle fillet. + // + /// - If quadSegs >= 1, joins are round, + /// and quadSegs indicates the number of + /// segments to use to approximate a quarter-circle. + /// - If quadSegs = 0, joins are bevelled (flat) + /// - If quadSegs < 0, joins are mitred, and the value of qs + /// indicates the mitre ration limit as + ///

+	///    mitreLimit = |quadSegs|
+	///    
+ /// + /// For round joins, quadSegs determines the maximum + /// error in the approximation to the true buffer curve. + /// + /// The default value of 8 gives less than 2% max error in the + /// buffer distance. + /// + /// For a max error of < 1%, use QS = 12. + /// For a max error of < 0.1%, use QS = 18. + /// The error is always less than the buffer distance + /// (in other words, the computed buffer curve is always inside + /// the true curve). + /// + /// @param quadrantSegments the number of segments in a + /// fillet for a quadrant + //// + void setQuadrantSegments(int quadSegs); + + /// \brief + /// Computes the maximum distance error due to a given level + /// of approximation to a true arc. + // + /// @param quadSegs the number of segments used to approximate + /// a quarter-circle + /// @return the error of approximation + /// + static double bufferDistanceError(int quadSegs); + + /// Gets the end cap style. + // + /// @return the end cap style + /// + EndCapStyle getEndCapStyle() const { return endCapStyle; } + + /// Specifies the end cap style of the generated buffer. + // + /// The styles supported are CAP_ROUND, CAP_BUTT, + /// and CAP_SQUARE. + /// + /// The default is CAP_ROUND. + /// + /// @param style the end cap style to specify + /// + void setEndCapStyle(EndCapStyle style) + { + endCapStyle = style; + } + + /// Gets the join style. + // + /// @return the join style + /// + JoinStyle getJoinStyle() const { return joinStyle; } + + /// \brief + /// Sets the join style for outside (reflex) corners between + /// line segments. + // + /// Allowable values are JOIN_ROUND (which is the default), + /// JOIN_MITRE and JOIN_BEVEL. + // + /// @param style the code for the join style + /// + void setJoinStyle(JoinStyle style) + { + joinStyle = style; + } + + /// Gets the mitre ratio limit. + // + /// @return the limit value + /// + double getMitreLimit() const { return mitreLimit; } + + /// Sets the limit on the mitre ratio used for very sharp corners. + // + /// The mitre ratio is the ratio of the distance from the corner + /// to the end of the mitred offset corner. + /// When two line segments meet at a sharp angle, + /// a miter join will extend far beyond the original geometry. + /// (and in the extreme case will be infinitely far.) + /// To prevent unreasonable geometry, the mitre limit + /// allows controlling the maximum length of the join corner. + /// Corners with a ratio which exceed the limit will be beveled. + /// + /// @param limit the mitre ratio limit + /// + void setMitreLimit(double limit) + { + mitreLimit = limit; + } + + +private: + + /// Defaults to DEFAULT_QUADRANT_SEGMENTS; + int quadrantSegments; + + /// Defaults to CAP_ROUND; + EndCapStyle endCapStyle; + + // Defaults to JOIN_ROUND; + JoinStyle joinStyle; + + // Defaults to DEFAULT_MITRE_LIMIT; + double mitreLimit; +}; + + + +} // namespace geos::operation::buffer +} // namespace geos::operation +} // namespace geos + +#endif // ndef GEOS_OP_BUFFER_BUFFERPARAMETERS_H + diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/BufferSubgraph.h geos-3.2.2/source/headers/geos/operation/buffer/BufferSubgraph.h --- geos-3.1.0/source/headers/geos/operation/buffer/BufferSubgraph.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/BufferSubgraph.h 2009-06-08 11:07:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: BufferSubgraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: BufferSubgraph.h 2559 2009-06-08 10:07:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/buffer/BufferSubgraph.java rev. 1.21 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_BUFFER_BUFFERSUBGRAPH_H #define GEOS_OP_BUFFER_BUFFERSUBGRAPH_H +#include + #include #include @@ -41,13 +47,14 @@ namespace buffer { // geos.operation.buffer /** - * \brief A connected subset of the graph of DirectedEdges and geomgraph::Node. + * \brief + * A connected subset of the graph of DirectedEdge and geomgraph::Node. * * Its edges will generate either * - a single polygon in the complete buffer, with zero or more holes, or * - ne or more connected holes */ -class BufferSubgraph { +class GEOS_DLL BufferSubgraph { private: RightmostEdgeFinder finder; @@ -96,11 +103,7 @@ friend std::ostream& operator<< (std::ostream& os, const BufferSubgraph& bs); - /** \brief - * algorithm::CGAlgorithms arg kept for backward-compatibility. - * It is unused. - */ - BufferSubgraph(algorithm::CGAlgorithms *cga=NULL); + BufferSubgraph(); ~BufferSubgraph(); diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/Makefile.am geos-3.2.2/source/headers/geos/operation/buffer/Makefile.am --- geos-3.1.0/source/headers/geos/operation/buffer/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,18 +2,15 @@ #EXTRA_DIST = -# NOTES: -# OffsetCurveBuilder.h needed bu BufferOp.h for enum values - geosdir = $(includedir)/geos/operation/buffer geos_HEADERS = \ - BufferOp.h \ - OffsetCurveBuilder.h - -noinst_HEADERS = \ - BufferBuilder.h \ + BufferBuilder.h \ + BufferOp.h \ + BufferParameters.h \ BufferSubgraph.h \ + OffsetCurveBuilder.h \ OffsetCurveSetBuilder.h \ - RightmostEdgeFinder.h \ - SubgraphDepthLocater.h + RightmostEdgeFinder.h \ + SubgraphDepthLocater.h + diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/Makefile.in geos-3.2.2/source/headers/geos/operation/buffer/Makefile.in --- geos-3.1.0/source/headers/geos/operation/buffer/Makefile.in 2009-03-11 19:13:50.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,18 +19,12 @@ #EXTRA_DIST = -# NOTES: -# OffsetCurveBuilder.h needed bu BufferOp.h for enum values - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -45,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/buffer -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -58,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -65,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,47 +207,59 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/operation/buffer geos_HEADERS = \ - BufferOp.h \ - OffsetCurveBuilder.h - -noinst_HEADERS = \ - BufferBuilder.h \ + BufferBuilder.h \ + BufferOp.h \ + BufferParameters.h \ BufferSubgraph.h \ + OffsetCurveBuilder.h \ OffsetCurveSetBuilder.h \ - RightmostEdgeFinder.h \ - SubgraphDepthLocater.h + RightmostEdgeFinder.h \ + SubgraphDepthLocater.h all: all-am @@ -244,14 +268,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/buffer/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/buffer/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/buffer/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/buffer/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -269,106 +293,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -377,7 +408,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -399,6 +430,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -409,8 +441,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -418,18 +449,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -448,19 +499,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/OffsetCurveBuilder.h geos-3.2.2/source/headers/geos/operation/buffer/OffsetCurveBuilder.h --- geos-3.1.0/source/headers/geos/operation/buffer/OffsetCurveBuilder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/OffsetCurveBuilder.h 2009-12-03 19:45:53.000000000 +0000 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: OffsetCurveBuilder.h 1959 2007-01-09 17:34:00Z strk $ + * $Id: OffsetCurveBuilder.h 2779 2009-12-03 19:45:53Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2006-2007 Refractions Research Inc. * * This is free software; you can redistribute and/or modify it under @@ -13,18 +14,21 @@ * ********************************************************************** * - * Last port: operation/buffer/OffsetCurveBuilder.java rev 1.10 + * Last port: operation/buffer/OffsetCurveBuilder.java rev. 1.30 (JTS-1.10) * **********************************************************************/ #ifndef GEOS_OP_BUFFER_OFFSETCURVEBUILDER_H #define GEOS_OP_BUFFER_OFFSETCURVEBUILDER_H +#include + #include #include // for composition #include // for composition #include // for composition +#include // for composition // Forward declarations namespace geos { @@ -59,34 +63,53 @@ * Last port: operation/buffer/OffsetCurveBuilder.java rev. 1.9 * */ -class OffsetCurveBuilder { +class GEOS_DLL OffsetCurveBuilder { public: - /** \brief - * The default number of facets into which to divide a fillet - * of 90 degrees. - * - * A value of 8 gives less than 2% max error in the buffer distance. - * For a max error of < 1%, use QS = 12 - */ - static const int DEFAULT_QUADRANT_SEGMENTS=8; + /* + * @param nBufParams buffer parameters, this object will + * keep a reference to the passed parameters + * so caller must make sure the object is + * kept alive for the whole lifetime of + * the buffer builder. + */ OffsetCurveBuilder(const geom::PrecisionModel *newPrecisionModel, - int quadrantSegments=DEFAULT_QUADRANT_SEGMENTS); + const BufferParameters& bufParams); ~OffsetCurveBuilder(); - void setEndCapStyle(int newEndCapStyle); + /** + * This method handles single points as well as lines. + * Lines are assumed to not be closed (the function will not + * fail for closed lines, but will generate superfluous line caps). + * + * @param lineList the std::vector to which the newly created + * CoordinateSequences will be pushed_back. + * Caller is responsible to delete these new elements. + */ + void getLineCurve(const geom::CoordinateSequence* inputPts, + double distance, + std::vector& lineList); /** * This method handles single points as well as lines. + * * Lines are assumed to not be closed (the function will not * fail for closed lines, but will generate superfluous line caps). * - * @param lineList the std::vector to which CoordinateSequences will - * be pushed_back + * @param lineList the std::vector to which newly created + * CoordinateSequences will be pushed_back. + * Caller will be responsible to delete them. + * @param leftSide indicates that the left side buffer will be + * obtained/skipped + * @param rightSide indicates that the right side buffer will + * be obtained/skipped + * + * NOTE: this is a GEOS extension */ - void getLineCurve(const geom::CoordinateSequence* inputPts, double distance, - std::vector& lineList); + void getSingleSidedLineCurve(const geom::CoordinateSequence* inputPts, + double distance, std::vector& lineList, + bool leftSide, bool rightSide ) ; /** * This method handles the degenerate cases of single points and lines, @@ -96,17 +119,76 @@ * be pushed_back */ void getRingCurve(const geom::CoordinateSequence *inputPts, int side, - double distance, std::vector& lineList); + double distance, + std::vector& lineList); private: - static const double MIN_CURVE_VERTEX_FACTOR; // 1.0E-6; + /// The mitre will be beveled if it exceeds the mitre ratio limit. + // + /// @param offset0 the first offset segment + /// @param offset1 the second offset segment + /// @param distance the offset distance + /// + void addMitreJoin(const geom::Coordinate& p, + const geom::LineSegment& offset0, + const geom::LineSegment& offset1, + double distance); + + /// Adds a limited mitre join connecting the two reflex offset segments. + // + /// A limited mitre is a mitre which is beveled at the distance + /// determined by the mitre ratio limit. + /// + /// @param offset0 the first offset segment + /// @param offset1 the second offset segment + /// @param distance the offset distance + /// @param mitreLimit the mitre limit ratio + /// + void addLimitedMitreJoin( + const geom::LineSegment& offset0, + const geom::LineSegment& offset1, + double distance, double mitreLimit); + + /// \brief + /// Adds a bevel join connecting the two offset segments + /// around a reflex corner. + // + /// @param offset0 the first offset segment + /// @param offset1 the second offset segment + /// + void addBevelJoin(const geom::LineSegment& offset0, + const geom::LineSegment& offset1); + + + /** + * Factor which controls how close curve vertices can be to be snapped + */ + static const double CURVE_VERTEX_SNAP_DISTANCE_FACTOR; // 1.0E-6; static const double PI; // 3.14159265358979 static const double MAX_CLOSING_SEG_LEN; // 3.0 + /** + * Factor which controls how close offset segments can be to + * skip adding a filler or mitre. + */ + static const double OFFSET_SEGMENT_SEPARATION_FACTOR; // 1.0E-3; + + /** + * Factor which controls how close curve vertices on inside turns + * can be to be snapped + */ + static const double INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR; // 1.0E-3; + + /** \brief + * Factor which determines how short closing segs can be + * for round buffers + */ + static const int MAX_CLOSING_SEG_FRACTION = 80; + algorithm::LineIntersector li; /** \brief @@ -135,9 +217,26 @@ const geom::PrecisionModel* precisionModel; - int endCapStyle; + const BufferParameters& bufParams; - //int joinStyle; + /// The Closing Segment Factor controls how long "closing + /// segments" are. Closing segments are added at the middle of + /// inside corners to ensure a smoother boundary for the buffer + /// offset curve. In some cases (particularly for round joins + /// with default-or-better quantization) the closing segments + /// can be made quite short. This substantially improves + /// performance (due to fewer intersections being created). + /// + /// A closingSegFactor of 0 results in lines to the corner vertex. + /// A closingSegFactor of 1 results in lines halfway + /// to the corner vertex. + /// A closingSegFactor of 80 results in lines 1/81 of the way + /// to the corner vertex (this option is reasonable for the very + /// common default situation of round joins and quadrantSegs >= 8). + /// + /// The default is 1. + /// + int closingSegFactor; // 1; geom::Coordinate s0, s1, s2; @@ -151,60 +250,106 @@ int side; -// static geom::CoordinateSequence* copyCoordinates(geom::CoordinateSequence *pts); + // Not in JTS, used for single-sided buffers + int endCapIndex; void init(double newDistance); - //geom::CoordinateSequence* getCoordinates(); + /** + * Use a value which results in a potential distance error which is + * significantly less than the error due to + * the quadrant segment discretization. + * For QS = 8 a value of 100 is reasonable. + * This should produce a maximum of 1% distance error. + */ + static const double SIMPLIFY_FACTOR; // 100.0; + + /** \brief + * Computes the distance tolerance to use during input + * line simplification. + * + * @param distance the buffer distance + * @return the simplification tolerance + */ + double simplifyTolerance(double bufDistance); void computeLineBufferCurve(const geom::CoordinateSequence& inputPts); - void computeRingBufferCurve(const geom::CoordinateSequence& inputPts, int side); + void computeRingBufferCurve(const geom::CoordinateSequence& inputPts, + int side); - //void addPt(const geom::Coordinate &pt); + void initSideSegments(const geom::Coordinate &nS1, + const geom::Coordinate &nS2, int nSide); - //void closePts(); + void addNextSegment(const geom::Coordinate &p, bool addStartPoint); - void initSideSegments(const geom::Coordinate &nS1, const geom::Coordinate &nS2, int nSide); + void addCollinear(bool addStartPoint); - void addNextSegment(const geom::Coordinate &p, bool addStartPoint); + /// Adds the offset points for an outside (convex) turn + // + /// @param orientation + /// @param addStartPoint + /// + void addOutsideTurn(int orientation, bool addStartPoint); + + /// Adds the offset points for an inside (concave) turn + // + /// @param orientation + /// @param addStartPoint + /// + void addInsideTurn(int orientation, bool addStartPoint); /// Add last offset point void addLastSegment(); - /** - * Compute an offset segment for an input segment on a given side and at a - * given distance. - * The offset points are computed in full double precision, for accuracy. + /** \brief + * Compute an offset segment for an input segment on a given + * side and at a given distance. + * + * The offset points are computed in full double precision, + * for accuracy. * * @param seg the segment to offset * @param side the side of the segment the offset lies on * @param distance the offset distance * @param offset the points computed for the offset segment */ - void computeOffsetSegment(const geom::LineSegment& seg, int side, double distance, - geom::LineSegment& offset); - - /// Add an end cap around point p1, terminating a line segment coming from p0 - void addLineEndCap(const geom::Coordinate &p0,const geom::Coordinate &p1); + void computeOffsetSegment(const geom::LineSegment& seg, + int side, double distance, + geom::LineSegment& offset); + + /// \brief + /// Add an end cap around point p1, terminating a line segment + /// coming from p0 + void addLineEndCap(const geom::Coordinate &p0, + const geom::Coordinate &p1); /** + * Adds points for a circular fillet around a reflex corner. + * + * Adds the start and end points + * * @param p base point of curve * @param p0 start point of fillet curve * @param p1 endpoint of fillet curve + * @param direction the orientation of the fillet + * @param radius the radius of the fillet */ void addFillet(const geom::Coordinate &p, const geom::Coordinate &p0, - const geom::Coordinate &p1, int direction, double distance); + const geom::Coordinate &p1, + int direction, double radius); - /** \brief - * Adds points for a fillet. + /** + * Adds points for a circular fillet arc between two specified angles. + * * The start and end point for the fillet are not added - * the caller must add them if required. * * @param direction is -1 for a CW angle, 1 for a CCW angle + * @param radius the radius of the fillet */ - void addFillet(const geom::Coordinate &p, double startAngle, double endAngle, - int direction, double distance); + void addFillet(const geom::Coordinate &p, double startAngle, + double endAngle, int direction, double radius); /// Adds a CW circle around a point void addCircle(const geom::Coordinate &p, double distance); @@ -212,14 +357,12 @@ /// Adds a CW square around a point void addSquare(const geom::Coordinate &p, double distance); - std::vector vertexLists; -}; - -// INLINES -inline void OffsetCurveBuilder::setEndCapStyle(int newEndCapStyle) { - endCapStyle=newEndCapStyle; -} + std::vector vertexLists; + // Declare type as noncopyable + OffsetCurveBuilder(const OffsetCurveBuilder& other); + OffsetCurveBuilder& operator=(const OffsetCurveBuilder& rhs); +}; } // namespace geos::operation::buffer } // namespace geos::operation diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h geos-3.2.2/source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h --- geos-3.1.0/source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/OffsetCurveSetBuilder.h 2009-12-03 19:45:53.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: OffsetCurveSetBuilder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: OffsetCurveSetBuilder.h 2779 2009-12-03 19:45:53Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/buffer/OffsetCurveSetBuilder.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_BUFFER_OFFSETCURVESETBUILDER_H #define GEOS_OP_BUFFER_OFFSETCURVESETBUILDER_H +#include + #include // Forward declarations @@ -54,10 +60,8 @@ * Raw curves need to be noded together and polygonized to form the * final buffer area. * - * Last port: operation/buffer/OffsetCurveSetBuilder.java rev. 1.7 (JTS-1.7) - * */ -class OffsetCurveSetBuilder { +class GEOS_DLL OffsetCurveSetBuilder { private: @@ -79,12 +83,14 @@ /** * Creates a noding::SegmentString for a coordinate list which is a raw * offset curve, and adds it to the list of buffer curves. - * The noding::SegmentString is tagged with a geomgraph::Label giving the topology - * of the curve. + * The noding::SegmentString is tagged with a geomgraph::Label + * giving the topology of the curve. * The curve may be oriented in either direction. * If the curve is oriented CW, the locations will be: * - Left: Location.EXTERIOR * - Right: Location.INTERIOR + * + * @param coord is raw offset curve, ownership transferred here */ void addCurve(geom::CoordinateSequence *coord, int leftLoc, int rightLoc); @@ -157,6 +163,10 @@ bool isTriangleErodedCompletely(geom::CoordinateSequence *triangleCoord, double bufferDistance); + // Declare type as noncopyable + OffsetCurveSetBuilder(const OffsetCurveSetBuilder& other); + OffsetCurveSetBuilder& operator=(const OffsetCurveSetBuilder& rhs); + public: /// Constructor @@ -178,6 +188,10 @@ std::vector& getCurves(); /// Add raw curves for a set of CoordinateSequences + // + /// @param lineList is a list of CoordinateSequence, ownership + /// of which is transferred here. + /// void addCurves(const std::vector& lineList, int leftLoc, int rightLoc); diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/RightmostEdgeFinder.h geos-3.2.2/source/headers/geos/operation/buffer/RightmostEdgeFinder.h --- geos-3.1.0/source/headers/geos/operation/buffer/RightmostEdgeFinder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/RightmostEdgeFinder.h 2009-06-08 11:07:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RightmostEdgeFinder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RightmostEdgeFinder.h 2559 2009-06-08 10:07:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,13 +13,15 @@ * ********************************************************************** * - * Last port: operation/buffer/RightmostEdgeFinder.java rev. 1.13 (JTS-1.7) + * Last port: operation/buffer/RightmostEdgeFinder.java rev. 1.14 (JTS-1.10) * **********************************************************************/ #ifndef GEOS_OP_BUFFER_RIGHTMOSTEDGEFINDER_H #define GEOS_OP_BUFFER_RIGHTMOSTEDGEFINDER_H +#include + #include // for composition #include @@ -43,7 +45,7 @@ * the highest coordinate, and which is oriented L to R at that point. * (I.e. the right side is on the RHS of the edge.) */ -class RightmostEdgeFinder { +class GEOS_DLL RightmostEdgeFinder { private: diff -Nru geos-3.1.0/source/headers/geos/operation/buffer/SubgraphDepthLocater.h geos-3.2.2/source/headers/geos/operation/buffer/SubgraphDepthLocater.h --- geos-3.1.0/source/headers/geos/operation/buffer/SubgraphDepthLocater.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/buffer/SubgraphDepthLocater.h 2009-06-08 11:07:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SubgraphDepthLocater.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SubgraphDepthLocater.h 2559 2009-06-08 10:07:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/buffer/SubgraphDepthLocater.java rev. 1.7 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_BUFFER_SUBGRAPHDEPTHLOCATER_H #define GEOS_OP_BUFFER_SUBGRAPHDEPTHLOCATER_H +#include + #include #include // for composition @@ -50,9 +56,8 @@ * The input subgraphs are assumed to have had depths * already calculated for their edges. * - * Last port: operation/buffer/SubgraphDepthLocater.java rev. 1.5 (JTS-1.7) */ -class SubgraphDepthLocater { +class GEOS_DLL SubgraphDepthLocater { public: diff -Nru geos-3.1.0/source/headers/geos/operation/distance/ConnectedElementLocationFilter.h geos-3.2.2/source/headers/geos/operation/distance/ConnectedElementLocationFilter.h --- geos-3.1.0/source/headers/geos/operation/distance/ConnectedElementLocationFilter.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/distance/ConnectedElementLocationFilter.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConnectedElementLocationFilter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConnectedElementLocationFilter.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/distance/ConnectedElementLocationFilter.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_DISTANCE_CONNECTEDELEMENTLOCATIONFILTER_H #define GEOS_OP_DISTANCE_CONNECTEDELEMENTLOCATIONFILTER_H +#include + #include // for inheritance #include @@ -44,7 +50,7 @@ * and returns them in a list. The elements of the list are * DistanceOp::GeometryLocation. */ -class ConnectedElementLocationFilter: public geom::GeometryFilter { +class GEOS_DLL ConnectedElementLocationFilter: public geom::GeometryFilter { private: std::vector *locations; diff -Nru geos-3.1.0/source/headers/geos/operation/distance/ConnectedElementPointFilter.h geos-3.2.2/source/headers/geos/operation/distance/ConnectedElementPointFilter.h --- geos-3.1.0/source/headers/geos/operation/distance/ConnectedElementPointFilter.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/distance/ConnectedElementPointFilter.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConnectedElementPointFilter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConnectedElementPointFilter.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/distance/ConnectedElementPointFilter.java rev. 1.7 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_DISTANCE_CONNECTEDELEMENTPOINTFILTER_H #define GEOS_OP_DISTANCE_CONNECTEDELEMENTPOINTFILTER_H +#include + #include // for inheritance #include @@ -39,7 +45,7 @@ * (e.g. a polygon, linestring or point) * and returns them in a list */ -class ConnectedElementPointFilter: public geom::GeometryFilter { +class GEOS_DLL ConnectedElementPointFilter: public geom::GeometryFilter { private: std::vector *pts; diff -Nru geos-3.1.0/source/headers/geos/operation/distance/DistanceOp.h geos-3.2.2/source/headers/geos/operation/distance/DistanceOp.h --- geos-3.1.0/source/headers/geos/operation/distance/DistanceOp.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/distance/DistanceOp.h 2009-06-08 11:29:54.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DistanceOp.h 1831 2006-09-07 09:01:08Z strk $ + * $Id: DistanceOp.h 2560 2009-06-08 10:29:54Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/distance/DistanceOp.java rev 1.21 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_DISTANCE_DISTANCEOP_H #define GEOS_OP_DISTANCE_DISTANCEOP_H +#include + #include // for composition #include @@ -42,47 +48,114 @@ namespace operation { // geos::operation namespace distance { // geos::operation::distance -/** \brief - * Computes the distance and - * closest points between two {@link Geometry}s. +/** + * \brief + * Find two points on two {@link Geometry}s which lie + * within a given distance, or else are the nearest points + * on the geometries (in which case this also + * provides the distance between the geometries). * - * The distance computation finds a pair of points in the input geometries - * which have minimum distance between them. These points may - * not be vertices of the geometries, but may lie in the interior of - * a line segment. In this case the coordinate computed is a close + * The distance computation also finds a pair of points in the + * input geometries which have the minimum distance between them. + * If a point lies in the interior of a line segment, + * the coordinate computed is a close * approximation to the exact point. - * + * * The algorithms used are straightforward O(n^2) * comparisons. This worst-case performance could be improved on - * by using Voronoi techniques. + * by using Voronoi techniques or spatial indexes. * */ -class DistanceOp { +class GEOS_DLL DistanceOp { public: /** - * Compute the distance between the closest points of two geometries. + * \brief + * Compute the distance between the nearest points of two geometries. + * * @param g0 a {@link Geometry} * @param g1 another {@link Geometry} * @return the distance between the geometries */ - static double distance(const geom::Geometry *g0, const geom::Geometry *g1); + static double distance(const geom::Geometry& g0, + const geom::Geometry& g1); + + /// @deprecated, use the version taking references + static double distance(const geom::Geometry *g0, + const geom::Geometry *g1); /** - * Compute the the closest points of two geometries. + * \brief + * Test whether two geometries lie within a given distance of + * each other. + * + * @param g0 a {@link Geometry} + * @param g1 another {@link Geometry} + * @param distance the distance to test + * @return true if g0.distance(g1) <= distance + */ + static bool isWithinDistance(const geom::Geometry& g0, + const geom::Geometry& g1, + double distance); + + /** + * Compute the the nearest points of two geometries. + * * The points are presented in the same order as the input Geometries. * * @param g0 a {@link Geometry} * @param g1 another {@link Geometry} - * @return the closest points in the geometries + * + * @return the nearest points in the geometries, ownership to caller. + * A NULL return means one of the geometries is empty. + * */ - static geom::CoordinateSequence* closestPoints(geom::Geometry *g0, geom::Geometry *g1); + static geom::CoordinateSequence* nearestPoints( + const geom::Geometry *g0, + const geom::Geometry *g1); /** - * Constructs a DistanceOp that computes the distance and closest points between - * the two specified geometries. + * Compute the the closest points of two geometries. + * + * The points are presented in the same order as the input Geometries. + * + * @param g0 a {@link Geometry} + * @param g1 another {@link Geometry} + * + * @return the closest points in the geometries, ownership to caller. + * A NULL return means one of the geometries is empty. + * + * @deprecated renamed to nearestPoints */ + static geom::CoordinateSequence* closestPoints( + const geom::Geometry *g0, + const geom::Geometry *g1); + + /// @deprecated use the one taking references DistanceOp(const geom::Geometry *g0, const geom::Geometry *g1); + /** + * \brief + * Constructs a DistanceOp that computes the distance and + * nearest points between the two specified geometries. + * + * @param g0 a Geometry + * @param g1 a Geometry + */ + DistanceOp(const geom::Geometry& g0, const geom::Geometry& g1); + + /** + * \brief + * Constructs a DistanceOp that computes the distance and nearest + * points between the two specified geometries. + * + * @param g0 a Geometry + * @param g1 a Geometry + * @param terminateDistance the distance on which to terminate + * the search + */ + DistanceOp(const geom::Geometry& g0, const geom::Geometry& g1, + double terminateDistance); + ~DistanceOp(); /** @@ -98,31 +171,56 @@ * * @return a pair of {@link Coordinate}s of the closest points * as a newly allocated object (ownership to caller) + * + * @deprecated renamed to nearestPoints */ geom::CoordinateSequence* closestPoints(); /** + * Report the coordinates of the nearest points in the input geometries. + * The points are presented in the same order as the input Geometries. + * + * @return a pair of {@link Coordinate}s of the nearest points + * as a newly allocated object (ownership to caller) + * + */ + geom::CoordinateSequence* nearestPoints(); + +private: + + /** * Report the locations of the closest points in the input geometries. - * The locations are presented in the same order as the input Geometries. + * The locations are presented in the same order as the input + * Geometries. * * @return a pair of {@link GeometryLocation}s for the closest points. * Ownership of returned object is left to this instance and - * it's reference will be invalidated by next call - * to distance() + * it's reference will be alive for the whole lifetime of it. + * + * NOTE: this is public in JTS, but we aim at API reduction here... * */ - std::vector* closestLocations(); + std::vector* nearestLocations(); -private: + // input (TODO: use two references instead..) + std::vector geom; + double terminateDistance; + // working algorithm::PointLocator ptLocator; - std::vector geom; - std::vector newCoords; + // TODO: use auto_ptr std::vector *minDistanceLocation; double minDistance; - void updateMinDistance(double dist); - void updateMinDistance(std::vector *locGeom, bool flip); + + // memory management + std::vector newCoords; + + + void updateMinDistance(std::vector& locGeom, + bool flip); + void computeMinDistance(); + void computeContainmentDistance(); void computeInside(std::vector *locs, @@ -133,7 +231,11 @@ const geom::Polygon *poly, std::vector *locPtPoly); - void computeLineDistance(); + /** + * Computes distance between facets (lines and points) + * of input geometries. + */ + void computeFacetDistance(); void computeMinDistanceLines( const std::vector& lines0, diff -Nru geos-3.1.0/source/headers/geos/operation/distance/GeometryLocation.h geos-3.2.2/source/headers/geos/operation/distance/GeometryLocation.h --- geos-3.1.0/source/headers/geos/operation/distance/GeometryLocation.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/distance/GeometryLocation.h 2009-06-08 11:37:11.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryLocation.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryLocation.h 2561 2009-06-08 10:37:11Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/distance/GeometryLocation.java rev. 1.7 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_DISTANCE_GEOMETRYLOCATION_H #define GEOS_OP_DISTANCE_GEOMETRYLOCATION_H +#include + #include // for composition // Forward declarations @@ -34,44 +40,60 @@ /** \brief * Represents the location of a point on a Geometry. * - * Maintains both the actual point location (which of course - * may not be exact) as well as information about the component + * Maintains both the actual point location + * (which may not be exact, if the point is not a vertex) + * as well as information about the component * and segment index where the point occurs. * Locations inside area Geometrys will not have an associated segment index, * so in this case the segment index will have the sentinel value of * INSIDE_AREA. */ -class GeometryLocation { +class GEOS_DLL GeometryLocation { private: const geom::Geometry *component; int segIndex; geom::Coordinate pt; public: - /** - * Special value of segment-index for locations inside area geometries. These - * locations do not have an associated segment index. + /** \brief + * A Special value of segmentIndex used for locations + * inside area geometries. + * + * These locations are not located on a segment, + * and thus do not have an associated segment index. */ static const int INSIDE_AREA = -1; - /** - * Constructs a GeometryLocation specifying a point on a geometry, as well as the - * segment that the point is on (or INSIDE_AREA if the point is not on a segment). - */ - GeometryLocation(const geom::Geometry *newComponent, - int newSegIndex, const geom::Coordinate &newPt); - - /** - * Constructs a GeometryLocation specifying a point inside an area geometry. + /** \brief + * Constructs a GeometryLocation specifying a point on a geometry, + * as well as the segment that the point is on (or INSIDE_AREA if + * the point is not on a segment). + * + * @param component the component of the geometry containing the point + * @param segIndex the segment index of the location, or INSIDE_AREA + * @param pt the coordinate of the location + */ + GeometryLocation(const geom::Geometry *component, + int segIndex, const geom::Coordinate &pt); + + /** \brief + * Constructs a GeometryLocation specifying a point inside an + * area geometry. + * + * @param component the component of the geometry containing the point + * @param pt the coordinate of the location */ - GeometryLocation(const geom::Geometry *newComponent, const geom::Coordinate &newPt); + GeometryLocation(const geom::Geometry *component, + const geom::Coordinate &pt); /** - * Returns the geometry associated with this location. + * Returns the geometry component on (or in) which this location occurs. */ const geom::Geometry* getGeometryComponent(); /** - * Returns the segment index for this location. If the location is inside an + * Returns the segment index for this location. + * + * If the location is inside an * area, the index will have the value INSIDE_AREA; * * @return the segment index for the location, or INSIDE_AREA @@ -79,12 +101,13 @@ int getSegmentIndex(); /** - * Returns the location. + * Returns the geom::Coordinate of this location. */ geom::Coordinate& getCoordinate(); - /** - * Returns whether this GeometryLocation represents a point inside an area geometry. + /** \brief + * Tests whether this location represents a point + * inside an area geometry. */ bool isInsideArea(); }; diff -Nru geos-3.1.0/source/headers/geos/operation/distance/Makefile.am geos-3.2.2/source/headers/geos/operation/distance/Makefile.am --- geos-3.1.0/source/headers/geos/operation/distance/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/distance/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,14 +2,11 @@ #EXTRA_DIST = -# NOTES: - geosdir = $(includedir)/geos/operation/distance geos_HEADERS = \ - DistanceOp.h - -noinst_HEADERS = \ ConnectedElementLocationFilter.h \ ConnectedElementPointFilter.h \ - GeometryLocation.h + DistanceOp.h \ + GeometryLocation.h + diff -Nru geos-3.1.0/source/headers/geos/operation/distance/Makefile.in geos-3.2.2/source/headers/geos/operation/distance/Makefile.in --- geos-3.1.0/source/headers/geos/operation/distance/Makefile.in 2009-03-11 19:13:50.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/distance/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,17 +19,12 @@ #EXTRA_DIST = -# NOTES: - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/distance -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -57,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -64,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -102,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -125,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -159,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -170,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -194,44 +207,55 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/operation/distance geos_HEADERS = \ - DistanceOp.h - -noinst_HEADERS = \ ConnectedElementLocationFilter.h \ ConnectedElementPointFilter.h \ - GeometryLocation.h + DistanceOp.h \ + GeometryLocation.h all: all-am @@ -240,14 +264,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/distance/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/distance/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/distance/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/distance/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -265,106 +289,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -373,7 +404,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -395,6 +426,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -405,8 +437,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -414,18 +445,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -444,19 +495,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/EndpointInfo.h geos-3.2.2/source/headers/geos/operation/EndpointInfo.h --- geos-3.1.0/source/headers/geos/operation/EndpointInfo.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/EndpointInfo.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,46 +0,0 @@ -/********************************************************************** - * $Id: EndpointInfo.h 1820 2006-09-06 16:54:23Z mloskot $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2005-2006 Refractions Research Inc. - * Copyright (C) 2001-2002 Vivid Solutions Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - **********************************************************************/ - -#ifndef GEOS_OPERATION_ENDPOINTINFO_H -#define GEOS_OPERATION_ENDPOINTINFO_H - -#include // for composition - -namespace geos { -namespace operation { // geos.operation - - -class EndpointInfo{ -public: - geom::Coordinate pt; - bool isClosed; - int degree; - EndpointInfo(const geom::Coordinate& newPt); - void addEndpoint(bool newIsClosed); -}; - -} // namespace geos.operation -} // namespace geos - -#endif - -/********************************************************************** - * $Log$ - * Revision 1.1 2006/03/09 16:46:49 strk - * geos::geom namespace definition, first pass at headers split - * - **********************************************************************/ - diff -Nru geos-3.1.0/source/headers/geos/operation/GeometryGraphOperation.h geos-3.2.2/source/headers/geos/operation/GeometryGraphOperation.h --- geos-3.1.0/source/headers/geos/operation/GeometryGraphOperation.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/GeometryGraphOperation.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryGraphOperation.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryGraphOperation.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,19 +14,23 @@ * ********************************************************************** * - * Last port: operation/GeometryGraphOperation.java rev. 1.14 (JTS-1.7) + * Last port: operation/GeometryGraphOperation.java rev. 1.18 (JTS-1.10) * **********************************************************************/ #ifndef GEOS_OPERATION_GEOMETRYGRAPHOPERATION_H #define GEOS_OPERATION_GEOMETRYGRAPHOPERATION_H +#include #include // for composition #include // Forward declarations namespace geos { + namespace algorithm { + class BoundaryNodeRule; + } namespace geom { class Geometry; class PrecisionModel; @@ -41,13 +45,17 @@ namespace operation { // geos.operation /// The base class for operations that require GeometryGraph -class GeometryGraphOperation { +class GEOS_DLL GeometryGraphOperation { public: GeometryGraphOperation(const geom::Geometry *g0, const geom::Geometry *g1); + GeometryGraphOperation(const geom::Geometry *g0, + const geom::Geometry *g1, + const algorithm::BoundaryNodeRule& boundaryNodeRule); + GeometryGraphOperation(const geom::Geometry *g0); virtual ~GeometryGraphOperation(); diff -Nru geos-3.1.0/source/headers/geos/operation/IsSimpleOp.h geos-3.2.2/source/headers/geos/operation/IsSimpleOp.h --- geos-3.1.0/source/headers/geos/operation/IsSimpleOp.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/IsSimpleOp.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: IsSimpleOp.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IsSimpleOp.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * @@ -12,21 +13,32 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/IsSimpleOp.java rev. 1.22 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OPERATION_ISSIMPLEOP_H #define GEOS_OPERATION_ISSIMPLEOP_H + +#include +#include // for dtor visibility by auto_ptr (compos) + #include +#include // for auto_ptr // Forward declarations namespace geos { + namespace algorithm { + class BoundaryNodeRule; + } namespace geom { class LineString; class MultiLineString; class MultiPoint; class Geometry; - class Coordinate; struct CoordinateLessThen; } namespace geomgraph { @@ -44,25 +56,154 @@ /** \brief * Tests whether a Geometry is simple. * - * Only Geometry whose definition allows them - * to be simple or non-simple are tested. (E.g. Polygons must be simple - * by definition, so no test is provided. To test whether a given Polygon is valid, - * use Geometry#isValid) + * In general, the SFS specification of simplicity follows the rule: + * + * - A Geometry is simple if and only if the only self-intersections + * are at boundary points. + * + * This definition relies on the definition of boundary points. + * The SFS uses the Mod-2 rule to determine which points are on the boundary of + * lineal geometries, but this class supports + * using other {@link BoundaryNodeRule}s as well. + * + * Simplicity is defined for each {@link Geometry} subclass as follows: + * + * - Valid polygonal geometries are simple by definition, so + * isSimple trivially returns true. + * (Hint: in order to check if a polygonal geometry has self-intersections, + * use {@link Geometry::isValid}). + * + * - Linear geometries are simple iff they do not self-intersect at points + * other than boundary points. + * (Using the Mod-2 rule, this means that closed linestrings + * cannot be touched at their endpoints, since these are + * interior points, not boundary points). + * + * - Zero-dimensional geometries (points) are simple iff they have no + * repeated points. + * + * - Empty Geometrys are always simple + * + * @see algorithm::BoundaryNodeRule * */ -class IsSimpleOp { +class GEOS_DLL IsSimpleOp +{ + public: + + /** \brief + * Creates a simplicity checker using the default + * SFS Mod-2 Boundary Node Rule + * + * @deprecated use IsSimpleOp(Geometry) + */ IsSimpleOp(); + + /** \brief + * Creates a simplicity checker using the default + * SFS Mod-2 Boundary Node Rule + * + * @param geom The geometry to test. + * Will store a reference: keep it alive. + */ + IsSimpleOp(const geom::Geometry& geom); + + /** \brief + * Creates a simplicity checker using a given + * algorithm::BoundaryNodeRule + * + * @param geom the geometry to test + * @param boundaryNodeRule the rule to use. + */ + IsSimpleOp(const geom::Geometry& geom, + const algorithm::BoundaryNodeRule& boundaryNodeRule); + + /** + * Tests whether the geometry is simple. + * + * @return true if the geometry is simple + */ + bool isSimple(); + + /** + * Gets a coordinate for the location where the geometry + * fails to be simple. + * (i.e. where it has a non-boundary self-intersection). + * {@link #isSimple} must be called before this method is called. + * + * @return a coordinate for the location of the non-boundary + * self-intersection. Ownership retained. + * @return the null coordinate if the geometry is simple + */ + const geom::Coordinate* getNonSimpleLocation() const + { + return nonSimpleLocation.get(); + } + + /** + * Reports whether a geom::LineString is simple. + * + * @param geom the lineal geometry to test + * @return true if the geometry is simple + * + * @deprecated use isSimple() + */ bool isSimple(const geom::LineString *geom); + + /** + * Reports whether a geom::MultiLineString is simple. + * + * @param geom the lineal geometry to test + * @return true if the geometry is simple + * + * @deprecated use isSimple() + */ bool isSimple(const geom::MultiLineString *geom); + + /** + * A MultiPoint is simple iff it has no repeated points + * + * @deprecated use isSimple() + */ bool isSimple(const geom::MultiPoint *mp); + bool isSimpleLinearGeometry(const geom::Geometry *geom); + private: + + /** + * For all edges, check if there are any intersections which are + * NOT at an endpoint. + * The Geometry is not simple if there are intersections not at + * endpoints. + */ bool hasNonEndpointIntersection(geomgraph::GeometryGraph &graph); + + /** + * Tests that no edge intersection is the endpoint of a closed line. + * This ensures that closed lines are not touched at their endpoint, + * which is an interior point according to the Mod-2 rule + * To check this we compute the degree of each endpoint. + * The degree of endpoints of closed lines + * must be exactly 2. + */ bool hasClosedEndpointIntersection(geomgraph::GeometryGraph &graph); + + /** + * Add an endpoint to the map, creating an entry for it if none exists + */ void addEndpoint(std::map&endPoints, const geom::Coordinate *p, bool isClosed); + + bool isClosedEndpointsInInterior; + + bool isSimpleMultiPoint(const geom::MultiPoint& mp); + + const geom::Geometry* geom; + + std::auto_ptr nonSimpleLocation; }; } // namespace geos.operation diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/EdgeString.h geos-3.2.2/source/headers/geos/operation/linemerge/EdgeString.h --- geos-3.1.0/source/headers/geos/operation/linemerge/EdgeString.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/EdgeString.h 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeString.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeString.h 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/EdgeString.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_LINEMERGE_EDGESTRING_H #define GEOS_OP_LINEMERGE_EDGESTRING_H +#include #include // Forward declarations @@ -42,7 +47,7 @@ * A sequence of LineMergeDirectedEdge forming one of the lines that will * be output by the line-merging process. */ -class EdgeString { +class GEOS_DLL EdgeString { private: const geom::GeometryFactory *factory; std::vector *directedEdges; diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/LineMergeDirectedEdge.h geos-3.2.2/source/headers/geos/operation/linemerge/LineMergeDirectedEdge.h --- geos-3.1.0/source/headers/geos/operation/linemerge/LineMergeDirectedEdge.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/LineMergeDirectedEdge.h 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMergeDirectedEdge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineMergeDirectedEdge.h 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMergeDirectedEdge.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_LINEMERGE_LINEMERGEDIRECTEDEDGE_H #define GEOS_OP_LINEMERGE_LINEMERGEDIRECTEDEDGE_H +#include + #include // for inheritance // Forward declarations @@ -39,7 +45,7 @@ * A planargraph::DirectedEdge of a LineMergeGraph. * */ -class LineMergeDirectedEdge: public planargraph::DirectedEdge { +class GEOS_DLL LineMergeDirectedEdge: public planargraph::DirectedEdge { public: /** * Constructs a LineMergeDirectedEdge connecting the from diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/LineMergeEdge.h geos-3.2.2/source/headers/geos/operation/linemerge/LineMergeEdge.h --- geos-3.1.0/source/headers/geos/operation/linemerge/LineMergeEdge.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/LineMergeEdge.h 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMergeEdge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineMergeEdge.h 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMergeEdge.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_LINEMERGE_LINEMERGEEDGE_H #define GEOS_OP_LINEMERGE_LINEMERGEEDGE_H +#include + #include // for inheritance // Forward declarations @@ -34,7 +40,7 @@ * An edge of a LineMergeGraph. The marked field indicates * whether this Edge has been logically deleted from the graph. */ -class LineMergeEdge: public planargraph::Edge { +class GEOS_DLL LineMergeEdge: public planargraph::Edge { private: const geom::LineString *line; public: diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/LineMergeGraph.h geos-3.2.2/source/headers/geos/operation/linemerge/LineMergeGraph.h --- geos-3.1.0/source/headers/geos/operation/linemerge/LineMergeGraph.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/LineMergeGraph.h 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMergeGraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineMergeGraph.h 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMergeGraph.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H #define GEOS_OP_LINEMERGE_LINEMERGEGRAPH_H +#include + #include // for inheritance #include @@ -45,7 +51,7 @@ * and planargraph::Node indicates whether they have been * logically deleted from the graph. */ -class LineMergeGraph: public planargraph::PlanarGraph { +class GEOS_DLL LineMergeGraph: public planargraph::PlanarGraph { private: diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/LineMerger.h geos-3.2.2/source/headers/geos/operation/linemerge/LineMerger.h --- geos-3.1.0/source/headers/geos/operation/linemerge/LineMerger.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/LineMerger.h 2009-10-05 17:44:39.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMerger.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineMerger.h 2652 2009-10-05 16:44:39Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMerger.java rev. 1.7 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_LINEMERGE_LINEMERGER_H #define GEOS_OP_LINEMERGE_LINEMERGER_H +#include + #include // for composition #include @@ -63,7 +69,7 @@ * but will not form polygons from incorrected noded edges. * */ -class LineMerger { +class GEOS_DLL LineMerger { private: @@ -116,6 +122,7 @@ /** * \brief * Returns the LineStrings built by the merging process. + * Ownership of vector _and_ its elements to caller. */ std::vector* getMergedLineStrings(); diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/LineSequencer.h geos-3.2.2/source/headers/geos/operation/linemerge/LineSequencer.h --- geos-3.1.0/source/headers/geos/operation/linemerge/LineSequencer.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/LineSequencer.h 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineSequencer.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineSequencer.h 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineSequencer.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_LINEMERGE_LINESEQUENCER_H #define GEOS_OP_LINEMERGE_LINESEQUENCER_H +#include + #include // for composition #include // for inlines #include // for inlines @@ -77,9 +83,8 @@ * If it is not possible to find a sequence, the isSequenceable method * will return false. * - * Last port: operation/linemerge/LineSequencer.java rev. 1.5 (JTS-1.7) */ -class LineSequencer { +class GEOS_DLL LineSequencer { private: typedef std::list DirEdgeList; diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/Makefile.am geos-3.2.2/source/headers/geos/operation/linemerge/Makefile.am --- geos-3.1.0/source/headers/geos/operation/linemerge/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,16 +2,13 @@ #EXTRA_DIST = -# Notes: LineMergeGraph is required by LineMerger.h for composition - geosdir = $(includedir)/geos/operation/linemerge geos_HEADERS = \ - LineMerger.h \ - LineMergeGraph.h - -noinst_HEADERS = \ - EdgeString.h \ + EdgeString.h \ LineMergeDirectedEdge.h \ - LineMergeEdge.h \ - LineSequencer.h + LineMergeEdge.h \ + LineMergeGraph.h \ + LineMerger.h \ + LineSequencer.h + diff -Nru geos-3.1.0/source/headers/geos/operation/linemerge/Makefile.in geos-3.2.2/source/headers/geos/operation/linemerge/Makefile.in --- geos-3.1.0/source/headers/geos/operation/linemerge/Makefile.in 2009-03-11 19:13:51.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/linemerge/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,17 +19,12 @@ #EXTRA_DIST = -# Notes: LineMergeGraph is required by LineMerger.h for composition - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/linemerge -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -57,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -64,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -102,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -125,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -159,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -170,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -194,46 +207,57 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/operation/linemerge geos_HEADERS = \ - LineMerger.h \ - LineMergeGraph.h - -noinst_HEADERS = \ - EdgeString.h \ + EdgeString.h \ LineMergeDirectedEdge.h \ - LineMergeEdge.h \ - LineSequencer.h + LineMergeEdge.h \ + LineMergeGraph.h \ + LineMerger.h \ + LineSequencer.h all: all-am @@ -242,14 +266,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/linemerge/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/linemerge/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/linemerge/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/linemerge/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -267,106 +291,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -375,7 +406,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -397,6 +428,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -407,8 +439,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -416,18 +447,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -446,19 +497,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/Makefile.am geos-3.2.2/source/headers/geos/operation/Makefile.am --- geos-3.1.0/source/headers/geos/operation/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -11,14 +11,9 @@ #EXTRA_DIST = -# Notes: -# GeometryGraphOperation.h needed by OverlayOp.h and RelateOp.h - geosdir = $(includedir)/geos/operation geos_HEADERS = \ - EndpointInfo.h \ GeometryGraphOperation.h \ IsSimpleOp.h -#noinst_HEADERS = diff -Nru geos-3.1.0/source/headers/geos/operation/Makefile.in geos-3.2.2/source/headers/geos/operation/Makefile.in --- geos-3.1.0/source/headers/geos/operation/Makefile.in 2009-03-11 19:13:50.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -43,6 +41,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,36 +241,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ buffer \ distance \ @@ -238,12 +297,8 @@ #EXTRA_DIST = - -# Notes: -# GeometryGraphOperation.h needed by OverlayOp.h and RelateOp.h geosdir = $(includedir)/geos/operation geos_HEADERS = \ - EndpointInfo.h \ GeometryGraphOperation.h \ IsSimpleOp.h @@ -254,14 +309,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -279,33 +334,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -331,15 +386,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -366,16 +420,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -383,14 +437,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -402,81 +456,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -487,7 +561,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -509,6 +583,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -519,8 +594,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -528,18 +602,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -558,26 +652,27 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS -#noinst_HEADERS = # 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 -Nru geos-3.1.0/source/headers/geos/operation/overlay/EdgeSetNoder.h geos-3.2.2/source/headers/geos/operation/overlay/EdgeSetNoder.h --- geos-3.1.0/source/headers/geos/operation/overlay/EdgeSetNoder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/EdgeSetNoder.h 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeSetNoder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeSetNoder.h 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: operation/overlay/EdgeSetNoder.java rev. 1.12 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_EDGESETNODER_H #define GEOS_OP_OVERLAY_EDGESETNODER_H +#include + #include // Forward declarations @@ -39,7 +45,7 @@ * new set of edges consisting of all the split edges created by * noding the input edges together */ -class EdgeSetNoder { +class GEOS_DLL EdgeSetNoder { private: algorithm::LineIntersector *li; std::vector* inputEdges; diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/ElevationMatrixCell.h geos-3.2.2/source/headers/geos/operation/overlay/ElevationMatrixCell.h --- geos-3.1.0/source/headers/geos/operation/overlay/ElevationMatrixCell.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/ElevationMatrixCell.h 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ElevationMatrixCell.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ElevationMatrixCell.h 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: original (by strk) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_ELEVATIONMATRIXCELL_H #define GEOS_OP_OVERLAY_ELEVATIONMATRIXCELL_H +#include + #include // Forward declarations @@ -30,7 +36,7 @@ namespace overlay { // geos::operation::overlay -class ElevationMatrixCell { +class GEOS_DLL ElevationMatrixCell { public: ElevationMatrixCell(); ~ElevationMatrixCell(); diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/ElevationMatrix.h geos-3.2.2/source/headers/geos/operation/overlay/ElevationMatrix.h --- geos-3.1.0/source/headers/geos/operation/overlay/ElevationMatrix.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/ElevationMatrix.h 2009-12-03 19:46:43.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ElevationMatrix.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ElevationMatrix.h 2780 2009-12-03 19:46:43Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: original (by strk) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_ELEVATIONMATRIX_H #define GEOS_OP_OVERLAY_ELEVATIONMATRIX_H +#include + #include #include @@ -48,7 +54,7 @@ * values to the matrix. * filter_rw is used to actually elevate Geometries. */ -class ElevationMatrixFilter: public geom::CoordinateFilter +class GEOS_DLL ElevationMatrixFilter: public geom::CoordinateFilter { public: ElevationMatrixFilter(ElevationMatrix &em); @@ -58,12 +64,16 @@ private: ElevationMatrix &em; double avgElevation; + + // Declare type as noncopyable + ElevationMatrixFilter(const ElevationMatrixFilter& other); + ElevationMatrixFilter& operator=(const ElevationMatrixFilter& rhs); }; /* */ -class ElevationMatrix { +class GEOS_DLL ElevationMatrix { friend class ElevationMatrixFilter; public: ElevationMatrix(const geom::Envelope &extent, unsigned int rows, diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/FuzzyPointLocator.h geos-3.2.2/source/headers/geos/operation/overlay/FuzzyPointLocator.h --- geos-3.1.0/source/headers/geos/operation/overlay/FuzzyPointLocator.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/FuzzyPointLocator.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,92 +0,0 @@ -/********************************************************************** - * $Id: FuzzyPointLocator.h 1941 2006-12-13 10:55:55Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/validate/FuzzyPointLocator.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#ifndef GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H -#define GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H - -#include // for composition -#include // for auto_ptr visibility of dtor -#include // for Location::Value enum - -#include -#include // for auto_ptr - -// Forward declarations -namespace geos { - namespace geom { - class Geometry; - class Coordinate; - } -} - -namespace geos { -namespace operation { // geos::operation -namespace overlay { // geos::operation::overlay - -/** \brief - * Finds the most likely Location of a point relative to - * the polygonal components of a geometry, using a tolerance value. - * - * If a point is not clearly in the Interior or Exterior, - * it is considered to be on the Boundary. - * In other words, if the point is within the tolerance of the Boundary, - * it is considered to be on the Boundary; otherwise, - * whether it is Interior or Exterior is determined directly. - */ -class FuzzyPointLocator { - -public: - - FuzzyPointLocator(const geom::Geometry& geom, double nTolerance); - - geom::Location::Value getLocation(const geom::Coordinate& pt); - -private: - - const geom::Geometry& g; - - double tolerance; - - algorithm::PointLocator ptLocator; - - std::auto_ptr linework; - - // this function has been obsoleted - std::auto_ptr getLineWork(const geom::Geometry& geom); - - /// Extracts linework for polygonal components. - // - /// @param g the geometry from which to extract - /// @return a lineal geometry containing the extracted linework - std::auto_ptr extractLineWork(const geom::Geometry& geom); - - -}; - -} // namespace geos::operation::overlay -} // namespace geos::operation -} // namespace geos - -#endif // ndef GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H - -/********************************************************************** - * $Log$ - **********************************************************************/ - diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/LineBuilder.h geos-3.2.2/source/headers/geos/operation/overlay/LineBuilder.h --- geos-3.1.0/source/headers/geos/operation/overlay/LineBuilder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/LineBuilder.h 2009-06-08 17:26:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineBuilder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineBuilder.h 2565 2009-06-08 16:26:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: operation/overlay/LineBuilder.java rev. 1.15 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_LINEBUILDER_H #define GEOS_OP_OVERLAY_LINEBUILDER_H +#include + #include // for OverlayOp::OpCode enum #include @@ -50,7 +56,7 @@ * created by an OverlayOp. * */ -class LineBuilder { +class GEOS_DLL LineBuilder { public: @@ -66,16 +72,31 @@ std::vector* build(OverlayOp::OpCode opCode); /** - * Find and mark L edges which are "covered" by the result area (if any). - * L edges at nodes which also have A edges can be checked by checking - * their depth at that node. - * L edges at nodes which do not have A edges can be checked by doing a - * point-in-polygon test with the previously computed result areas. + * Collect line edges which are in the result. + * + * Line edges are in the result if they are not part of + * an area boundary, if they are in the result of the overlay operation, + * and if they are not covered by a result area. + * + * @param de the directed edge to test. + * @param opCode the overlap operation + * @param edges the list of included line edges. */ void collectLineEdge(geomgraph::DirectedEdge *de, OverlayOp::OpCode opCode, std::vector* edges); +private: + OverlayOp *op; + const geom::GeometryFactory *geometryFactory; + algorithm::PointLocator *ptLocator; + std::vector lineEdgesList; + std::vector* resultLineList; + void findCoveredLineEdges(); + void collectLines(OverlayOp::OpCode opCode); + void buildLines(OverlayOp::OpCode opCode); + void labelIsolatedLines(std::vector *edgesList); + /** * Collect edges from Area inputs which should be in the result but * which have not been included in a result area. @@ -90,17 +111,6 @@ OverlayOp::OpCode opCode, std::vector* edges); -private: - OverlayOp *op; - const geom::GeometryFactory *geometryFactory; - algorithm::PointLocator *ptLocator; - std::vector lineEdgesList; - std::vector* resultLineList; - void findCoveredLineEdges(); - void collectLines(OverlayOp::OpCode opCode); - void buildLines(OverlayOp::OpCode opCode); - void labelIsolatedLines(std::vector *edgesList); - /** * Label an isolated node with its relationship to the target geometry. */ diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/Makefile.am geos-3.2.2/source/headers/geos/operation/overlay/Makefile.am --- geos-3.1.0/source/headers/geos/operation/overlay/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -1,26 +1,22 @@ -#SUBDIRS = +SUBDIRS = snap #EXTRA_DIST = -# Notes: -# - geosdir = $(includedir)/geos/operation/overlay geos_HEADERS = \ - OverlayOp.h - -noinst_HEADERS = \ EdgeSetNoder.h \ ElevationMatrixCell.h \ ElevationMatrix.h \ - FuzzyPointLocator.h \ LineBuilder.h \ MaximalEdgeRing.h \ MinimalEdgeRing.h \ MinimalEdgeRing.inl \ - OffsetPointGenerator.h \ OverlayNodeFactory.h \ - OverlayResultValidator.h \ + OverlayOp.h \ PointBuilder.h \ - PolygonBuilder.h + PolygonBuilder.h \ + validate/FuzzyPointLocator.h \ + validate/OffsetPointGenerator.h \ + validate/OverlayResultValidator.h + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/Makefile.in geos-3.2.2/source/headers/geos/operation/overlay/Makefile.in --- geos-3.1.0/source/headers/geos/operation/overlay/Makefile.in 2009-03-11 19:13:51.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,22 +15,12 @@ @SET_MAKE@ -#SUBDIRS = - -#EXTRA_DIST = - -# Notes: -# - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -45,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/overlay -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -58,24 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,70 +241,84 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = snap + +#EXTRA_DIST = geosdir = $(includedir)/geos/operation/overlay geos_HEADERS = \ - OverlayOp.h - -noinst_HEADERS = \ EdgeSetNoder.h \ ElevationMatrixCell.h \ ElevationMatrix.h \ - FuzzyPointLocator.h \ LineBuilder.h \ MaximalEdgeRing.h \ MinimalEdgeRing.h \ MinimalEdgeRing.inl \ - OffsetPointGenerator.h \ OverlayNodeFactory.h \ - OverlayResultValidator.h \ + OverlayOp.h \ PointBuilder.h \ - PolygonBuilder.h + PolygonBuilder.h \ + validate/FuzzyPointLocator.h \ + validate/OffsetPointGenerator.h \ + validate/OverlayResultValidator.h -all: all-am +all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(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; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/overlay/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/overlay/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/overlay/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/overlay/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -276,32 +336,102 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -309,92 +439,141 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ +CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done check-am: all-am -check: check-am +check: check-recursive all-am: Makefile $(HEADERS) -installdirs: +installdirs: installdirs-recursive +installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -installcheck: installcheck-am +installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ @@ -406,68 +585,95 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am -distclean: distclean-am +distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags -dvi: dvi-am +dvi: dvi-recursive dvi-am: -html: html-am +html: html-recursive + +html-am: -info: info-am +info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: -install-info: install-info-am +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: -maintainer-clean: maintainer-clean-am +maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool -pdf: pdf-am +pdf: pdf-recursive pdf-am: -ps: ps-am +ps: ps-recursive ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/MaximalEdgeRing.h geos-3.2.2/source/headers/geos/operation/overlay/MaximalEdgeRing.h --- geos-3.1.0/source/headers/geos/operation/overlay/MaximalEdgeRing.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/MaximalEdgeRing.h 2009-11-19 21:06:16.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MaximalEdgeRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MaximalEdgeRing.h 2731 2009-11-19 21:06:16Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/overlay/MaximalEdgeRing.java rev. 1.15 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_MAXIMALEDGERING_H #define GEOS_OP_OVERLAY_MAXIMALEDGERING_H +#include + #include #include // for inheritance @@ -58,13 +64,13 @@ * * @see com.vividsolutions.jts.operation.overlay.MinimalEdgeRing */ -class MaximalEdgeRing: public geomgraph::EdgeRing { +class GEOS_DLL MaximalEdgeRing: public geomgraph::EdgeRing { public: - // CGAlgorithms arg is obsoleted MaximalEdgeRing(geomgraph::DirectedEdge *start, const geom::GeometryFactory *geometryFactory); + // throw(const TopologyException &) virtual ~MaximalEdgeRing(); @@ -76,6 +82,8 @@ /// This function returns a newly allocated vector of /// pointers to newly allocated MinimalEdgeRing objects. /// + /// @deprecated pass the vector yourself instead + /// std::vector* buildMinimalRings(); /// \brief @@ -83,6 +91,7 @@ /// objects to the provided vector. /// void buildMinimalRings(std::vector& minEdgeRings); + void buildMinimalRings(std::vector& minEdgeRings); /// \brief /// For all nodes in this EdgeRing, diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/MinimalEdgeRing.h geos-3.2.2/source/headers/geos/operation/overlay/MinimalEdgeRing.h --- geos-3.1.0/source/headers/geos/operation/overlay/MinimalEdgeRing.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/MinimalEdgeRing.h 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MinimalEdgeRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MinimalEdgeRing.h 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/overlay/MinimalEdgeRing.java rev. 1.13 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_MINIMALEDGERING_H #define GEOS_OP_OVERLAY_MINIMALEDGERING_H +#include + #include // for inheritance #include // for inlines @@ -48,7 +54,7 @@ * @see operation::overlay::MaximalEdgeRing * */ -class MinimalEdgeRing: public geomgraph::EdgeRing { +class GEOS_DLL MinimalEdgeRing: public geomgraph::EdgeRing { public: diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/MinimalEdgeRing.inl geos-3.2.2/source/headers/geos/operation/overlay/MinimalEdgeRing.inl --- geos-3.1.0/source/headers/geos/operation/overlay/MinimalEdgeRing.inl 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/MinimalEdgeRing.inl 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MinimalEdgeRing.inl 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MinimalEdgeRing.inl 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/overlay/MinimalEdgeRing.java rev. 1.13 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_MINIMALEDGERING_INL diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/OffsetPointGenerator.h geos-3.2.2/source/headers/geos/operation/overlay/OffsetPointGenerator.h --- geos-3.1.0/source/headers/geos/operation/overlay/OffsetPointGenerator.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/OffsetPointGenerator.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,80 +0,0 @@ -/********************************************************************** - * $Id: OffsetPointGenerator.h 1941 2006-12-13 10:55:55Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/validate/OffsetPointGenerator.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#ifndef GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H -#define GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H - -#include // for composition -#include // for auto_ptr visibility of dtor -#include // for auto_ptr visibility of dtor -#include // for use in vector - -#include -#include // for auto_ptr - -// Forward declarations -namespace geos { - namespace geom { - //class Geometry; - //class MultiPoint; - class LineString; - //class Coordinate; - } -} - -namespace geos { -namespace operation { // geos::operation -namespace overlay { // geos::operation::overlay - -/// Generates points offset from both sides of all segments in a geometry -// -class OffsetPointGenerator { - -public: - - OffsetPointGenerator(const geom::Geometry& geom, double offset); - - /// Gets the computed offset points. - std::auto_ptr< std::vector > getPoints(); - -private: - - const geom::Geometry& g; - - double offsetDistance; - - std::auto_ptr< std::vector > offsetPts; - - void extractPoints(const geom::LineString* line); - - void computeOffsets(const geom::Coordinate& p0, - const geom::Coordinate& p1); -}; - -} // namespace geos::operation::overlay -} // namespace geos::operation -} // namespace geos - -#endif // ndef GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H - -/********************************************************************** - * $Log$ - **********************************************************************/ - diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/OverlayNodeFactory.h geos-3.2.2/source/headers/geos/operation/overlay/OverlayNodeFactory.h --- geos-3.1.0/source/headers/geos/operation/overlay/OverlayNodeFactory.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/OverlayNodeFactory.h 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: OverlayNodeFactory.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: OverlayNodeFactory.h 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/overlay/OverlayNodeFactory.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_OVERLAYNODEFACTORY_H #define GEOS_OP_OVERLAY_OVERLAYNODEFACTORY_H +#include + #include #include // for inheritance @@ -38,7 +44,7 @@ * Creates nodes for use in the geomgraph::PlanarGraph constructed during * overlay operations. NOTE: also used by operation::valid */ -class OverlayNodeFactory: public geomgraph::NodeFactory { +class GEOS_DLL OverlayNodeFactory: public geomgraph::NodeFactory { public: geomgraph::Node* createNode(const geom::Coordinate &coord) const; static const geomgraph::NodeFactory &instance(); diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/OverlayOp.h geos-3.2.2/source/headers/geos/operation/overlay/OverlayOp.h --- geos-3.1.0/source/headers/geos/operation/overlay/OverlayOp.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/OverlayOp.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: OverlayOp.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: OverlayOp.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: operation/overlay/OverlayOp.java rev. 1.31 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_OVERLAYOP_H #define GEOS_OP_OVERLAY_OVERLAYOP_H +#include + #include // for inheritance #include // for composition #include // for composition @@ -54,7 +60,7 @@ /// The overlay can be used to determine any /// boolean combination of the geometries. /// -class OverlayOp: public GeometryGraphOperation { +class GEOS_DLL OverlayOp: public GeometryGraphOperation { public: diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/OverlayResultValidator.h geos-3.2.2/source/headers/geos/operation/overlay/OverlayResultValidator.h --- geos-3.1.0/source/headers/geos/operation/overlay/OverlayResultValidator.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/OverlayResultValidator.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,117 +0,0 @@ -/********************************************************************** - * $Id: OverlayResultValidator.h 1941 2006-12-13 10:55:55Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/validate/OverlayResultValidator.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#ifndef GEOS_OP_OVERLAY_OVERLAYRESULTVALIDATOR_H -#define GEOS_OP_OVERLAY_OVERLAYRESULTVALIDATOR_H - -#include // for OpCode enum -#include -#include // for Location::Value type - -#include - -// Forward declarations -namespace geos { - namespace geom { - class Geometry; - class Coordinate; - } -} - -namespace geos { -namespace operation { // geos::operation -namespace overlay { // geos::operation::overlay - -/** \brief - * Validates that the result of an overlay operation is - * geometrically correct within a given tolerance. - * - * Uses fuzzy point location, which only works with polygonal - * components of geometries. - * - * This is a heuristic test, and may return incorrect results. - * It should never return a false negative result, however - * (I.e. reporting a valid result as invalid.) - * - * @see OverlayOp - */ -class OverlayResultValidator { - -public: - - static bool isValid( - const geom::Geometry& geom0, - const geom::Geometry& geom1, - OverlayOp::OpCode opCode, - const geom::Geometry& result); - - OverlayResultValidator( - const geom::Geometry& geom0, - const geom::Geometry& geom1, - const geom::Geometry& result); - - bool isValid(OverlayOp::OpCode opCode); - - geom::Coordinate& getInvalidLocation() { - return invalidLocation; - } - -private: - - const geom::Geometry& g0; - - const geom::Geometry& g1; - - const geom::Geometry& gres; - - FuzzyPointLocator fpl0; - - FuzzyPointLocator fpl1; - - FuzzyPointLocator fplres; - - geom::Coordinate invalidLocation; - - static double _TOLERANCE; // 0.000001 - - std::vector testCoords; - - void addTestPts(const geom::Geometry& g); - - void addVertices(const geom::Geometry& g); - - bool testValid(OverlayOp::OpCode overlayOp); - - bool testValid(OverlayOp::OpCode overlayOp, const geom::Coordinate& pt); - - bool isValidResult(OverlayOp::OpCode overlayOp, - std::vector& location); -}; - -} // namespace geos::operation::overlay -} // namespace geos::operation -} // namespace geos - -#endif // ndef GEOS_OP_OVERLAY_OVERLAYRESULTVALIDATOR_H - -/********************************************************************** - * $Log$ - **********************************************************************/ - diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/PointBuilder.h geos-3.2.2/source/headers/geos/operation/overlay/PointBuilder.h --- geos-3.1.0/source/headers/geos/operation/overlay/PointBuilder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/PointBuilder.h 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PointBuilder.h 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: PointBuilder.h 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: operation/overlay/PointBuilder.java rev. 1.16 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_POINTBUILDER_H #define GEOS_OP_OVERLAY_POINTBUILDER_H +#include + #include // for inlines #include // for OpCode enum #include @@ -48,7 +54,7 @@ /** \brief * Constructs geom::Point s from the nodes of an overlay graph. */ -class PointBuilder { +class GEOS_DLL PointBuilder { private: OverlayOp *op; @@ -83,7 +89,7 @@ geometryFactory(newGeometryFactory), resultPointList(new std::vector()) { - UNREFERENCED_PARAMETER(newPtLocator); + ::geos::ignore_unused_variable_warning(newPtLocator); } /** diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/PolygonBuilder.h geos-3.2.2/source/headers/geos/operation/overlay/PolygonBuilder.h --- geos-3.1.0/source/headers/geos/operation/overlay/PolygonBuilder.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/overlay/PolygonBuilder.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonBuilder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonBuilder.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/overlay/PolygonBuilder.java rev. 1.20 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_OVERLAY_POLYGONBUILDER_H #define GEOS_OP_OVERLAY_POLYGONBUILDER_H +#include + #include // Forward declarations @@ -48,10 +54,9 @@ * * The edges to use are marked as being in the result Area. */ -class PolygonBuilder { +class GEOS_DLL PolygonBuilder { public: - // CGAlgorithms argument is unused PolygonBuilder(const geom::GeometryFactory *newGeometryFactory); ~PolygonBuilder(); @@ -61,7 +66,8 @@ * The graph is assumed to contain one or more polygons, * possibly with holes. */ - void add(geomgraph::PlanarGraph *graph); // throw(TopologyException *); + void add(geomgraph::PlanarGraph *graph); + // throw(const TopologyException &) /** * Add a set of edges and nodes, which form a graph. @@ -70,7 +76,7 @@ */ void add(const std::vector *dirEdges, const std::vector *nodes); - // throw(TopologyException *); + // throw(const TopologyException &) std::vector* getPolygons(); @@ -87,10 +93,14 @@ std::vector shellList; /** - * for all DirectedEdges in result, form them into MaximalEdgeRings + * For all DirectedEdges in result, form them into MaximalEdgeRings + * + * Ownership of the returned vector *and* it's elements is + * transferred to caller. */ std::vector* buildMaximalEdgeRings( const std::vector *dirEdges); + // throw(const TopologyException &) std::vector* buildMinimalEdgeRings( std::vector *maxEdgeRings, @@ -145,9 +155,12 @@ * properly contained (i.e. are connected to their * parent shell) would have formed part of a MaximalEdgeRing * and been handled in a previous step. + * + * @throws TopologyException if a hole cannot be assigned to a shell */ void placeFreeHoles(std::vector& newShellList, std::vector& freeHoleList); + // throw(const TopologyException&) /** \brief * Find the innermost enclosing shell geomgraph::EdgeRing containing the diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/snap/GeometrySnapper.h geos-3.2.2/source/headers/geos/operation/overlay/snap/GeometrySnapper.h --- geos-3.1.0/source/headers/geos/operation/overlay/snap/GeometrySnapper.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/snap/GeometrySnapper.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,133 @@ +/********************************************************************** + * $Id: GeometrySnapper.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/GeometrySnapper.java rev 1.8 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_OVERLAY_SNAP_GEOMETRYSNAPPER_H +#define GEOS_OP_OVERLAY_SNAP_GEOMETRYSNAPPER_H + +#include + +#include +#include + +// Forward declarations +namespace geos { + namespace geom { + //class PrecisionModel; + class Geometry; + class CoordinateSequence; + } +} + +namespace geos { +namespace operation { // geos::operation +namespace overlay { // geos::operation::overlay +namespace snap { // geos::operation::overlay::snap + +/** \brief + * Snaps the vertices and segments of a geometry to another's vertices. + * Should improve robustness for overlay operations. + */ +class GEOS_DLL GeometrySnapper { + +public: + + typedef std::auto_ptr GeomPtr; + typedef std::pair GeomPtrPair; + + /** + * Snaps two geometries together with a given tolerance. + * + * @param g0 a geometry to snap + * @param g1 a geometry to snap + * @param snapTolerance the tolerance to use + * @param ret the snapped geometries as a pair of auto_ptrs + * (output parameter) + */ + static void snap(const geom::Geometry& g0, + const geom::Geometry& g1, + double snapTolerance, GeomPtrPair& ret); + + /** + * Creates a new snapper acting on the given geometry + * + * @param g the geometry to snap + */ + GeometrySnapper(const geom::Geometry& g) + : + srcGeom(g) + { + } + + /** \brief + * Snaps the vertices in the component {@link LineString}s + * of the source geometry to the vertices of the given snap geometry + * with a given snap tolerance + * + * @param g a geometry to snap the source to + * @param snapTolerance + * @return a new snapped Geometry + */ + std::auto_ptr snapTo(const geom::Geometry& g, + double snapTolerance); + + /** \brief + * Estimates the snap tolerance for a Geometry, taking into account + * its precision model. + * + * @param g a Geometry + * @return the estimated snap tolerance + */ + static double computeOverlaySnapTolerance(const geom::Geometry& g); + + static double computeSizeBasedSnapTolerance(const geom::Geometry& g); + + /** \brief + * Computes the snap tolerance based on input geometries; + */ + static double computeOverlaySnapTolerance(const geom::Geometry& g1, + const geom::Geometry& g2); + + +private: + + // eventually this will be determined from the geometry topology + //static const double snapTol; // = 0.000001; + + static const double snapPrecisionFactor; // = 10e-10 + + const geom::Geometry& srcGeom; + + /// Extract target (unique) coordinates + std::auto_ptr extractTargetCoordinates( + const geom::Geometry& g); + + // Declare type as noncopyable + GeometrySnapper(const GeometrySnapper& other); + GeometrySnapper& operator=(const GeometrySnapper& rhs); +}; + + +} // namespace geos::operation::overlay::snap +} // namespace geos::operation::overlay +} // namespace geos::operation +} // namespace geos + +#endif // GEOS_OP_OVERLAY_SNAP_GEOMETRYSNAPPER_H + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/snap/LineStringSnapper.h geos-3.2.2/source/headers/geos/operation/overlay/snap/LineStringSnapper.h --- geos-3.1.0/source/headers/geos/operation/overlay/snap/LineStringSnapper.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/snap/LineStringSnapper.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,136 @@ +/********************************************************************** + * $Id: LineStringSnapper.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/lineStringSnapper.java rev 1.5 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_OVERLAY_SNAP_LINESTRINGSNAPPER_H +#define GEOS_OP_OVERLAY_SNAP_LINESTRINGSNAPPER_H + +#include +#include +#include + +#include + +// Forward declarations +namespace geos { + namespace geom { + //class PrecisionModel; + //class CoordinateSequence; + class CoordinateList; + class Geometry; + } +} + +namespace geos { +namespace operation { // geos::operation +namespace overlay { // geos::operation::overlay +namespace snap { // geos::operation::overlay::snap + +/** \brief + * Snaps the vertices and segments of a LineString to a set + * of target snap vertices. + * + * A snapping distance tolerance is used to control where snapping is performed. + * + */ +class GEOS_DLL LineStringSnapper { + +public: + + /** + * Creates a new snapper using the given points + * as source points to be snapped. + * + * @param nSrcPts the points to snap + * @param nSnapTolerance the snap tolerance to use + */ + LineStringSnapper(const geom::Coordinate::Vect& nSrcPts, + double nSnapTol) + : + srcPts(nSrcPts), + snapTolerance(nSnapTol) + { + size_t s = srcPts.size(); + isClosed = ( s < 2 || srcPts[0].equals2D(srcPts[s-1]) ); + } + + // Snap points are assumed to be all distinct points (a set would be better, uh ?) + std::auto_ptr snapTo(const geom::Coordinate::ConstVect& snapPts); + +private: + + const geom::Coordinate::Vect& srcPts; + + double snapTolerance; + + bool isClosed; + + + // Modifies first arg + void snapVertices(geom::CoordinateList& srcCoords, + const geom::Coordinate::ConstVect& snapPts); + + + // Returns snapPts.end() if no snap point is close enough (within snapTol distance) + geom::Coordinate::ConstVect::const_iterator findSnapForVertex(const geom::Coordinate& pt, + const geom::Coordinate::ConstVect& snapPts); + + // Modifies first arg + void snapSegments(geom::CoordinateList& srcCoords, + const geom::Coordinate::ConstVect& snapPts); + + /// \brief + /// Finds a src segment which snaps to (is close to) the given snap + /// point. + // + /// Only one segment is determined - this is to prevent + /// snapping to multiple segments, which would almost certainly cause + /// invalid geometry to be created. + /// (The heuristic approach of snapping is really only appropriate + /// when snap pts snap to a unique spot on the src geometry.) + /// + /// + /// @param from + /// an iterator to first point of first segment to be checked + /// + /// @param too_far + /// an iterator to last point of last segment to be checked + /// + /// @returns too_far if no segment needs snapping + /// (either none within snapTol distance, + /// or one fond on the snapPt) + /// + geom::CoordinateList::iterator findSegmentToSnap( + const geom::Coordinate& snapPt, + geom::CoordinateList::iterator from, + geom::CoordinateList::iterator too_far); + + // Declare type as noncopyable + LineStringSnapper(const LineStringSnapper& other); + LineStringSnapper& operator=(const LineStringSnapper& rhs); +}; + + +} // namespace geos::operation::overlay::snap +} // namespace geos::operation::overlay +} // namespace geos::operation +} // namespace geos + +#endif // GEOS_OP_OVERLAY_SNAP_LINESTRINGSNAPPER_H + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/snap/Makefile.am geos-3.2.2/source/headers/geos/operation/overlay/snap/Makefile.am --- geos-3.1.0/source/headers/geos/operation/overlay/snap/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/snap/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -0,0 +1,12 @@ +#SUBDIRS = + +#EXTRA_DIST = + +geosdir = $(includedir)/geos/operation/overlay/snap + +geos_HEADERS = \ + GeometrySnapper.h \ + LineStringSnapper.h \ + SnapIfNeededOverlayOp.h \ + SnapOverlayOp.h + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/snap/Makefile.in geos-3.2.2/source/headers/geos/operation/overlay/snap/Makefile.in --- geos-3.1.0/source/headers/geos/operation/overlay/snap/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/snap/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -0,0 +1,518 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ + +#SUBDIRS = + +#EXTRA_DIST = + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = source/headers/geos/operation/overlay/snap +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +geosdir = $(includedir)/geos/operation/overlay/snap +geos_HEADERS = \ + GeometrySnapper.h \ + LineStringSnapper.h \ + SnapIfNeededOverlayOp.h \ + SnapOverlayOp.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/overlay/snap/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/overlay/snap/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-geosHEADERS: $(geos_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ + done + +uninstall-geosHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool ctags distclean 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-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-geosHEADERS + + +# 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 -Nru geos-3.1.0/source/headers/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h geos-3.2.2/source/headers/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h --- geos-3.1.0/source/headers/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/snap/SnapIfNeededOverlayOp.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,121 @@ +/********************************************************************** + * $Id: SnapIfNeededOverlayOp.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/SnapIfNeededOverlayOp.java rev 1.1 + * (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_OVERLAY_SNAP_SNAPIFNEEDEDOVERLAYOP_H +#define GEOS_OP_OVERLAY_SNAP_SNAPIFNEEDEDOVERLAYOP_H + +#include // for enums + +#include // for auto_ptr + +// Forward declarations +namespace geos { + namespace geom { + class Geometry; + } +} + +namespace geos { +namespace operation { // geos::operation +namespace overlay { // geos::operation::overlay +namespace snap { // geos::operation::overlay::snap + +/** \brief + * Performs an overlay operation using snapping and enhanced precision + * to improve the robustness of the result. + * + * This class only uses snapping + * if an error is detected when running the standard JTS overlay code. + * Errors detected include thrown exceptions + * (in particular, {@link TopologyException}) + * and invalid overlay computations. + * + */ +class SnapIfNeededOverlayOp +{ + +public: + + static std::auto_ptr + overlayOp(const geom::Geometry& g0, const geom::Geometry& g1, + OverlayOp::OpCode opCode) + { + SnapIfNeededOverlayOp op(g0, g1); + return op.getResultGeometry(opCode); + } + + static std::auto_ptr + intersection(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opINTERSECTION); + } + + static std::auto_ptr + Union(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opUNION); + } + + static std::auto_ptr + difference(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opDIFFERENCE); + } + + static std::auto_ptr + symDifference(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opSYMDIFFERENCE); + } + + SnapIfNeededOverlayOp(const geom::Geometry& g1, const geom::Geometry& g2) + : + geom0(g1), + geom1(g2) + { + } + + + typedef std::auto_ptr GeomPtr; + + GeomPtr getResultGeometry(OverlayOp::OpCode opCode); + +private: + + const geom::Geometry& geom0; + const geom::Geometry& geom1; + + // Declare type as noncopyable + SnapIfNeededOverlayOp(const SnapIfNeededOverlayOp& other); + SnapIfNeededOverlayOp& operator=(const SnapIfNeededOverlayOp& rhs); +}; + + +} // namespace geos::operation::overlay::snap +} // namespace geos::operation::overlay +} // namespace geos::operation +} // namespace geos + +#endif // ndef GEOS_OP_OVERLAY_SNAP_SNAPIFNEEDEDOVERLAYOP_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/snap/SnapOverlayOp.h geos-3.2.2/source/headers/geos/operation/overlay/snap/SnapOverlayOp.h --- geos-3.1.0/source/headers/geos/operation/overlay/snap/SnapOverlayOp.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/snap/SnapOverlayOp.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,139 @@ +/********************************************************************** + * $Id: SnapOverlayOp.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/SnapOverlayOp.java rev 1.4 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_OVERLAY_SNAP_SNAPOVERLAYOP_H +#define GEOS_OP_OVERLAY_SNAP_SNAPOVERLAYOP_H + +#include // for enums +#include // for dtor visibility by auto_ptr + +#include // for auto_ptr + +// Forward declarations +namespace geos { + namespace geom { + class Geometry; + } +} + +namespace geos { +namespace operation { // geos::operation +namespace overlay { // geos::operation::overlay +namespace snap { // geos::operation::overlay::snap + +/** \brief + * Performs an overlay operation using snapping and enhanced precision + * to improve the robustness of the result. + * + * This class always uses snapping. + * This is less performant than the standard JTS overlay code, + * and may even introduce errors which were not present in the original data. + * For this reason, this class should only be used + * if the standard overlay code fails to produce a correct result. + * + */ +class GEOS_DLL SnapOverlayOp +{ + +public: + + static std::auto_ptr + overlayOp(const geom::Geometry& g0, const geom::Geometry& g1, + OverlayOp::OpCode opCode) + { + SnapOverlayOp op(g0, g1); + return op.getResultGeometry(opCode); + } + + static std::auto_ptr + intersection(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opINTERSECTION); + } + + static std::auto_ptr + Union(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opUNION); + } + + static std::auto_ptr + difference(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opDIFFERENCE); + } + + static std::auto_ptr + symDifference(const geom::Geometry& g0, const geom::Geometry& g1) + { + return overlayOp(g0, g1, OverlayOp::opSYMDIFFERENCE); + } + + SnapOverlayOp(const geom::Geometry& g1, const geom::Geometry& g2) + : + geom0(g1), + geom1(g2) + { + computeSnapTolerance(); + } + + + typedef std::auto_ptr GeomPtr; + + GeomPtr getResultGeometry(OverlayOp::OpCode opCode); + +private: + + void computeSnapTolerance(); + + typedef std::pair GeomPtrPair; + + void snap(GeomPtrPair& ret); + + void removeCommonBits(const geom::Geometry& geom0, + const geom::Geometry& geom1, GeomPtrPair& ret); + + // re-adds common bits to the given geom + void prepareResult(geom::Geometry& geom); + + + const geom::Geometry& geom0; + const geom::Geometry& geom1; + + double snapTolerance; + + std::auto_ptr cbr; + + // Declare type as noncopyable + SnapOverlayOp(const SnapOverlayOp& other); + SnapOverlayOp& operator=(const SnapOverlayOp& rhs); +}; + + +} // namespace geos::operation::overlay::snap +} // namespace geos::operation::overlay +} // namespace geos::operation +} // namespace geos + +#endif // ndef GEOS_OP_OVERLAY_SNAP_SNAPOVERLAYOP_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/validate/FuzzyPointLocator.h geos-3.2.2/source/headers/geos/operation/overlay/validate/FuzzyPointLocator.h --- geos-3.1.0/source/headers/geos/operation/overlay/validate/FuzzyPointLocator.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/validate/FuzzyPointLocator.h 2009-12-03 19:46:43.000000000 +0000 @@ -0,0 +1,95 @@ +/********************************************************************** + * $Id: FuzzyPointLocator.h 2780 2009-12-03 19:46:43Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/validate/FuzzyPointLocator.java rev. 1.1 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H +#define GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H + +#include // for composition +#include // for auto_ptr visibility of dtor +#include // for Location::Value enum + +#include +#include // for auto_ptr + +// Forward declarations +namespace geos { + namespace geom { + class Geometry; + class Coordinate; + } +} + +namespace geos { +namespace operation { // geos::operation +namespace overlay { // geos::operation::overlay +namespace validate { // geos::operation::overlay::validate + +/** \brief + * Finds the most likely Location of a point relative to + * the polygonal components of a geometry, using a tolerance value. + * + * If a point is not clearly in the Interior or Exterior, + * it is considered to be on the Boundary. + * In other words, if the point is within the tolerance of the Boundary, + * it is considered to be on the Boundary; otherwise, + * whether it is Interior or Exterior is determined directly. + */ +class FuzzyPointLocator { + +public: + + FuzzyPointLocator(const geom::Geometry& geom, double nTolerance); + + geom::Location::Value getLocation(const geom::Coordinate& pt); + +private: + + const geom::Geometry& g; + + double tolerance; + + algorithm::PointLocator ptLocator; + + std::auto_ptr linework; + + // this function has been obsoleted + std::auto_ptr getLineWork(const geom::Geometry& geom); + + /// Extracts linework for polygonal components. + // + /// @param g the geometry from which to extract + /// @return a lineal geometry containing the extracted linework + std::auto_ptr extractLineWork(const geom::Geometry& geom); + + // Declare type as noncopyable + FuzzyPointLocator(const FuzzyPointLocator& other); + FuzzyPointLocator& operator=(const FuzzyPointLocator& rhs); +}; + +} // namespace geos::operation::overlay::validate +} // namespace geos::operation::overlay +} // namespace geos::operation +} // namespace geos + +#endif // ndef GEOS_OP_OVERLAY_FUZZYPOINTLOCATOR_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/validate/OffsetPointGenerator.h geos-3.2.2/source/headers/geos/operation/overlay/validate/OffsetPointGenerator.h --- geos-3.1.0/source/headers/geos/operation/overlay/validate/OffsetPointGenerator.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/validate/OffsetPointGenerator.h 2009-12-03 19:46:43.000000000 +0000 @@ -0,0 +1,85 @@ +/********************************************************************** + * $Id: OffsetPointGenerator.h 2780 2009-12-03 19:46:43Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/validate/OffsetPointGenerator.java rev. 1.1 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H +#define GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H + +#include // for composition +#include // for auto_ptr visibility of dtor +#include // for auto_ptr visibility of dtor +#include // for use in vector + +#include +#include // for auto_ptr + +// Forward declarations +namespace geos { + namespace geom { + //class Geometry; + //class MultiPoint; + class LineString; + //class Coordinate; + } +} + +namespace geos { +namespace operation { // geos::operation +namespace overlay { // geos::operation::overlay +namespace validate { // geos::operation::overlay::validate + +/// Generates points offset from both sides of all segments in a geometry +// +class OffsetPointGenerator { + +public: + + OffsetPointGenerator(const geom::Geometry& geom, double offset); + + /// Gets the computed offset points. + std::auto_ptr< std::vector > getPoints(); + +private: + + const geom::Geometry& g; + + double offsetDistance; + + std::auto_ptr< std::vector > offsetPts; + + void extractPoints(const geom::LineString* line); + + void computeOffsets(const geom::Coordinate& p0, + const geom::Coordinate& p1); + + // Declare type as noncopyable + OffsetPointGenerator(const OffsetPointGenerator& other); + OffsetPointGenerator& operator=(const OffsetPointGenerator& rhs); +}; + +} // namespace geos::operation::overlay::validate +} // namespace geos::operation::overlay +} // namespace geos::operation +} // namespace geos + +#endif // ndef GEOS_OP_OVERLAY_OFFSETPOINTGENERATOR_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/operation/overlay/validate/OverlayResultValidator.h geos-3.2.2/source/headers/geos/operation/overlay/validate/OverlayResultValidator.h --- geos-3.1.0/source/headers/geos/operation/overlay/validate/OverlayResultValidator.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/operation/overlay/validate/OverlayResultValidator.h 2009-12-03 19:46:43.000000000 +0000 @@ -0,0 +1,129 @@ +/********************************************************************** + * $Id: OverlayResultValidator.h 2780 2009-12-03 19:46:43Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/validate/OverlayResultValidator.java rev. 1.4 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_OVERLAY_OVERLAYRESULTVALIDATOR_H +#define GEOS_OP_OVERLAY_OVERLAYRESULTVALIDATOR_H + +#include // for OpCode enum +#include // composition +#include // for Location::Value type + +#include + +// Forward declarations +namespace geos { + namespace geom { + class Geometry; + class Coordinate; + } +} + +namespace geos { +namespace operation { // geos::operation +namespace overlay { // geos::operation::overlay +namespace validate { // geos::operation::overlay::validate + +/** \brief + * Validates that the result of an overlay operation is + * geometrically correct within a determined tolerance. + * + * Uses fuzzy point location to find points which are + * definitely in either the interior or exterior of the result + * geometry, and compares these results with the expected ones. + * + * This algorithm is only useful where the inputs are polygonal. + * + * This is a heuristic test, and may return false positive results + * (I.e. it may fail to detect an invalid result.) + * It should never return a false negative result, however + * (I.e. it should never report a valid result as invalid.) + * + * @see OverlayOp + */ +class OverlayResultValidator { + +public: + + static bool isValid( + const geom::Geometry& geom0, + const geom::Geometry& geom1, + OverlayOp::OpCode opCode, + const geom::Geometry& result); + + OverlayResultValidator( + const geom::Geometry& geom0, + const geom::Geometry& geom1, + const geom::Geometry& result); + + bool isValid(OverlayOp::OpCode opCode); + + geom::Coordinate& getInvalidLocation() { + return invalidLocation; + } + +private: + + double boundaryDistanceTolerance; + + const geom::Geometry& g0; + + const geom::Geometry& g1; + + const geom::Geometry& gres; + + FuzzyPointLocator fpl0; + + FuzzyPointLocator fpl1; + + FuzzyPointLocator fplres; + + geom::Coordinate invalidLocation; + + std::vector testCoords; + + void addTestPts(const geom::Geometry& g); + + void addVertices(const geom::Geometry& g); + + bool testValid(OverlayOp::OpCode overlayOp); + + bool testValid(OverlayOp::OpCode overlayOp, const geom::Coordinate& pt); + + bool isValidResult(OverlayOp::OpCode overlayOp, + std::vector& location); + + static double computeBoundaryDistanceTolerance( + const geom::Geometry& g0, const geom::Geometry& g1); + + // Declare type as noncopyable + OverlayResultValidator(const OverlayResultValidator& other); + OverlayResultValidator& operator=(const OverlayResultValidator& rhs); +}; + +} // namespace geos::operation::overlay::validate +} // namespace geos::operation::overlay +} // namespace geos::operation +} // namespace geos + +#endif // ndef GEOS_OP_OVERLAY_OVERLAYRESULTVALIDATOR_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/headers/geos/operation/polygonize/EdgeRing.h geos-3.2.2/source/headers/geos/operation/polygonize/EdgeRing.h --- geos-3.1.0/source/headers/geos/operation/polygonize/EdgeRing.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/polygonize/EdgeRing.h 2009-06-08 17:58:42.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeRing.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeRing.h 2567 2009-06-08 16:58:42Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/polygonize/EdgeRing.java rev. 1.6 + * Last port: operation/polygonize/EdgeRing.java rev. 1.8 (JTS-1.10) * **********************************************************************/ @@ -22,6 +22,8 @@ #ifndef GEOS_OP_POLYGONIZE_EDGERING_H #define GEOS_OP_POLYGONIZE_EDGERING_H +#include + #include // Forward declarations @@ -48,7 +50,7 @@ * Represents a ring of PolygonizeDirectedEdge which form * a ring of a polygon. The ring may be either an outer shell or a hole. */ -class EdgeRing { +class GEOS_DLL EdgeRing { private: const geom::GeometryFactory *factory; std::vector *deList; diff -Nru geos-3.1.0/source/headers/geos/operation/polygonize/Makefile.am geos-3.2.2/source/headers/geos/operation/polygonize/Makefile.am --- geos-3.1.0/source/headers/geos/operation/polygonize/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/polygonize/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,16 +2,12 @@ #EXTRA_DIST = -# Notes: -# - geosdir = $(includedir)/geos/operation/polygonize geos_HEADERS = \ - Polygonizer.h - -noinst_HEADERS = \ EdgeRing.h \ PolygonizeDirectedEdge.h \ PolygonizeEdge.h \ - PolygonizeGraph.h + PolygonizeGraph.h \ + Polygonizer.h + diff -Nru geos-3.1.0/source/headers/geos/operation/polygonize/Makefile.in geos-3.2.2/source/headers/geos/operation/polygonize/Makefile.in --- geos-3.1.0/source/headers/geos/operation/polygonize/Makefile.in 2009-03-11 19:13:51.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/polygonize/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,18 +19,12 @@ #EXTRA_DIST = -# Notes: -# - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -45,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/polygonize -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -58,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -65,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,45 +207,56 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/operation/polygonize geos_HEADERS = \ - Polygonizer.h - -noinst_HEADERS = \ EdgeRing.h \ PolygonizeDirectedEdge.h \ PolygonizeEdge.h \ - PolygonizeGraph.h + PolygonizeGraph.h \ + Polygonizer.h all: all-am @@ -242,14 +265,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/polygonize/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/polygonize/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/polygonize/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/polygonize/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -267,106 +290,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -375,7 +405,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -397,6 +427,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -407,8 +438,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -416,18 +446,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -446,19 +496,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/polygonize/PolygonizeDirectedEdge.h geos-3.2.2/source/headers/geos/operation/polygonize/PolygonizeDirectedEdge.h --- geos-3.1.0/source/headers/geos/operation/polygonize/PolygonizeDirectedEdge.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/polygonize/PolygonizeDirectedEdge.h 2009-06-08 17:58:42.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonizeDirectedEdge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonizeDirectedEdge.h 2567 2009-06-08 16:58:42Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,18 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/PolygonizeDirectedEdge.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_POLYGONIZE_POLYGONIZEDIRECTEDEDGE_H #define GEOS_OP_POLYGONIZE_POLYGONIZEDIRECTEDEDGE_H +#include + #include // for inheritance // Forward declarations @@ -46,7 +52,7 @@ * May be logically deleted from the graph by setting the * marked flag. */ -class PolygonizeDirectedEdge: public planargraph::DirectedEdge { +class GEOS_DLL PolygonizeDirectedEdge: public planargraph::DirectedEdge { private: diff -Nru geos-3.1.0/source/headers/geos/operation/polygonize/PolygonizeEdge.h geos-3.2.2/source/headers/geos/operation/polygonize/PolygonizeEdge.h --- geos-3.1.0/source/headers/geos/operation/polygonize/PolygonizeEdge.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/polygonize/PolygonizeEdge.h 2009-06-08 17:58:42.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonizeEdge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonizeEdge.h 2567 2009-06-08 16:58:42Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,18 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/PolygonizeEdge.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_POLYGONIZE_POLYGONIZEEDGE_H #define GEOS_OP_POLYGONIZE_POLYGONIZEEDGE_H +#include + #include // for inheritance // Forward declarations @@ -36,7 +42,7 @@ * * @version 1.4 */ -class PolygonizeEdge: public planargraph::Edge { +class GEOS_DLL PolygonizeEdge: public planargraph::Edge { private: const geom::LineString *line; public: diff -Nru geos-3.1.0/source/headers/geos/operation/polygonize/PolygonizeGraph.h geos-3.2.2/source/headers/geos/operation/polygonize/PolygonizeGraph.h --- geos-3.1.0/source/headers/geos/operation/polygonize/PolygonizeGraph.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/polygonize/PolygonizeGraph.h 2009-11-19 20:29:01.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonizeGraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonizeGraph.h 2730 2009-11-19 20:29:01Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,18 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/PolygonizeGraph.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_POLYGONIZE_POLYGONIZEGRAPH_H #define GEOS_OP_POLYGONIZE_POLYGONIZEGRAPH_H +#include + #include // for inheritance #include @@ -57,7 +63,7 @@ * has be logically deleted from the graph. * */ -class PolygonizeGraph: public planargraph::PlanarGraph { +class GEOS_DLL PolygonizeGraph: public planargraph::PlanarGraph { public: @@ -90,18 +96,22 @@ * \brief * Computes the EdgeRings formed by the edges in this graph. * - * @return a list of the EdgeRing found by the - * polygonization process. + * @param edgeRingList : the EdgeRing found by the + * polygonization process will be pushed here. + * */ - std::vector* getEdgeRings(); + void getEdgeRings(std::vector& edgeRingList); /** * \brief * Finds and removes all cut edges from the graph. * - * @return a list of the LineString forming the removed cut edges + * @param cutLines : the list of the LineString forming the removed + * cut edges will be pushed here. + * + * TODO: document ownership of the returned LineStrings */ - std::vector* deleteCutEdges(); + void deleteCutEdges(std::vector &cutLines); /** \brief * Marks all edges from the graph which are "dangles". @@ -112,9 +122,10 @@ * In order to handle large recursion depths efficiently, * an explicit recursion stack is used * - * @return a List containing the LineStrings that formed dangles + * @param dangleLines : the LineStrings that formed dangles will + * be push_back'ed here */ - std::vector* deleteDangles(); + void deleteDangles(std::vector &dangleLines); private: @@ -135,31 +146,37 @@ * * @param ringEdges * the list of start edges for the edgeRings to convert. + * */ void convertMaximalToMinimalEdgeRings( - std::vector *ringEdges); + std::vector &ringEdges); /** * \brief - * Finds all nodes in a maximal edgering which are self-intersection - * nodes + * Finds all nodes in a maximal edgering + * which are self-intersection nodes * * @param startDE * @param label - * @return the list of intersection nodes found, - * or null if no intersection nodes were found. - * Ownership of returned vector goes to caller. + * @param intNodes : intersection nodes found will be pushed here + * the vector won't be cleared before pushing. */ - static std::vector* findIntersectionNodes( - PolygonizeDirectedEdge *startDE, - long label); + static void findIntersectionNodes( PolygonizeDirectedEdge *startDE, + long label, std::vector& intNodes +); /** - * @param dirEdges a List of the DirectedEdges in the graph - * @return a List of DirectedEdges, one for each edge ring found + * Finds and labels all edgerings in the graph. + * + * The edge rings are labelling with unique integers. + * The labelling allows detecting cut edges. + * + * @param dirEdgesIn a list of the DirectedEdges in the graph + * @param dirEdgesOut each ring found will be pushed here */ - static std::vector* findLabeledEdgeRings( - std::vector &dirEdges); + static void findLabeledEdgeRings( + std::vector &dirEdgesIn, + std::vector &dirEdgesOut); static void label(std::vector &dirEdges, long label); @@ -181,19 +198,20 @@ * from the graph, so that there is always a next dirEdge. * * @param startDE the DirectedEdge to start traversing at - * @return a List of DirectedEdges that form a ring + * @param edgesInRing : the DirectedEdges that form a ring will + * be pushed here. */ - static std::vector* findDirEdgesInRing( - PolygonizeDirectedEdge *startDE); + static void findDirEdgesInRing(PolygonizeDirectedEdge *startDE, + std::vector& edgesInRing); EdgeRing* findEdgeRing(PolygonizeDirectedEdge *startDE); /* Tese are for memory management */ - std::vectornewEdges; - std::vectornewDirEdges; - std::vectornewNodes; - std::vectornewEdgeRings; - std::vectornewCoords; + std::vector newEdges; + std::vector newDirEdges; + std::vector newNodes; + std::vector newEdgeRings; + std::vector newCoords; }; } // namespace geos::operation::polygonize diff -Nru geos-3.1.0/source/headers/geos/operation/polygonize/Polygonizer.h geos-3.2.2/source/headers/geos/operation/polygonize/Polygonizer.h --- geos-3.1.0/source/headers/geos/operation/polygonize/Polygonizer.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/polygonize/Polygonizer.h 2009-11-19 19:57:36.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Polygonizer.h 1880 2006-10-27 11:54:17Z strk $ + * $Id: Polygonizer.h 2728 2009-11-19 19:57:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,12 +12,18 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/Polygonizer.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_POLYGONIZE_POLYGONIZER_H #define GEOS_OP_POLYGONIZE_POLYGONIZER_H +#include + #include // for LineStringAdder inheritance #include @@ -61,7 +67,7 @@ * (e.g. the component lines contain a self-intersection) * */ -class Polygonizer { +class GEOS_DLL Polygonizer { private: /** * Add every linear element in a geometry into the polygonizer graph. @@ -89,7 +95,8 @@ */ void polygonize(); - void findValidRings(std::vector *edgeRingList, + /// @todo : take all args by ref + void findValidRings(std::vector& edgeRingList, std::vector *validEdgeRingList, std::vector *invalidRingList); @@ -184,7 +191,9 @@ /** \brief * Get the list of cut edges found during polygonization. * - * @return a collection of the input LineStrings which are cut edges + * @return a (possibly empty) reference to collection of the input + * LineStrings which are cut edges. Ownership retained by + * this object. */ std::vector* getCutEdges(); diff -Nru geos-3.1.0/source/headers/geos/operation/predicate/Makefile.am geos-3.2.2/source/headers/geos/operation/predicate/Makefile.am --- geos-3.1.0/source/headers/geos/operation/predicate/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/predicate/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,13 +2,10 @@ #EXTRA_DIST = -# NOTES: -# We're not exposing *any* of this package interfaces +geosdir = $(includedir)/geos/operation/predicate -#geosdir = $(includedir)/geos/operation/predicate -#geos_HEADERS = - -noinst_HEADERS = \ +geos_HEADERS = \ RectangleContains.h \ RectangleIntersects.h \ SegmentIntersectionTester.h + diff -Nru geos-3.1.0/source/headers/geos/operation/predicate/Makefile.in geos-3.2.2/source/headers/geos/operation/predicate/Makefile.in --- geos-3.1.0/source/headers/geos/operation/predicate/Makefile.in 2009-03-11 19:13:52.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/predicate/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,21 +19,12 @@ #EXTRA_DIST = -# NOTES: -# We're not exposing *any* of this package interfaces - -#geosdir = $(includedir)/geos/operation/predicate -#geos_HEADERS = - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -48,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/predicate -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -61,16 +58,37 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = -HEADERS = $(noinst_HEADERS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -98,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -121,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -155,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -166,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -190,37 +207,51 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ -noinst_HEADERS = \ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +geosdir = $(includedir)/geos/operation/predicate +geos_HEADERS = \ RectangleContains.h \ RectangleIntersects.h \ SegmentIntersectionTester.h @@ -232,14 +263,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/predicate/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/predicate/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/predicate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/predicate/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -257,89 +288,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +install-geosHEADERS: $(geos_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ + done -distclean-libtool: - -rm -f libtool -uninstall-info-am: +uninstall-geosHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -347,6 +402,9 @@ check: check-am all-am: Makefile $(HEADERS) installdirs: + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-am install-exec: install-exec-am install-data: install-data-am @@ -367,6 +425,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -377,8 +436,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -386,18 +444,38 @@ html: html-am +html-am: + info: info-am info-am: -install-data-am: +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -416,18 +494,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/predicate/RectangleContains.h geos-3.2.2/source/headers/geos/operation/predicate/RectangleContains.h --- geos-3.1.0/source/headers/geos/operation/predicate/RectangleContains.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/predicate/RectangleContains.h 2009-12-03 19:48:04.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RectangleContains.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RectangleContains.h 2781 2009-12-03 19:48:04Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/predicate/RectangleContains.java rev 1.5 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_PREDICATE_RECTANGLECONTAINS_H #define GEOS_OP_PREDICATE_RECTANGLECONTAINS_H +#include + #include // for inlines // Forward declarations @@ -42,9 +48,8 @@ * this class can be used directly to test many geometries against a single * rectangle. * - * Last port: operation/predicate/RectangleContains.java rev 1.1 (JTS-1.7) */ -class RectangleContains { +class GEOS_DLL RectangleContains { private: @@ -52,9 +57,35 @@ const geom::Envelope& rectEnv; bool isContainedInBoundary(const geom::Geometry& geom); + bool isPointContainedInBoundary(const geom::Point& geom); - bool isPointContainedInBoundary(const geom::Coordinate &coord); + + /** \brief + * Tests if a point is contained in the boundary of the target + * rectangle. + * + * @param pt the point to test + * @return true if the point is contained in the boundary + */ + bool isPointContainedInBoundary(const geom::Coordinate &pt); + + /** \brief + * Tests if a linestring is completely contained in the boundary + * of the target rectangle. + * + * @param line the linestring to test + * @return true if the linestring is contained in the boundary + */ bool isLineStringContainedInBoundary(const geom::LineString &line); + + /** \brief + * Tests if a line segment is contained in the boundary of the + * target rectangle. + * + * @param p0 an endpoint of the segment + * @param p1 an endpoint of the segment + * @return true if the line segment is contained in the boundary + */ bool isLineSegmentContainedInBoundary(const geom::Coordinate& p0, const geom::Coordinate& p1); @@ -79,7 +110,9 @@ bool contains(const geom::Geometry& geom); - + // Declare type as noncopyable + RectangleContains(const RectangleContains& other); + RectangleContains& operator=(const RectangleContains& rhs); }; diff -Nru geos-3.1.0/source/headers/geos/operation/predicate/RectangleIntersects.h geos-3.2.2/source/headers/geos/operation/predicate/RectangleIntersects.h --- geos-3.1.0/source/headers/geos/operation/predicate/RectangleIntersects.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/predicate/RectangleIntersects.h 2009-12-03 19:48:04.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RectangleIntersects.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RectangleIntersects.h 2781 2009-12-03 19:48:04Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/predicate/RectangleIntersects.java rev 1.4 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_PREDICATE_RECTANGLEINTERSECTS_H #define GEOS_OP_PREDICATE_RECTANGLEINTERSECTS_H +#include + #include // for inlines // Forward declarations @@ -38,9 +44,8 @@ * this class can be used directly to test many geometries against a single * rectangle. * - * Last port: operation/predicate/RectangleIntersects.java rev. 1.3 (JTS-1.7) */ -class RectangleIntersects { +class GEOS_DLL RectangleIntersects { private: @@ -48,6 +53,10 @@ const geom::Envelope &rectEnv; + // Declare type as noncopyable + RectangleIntersects(const RectangleIntersects& other); + RectangleIntersects& operator=(const RectangleIntersects& rhs); + public: /** \brief diff -Nru geos-3.1.0/source/headers/geos/operation/predicate/SegmentIntersectionTester.h geos-3.2.2/source/headers/geos/operation/predicate/SegmentIntersectionTester.h --- geos-3.1.0/source/headers/geos/operation/predicate/SegmentIntersectionTester.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/predicate/SegmentIntersectionTester.h 2009-06-08 18:15:46.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentIntersectionTester.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentIntersectionTester.h 2570 2009-06-08 17:15:46Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/predicate/SegmentIntersectionTester.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_PREDICATE_SEGMENTINTERSECTIONTESTER_H #define GEOS_OP_PREDICATE_SEGMENTINTERSECTIONTESTER_H +#include + #include // for composition // Forward declarations @@ -32,15 +38,12 @@ /** \brief * Tests if any line segments in two sets of CoordinateSequences intersect. - * Optimized for small geometry size. + * Optimized for use when at least one input is of small size. * * Short-circuited to return as soon an intersection is found. * - * Last port: operation/predicate/SegmentIntersectionTester.java rev. 1.6 - * (JTS-1.7) - * */ -class SegmentIntersectionTester { +class GEOS_DLL SegmentIntersectionTester { private: diff -Nru geos-3.1.0/source/headers/geos/operation/relate/EdgeEndBuilder.h geos-3.2.2/source/headers/geos/operation/relate/EdgeEndBuilder.h --- geos-3.1.0/source/headers/geos/operation/relate/EdgeEndBuilder.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/EdgeEndBuilder.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndBuilder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEndBuilder.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/EdgeEndBuilder.java rev. 1.12 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_EDGEENDBUILDER_H #define GEOS_OP_RELATE_EDGEENDBUILDER_H +#include + #include // Forward declarations @@ -37,9 +43,10 @@ namespace relate { // geos::operation::relate /** \brief - * Computes the geomgraph::EdgeEnd objects which arise from a noded geomgraph::Edge. + * Computes the geomgraph::EdgeEnd objects which arise + * from a noded geomgraph::Edge. */ -class EdgeEndBuilder { +class GEOS_DLL EdgeEndBuilder { public: EdgeEndBuilder() {} diff -Nru geos-3.1.0/source/headers/geos/operation/relate/EdgeEndBundle.h geos-3.2.2/source/headers/geos/operation/relate/EdgeEndBundle.h --- geos-3.1.0/source/headers/geos/operation/relate/EdgeEndBundle.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/EdgeEndBundle.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndBundle.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEndBundle.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,17 +11,26 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/EdgeEndBundle.java rev. 1.17 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_EDGEENDBUNDLE_H #define GEOS_OP_RELATE_EDGEENDBUNDLE_H +#include + #include // for EdgeEndBundle inheritance #include // Forward declarations namespace geos { + namespace algorithm { + class BoundaryNodeRule; + } namespace geom { class IntersectionMatrix; } @@ -33,23 +42,57 @@ namespace relate { // geos::operation::relate /** \brief - * Contains all geomgraph::EdgeEnd objectss which start at the same point - * and are parallel. + * A collection of geomgraph::EdgeEnd objects which + * originate at the same point and have the same direction. */ -class EdgeEndBundle: public geomgraph::EdgeEnd { +class GEOS_DLL EdgeEndBundle: public geomgraph::EdgeEnd +{ public: EdgeEndBundle(geomgraph::EdgeEnd *e); virtual ~EdgeEndBundle(); geomgraph::Label *getLabel(); -//Iterator iterator() //Not needed std::vector* getEdgeEnds(); void insert(geomgraph::EdgeEnd *e); - void computeLabel() ; + + void computeLabel(const algorithm::BoundaryNodeRule& bnr); + void updateIM(geom::IntersectionMatrix *im); std::string print(); protected: std::vector *edgeEnds; - void computeLabelOn(int geomIndex); + + /** + * Compute the overall ON location for the list of EdgeStubs. + * + * (This is essentially equivalent to computing the self-overlay of + * a single Geometry) + * + * edgeStubs can be either on the boundary (eg Polygon edge) + * OR in the interior (e.g. segment of a LineString) + * of their parent Geometry. + * + * In addition, GeometryCollections use a algorithm::BoundaryNodeRule + * to determine whether a segment is on the boundary or not. + * + * Finally, in GeometryCollections it can occur that an edge + * is both + * on the boundary and in the interior (e.g. a LineString segment + * lying on + * top of a Polygon edge.) In this case the Boundary is + * given precendence. + * + * These observations result in the following rules for computing + * the ON location: + * - if there are an odd number of Bdy edges, the attribute is Bdy + * - if there are an even number >= 2 of Bdy edges, the attribute + * is Int + * - if there are any Int edges, the attribute is Int + * - otherwise, the attribute is NULL. + * + */ + void computeLabelOn(int geomIndex, + const algorithm::BoundaryNodeRule& boundaryNodeRule); + void computeLabelSides(int geomIndex); void computeLabelSide(int geomIndex,int side); }; diff -Nru geos-3.1.0/source/headers/geos/operation/relate/EdgeEndBundleStar.h geos-3.2.2/source/headers/geos/operation/relate/EdgeEndBundleStar.h --- geos-3.1.0/source/headers/geos/operation/relate/EdgeEndBundleStar.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/EdgeEndBundleStar.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndBundleStar.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEndBundleStar.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/EdgeEndBundleStar.java rev. 1.13 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_EDGEENDBUNDLESTAR_H #define GEOS_OP_RELATE_EDGEENDBUNDLESTAR_H +#include + #include // for EdgeEndBundleStar inheritance // Forward declarations @@ -40,9 +46,10 @@ * around the node * for efficient lookup and topology building. */ -class EdgeEndBundleStar: public geomgraph::EdgeEndStar { +class GEOS_DLL EdgeEndBundleStar: public geomgraph::EdgeEndStar { public: + /// Creates a new empty EdgeEndBundleStar EdgeEndBundleStar() {} virtual ~EdgeEndBundleStar(); diff -Nru geos-3.1.0/source/headers/geos/operation/relate/Makefile.am geos-3.2.2/source/headers/geos/operation/relate/Makefile.am --- geos-3.1.0/source/headers/geos/operation/relate/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,19 +2,15 @@ #EXTRA_DIST = -# Notes: -# RelateComputer.h needed by RelateOp.h - geosdir = $(includedir)/geos/operation/relate geos_HEADERS = \ - RelateComputer.h \ - RelateOp.h - -noinst_HEADERS = \ EdgeEndBuilder.h \ EdgeEndBundle.h \ EdgeEndBundleStar.h \ - RelateNode.h \ + RelateComputer.h \ RelateNodeFactory.h \ - RelateNodeGraph.h + RelateNodeGraph.h \ + RelateNode.h \ + RelateOp.h + diff -Nru geos-3.1.0/source/headers/geos/operation/relate/Makefile.in geos-3.2.2/source/headers/geos/operation/relate/Makefile.in --- geos-3.1.0/source/headers/geos/operation/relate/Makefile.in 2009-03-11 19:13:52.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,18 +19,12 @@ #EXTRA_DIST = -# Notes: -# RelateComputer.h needed by RelateOp.h - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -45,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/relate -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -58,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -65,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,48 +207,59 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/operation/relate geos_HEADERS = \ - RelateComputer.h \ - RelateOp.h - -noinst_HEADERS = \ EdgeEndBuilder.h \ EdgeEndBundle.h \ EdgeEndBundleStar.h \ - RelateNode.h \ + RelateComputer.h \ RelateNodeFactory.h \ - RelateNodeGraph.h + RelateNodeGraph.h \ + RelateNode.h \ + RelateOp.h all: all-am @@ -245,14 +268,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/relate/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/relate/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/relate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/relate/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -270,106 +293,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -378,7 +408,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -400,6 +430,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -410,8 +441,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -419,18 +449,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -449,19 +499,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/relate/RelateComputer.h geos-3.2.2/source/headers/geos/operation/relate/RelateComputer.h --- geos-3.1.0/source/headers/geos/operation/relate/RelateComputer.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/RelateComputer.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateComputer.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateComputer.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateComputer.java rev. 1.24 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_RELATECOMPUTER_H #define GEOS_OP_RELATE_RELATECOMPUTER_H +#include + #include // for RelateComputer composition #include // for RelateComputer composition #include // for RelateComputer composition @@ -59,7 +65,7 @@ * implicitly). * */ -class RelateComputer { +class GEOS_DLL RelateComputer { public: //RelateComputer(); virtual ~RelateComputer(); diff -Nru geos-3.1.0/source/headers/geos/operation/relate/RelateNodeFactory.h geos-3.2.2/source/headers/geos/operation/relate/RelateNodeFactory.h --- geos-3.1.0/source/headers/geos/operation/relate/RelateNodeFactory.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/RelateNodeFactory.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateNodeFactory.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateNodeFactory.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateNodeFactory.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_RELATENODEFACTORY_H #define GEOS_OP_RELATE_RELATENODEFACTORY_H +#include + #include // for RelateNodeFactory inheritance // Forward declarations @@ -36,7 +42,7 @@ /** \brief * Used by the geomgraph::NodeMap in a RelateNodeGraph to create RelateNode objects. */ -class RelateNodeFactory: public geomgraph::NodeFactory { +class GEOS_DLL RelateNodeFactory: public geomgraph::NodeFactory { public: geomgraph::Node* createNode(const geom::Coordinate &coord) const; static const geomgraph::NodeFactory &instance(); diff -Nru geos-3.1.0/source/headers/geos/operation/relate/RelateNodeGraph.h geos-3.2.2/source/headers/geos/operation/relate/RelateNodeGraph.h --- geos-3.1.0/source/headers/geos/operation/relate/RelateNodeGraph.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/RelateNodeGraph.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateNodeGraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateNodeGraph.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateNodeGraph.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_RELATENODEGRAPH_H #define GEOS_OP_RELATE_RELATENODEGRAPH_H +#include + #include #include @@ -60,7 +66,7 @@ * to represent them. * */ -class RelateNodeGraph { +class GEOS_DLL RelateNodeGraph { public: diff -Nru geos-3.1.0/source/headers/geos/operation/relate/RelateNode.h geos-3.2.2/source/headers/geos/operation/relate/RelateNode.h --- geos-3.1.0/source/headers/geos/operation/relate/RelateNode.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/RelateNode.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateNode.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateNode.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,11 +11,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateNode.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_RELATENODE_H #define GEOS_OP_RELATE_RELATENODE_H +#include + #include // for inheritance // Forward declarations @@ -38,7 +44,7 @@ * Represents a node in the topological graph used to compute spatial * relationships. */ -class RelateNode: public geomgraph::Node { +class GEOS_DLL RelateNode: public geomgraph::Node { public: diff -Nru geos-3.1.0/source/headers/geos/operation/relate/RelateOp.h geos-3.2.2/source/headers/geos/operation/relate/RelateOp.h --- geos-3.1.0/source/headers/geos/operation/relate/RelateOp.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/relate/RelateOp.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateOp.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateOp.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,16 +11,25 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateOp.java rev. 1.19 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_RELATE_RELATEOP_H #define GEOS_OP_RELATE_RELATEOP_H +#include + #include // for inheritance #include // for composition // Forward declarations namespace geos { + namespace algorithm { + class BoundaryNodeRule; + } namespace geom { class IntersectionMatrix; class Geometry; @@ -33,26 +42,87 @@ namespace relate { // geos::operation::relate /** \brief - * Implements the relate() operation on Geometry. + * Implements the SFS relate() operation on two + * geom::Geometry objects. + * + * This class supports specifying a custom algorithm::BoundaryNodeRule + * to be used during the relate computation. * - * WARNING: The current implementation of this class will compute a result for - * GeometryCollections. However, the semantics of this operation are - * not well-defined and the value returned may not represent - * an appropriate notion of relate. + * Note: custom Boundary Node Rules do not (currently) + * affect the results of other Geometry methods (such + * as {@link Geometry::getBoundary}. The results of + * these methods may not be consistent with the relationship computed by + * a custom Boundary Node Rule. + * */ -class RelateOp: public GeometryGraphOperation { +class GEOS_DLL RelateOp: public GeometryGraphOperation { public: + /** \brief + * Computes the geom::IntersectionMatrix for the spatial relationship + * between two geom::Geometry objects, using the default (OGC SFS) + * Boundary Node Rule + * + * @param a a Geometry to test. Ownership left to caller. + * @param b a Geometry to test. Ownership left to caller. + * + * @return the IntersectonMatrix for the spatial relationship + * between the geometries. Ownership transferred. + */ static geom::IntersectionMatrix* relate( const geom::Geometry *a, const geom::Geometry *b); + /** \brief + * Computes the geom::IntersectionMatrix for the spatial relationship + * between two geom::Geometry objects, using a specified + * Boundary Node Rule + * + * @param a a Geometry to test. Ownership left to caller. + * @param b a Geometry to test. Ownership left to caller. + * @param boundaryNodeRule the Boundary Node Rule to use. + * + * @return the IntersectonMatrix for the spatial relationship + * between the geometries. Ownership transferred. + */ + static geom::IntersectionMatrix* relate( + const geom::Geometry *a, + const geom::Geometry *b, + const algorithm::BoundaryNodeRule& boundaryNodeRule); + + /** \brief + * Creates a new Relate operation, using the default (OGC SFS) + * Boundary Node Rule. + * + * @param g0 a Geometry to relate. Ownership left to caller. + * @param g1 another Geometry to relate. Ownership to caller. + */ RelateOp(const geom::Geometry *g0, const geom::Geometry *g1); + /** \brief + * Creates a new Relate operation with a specified + * Boundary Node Rule. + * + * @param g0 a Geometry to relate. Ownership left to caller. + * @param g1 another Geometry to relate. Ownership to caller. + * @param boundaryNodeRule the Boundary Node Rule to use + */ + RelateOp(const geom::Geometry *g0, + const geom::Geometry *g1, + const algorithm::BoundaryNodeRule& boundaryNodeRule); + virtual ~RelateOp(); + /** \brief + * Gets the IntersectionMatrix for the spatial relationship + * between the input geometries. + * + * @return the geom::IntersectionMatrix for the spatial + * relationship between the input geometries. + * Ownership transferred. + */ geom::IntersectionMatrix* getIntersectionMatrix(); private: diff -Nru geos-3.1.0/source/headers/geos/operation/union/CascadedPolygonUnion.h geos-3.2.2/source/headers/geos/operation/union/CascadedPolygonUnion.h --- geos-3.1.0/source/headers/geos/operation/union/CascadedPolygonUnion.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/union/CascadedPolygonUnion.h 2010-03-26 12:03:45.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CascadedPolygonUnion.h 2253 2009-01-23 23:58:18Z mloskot $ + * $Id: CascadedPolygonUnion.h 2953 2010-03-26 12:03:45Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,9 +11,15 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/union/CascadedPolygonUnion.java rev 1.10 (JTS-1.10) + * **********************************************************************/ + #ifndef GEOS_OP_UNION_CASCADEDPOLYGONUNION_H #define GEOS_OP_UNION_CASCADEDPOLYGONUNION_H +#include #include #include @@ -95,7 +101,7 @@ * where there is no overlap between the input geometries. * However, this case is likely rare in practice. */ -class CascadedPolygonUnion +class GEOS_DLL CascadedPolygonUnion { private: std::vector* inputPolys; diff -Nru geos-3.1.0/source/headers/geos/operation/union/Makefile.in geos-3.2.2/source/headers/geos/operation/union/Makefile.in --- geos-3.1.0/source/headers/geos/operation/union/Makefile.in 2009-03-11 19:13:52.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/union/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,15 +19,12 @@ #EXTRA_DIST = -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -47,6 +45,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -55,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -62,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -100,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -123,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -157,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -168,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -192,36 +207,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/operation/union geos_HEADERS = \ CascadedPolygonUnion.h @@ -233,14 +261,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/union/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/union/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/union/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/union/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -258,106 +286,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -366,7 +401,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -388,6 +423,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -398,8 +434,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -407,18 +442,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -437,19 +492,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/valid/ConnectedInteriorTester.h geos-3.2.2/source/headers/geos/operation/valid/ConnectedInteriorTester.h --- geos-3.1.0/source/headers/geos/operation/valid/ConnectedInteriorTester.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/ConnectedInteriorTester.h 2009-12-03 19:50:26.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConnectedInteriorTester.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConnectedInteriorTester.h 2782 2009-12-03 19:50:26Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/ConnectedInteriorTester.java rev. 1.15 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_CONNECTEDINTERIORTESTER_H #define GEOS_OP_CONNECTEDINTERIORTESTER_H +#include + #include // for composition #include @@ -57,7 +63,7 @@ * If an inconsistency if found the location of the problem * is recorded. */ -class ConnectedInteriorTester { +class GEOS_DLL ConnectedInteriorTester { public: ConnectedInteriorTester(geomgraph::GeometryGraph &newGeomGraph); ~ConnectedInteriorTester(); @@ -67,6 +73,10 @@ const geom::CoordinateSequence *coord, const geom::Coordinate& pt); +protected: + + void visitLinkedDirectedEdges(geomgraph::DirectedEdge *start); + private: geom::GeometryFactory *geometryFactory; @@ -85,15 +95,18 @@ /** + * \brief * Form DirectedEdges in graph into Minimal EdgeRings. - * (Minimal Edgerings must be used, because only they are guaranteed to provide - * a correct isHole computation) * - * The returned vector and its contents are allocated on the - * heap; deletion responsibility is left to caller. + * Minimal Edgerings must be used, because only they are + * guaranteed to provide a correct isHole computation. + * + * @param minEdgeRings : newly allocated minimal edge rings will + * be push_back'ed here. + * deletion responsibility is left to caller. */ - std::vector* buildEdgeRings( - std::vector *dirEdges); + void buildEdgeRings(std::vector *dirEdges, + std::vector& minEdgeRings); /** * Mark all the edges for the edgeRings corresponding to the shells @@ -115,9 +128,9 @@ */ bool hasUnvisitedShellEdge(std::vector *edgeRings); -protected: - - void visitLinkedDirectedEdges(geomgraph::DirectedEdge *start); + // Declare type as noncopyable + ConnectedInteriorTester(const ConnectedInteriorTester& other); + ConnectedInteriorTester& operator=(const ConnectedInteriorTester& rhs); }; diff -Nru geos-3.1.0/source/headers/geos/operation/valid/ConsistentAreaTester.h geos-3.2.2/source/headers/geos/operation/valid/ConsistentAreaTester.h --- geos-3.1.0/source/headers/geos/operation/valid/ConsistentAreaTester.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/ConsistentAreaTester.h 2009-06-08 10:30:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConsistentAreaTester.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConsistentAreaTester.h 2557 2009-06-08 09:30:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/ConsistentAreaTester.java rev. 1.14 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_CONSISTENTAREATESTER_H #define GEOS_OP_CONSISTENTAREATESTER_H +#include + #include // for composition #include // for composition #include // for composition @@ -43,7 +49,7 @@ /** \brief * Checks that a {@link geomgraph::GeometryGraph} representing an area * (a {@link Polygon} or {@link MultiPolygon} ) - * is consistent with the SFS semantics for area geometries. + * is consistent with the OGC-SFS semantics for area geometries. * * Checks include: * @@ -54,7 +60,28 @@ * If an inconsistency if found the location of the problem * is recorded. */ -class ConsistentAreaTester { +/** \brief + * Checks that a geomgraph::GeometryGraph representing an area + * (a geom::Polygon or geom::MultiPolygon) + * has consistent semantics for area geometries. + * This check is required for any reasonable polygonal model + * (including the OGC-SFS model, as well as models which allow ring + * self-intersection at single points) + * + * Checks include: + * + * - test for rings which properly intersect + * (but not for ring self-intersection, or intersections at vertices) + * - test for consistent labelling at all node points + * (this detects vertex intersections with invalid topology, + * i.e. where the exterior side of an edge lies in the interior of the area) + * - test for duplicate rings + * + * If an inconsistency is found the location of the problem + * is recorded and is available to the caller. + * + */ +class GEOS_DLL ConsistentAreaTester { private: algorithm::LineIntersector li; @@ -75,16 +102,29 @@ public: - /// Caller keeps responsibility for GeometryGraph deletion + /** + * Creates a new tester for consistent areas. + * + * @param geomGraph the topology graph of the area geometry. + * Caller keeps responsibility for its deletion + */ ConsistentAreaTester(geomgraph::GeometryGraph *newGeomGraph); ~ConsistentAreaTester(); /** - * @return the intersection point, or null if none was found + * @return the intersection point, or null + * if none was found */ geom::Coordinate& getInvalidPoint(); + /** \brief + * Check all nodes to see if their labels are consistent with + * area topology. + * + * @return true if this area has a consistent node + * labelling + */ bool isNodeConsistentArea(); /** diff -Nru geos-3.1.0/source/headers/geos/operation/valid/IsValidOp.h geos-3.2.2/source/headers/geos/operation/valid/IsValidOp.h --- geos-3.1.0/source/headers/geos/operation/valid/IsValidOp.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/IsValidOp.h 2010-03-18 18:26:02.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IsValidOp.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IsValidOp.h 2942 2010-03-18 18:26:02Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/IsValidOp.java rev. 1.41 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_ISVALIDOP_H #define GEOS_OP_ISVALIDOP_H +#include + #include // for inlined destructor // Forward declarations @@ -49,16 +55,21 @@ namespace valid { // geos::operation::valid /** \brief - * Implements the algorithsm required to compute the isValid() method - * for {@link Geometry}s. - * + * Implements the algorithsm required to compute the isValid() + * method for {@link Geometry}s. */ -class IsValidOp { +class GEOS_DLL IsValidOp { friend class Unload; private: - const geom::Geometry *parentGeometry; // the base Geometry to be validated + /// the base Geometry to be validated + const geom::Geometry *parentGeometry; + bool isChecked; - TopologyValidationError* validErr; // CHECKME: should this really be a pointer ? + + // CHECKME: should this really be a pointer ? + TopologyValidationError* validErr; + + void checkValid(); void checkValid(const geom::Geometry *g); void checkValid(const geom::Point *g); void checkValid(const geom::LinearRing *g); @@ -187,7 +198,8 @@ */ static const geom::Coordinate *findPtNotNode( const geom::CoordinateSequence *testCoords, - const geom::LinearRing *searchRing, geomgraph::GeometryGraph *graph); + const geom::LinearRing *searchRing, + geomgraph::GeometryGraph *graph); /** * Checks whether a coordinate is valid for processing. diff -Nru geos-3.1.0/source/headers/geos/operation/valid/Makefile.am geos-3.2.2/source/headers/geos/operation/valid/Makefile.am --- geos-3.1.0/source/headers/geos/operation/valid/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,20 +2,15 @@ #EXTRA_DIST = -# NOTES: -# TopologyValidationError.h needed by IsValidOp.h for inlines -# + possibly useful to export - geosdir = $(includedir)/geos/operation/valid geos_HEADERS = \ - IsValidOp.h \ - TopologyValidationError.h - -noinst_HEADERS = \ ConnectedInteriorTester.h \ ConsistentAreaTester.h \ + IsValidOp.h \ QuadtreeNestedRingTester.h \ RepeatedPointTester.h \ SimpleNestedRingTester.h \ - SweeplineNestedRingTester.h + SweeplineNestedRingTester.h \ + TopologyValidationError.h + diff -Nru geos-3.1.0/source/headers/geos/operation/valid/Makefile.in geos-3.2.2/source/headers/geos/operation/valid/Makefile.in --- geos-3.1.0/source/headers/geos/operation/valid/Makefile.in 2009-03-11 19:13:52.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,19 +19,12 @@ #EXTRA_DIST = -# NOTES: -# TopologyValidationError.h needed by IsValidOp.h for inlines -# + possibly useful to export - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -46,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/operation/valid -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -59,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -66,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -104,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -127,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -161,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -172,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -196,48 +207,59 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/operation/valid geos_HEADERS = \ - IsValidOp.h \ - TopologyValidationError.h - -noinst_HEADERS = \ ConnectedInteriorTester.h \ ConsistentAreaTester.h \ + IsValidOp.h \ QuadtreeNestedRingTester.h \ RepeatedPointTester.h \ SimpleNestedRingTester.h \ - SweeplineNestedRingTester.h + SweeplineNestedRingTester.h \ + TopologyValidationError.h all: all-am @@ -246,14 +268,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/valid/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/operation/valid/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/operation/valid/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/operation/valid/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -271,106 +293,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -379,7 +408,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -401,6 +430,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -411,8 +441,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -420,18 +449,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -450,19 +499,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/operation/valid/QuadtreeNestedRingTester.h geos-3.2.2/source/headers/geos/operation/valid/QuadtreeNestedRingTester.h --- geos-3.1.0/source/headers/geos/operation/valid/QuadtreeNestedRingTester.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/QuadtreeNestedRingTester.h 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: QuadtreeNestedRingTester.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: QuadtreeNestedRingTester.h 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/QuadtreeNestedRingTester.java rev. 1.12 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_QUADTREENESTEDRINGTESTER_H #define GEOS_OP_QUADTREENESTEDRINGTESTER_H +#include + #include // for composition #include @@ -47,7 +53,7 @@ * index to speed up the comparisons. * */ -class QuadtreeNestedRingTester { +class GEOS_DLL QuadtreeNestedRingTester { public: /// Caller retains ownership of GeometryGraph diff -Nru geos-3.1.0/source/headers/geos/operation/valid/RepeatedPointTester.h geos-3.2.2/source/headers/geos/operation/valid/RepeatedPointTester.h --- geos-3.1.0/source/headers/geos/operation/valid/RepeatedPointTester.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/RepeatedPointTester.h 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RepeatedPointTester.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RepeatedPointTester.h 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/RepeatedPointTester.java rev. 1.8 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_REPEATEDPOINTTESTER_H #define GEOS_OP_REPEATEDPOINTTESTER_H +#include + #include // for composition // Forward declarations @@ -41,7 +47,7 @@ * (consecutive identical coordinates) as defined in the * JTS spec. */ -class RepeatedPointTester { +class GEOS_DLL RepeatedPointTester { public: RepeatedPointTester() {}; geom::Coordinate& getCoordinate(); diff -Nru geos-3.1.0/source/headers/geos/operation/valid/SimpleNestedRingTester.h geos-3.2.2/source/headers/geos/operation/valid/SimpleNestedRingTester.h --- geos-3.1.0/source/headers/geos/operation/valid/SimpleNestedRingTester.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/SimpleNestedRingTester.h 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleNestedRingTester.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleNestedRingTester.h 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/SimpleNestedRingTester.java rev. 1.14 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_SIMPLENESTEDRINGTESTER_H #define GEOS_OP_SIMPLENESTEDRINGTESTER_H +#include + #include // Forward declarations @@ -40,7 +46,7 @@ * comparison. * */ -class SimpleNestedRingTester { +class GEOS_DLL SimpleNestedRingTester { private: geomgraph::GeometryGraph *graph; // used to find non-node vertices std::vector rings; diff -Nru geos-3.1.0/source/headers/geos/operation/valid/SweeplineNestedRingTester.h geos-3.2.2/source/headers/geos/operation/valid/SweeplineNestedRingTester.h --- geos-3.1.0/source/headers/geos/operation/valid/SweeplineNestedRingTester.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/SweeplineNestedRingTester.h 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweeplineNestedRingTester.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweeplineNestedRingTester.h 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/SweeplineNestedRingTester.java rev. 1.12 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_SWEEPLINENESTEDRINGTESTER_H #define GEOS_OP_SWEEPLINENESTEDRINGTESTER_H +#include #include #include // for inline @@ -50,12 +55,11 @@ * nested inside another ring in the set, using an * index::sweepline::SweepLineIndex to speed up the comparisons. */ -class SweeplineNestedRingTester { +class GEOS_DLL SweeplineNestedRingTester { private: geomgraph::GeometryGraph *graph; // used to find non-node vertices std::vector rings; - geom::Envelope *totalEnv; index::sweepline::SweepLineIndex *sweepLine; geom::Coordinate *nestedPt; void buildIndex(); @@ -66,14 +70,12 @@ : graph(newGraph), rings(), - totalEnv(new geom::Envelope()), sweepLine(new index::sweepline::SweepLineIndex()), nestedPt(NULL) {} ~SweeplineNestedRingTester() { - delete totalEnv; delete sweepLine; } diff -Nru geos-3.1.0/source/headers/geos/operation/valid/TopologyValidationError.h geos-3.2.2/source/headers/geos/operation/valid/TopologyValidationError.h --- geos-3.1.0/source/headers/geos/operation/valid/TopologyValidationError.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation/valid/TopologyValidationError.h 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TopologyValidationError.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TopologyValidationError.h 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/TopologyValidationError.java rev. 1.16 (JTS-1.10) + * **********************************************************************/ #ifndef GEOS_OP_TOPOLOGYVALIDATIONERROR_H #define GEOS_OP_TOPOLOGYVALIDATIONERROR_H +#include #include #include // for composition @@ -33,7 +38,7 @@ * validation error * */ -class TopologyValidationError { +class GEOS_DLL TopologyValidationError { public: enum errorEnum { diff -Nru geos-3.1.0/source/headers/geos/operation.h geos-3.2.2/source/headers/geos/operation.h --- geos-3.1.0/source/headers/geos/operation.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/operation.h 2009-04-30 11:47:08.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: operation.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: operation.h 2431 2009-04-30 10:47:08Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -29,7 +29,6 @@ } // namespace geos.operation } // namespace geos -#include #include #include diff -Nru geos-3.1.0/source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h geos-3.2.2/source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h --- geos-3.1.0/source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/algorithm/ConnectedSubgraphFinder.h 2009-12-03 19:51:16.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConnectedSubgraphFinder.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConnectedSubgraphFinder.h 2783 2009-12-03 19:51:16Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_PLANARGRAPH_ALGO_CONNECTEDSUBGRAPHFINDER_H #define GEOS_PLANARGRAPH_ALGO_CONNECTEDSUBGRAPHFINDER_H +#include #include // for inlines #include @@ -40,9 +41,27 @@ * * Note: uses the isVisited flag on the nodes. */ -class ConnectedSubgraphFinder +class GEOS_DLL ConnectedSubgraphFinder { +public: + + ConnectedSubgraphFinder(PlanarGraph& newGraph) + : + graph(newGraph) + {} + + /// \brief + /// Store newly allocated connected Subgraphs into the + /// given std::vector + /// + /// Caller take responsibility in releasing memory associated + /// with the subgraphs themself. + /// + /// + void getConnectedSubgraphs(std::vector& dest); + private: + PlanarGraph& graph; /// Returns a newly allocated Subgraph @@ -65,23 +84,9 @@ void addEdges(Node* node, std::stack& nodeStack, Subgraph* subgraph); -public: - - ConnectedSubgraphFinder(PlanarGraph& newGraph) - : - graph(newGraph) - {} - - /// \brief - /// Store newly allocated connected Subgraphs into the - /// given std::vector - /// - /// Caller take responsibility in releasing memory associated - /// with the subgraphs themself. - /// - /// - void getConnectedSubgraphs(std::vector& dest); - + // Declare type as noncopyable + ConnectedSubgraphFinder(const ConnectedSubgraphFinder& other); + ConnectedSubgraphFinder& operator=(const ConnectedSubgraphFinder& rhs); }; } // namespace geos::planargraph::algorithm diff -Nru geos-3.1.0/source/headers/geos/planargraph/algorithm/Makefile.am geos-3.2.2/source/headers/geos/planargraph/algorithm/Makefile.am --- geos-3.1.0/source/headers/geos/planargraph/algorithm/Makefile.am 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/algorithm/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,8 +2,6 @@ #EXTRA_DIST = -#geosdir = $(includedir)/geos/planargraph/algorithm -#geos_HEADERS = - -noinst_HEADERS = \ +geosdir = $(includedir)/geos/planargraph/algorithm +geos_HEADERS = \ ConnectedSubgraphFinder.h diff -Nru geos-3.1.0/source/headers/geos/planargraph/algorithm/Makefile.in geos-3.2.2/source/headers/geos/planargraph/algorithm/Makefile.in --- geos-3.1.0/source/headers/geos/planargraph/algorithm/Makefile.in 2009-03-11 19:13:54.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/algorithm/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,18 +19,12 @@ #EXTRA_DIST = -#geosdir = $(includedir)/geos/planargraph/algorithm -#geos_HEADERS = - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -45,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/planargraph/algorithm -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -58,16 +58,37 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = -HEADERS = $(noinst_HEADERS) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(geosdir)" +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -95,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -118,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -152,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -163,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -187,37 +207,51 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ -noinst_HEADERS = \ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +geosdir = $(includedir)/geos/planargraph/algorithm +geos_HEADERS = \ ConnectedSubgraphFinder.h all: all-am @@ -227,14 +261,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/planargraph/algorithm/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/planargraph/algorithm/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/planargraph/algorithm/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/planargraph/algorithm/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -252,89 +286,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs +install-geosHEADERS: $(geos_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ + done -distclean-libtool: - -rm -f libtool -uninstall-info-am: +uninstall-geosHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -342,6 +400,9 @@ check: check-am all-am: Makefile $(HEADERS) installdirs: + for dir in "$(DESTDIR)$(geosdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done install: install-am install-exec: install-exec-am install-data: install-data-am @@ -362,6 +423,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -372,8 +434,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -381,18 +442,38 @@ html: html-am +html-am: + info: info-am info-am: -install-data-am: +install-data-am: install-geosHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -411,18 +492,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/planargraph/DirectedEdge.h geos-3.2.2/source/headers/geos/planargraph/DirectedEdge.h --- geos-3.1.0/source/headers/geos/planargraph/DirectedEdge.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/DirectedEdge.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DirectedEdge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DirectedEdge.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_PLANARGRAPH_DIRECTEDEDGE_H #define GEOS_PLANARGRAPH_DIRECTEDEDGE_H +#include #include // for inheritance #include // for composition @@ -43,7 +44,7 @@ * will subclass DirectedEdge to add its own application-specific * data and methods. */ -class DirectedEdge: public GraphComponent { +class GEOS_DLL DirectedEdge: public GraphComponent { public: diff -Nru geos-3.1.0/source/headers/geos/planargraph/DirectedEdgeStar.h geos-3.2.2/source/headers/geos/planargraph/DirectedEdgeStar.h --- geos-3.1.0/source/headers/geos/planargraph/DirectedEdgeStar.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/DirectedEdgeStar.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DirectedEdgeStar.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DirectedEdgeStar.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_PLANARGRAPH_DIRECTEDEDGESTAR_H #define GEOS_PLANARGRAPH_DIRECTEDEDGESTAR_H +#include + #include // Forward declarations @@ -34,7 +36,7 @@ namespace planargraph { // geos.planargraph /// A sorted collection of DirectedEdge which leave a Node in a PlanarGraph. -class DirectedEdgeStar { +class GEOS_DLL DirectedEdgeStar { protected: private: diff -Nru geos-3.1.0/source/headers/geos/planargraph/Edge.h geos-3.2.2/source/headers/geos/planargraph/Edge.h --- geos-3.1.0/source/headers/geos/planargraph/Edge.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/Edge.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Edge.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Edge.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_PLANARGRAPH_EDGE_H #define GEOS_PLANARGRAPH_EDGE_H +#include + #include // for inheritance #include // for typedefs @@ -45,7 +47,7 @@ * Usually a client using a PlanarGraph will subclass Edge * to add its own application-specific data and methods. */ -class Edge: public GraphComponent { +class GEOS_DLL Edge: public GraphComponent { public: diff -Nru geos-3.1.0/source/headers/geos/planargraph/GraphComponent.h geos-3.2.2/source/headers/geos/planargraph/GraphComponent.h --- geos-3.1.0/source/headers/geos/planargraph/GraphComponent.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/GraphComponent.h 2009-06-08 16:43:40.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GraphComponent.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GraphComponent.h 2563 2009-06-08 15:43:40Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: planargraph/GraphComponent.java rev. 1.7 (JTS-1.7) + * **********************************************************************/ #ifndef GEOS_PLANARGRAPH_GRAPHCOMPONENT_H #define GEOS_PLANARGRAPH_GRAPHCOMPONENT_H +#include + namespace geos { namespace planargraph { // geos.planargraph @@ -37,10 +43,8 @@ * The visited flag may be set and cleared many times during the * lifetime of a graph. * - * Last port: planargraph/GraphComponent.java rev. 1.7 (JTS-1.7) - * */ -class GraphComponent { +class GEOS_DLL GraphComponent { protected: @@ -85,7 +89,6 @@ template static void setVisited(T start, T end, bool visited) { for(T i=start; i!=end; ++i) { - //i->second->setVisited(visited); (*i)->setVisited(visited); } } @@ -106,6 +109,37 @@ } /** \brief + * Sets the Marked state for the elements of a container, + * from start to end iterator. + * + * @param start the start element + * @param end one past the last element + * @param marked the state to set the marked flag to + */ + template + static void setMarked(T start, T end, bool marked) { + for(T i=start; i!=end; ++i) { + (*i)->setMarked(marked); + } + } + + + /** \brief + * Sets the Marked state for the values of each map + * container element, from start to end iterator. + * + * @param start the start element + * @param end one past the last element + * @param marked the state to set the visited flag to + */ + template + static void setMarkedMap(T start, T end, bool marked) { + for(T i=start; i!=end; ++i) { + i->second->setMarked(marked); + } + } + + /** \brief * Tests if a component has been marked at some point * during the processing involving this graph. * @return true if the component has been marked diff -Nru geos-3.1.0/source/headers/geos/planargraph/Makefile.am geos-3.2.2/source/headers/geos/planargraph/Makefile.am --- geos-3.1.0/source/headers/geos/planargraph/Makefile.am 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,38 +2,14 @@ #EXTRA_DIST = -# Notes: -# -# PlanarGraph.h is needed by LineMergeGraph.h (needed by LineMerger.h) -# for inheritance -# -# NodeMap.h needed by PlanarGraph.h for composition -# -# Edge.h needed by linemerge/LineMergeEdge.h [not installed] -# and polygonize/PolygonizeEdge.h [not installed] -# for inheritance -# -# DirectedEdge.h needed by linemerge/LineMergeDirectedEdge.h [not installed] -# and polygonize/PolygonizeDirectedEdge.h [not installed] -# for inheritance -# -# DirectedEdgeStar.h needed by Node.h [not installed] for inlines -# -# GraphComponent.h needed by Node.h [not installed], Edge.h [not installed] -# and DirectedEdge.h [not installed] for inheritance -# -# - geosdir = $(includedir)/geos/planargraph geos_HEADERS = \ - NodeMap.h \ - PlanarGraph.h - -noinst_HEADERS = \ DirectedEdge.h \ DirectedEdgeStar.h \ Edge.h \ GraphComponent.h \ Node.h \ - Subgraph.h + NodeMap.h \ + PlanarGraph.h \ + Subgraph.h diff -Nru geos-3.1.0/source/headers/geos/planargraph/Makefile.in geos-3.2.2/source/headers/geos/planargraph/Makefile.in --- geos-3.1.0/source/headers/geos/planargraph/Makefile.in 2009-03-11 19:13:53.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/Makefile.in 2010-04-18 16:08:11.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/planargraph -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,73 +241,62 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = algorithm #EXTRA_DIST = - -# Notes: -# -# PlanarGraph.h is needed by LineMergeGraph.h (needed by LineMerger.h) -# for inheritance -# -# NodeMap.h needed by PlanarGraph.h for composition -# -# Edge.h needed by linemerge/LineMergeEdge.h [not installed] -# and polygonize/PolygonizeEdge.h [not installed] -# for inheritance -# -# DirectedEdge.h needed by linemerge/LineMergeDirectedEdge.h [not installed] -# and polygonize/PolygonizeDirectedEdge.h [not installed] -# for inheritance -# -# DirectedEdgeStar.h needed by Node.h [not installed] for inlines -# -# GraphComponent.h needed by Node.h [not installed], Edge.h [not installed] -# and DirectedEdge.h [not installed] for inheritance -# -# geosdir = $(includedir)/geos/planargraph geos_HEADERS = \ - NodeMap.h \ - PlanarGraph.h - -noinst_HEADERS = \ DirectedEdge.h \ DirectedEdgeStar.h \ Edge.h \ GraphComponent.h \ Node.h \ - Subgraph.h + NodeMap.h \ + PlanarGraph.h \ + Subgraph.h all: all-recursive @@ -270,14 +305,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/planargraph/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/planargraph/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/planargraph/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/planargraph/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -295,33 +330,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -347,15 +382,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -382,16 +416,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -399,14 +433,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -418,81 +452,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -503,7 +557,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -525,6 +579,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -535,8 +590,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -544,18 +598,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -574,23 +648,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/planargraph/Node.h geos-3.2.2/source/headers/geos/planargraph/Node.h --- geos-3.1.0/source/headers/geos/planargraph/Node.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/Node.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Node.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Node.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_PLANARGRAPH_NODE_H #define GEOS_PLANARGRAPH_NODE_H +#include + #include // for inheritance #include // for inlines #include // for composition @@ -41,7 +43,7 @@ * data and methods. * */ -class Node: public GraphComponent { +class GEOS_DLL Node: public GraphComponent { protected: /// The location of this Node diff -Nru geos-3.1.0/source/headers/geos/planargraph/NodeMap.h geos-3.2.2/source/headers/geos/planargraph/NodeMap.h --- geos-3.1.0/source/headers/geos/planargraph/NodeMap.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/NodeMap.h 2009-11-20 19:58:33.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodeMap.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: NodeMap.h 2733 2009-11-20 19:58:33Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_PLANARGRAPH_NODEMAP_H #define GEOS_PLANARGRAPH_NODEMAP_H +#include #include // for use in container #include @@ -40,7 +41,7 @@ * A map of Node, indexed by the coordinate of the node. * */ -class NodeMap { +class GEOS_DLL NodeMap { public: typedef std::map container; private: @@ -105,8 +106,10 @@ * \brief * Returns the Nodes in this NodeMap, sorted in ascending order * by angle with the positive x-axis. + * + * @param nodes : the nodes are push_back'ed here */ - std::vector* getNodes(); + void getNodes(std::vector& nodes); }; diff -Nru geos-3.1.0/source/headers/geos/planargraph/PlanarGraph.h geos-3.2.2/source/headers/geos/planargraph/PlanarGraph.h --- geos-3.1.0/source/headers/geos/planargraph/PlanarGraph.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/PlanarGraph.h 2009-11-20 19:58:33.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PlanarGraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PlanarGraph.h 2733 2009-11-20 19:58:33Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_PLANARGRAPH_PLANARGRAPH_H #define GEOS_PLANARGRAPH_PLANARGRAPH_H +#include #include // for composition #include // for typedefs @@ -48,7 +49,7 @@ * framework will almost always provide subclasses for one or more graph * components, which hold application-specific data and graph algorithms. */ -class PlanarGraph { +class GEOS_DLL PlanarGraph { protected: @@ -141,8 +142,10 @@ /** * \brief * Returns the Nodes in this PlanarGraph. + * + * @param nodes : the nodes are push_back'ed here */ - std::vector* getNodes() { return nodeMap.getNodes(); } + void getNodes(std::vector& nodes) { nodeMap.getNodes(nodes); } /** * \brief diff -Nru geos-3.1.0/source/headers/geos/planargraph/Subgraph.h geos-3.2.2/source/headers/geos/planargraph/Subgraph.h --- geos-3.1.0/source/headers/geos/planargraph/Subgraph.h 2009-03-10 16:17:58.000000000 +0000 +++ geos-3.2.2/source/headers/geos/planargraph/Subgraph.h 2009-12-03 19:52:22.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Subgraph.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Subgraph.h 2784 2009-12-03 19:52:22Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_PLANARGRAPH_SUBGRAPH_H #define GEOS_PLANARGRAPH_SUBGRAPH_H +#include #include // for composition #include @@ -45,14 +46,8 @@ /// @@ Actually we'll be copying Coordinates in NodeMap. /// I guess that'll need to be changed soon. /// -class Subgraph +class GEOS_DLL Subgraph { -protected: - PlanarGraph &parentGraph; - std::set edges; - std::vector dirEdges; - NodeMap nodeMap; - public: /** * Creates a new subgraph of the given PlanarGraph @@ -135,7 +130,16 @@ */ bool contains(Edge *e) { return (edges.find(e) != edges.end()); } - +protected: + + PlanarGraph &parentGraph; + std::set edges; + std::vector dirEdges; + NodeMap nodeMap; + + // Declare type as noncopyable + Subgraph(const Subgraph& other); + Subgraph& operator=(const Subgraph& rhs); }; diff -Nru geos-3.1.0/source/headers/geos/platform.h geos-3.2.2/source/headers/geos/platform.h --- geos-3.1.0/source/headers/geos/platform.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/headers/geos/platform.h 2010-04-18 16:08:30.000000000 +0100 @@ -0,0 +1,105 @@ +/* source/headers/geos/platform.h. Generated from platform.h.in by configure. */ +#ifndef GEOS_PLATFORM_H +#define GEOS_PLATFORM_H + +/* Set to 1 if you have `int64_t' type */ +#define HAVE_INT64_T_64 /**/ + +/* Set to 1 if `long int' is 64 bits */ +/* #undef HAVE_LONG_INT_64 */ + +/* Set to 1 if `long long int' is 64 bits */ +/* #undef HAVE_LONG_LONG_INT_64 */ + +/* Set to 1 if you have ieeefp.h */ +/* #undef HAVE_IEEEFP_H */ + +/* Has finite */ +#define HAVE_FINITE 1 + +/* Has isfinite */ +#define HAVE_ISFINITE 1 + +/* Has isnan */ +/* #undef HAVE_ISNAN */ + +#ifdef HAVE_IEEEFP_H +extern "C" +{ +#include +} +#endif + +#ifdef HAVE_INT64_T_64 +extern "C" +{ +#include +} +#endif + +#if defined(__GNUC__) && defined(_WIN32) +/* For MingW the appropriate definitions are included in + math.h and float.h but the definitions in + math.h are only included if __STRICT_ANSI__ + is not defined. Since GEOS is compiled with -ansi that + means those definitions are not available. */ +#include +#endif + +#include // for finite()/isfinite() and isnan() +#include // for std::numeric_limits + + + +//Defines NaN for intel platforms +#define DoubleNotANumber std::numeric_limits::quiet_NaN() + +//Don't forget to define infinities +#define DoubleInfinity std::numeric_limits::infinity() +#define DoubleNegInfinity -std::numeric_limits::infinity() + +#define DoubleMax std::numeric_limits::max() + +inline bool +isFinite(double d) +{ +#if defined(HAVE_FINITE) && !defined(HAVE_ISFINITE) && !defined(__MINGW32__) + return (finite(d)); +#else + // Put using namespace std; here if you have to + // put it anywhere. + using namespace std; + return (isfinite(d)); +#endif +} +#define FINITE(x) ( isFinite(x) ) + +#ifdef HAVE_ISNAN +#define ISNAN(x) ( isnan(x) ) +#else +// Hack for OS/X incorrectly re-defining isnan() into +// oblivion. It does leave a version in std. +#define ISNAN(x) ( std::isnan(x) ) +#endif + +#ifdef HAVE_INT64_T_64 + typedef int64_t int64; +#else +# ifdef HAVE_LONG_LONG_INT_64 + typedef long long int int64; +# else + typedef long int int64; +# ifndef HAVE_LONG_INT_64 +# define INT64_IS_REALLY32 1 +# warning "Could not find 64bit integer definition!" +# endif +# endif +#endif + +inline int getMachineByteOrder() { + static int endian_check = 1; // don't modify !! + return *((char *)&endian_check); // 0 == big_endian | xdr, + // 1 == little_endian | ndr +} + +#endif diff -Nru geos-3.1.0/source/headers/geos/platform.h.in geos-3.2.2/source/headers/geos/platform.h.in --- geos-3.1.0/source/headers/geos/platform.h.in 2009-03-11 19:14:47.000000000 +0000 +++ geos-3.2.2/source/headers/geos/platform.h.in 2010-04-18 16:08:42.000000000 +0100 @@ -13,6 +13,15 @@ /* Set to 1 if you have ieeefp.h */ #undef HAVE_IEEEFP_H +/* Has finite */ +#undef HAVE_FINITE + +/* Has isfinite */ +#undef HAVE_ISFINITE + +/* Has isnan */ +#undef HAVE_ISNAN + #ifdef HAVE_IEEEFP_H extern "C" { @@ -36,15 +45,41 @@ #include #endif +#include // for finite()/isfinite() and isnan() +#include // for std::numeric_limits + + //Defines NaN for intel platforms +#define DoubleNotANumber std::numeric_limits::quiet_NaN() + //Don't forget to define infinities -#define DoubleNotANumber 1.7e-308 -#define DoubleInfinity 1.7e+308 -#define DoubleNegInfinity -1.7e+308 +#define DoubleInfinity std::numeric_limits::infinity() +#define DoubleNegInfinity -std::numeric_limits::infinity() + +#define DoubleMax std::numeric_limits::max() -#define FINITE(x) ( (x) != DoubleNotANumber && (x) != DoubleInfinity && (x) != DoubleNegInfinity ) -#define ISNAN(x) ( (x) == DoubleNotANumber ) +inline bool +isFinite(double d) +{ +#if defined(HAVE_FINITE) && !defined(HAVE_ISFINITE) && !defined(__MINGW32__) + return (finite(d)); +#else + // Put using namespace std; here if you have to + // put it anywhere. + using namespace std; + return (isfinite(d)); +#endif +} +#define FINITE(x) ( isFinite(x) ) + +#ifdef HAVE_ISNAN +#define ISNAN(x) ( isnan(x) ) +#else +// Hack for OS/X incorrectly re-defining isnan() into +// oblivion. It does leave a version in std. +#define ISNAN(x) ( std::isnan(x) ) +#endif #ifdef HAVE_INT64_T_64 typedef int64_t int64; diff -Nru geos-3.1.0/source/headers/geos/platform.h.vc geos-3.2.2/source/headers/geos/platform.h.vc --- geos-3.1.0/source/headers/geos/platform.h.vc 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/platform.h.vc 2010-03-26 12:35:58.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: platform.h.vc 1982 2007-06-01 13:43:59Z mloskot $ + * $Id: platform.h.vc 2956 2010-03-26 12:35:58Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -26,6 +26,10 @@ #define WIN32 #endif +#ifndef NOMINMAX +#define NOMINMAX +#endif + #include // We need M_PI, but on MSVC you need to define _USE_MATH_DEFINES before @@ -39,16 +43,18 @@ #endif //Defines NaN for intel platforms -#define DoubleNotANumber 1.7e-308 +#define DoubleNotANumber std::numeric_limits::quiet_NaN() #define ISNAN(x) _isnan(x) //Don't forget to define infinities -#define DoubleInfinity 1.7e+308 -#define DoubleNegInfinity -1.7e+308 +#define DoubleInfinity std::numeric_limits::infinity() +#define DoubleNegInfinity -std::numeric_limits::infinity() + +#define DoubleMax (std::numeric_limits::max)() -#define FINITE(x) _finite(x) -#define finite(x) _finite(x) +#define FINITE(x) _finite(static_cast(x)) +#define finite(x) _finite(static_cast(x)) typedef __int64 int64; diff -Nru geos-3.1.0/source/headers/geos/precision/CommonBits.h geos-3.2.2/source/headers/geos/precision/CommonBits.h --- geos-3.1.0/source/headers/geos/precision/CommonBits.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/CommonBits.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CommonBits.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CommonBits.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_PRECISION_COMMONBITS_H #define GEOS_PRECISION_COMMONBITS_H +#include #include // for int64 namespace geos { @@ -30,7 +31,7 @@ * If there are no common bits, the number computed is 0.0. * */ -class CommonBits { +class GEOS_DLL CommonBits { private: diff -Nru geos-3.1.0/source/headers/geos/precision/CommonBitsOp.h geos-3.2.2/source/headers/geos/precision/CommonBitsOp.h --- geos-3.1.0/source/headers/geos/precision/CommonBitsOp.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/CommonBitsOp.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CommonBitsOp.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CommonBitsOp.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_PRECISION_COMMONBITSOP_H #define GEOS_PRECISION_COMMONBITSOP_H +#include #include // for auto_ptr composition #include @@ -42,7 +43,7 @@ * that the returned Geometry is invalid. * Client classes should check the validity of the returned result themselves. */ -class CommonBitsOp { +class GEOS_DLL CommonBitsOp { private: diff -Nru geos-3.1.0/source/headers/geos/precision/CommonBitsRemover.h geos-3.2.2/source/headers/geos/precision/CommonBitsRemover.h --- geos-3.1.0/source/headers/geos/precision/CommonBitsRemover.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/CommonBitsRemover.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CommonBitsRemover.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CommonBitsRemover.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_PRECISION_COMMONBITSREMOVER_H #define GEOS_PRECISION_COMMONBITSREMOVER_H +#include #include // for composition // Forward declarations @@ -37,7 +38,7 @@ * more Geometries. * */ -class CommonBitsRemover { +class GEOS_DLL CommonBitsRemover { private: diff -Nru geos-3.1.0/source/headers/geos/precision/EnhancedPrecisionOp.h geos-3.2.2/source/headers/geos/precision/EnhancedPrecisionOp.h --- geos-3.1.0/source/headers/geos/precision/EnhancedPrecisionOp.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/EnhancedPrecisionOp.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EnhancedPrecisionOp.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EnhancedPrecisionOp.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,6 +20,7 @@ #ifndef GEOS_PRECISION_ENHANCEDPRECISIONOP_H #define GEOS_PRECISION_ENHANCEDPRECISIONOP_H +#include #include // for int64 // Forward declarations @@ -37,7 +38,7 @@ * enhanced precision techniques to reduce the likelihood of robustness * problems. */ -class EnhancedPrecisionOp { +class GEOS_DLL EnhancedPrecisionOp { public: diff -Nru geos-3.1.0/source/headers/geos/precision/GeometrySnapper.h geos-3.2.2/source/headers/geos/precision/GeometrySnapper.h --- geos-3.1.0/source/headers/geos/precision/GeometrySnapper.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/GeometrySnapper.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,110 +0,0 @@ -/********************************************************************** - * $Id: GeometrySnapper.h 1948 2006-12-18 18:44:20Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/snap/GeometrySnapper.java rev. 1.6 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#ifndef GEOS_PRECISION_GEOMETRYSNAPPER_H -#define GEOS_PRECISION_GEOMETRYSNAPPER_H - -#include - -#include -#include - -// Forward declarations -namespace geos { - namespace geom { - //class PrecisionModel; - class Geometry; - class CoordinateSequence; - } -} - -namespace geos { -namespace precision { // geos.precision - -/** \brief - * Snaps the vertices and segments of a geometry to another's vertices. - * Should improve robustness for overlay operations. - */ -class GeometrySnapper { - -public: - - GeometrySnapper(const geom::Geometry& g) - : - srcGeom(g) - { - } - - /** \brief - * Snaps the vertices in the component {@link LineString}s - * of the source geometry to the vertices of the given geometry - * with a given snap tolerance - * - * @param g - * @param snapTolerance - * @return a new snapped Geometry - */ - std::auto_ptr snapTo(const geom::Geometry& g, double snapTolerance); - - /** \brief - * Estimates the snap tolerance for a Geometry, taking into account - * its precision model. - * - * @param g a Geometry - * @return the estimated snap tolerance - */ - static double computeOverlaySnapTolerance(const geom::Geometry& g); - - static double computeSizeBasedSnapTolerance(const geom::Geometry& g); - - /** \brief - * Computes the snap tolerance based on input geometries; - */ - static double computeOverlaySnapTolerance(const geom::Geometry& g1, - const geom::Geometry& g2); - - -private: - - // eventually this will be determined from the geometry topology - //static const double snapTol; // = 0.000001; - - static const double snapPrecisionFactor; // = 10e-10 - - const geom::Geometry& srcGeom; - - /// Extract target (unique) coordinates - std::auto_ptr extractTargetCoordinates( - const geom::Geometry& g); -}; - - -} // namespace geos.precision -} // namespace geos - -#endif // GEOS_PRECISION_GEOMETRYSNAPPER_H - -/********************************************************************** - * $Log$ - * Revision 1.1 2006/07/21 17:09:14 strk - * Added new precision::LineStringSnapper class + test - * and precision::GeometrySnapper (w/out test) - * - **********************************************************************/ diff -Nru geos-3.1.0/source/headers/geos/precision/LineStringSnapper.h geos-3.2.2/source/headers/geos/precision/LineStringSnapper.h --- geos-3.1.0/source/headers/geos/precision/LineStringSnapper.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/LineStringSnapper.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,126 +0,0 @@ -/********************************************************************** - * $Id: LineStringSnapper.h 1940 2006-12-13 10:51:18Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/snap/lineStringSnapper.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#ifndef GEOS_PRECISION_LINESTRINGSNAPPER_H -#define GEOS_PRECISION_LINESTRINGSNAPPER_H - -#include -#include -#include - -#include - -// Forward declarations -namespace geos { - namespace geom { - //class PrecisionModel; - //class CoordinateSequence; - class CoordinateList; - class Geometry; - } -} - -namespace geos { -namespace precision { // geos.precision - -/** \brief - * Snaps the vertices and segments of a LineString to another's vertices. - * Should improve robustness for overlay operations. - * - */ -class LineStringSnapper { - -public: - - LineStringSnapper(const geom::Coordinate::Vect& nSrcPts, double nSnapTol) - : - srcPts(nSrcPts), - snapTolerance(nSnapTol) - { - size_t s = srcPts.size(); - isClosed = ( s < 2 || srcPts[0].equals2D(srcPts[s-1]) ); - } - - // Snap points are assumed to be all distinct points (a set would be better, uh ?) - std::auto_ptr snapTo(const geom::Coordinate::ConstVect& snapPts); - -private: - - const geom::Coordinate::Vect& srcPts; - - double snapTolerance; - - bool isClosed; - - - // Modifies first arg - void snapVertices(geom::CoordinateList& srcCoords, - const geom::Coordinate::ConstVect& snapPts); - - - // Returns snapPts.end() if no snap point is close enough (within snapTol distance) - geom::Coordinate::ConstVect::const_iterator findSnapForVertex(const geom::Coordinate& pt, - const geom::Coordinate::ConstVect& snapPts); - - // Modifies first arg - void snapSegments(geom::CoordinateList& srcCoords, - const geom::Coordinate::ConstVect& snapPts); - - /// \brief - /// Finds a src segment which snaps to (is close to) the given snap - /// point. - // - /// Only one segment is determined - this is to prevent - /// snapping to multiple segments, which would almost certainly cause - /// invalid geometry to be created. - /// (The heuristic approach of snapping is really only appropriate - /// when snap pts snap to a unique spot on the src geometry.) - /// - /// - /// @param from - /// an iterator to first point of first segment to be checked - /// - /// @param too_far - /// an iterator to last point of last segment to be checked - /// - /// @returns too_far if no segment needs snapping - /// (either none within snapTol distance, - /// or one fond on the snapPt) - /// - geom::CoordinateList::iterator findSegmentToSnap( - const geom::Coordinate& snapPt, - geom::CoordinateList::iterator from, - geom::CoordinateList::iterator too_far); - -}; - - -} // namespace geos.precision -} // namespace geos - -#endif // GEOS_PRECISION_LINESTRINGSNAPPER_H - -/********************************************************************** - * $Log$ - * Revision 1.1 2006/07/21 17:09:14 strk - * Added new precision::LineStringSnapper class + test - * and precision::GeometrySnapper (w/out test) - * - **********************************************************************/ diff -Nru geos-3.1.0/source/headers/geos/precision/Makefile.am geos-3.2.2/source/headers/geos/precision/Makefile.am --- geos-3.1.0/source/headers/geos/precision/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,21 +2,12 @@ #EXTRA_DIST = -# NOTES: -# CommonBitsOp.h is worth keeping for now -# EnhancedPrecisionOp.h is worth keeping for now -# CommonBitsRemover.h needed by geom/BinaryOp.h -# SimpleGeometryPrecisionReducer.h needed by geom/BinaryOp.h - geosdir = $(includedir)/geos/precision geos_HEADERS = \ + CommonBits.h \ CommonBitsOp.h \ CommonBitsRemover.h \ EnhancedPrecisionOp.h \ - GeometrySnapper.h \ SimpleGeometryPrecisionReducer.h -noinst_HEADERS = \ - CommonBits.h \ - LineStringSnapper.h diff -Nru geos-3.1.0/source/headers/geos/precision/Makefile.in geos-3.2.2/source/headers/geos/precision/Makefile.in --- geos-3.1.0/source/headers/geos/precision/Makefile.in 2009-03-11 19:13:54.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,21 +19,12 @@ #EXTRA_DIST = -# NOTES: -# CommonBitsOp.h is worth keeping for now -# EnhancedPrecisionOp.h is worth keeping for now -# CommonBitsRemover.h needed by geom/BinaryOp.h -# SimpleGeometryPrecisionReducer.h needed by geom/BinaryOp.h - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -48,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/precision -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -61,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -68,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -106,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -129,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -163,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -174,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -198,48 +207,57 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/precision geos_HEADERS = \ + CommonBits.h \ CommonBitsOp.h \ CommonBitsRemover.h \ EnhancedPrecisionOp.h \ - GeometrySnapper.h \ SimpleGeometryPrecisionReducer.h -noinst_HEADERS = \ - CommonBits.h \ - LineStringSnapper.h - all: all-am .SUFFIXES: @@ -247,14 +265,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/precision/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/precision/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/precision/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/precision/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -272,106 +290,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -380,7 +405,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -402,6 +427,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -412,8 +438,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -421,18 +446,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -451,19 +496,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/precision/SimpleGeometryPrecisionReducer.h geos-3.2.2/source/headers/geos/precision/SimpleGeometryPrecisionReducer.h --- geos-3.1.0/source/headers/geos/precision/SimpleGeometryPrecisionReducer.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/precision/SimpleGeometryPrecisionReducer.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleGeometryPrecisionReducer.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleGeometryPrecisionReducer.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,7 @@ #ifndef GEOS_PRECISION_SIMPLEGEOMETRYPRECISIONREDUCER_H #define GEOS_PRECISION_SIMPLEGEOMETRYPRECISIONREDUCER_H +#include // Forward declarations namespace geos { @@ -41,7 +42,7 @@ * The buffer algorithm does not depend on the validity of the input geometry. * */ -class SimpleGeometryPrecisionReducer { +class GEOS_DLL SimpleGeometryPrecisionReducer { private: diff -Nru geos-3.1.0/source/headers/geos/profiler.h geos-3.2.2/source/headers/geos/profiler.h --- geos-3.1.0/source/headers/geos/profiler.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/profiler.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: profiler.h 2021 2007-09-11 02:02:44Z csavage $ + * $Id: profiler.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -16,6 +16,8 @@ #ifndef GEOS_PROFILER_H #define GEOS_PROFILER_H +#include + /* For MingW builds with __STRICT_ANSI__ (-ansi) */ #if defined(__MINGW32__) /* Allow us to check for presence of gettimeofday in MingW */ @@ -55,7 +57,7 @@ * * \brief Profile statistics */ -class Profile { +class GEOS_DLL Profile { public: /** \brief Create a named profile */ Profile(std::string name); @@ -133,7 +135,7 @@ * \brief Profiling class * */ -class Profiler { +class GEOS_DLL Profiler { public: diff -Nru geos-3.1.0/source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h geos-3.2.2/source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h --- geos-3.1.0/source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/DouglasPeuckerLineSimplifier.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DouglasPeuckerLineSimplifier.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DouglasPeuckerLineSimplifier.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,9 +17,10 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_DOUBGLASPEUCKERLINESIMPLIFIER_H_ -#define _GEOS_SIMPLIFY_DOUBGLASPEUCKERLINESIMPLIFIER_H_ +#ifndef GEOS_SIMPLIFY_DOUBGLASPEUCKERLINESIMPLIFIER_H +#define GEOS_SIMPLIFY_DOUBGLASPEUCKERLINESIMPLIFIER_H +#include #include #include // for auto_ptr @@ -37,7 +38,7 @@ * Simplifies a linestring (sequence of points) using * the standard Douglas-Peucker algorithm. */ -class DouglasPeuckerLineSimplifier { +class GEOS_DLL DouglasPeuckerLineSimplifier { public: @@ -81,12 +82,16 @@ double distanceTolerance; void simplifySection(size_t i, size_t j); + + // Declare type as noncopyable + DouglasPeuckerLineSimplifier(const DouglasPeuckerLineSimplifier& other); + DouglasPeuckerLineSimplifier& operator=(const DouglasPeuckerLineSimplifier& rhs); }; } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_DOUBGLASPEUCKERLINESIMPLIFIER_H_ +#endif // GEOS_SIMPLIFY_DOUBGLASPEUCKERLINESIMPLIFIER_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/simplify/DouglasPeuckerSimplifier.h geos-3.2.2/source/headers/geos/simplify/DouglasPeuckerSimplifier.h --- geos-3.1.0/source/headers/geos/simplify/DouglasPeuckerSimplifier.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/DouglasPeuckerSimplifier.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DouglasPeuckerSimplifier.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: DouglasPeuckerSimplifier.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,9 +17,10 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_DOUBGLASPEUCKERSIMPLIFIER_H_ -#define _GEOS_SIMPLIFY_DOUBGLASPEUCKERSIMPLIFIER_H_ +#ifndef GEOS_SIMPLIFY_DOUBGLASPEUCKERSIMPLIFIER_H +#define GEOS_SIMPLIFY_DOUBGLASPEUCKERSIMPLIFIER_H +#include #include // for auto_ptr // Forward declarations @@ -47,7 +48,7 @@ * (However, using D-P is significantly faster). * */ -class DouglasPeuckerSimplifier { +class GEOS_DLL DouglasPeuckerSimplifier { public: @@ -83,7 +84,7 @@ } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_DOUBGLASPEUCKERSIMPLIFIER_H_ +#endif // GEOS_SIMPLIFY_DOUBGLASPEUCKERSIMPLIFIER_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/simplify/LineSegmentIndex.h geos-3.2.2/source/headers/geos/simplify/LineSegmentIndex.h --- geos-3.1.0/source/headers/geos/simplify/LineSegmentIndex.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/LineSegmentIndex.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineSegmentIndex.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineSegmentIndex.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -21,9 +21,10 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_LINESEGMENTINDEX_H_ -#define _GEOS_SIMPLIFY_LINESEGMENTINDEX_H_ +#ifndef GEOS_SIMPLIFY_LINESEGMENTINDEX_H +#define GEOS_SIMPLIFY_LINESEGMENTINDEX_H +#include #include #include // for auto_ptr @@ -46,7 +47,7 @@ namespace geos { namespace simplify { // geos::simplify -class LineSegmentIndex { +class GEOS_DLL LineSegmentIndex { public: @@ -77,7 +78,7 @@ } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_LINESEGMENTINDEX_H_ +#endif // GEOS_SIMPLIFY_LINESEGMENTINDEX_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/simplify/Makefile.am geos-3.2.2/source/headers/geos/simplify/Makefile.am --- geos-3.1.0/source/headers/geos/simplify/Makefile.am 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -5,13 +5,12 @@ EXTRA_DIST = geos_HEADERS = \ - DouglasPeuckerSimplifier.h \ - TopologyPreservingSimplifier.h - -noinst_HEADERS = \ DouglasPeuckerLineSimplifier.h \ + DouglasPeuckerSimplifier.h \ LineSegmentIndex.h \ TaggedLineSegment.h \ + TaggedLinesSimplifier.h \ TaggedLineString.h \ TaggedLineStringSimplifier.h \ - TaggedLinesSimplifier.h + TopologyPreservingSimplifier.h + diff -Nru geos-3.1.0/source/headers/geos/simplify/Makefile.in geos-3.2.2/source/headers/geos/simplify/Makefile.in --- geos-3.1.0/source/headers/geos/simplify/Makefile.in 2009-03-11 19:13:54.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -38,11 +36,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/simplify -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,50 +241,61 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = geosdir = $(includedir)/geos/simplify EXTRA_DIST = geos_HEADERS = \ - DouglasPeuckerSimplifier.h \ - TopologyPreservingSimplifier.h - -noinst_HEADERS = \ DouglasPeuckerLineSimplifier.h \ + DouglasPeuckerSimplifier.h \ LineSegmentIndex.h \ TaggedLineSegment.h \ + TaggedLinesSimplifier.h \ TaggedLineString.h \ TaggedLineStringSimplifier.h \ - TaggedLinesSimplifier.h + TopologyPreservingSimplifier.h all: all-recursive @@ -247,14 +304,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/simplify/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/simplify/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/simplify/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/simplify/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -272,33 +329,33 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -324,15 +381,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -359,16 +415,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -376,14 +432,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -395,81 +451,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -480,7 +556,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -502,6 +578,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -512,8 +589,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -521,18 +597,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -551,23 +647,26 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am \ - uninstall-geosHEADERS uninstall-info-am + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/simplify/TaggedLineSegment.h geos-3.2.2/source/headers/geos/simplify/TaggedLineSegment.h --- geos-3.1.0/source/headers/geos/simplify/TaggedLineSegment.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/TaggedLineSegment.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TaggedLineSegment.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TaggedLineSegment.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -27,9 +27,10 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H_ -#define _GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H_ +#ifndef GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H +#define GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H +#include #include // for inheritance @@ -51,7 +52,7 @@ * Used to index the segments in a geometry and recover the segment locations * from the index. */ -class TaggedLineSegment: public geom::LineSegment +class GEOS_DLL TaggedLineSegment: public geom::LineSegment { public: @@ -83,7 +84,7 @@ } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H_ +#endif // GEOS_SIMPLIFY_TAGGEDLINESEGMENT_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/simplify/TaggedLinesSimplifier.h geos-3.2.2/source/headers/geos/simplify/TaggedLinesSimplifier.h --- geos-3.1.0/source/headers/geos/simplify/TaggedLinesSimplifier.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/TaggedLinesSimplifier.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TaggedLinesSimplifier.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TaggedLinesSimplifier.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -24,21 +24,21 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H_ -#define _GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H_ +#ifndef GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H +#define GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H +#include #include #include #include #include // for templated function body +#include // Forward declarations namespace geos { namespace simplify { - //class LineSegmentIndex; class TaggedLineString; - class TaggedLineStringSimplifier; } } @@ -49,7 +49,7 @@ * Simplifies a collection of TaggedLineStrings, preserving topology * (in the sense that no new intersections are introduced). */ -class TaggedLinesSimplifier { +class GEOS_DLL TaggedLinesSimplifier { public: @@ -113,7 +113,7 @@ } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H_ +#endif // GEOS_SIMPLIFY_TAGGEDLINESSIMPLIFIER_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/simplify/TaggedLineString.h geos-3.2.2/source/headers/geos/simplify/TaggedLineString.h --- geos-3.1.0/source/headers/geos/simplify/TaggedLineString.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/TaggedLineString.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TaggedLineString.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TaggedLineString.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -23,9 +23,10 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_TAGGEDLINESTRING_H_ -#define _GEOS_SIMPLIFY_TAGGEDLINESTRING_H_ +#ifndef GEOS_SIMPLIFY_TAGGEDLINESTRING_H +#define GEOS_SIMPLIFY_TAGGEDLINESTRING_H +#include #include #include @@ -52,7 +53,7 @@ * Contains and owns a list of TaggedLineSegments * */ -class TaggedLineString { +class GEOS_DLL TaggedLineString { public: @@ -119,7 +120,7 @@ } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_TAGGEDLINESTRING_H_ +#endif // GEOS_SIMPLIFY_TAGGEDLINESTRING_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/simplify/TaggedLineStringSimplifier.h geos-3.2.2/source/headers/geos/simplify/TaggedLineStringSimplifier.h --- geos-3.1.0/source/headers/geos/simplify/TaggedLineStringSimplifier.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/TaggedLineStringSimplifier.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TaggedLineStringSimplifier.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TaggedLineStringSimplifier.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -22,9 +22,10 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_TAGGEDLINESTRINGSIMPLIFIER_H_ -#define _GEOS_SIMPLIFY_TAGGEDLINESTRINGSIMPLIFIER_H_ +#ifndef GEOS_SIMPLIFY_TAGGEDLINESTRINGSIMPLIFIER_H +#define GEOS_SIMPLIFY_TAGGEDLINESTRINGSIMPLIFIER_H +#include #include #include @@ -54,7 +55,7 @@ * Uses the recursive Douglas-Peucker algorithm. * */ -class TaggedLineStringSimplifier { +class GEOS_DLL TaggedLineStringSimplifier { public: @@ -151,7 +152,7 @@ } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_TAGGEDLINESTRINGSIMPLIFIER_H_ +#endif // GEOS_SIMPLIFY_TAGGEDLINESTRINGSIMPLIFIER_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/simplify/TopologyPreservingSimplifier.h geos-3.2.2/source/headers/geos/simplify/TopologyPreservingSimplifier.h --- geos-3.1.0/source/headers/geos/simplify/TopologyPreservingSimplifier.h 2009-03-10 16:17:59.000000000 +0000 +++ geos-3.2.2/source/headers/geos/simplify/TopologyPreservingSimplifier.h 2009-12-03 19:55:11.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TopologyPreservingSimplifier.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TopologyPreservingSimplifier.h 2785 2009-12-03 19:55:11Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -21,22 +21,15 @@ * **********************************************************************/ -#ifndef _GEOS_SIMPLIFY_TOPOLOGYPRESERVINGSIMPLIFIER_H_ -#define _GEOS_SIMPLIFY_TOPOLOGYPRESERVINGSIMPLIFIER_H_ +#ifndef GEOS_SIMPLIFY_TOPOLOGYPRESERVINGSIMPLIFIER_H +#define GEOS_SIMPLIFY_TOPOLOGYPRESERVINGSIMPLIFIER_H +#include +#include +#include #include // for auto_ptr #include -// Forward declarations -namespace geos { - namespace simplify { - class TaggedLinesSimplifier; - } - namespace geom { - class Geometry; - } -} - namespace geos { namespace simplify { // geos::simplify @@ -58,7 +51,7 @@ * (although they may touch at fewer points) * */ -class TopologyPreservingSimplifier +class GEOS_DLL TopologyPreservingSimplifier { public: @@ -91,12 +84,10 @@ }; - - } // namespace geos::simplify } // namespace geos -#endif // _GEOS_SIMPLIFY_TOPOLOGYPRESERVINGSIMPLIFIER_H_ +#endif // GEOS_SIMPLIFY_TOPOLOGYPRESERVINGSIMPLIFIER_H /********************************************************************** * $Log$ diff -Nru geos-3.1.0/source/headers/geos/timeval.h geos-3.2.2/source/headers/geos/timeval.h --- geos-3.1.0/source/headers/geos/timeval.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/timeval.h 2009-12-03 19:59:06.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: timeval.h 2147 2008-08-07 16:57:25Z pramsey $ + * $Id: timeval.h 2787 2009-12-03 19:59:06Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,9 +13,8 @@ * **********************************************************************/ - -#ifndef _TIMEVAL_H -#define _TIMEVAL_H +#ifndef GEOS_TIMEVAL_H +#define GEOS_TIMEVAL_H #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN @@ -120,4 +119,4 @@ #endif /* _WIN32_WCE */ -#endif /* _TIMEVAL_H */ +#endif /* GEOS_TIMEVAL_H */ diff -Nru geos-3.1.0/source/headers/geos/unload.h geos-3.2.2/source/headers/geos/unload.h --- geos-3.1.0/source/headers/geos/unload.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/unload.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: unload.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: unload.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -29,6 +29,7 @@ * **********************************************************************/ +#include #ifndef GEOS_UNLOAD_H #define GEOS_UNLOAD_H @@ -36,7 +37,7 @@ namespace geos { namespace io { -class Unload +class GEOS_DLL Unload { private: Unload(void) {} diff -Nru geos-3.1.0/source/headers/geos/util/Assert.h geos-3.2.2/source/headers/geos/util/Assert.h --- geos-3.1.0/source/headers/geos/util/Assert.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/Assert.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Assert.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Assert.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_UTIL_ASSERT_H #define GEOS_UTIL_ASSERT_H +#include #include // Forward declarations @@ -29,7 +30,7 @@ namespace geos { namespace util { // geos.util -class Assert { +class GEOS_DLL Assert { public: static void isTrue(bool assertion, const std::string& message); diff -Nru geos-3.1.0/source/headers/geos/util/AssertionFailedException.h geos-3.2.2/source/headers/geos/util/AssertionFailedException.h --- geos-3.1.0/source/headers/geos/util/AssertionFailedException.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/AssertionFailedException.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: AssertionFailedException.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: AssertionFailedException.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_UTIL_ASSERTIONFAILEDEXCEPTION_H #define GEOS_UTIL_ASSERTIONFAILEDEXCEPTION_H +#include #include #include @@ -27,7 +28,7 @@ /** \class AssertionFailedException util.h geos.h * \brief Indicates a bug in GEOS code. */ -class AssertionFailedException: public GEOSException { +class GEOS_DLL AssertionFailedException: public GEOSException { public: diff -Nru geos-3.1.0/source/headers/geos/util/CoordinateArrayFilter.h geos-3.2.2/source/headers/geos/util/CoordinateArrayFilter.h --- geos-3.1.0/source/headers/geos/util/CoordinateArrayFilter.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/CoordinateArrayFilter.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CoordinateArrayFilter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: CoordinateArrayFilter.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_UTIL_COORDINATEARRAYFILTER_H #define GEOS_UTIL_COORDINATEARRAYFILTER_H +#include #include #include @@ -33,7 +34,7 @@ * * Last port: util/CoordinateArrayFilter.java rev. 1.15 */ -class CoordinateArrayFilter: public geom::CoordinateFilter { +class GEOS_DLL CoordinateArrayFilter: public geom::CoordinateFilter { private: geom::Coordinate::ConstVect &pts; // target vector reference public: diff -Nru geos-3.1.0/source/headers/geos/util/GeometricShapeFactory.h geos-3.2.2/source/headers/geos/util/GeometricShapeFactory.h --- geos-3.1.0/source/headers/geos/util/GeometricShapeFactory.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/GeometricShapeFactory.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometricShapeFactory.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometricShapeFactory.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,17 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: util/GeometricShapeFactory.java rev 1.14 (JTS-1.10+) + * (2009-03-19) + * **********************************************************************/ #ifndef GEOS_UTIL_GEOMETRICSHAPEFACTORY_H #define GEOS_UTIL_GEOMETRICSHAPEFACTORY_H +#include #include #include @@ -24,9 +30,11 @@ // Forward declarations namespace geos { namespace geom { + class Coordinate; class Envelope; class Polygon; class GeometryFactory; + class PrecisionModel; class LineString; } } @@ -36,16 +44,23 @@ /** - * \class GeometricShapeFactory util.h geos.h - * - * \brief * Computes various kinds of common geometric shapes. + * * Allows various ways of specifying the location and extent of the shapes, * as well as number of line segments used to form them. * + * Example: + *
+ *  GeometricShapeFactory gsf(factory);
+ *  gsf.setSize(100);
+ *  gsf.setNumPoints(100);
+ *  gsf.setBase(Coordinate(0, 0));
+ *  std::auto_ptr rect ( gsf.createRectangle() );
+ * 
+ * */ -class GeometricShapeFactory { -private: +class GEOS_DLL GeometricShapeFactory { +protected: class Dimensions { public: Dimensions(); @@ -58,12 +73,19 @@ void setSize(double size); void setWidth(double nWidth); void setHeight(double nHeight); + + // Return newly-allocated object, ownership transferred geom::Envelope* getEnvelope(); }; - const geom::GeometryFactory* geomFact; + const geom::GeometryFactory* geomFact; // externally owned + const geom::PrecisionModel* precModel; // externally owned Dimensions dim; int nPts; + + geom::Coordinate createCoord(double x, double y) const; + public: + /** * \brief * Create a shape factory which will create shapes using the given @@ -79,11 +101,28 @@ ~GeometricShapeFactory(); /** - * \brief Creates a elliptical arc, as a LineString. + * \brief Creates an elliptical arc, as a LineString. + * + * The arc is always created in a counter-clockwise direction. * + * @param startAng start angle in radians + * @param angExtent size of angle in radians * @return an elliptical arc */ - geom::LineString* createArc(double startAng, double endAng); + geom::LineString* createArc(double startAng, double angExtent); + + /** + * \brief Creates an elliptical arc polygon. + * + * The polygon is formed from the specified arc of an ellipse + * and the two radii connecting the endpoints to the centre of + * the ellipse. + * + * @param startAng start angle in radians + * @param angExtent size of angle in radians + * @return an elliptical arc polygon + */ + geom::Polygon* createArcPolygon(double startAng, double angExt); /** * \brief Creates a circular Polygon. diff -Nru geos-3.1.0/source/headers/geos/util/GEOSException.h geos-3.2.2/source/headers/geos/util/GEOSException.h --- geos-3.1.0/source/headers/geos/util/GEOSException.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/GEOSException.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GEOSException.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GEOSException.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_UTIL_GEOSEXCEPTION_H #define GEOS_UTIL_GEOSEXCEPTION_H +#include #include #include @@ -30,7 +31,7 @@ * Exceptions are thrown as pointers to this type. * Use toString() to get a readable message. */ -class GEOSException: public std::exception { +class GEOS_DLL GEOSException: public std::exception { std::string _msg; diff -Nru geos-3.1.0/source/headers/geos/util/IllegalArgumentException.h geos-3.2.2/source/headers/geos/util/IllegalArgumentException.h --- geos-3.1.0/source/headers/geos/util/IllegalArgumentException.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/IllegalArgumentException.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IllegalArgumentException.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IllegalArgumentException.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_UTIL_ILLEGALARGUMENTEXCEPTION_H #define GEOS_UTIL_ILLEGALARGUMENTEXCEPTION_H +#include #include #include @@ -31,7 +32,7 @@ * trying to apply set-theoretic methods to a * GeometryCollection object. */ -class IllegalArgumentException: public GEOSException { +class GEOS_DLL IllegalArgumentException: public GEOSException { public: IllegalArgumentException() : diff -Nru geos-3.1.0/source/headers/geos/util/Makefile.am geos-3.2.2/source/headers/geos/util/Makefile.am --- geos-3.1.0/source/headers/geos/util/Makefile.am 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/Makefile.am 2009-06-08 10:30:55.000000000 +0100 @@ -2,23 +2,17 @@ #EXTRA_DIST = -# Notes: -# -# TopologyException.h needed by BinaryOp.h -# We keep IllegalArgumentException.h as a facility (see doc/example.cpp) - geosdir = $(includedir)/geos/util geos_HEADERS = \ - GEOSException.h \ - GeometricShapeFactory.h \ - IllegalArgumentException.h \ - TopologyException.h - -noinst_HEADERS = \ Assert.h \ AssertionFailedException.h \ CoordinateArrayFilter.h \ + GeometricShapeFactory.h \ + GEOSException.h \ + IllegalArgumentException.h \ + math.h \ + TopologyException.h \ UniqueCoordinateArrayFilter.h \ - UnsupportedOperationException.h \ - math.h + UnsupportedOperationException.h + diff -Nru geos-3.1.0/source/headers/geos/util/Makefile.in geos-3.2.2/source/headers/geos/util/Makefile.in --- geos-3.1.0/source/headers/geos/util/Makefile.in 2009-03-11 19:13:54.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,20 +19,12 @@ #EXTRA_DIST = -# Notes: -# -# TopologyException.h needed by BinaryOp.h -# We keep IllegalArgumentException.h as a facility (see doc/example.cpp) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -47,11 +40,16 @@ host_triplet = @host@ target_triplet = @target@ subdir = source/headers/geos/util -DIST_COMMON = $(geos_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \ +DIST_COMMON = $(geos_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -60,6 +58,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; @@ -67,17 +66,29 @@ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(geosdir)" -geosHEADERS_INSTALL = $(INSTALL_HEADER) -HEADERS = $(geos_HEADERS) $(noinst_HEADERS) +HEADERS = $(geos_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -105,21 +116,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -128,20 +135,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -162,6 +177,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -173,19 +189,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -197,50 +207,61 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ geosdir = $(includedir)/geos/util geos_HEADERS = \ - GEOSException.h \ - GeometricShapeFactory.h \ - IllegalArgumentException.h \ - TopologyException.h - -noinst_HEADERS = \ Assert.h \ AssertionFailedException.h \ CoordinateArrayFilter.h \ + GeometricShapeFactory.h \ + GEOSException.h \ + IllegalArgumentException.h \ + math.h \ + TopologyException.h \ UniqueCoordinateArrayFilter.h \ - UnsupportedOperationException.h \ - math.h + UnsupportedOperationException.h all: all-am @@ -249,14 +270,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/util/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/geos/util/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/geos/util/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/geos/util/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -274,106 +295,113 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-geosHEADERS: $(geos_HEADERS) @$(NORMAL_INSTALL) - test -z "$(geosdir)" || $(mkdir_p) "$(DESTDIR)$(geosdir)" - @list='$(geos_HEADERS)'; for p in $$list; do \ + test -z "$(geosdir)" || $(MKDIR_P) "$(DESTDIR)$(geosdir)" + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(geosHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(geosdir)/$$f'"; \ - $(geosHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(geosdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(geosdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(geosdir)" || exit $$?; \ done uninstall-geosHEADERS: @$(NORMAL_UNINSTALL) - @list='$(geos_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(geosdir)/$$f'"; \ - rm -f "$(DESTDIR)$(geosdir)/$$f"; \ - done + @list='$(geos_HEADERS)'; test -n "$(geosdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(geosdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(geosdir)" && rm -f $$files 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -382,7 +410,7 @@ all-am: Makefile $(HEADERS) installdirs: for dir in "$(DESTDIR)$(geosdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -404,6 +432,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -414,8 +443,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-am @@ -423,18 +451,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: install-geosHEADERS +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -453,19 +501,23 @@ ps-am: -uninstall-am: uninstall-geosHEADERS uninstall-info-am +uninstall-am: uninstall-geosHEADERS + +.MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libtool ctags distclean 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-geosHEADERS install-info install-info-am install-man \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-geosHEADERS install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-geosHEADERS \ - uninstall-info-am + tags uninstall uninstall-am uninstall-geosHEADERS + # 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. diff -Nru geos-3.1.0/source/headers/geos/util/TopologyException.h geos-3.2.2/source/headers/geos/util/TopologyException.h --- geos-3.1.0/source/headers/geos/util/TopologyException.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/TopologyException.h 2009-12-14 15:23:12.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TopologyException.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TopologyException.h 2824 2009-12-14 15:23:12Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_UTIL_TOPOLOGYEXCEPTION_H #define GEOS_UTIL_TOPOLOGYEXCEPTION_H +#include #include #include // to be removed when .inl is available @@ -32,7 +33,7 @@ * Indicates an invalid or inconsistent topological situation encountered * during processing */ -class TopologyException: public GEOSException { +class GEOS_DLL TopologyException: public GEOSException { public: TopologyException() : @@ -46,7 +47,7 @@ TopologyException(const std::string& msg, const geom::Coordinate& newPt) : - GEOSException("TopologyException", msg+" "+newPt.toString()), + GEOSException("TopologyException", msg + " at " + newPt.toString()), pt(newPt) {} diff -Nru geos-3.1.0/source/headers/geos/util/UniqueCoordinateArrayFilter.h geos-3.2.2/source/headers/geos/util/UniqueCoordinateArrayFilter.h --- geos-3.1.0/source/headers/geos/util/UniqueCoordinateArrayFilter.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/UniqueCoordinateArrayFilter.h 2009-12-03 19:57:24.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: UniqueCoordinateArrayFilter.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: UniqueCoordinateArrayFilter.h 2786 2009-12-03 19:57:24Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,7 @@ #ifndef GEOS_UTIL_UNIQUECOORDINATEARRAYFILTER_H #define GEOS_UTIL_UNIQUECOORDINATEARRAYFILTER_H +#include #include #include #include @@ -34,12 +35,8 @@ * * Last port: util/UniqueCoordinateArrayFilter.java rev. 1.17 */ -class UniqueCoordinateArrayFilter: public geom::CoordinateFilter { - -private: - geom::Coordinate::ConstVect &pts; // target set reference - geom::Coordinate::ConstSet uniqPts; // unique points set - +class GEOS_DLL UniqueCoordinateArrayFilter: public geom::CoordinateFilter +{ public: /** * Constructs a CoordinateArrayFilter. @@ -69,8 +66,15 @@ { pts.push_back(coord); } - } + } + +private: + geom::Coordinate::ConstVect &pts; // target set reference + geom::Coordinate::ConstSet uniqPts; // unique points set + // Declare type as noncopyable + UniqueCoordinateArrayFilter(const UniqueCoordinateArrayFilter& other); + UniqueCoordinateArrayFilter& operator=(const UniqueCoordinateArrayFilter& rhs); }; } // namespace geos::util diff -Nru geos-3.1.0/source/headers/geos/util/UnsupportedOperationException.h geos-3.2.2/source/headers/geos/util/UnsupportedOperationException.h --- geos-3.1.0/source/headers/geos/util/UnsupportedOperationException.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util/UnsupportedOperationException.h 2009-06-06 23:22:28.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: UnsupportedOperationException.h 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: UnsupportedOperationException.h 2556 2009-06-06 22:22:28Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -17,6 +17,8 @@ #ifndef GEOS_UTIL_UNSUPPORTEDOPERATIONEXCEPTION_H #define GEOS_UTIL_UNSUPPORTEDOPERATIONEXCEPTION_H +#include + #include #include diff -Nru geos-3.1.0/source/headers/geos/util.h geos-3.2.2/source/headers/geos/util.h --- geos-3.1.0/source/headers/geos/util.h 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/util.h 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: util.h 2160 2008-08-18 16:27:58Z mloskot $ + * $Id: util.h 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -36,8 +36,11 @@ // Private macros definition // -#ifndef UNREFERENCED_PARAMETER -#define UNREFERENCED_PARAMETER(p) ((void)p) -#endif +namespace geos +{ + template + void ignore_unused_variable_warning(T const& ) {} +} + #endif // GEOS_UTIL_H diff -Nru geos-3.1.0/source/headers/geos/version.h geos-3.2.2/source/headers/geos/version.h --- geos-3.1.0/source/headers/geos/version.h 2009-03-11 19:14:35.000000000 +0000 +++ geos-3.2.2/source/headers/geos/version.h 2010-04-18 16:08:28.000000000 +0100 @@ -20,19 +20,19 @@ #endif #ifndef GEOS_VERSION_MINOR -#define GEOS_VERSION_MINOR 1 +#define GEOS_VERSION_MINOR 2 #endif #ifndef GEOS_VERSION_PATCH -#define GEOS_VERSION_PATCH 0 +#define GEOS_VERSION_PATCH 2 #endif #ifndef GEOS_VERSION -#define GEOS_VERSION "3.1.0" +#define GEOS_VERSION "3.2.2" #endif #ifndef GEOS_JTS_PORT -#define GEOS_JTS_PORT "1.7.1" +#define GEOS_JTS_PORT "1.10.0" #endif #endif // GEOS_VERSION_H_INCLUDED diff -Nru geos-3.1.0/source/headers/geos/version.h.vc geos-3.2.2/source/headers/geos/version.h.vc --- geos-3.1.0/source/headers/geos/version.h.vc 2009-03-10 16:18:00.000000000 +0000 +++ geos-3.2.2/source/headers/geos/version.h.vc 2010-04-17 22:55:53.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: version.h.vc 2141 2008-07-26 20:47:29Z mloskot $ + * $Id: version.h.vc 2975 2010-04-17 21:55:53Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -31,19 +31,19 @@ #endif #ifndef GEOS_VERSION_MINOR -#define GEOS_VERSION_MINOR 1 +#define GEOS_VERSION_MINOR 2 #endif #ifndef GEOS_VERSION_PATCH -#define GEOS_VERSION_PATCH 0 +#define GEOS_VERSION_PATCH 2 #endif #ifndef GEOS_VERSION -#define GEOS_VERSION "3.1.0" +#define GEOS_VERSION "3.2.2" #endif #ifndef GEOS_JTS_PORT -#define GEOS_JTS_PORT "1.7.1" +#define GEOS_JTS_PORT "1.10.0" #endif #endif // GEOS_VERSION_H_INCLUDED diff -Nru geos-3.1.0/source/headers/Makefile.in geos-3.2.2/source/headers/Makefile.in --- geos-3.1.0/source/headers/Makefile.in 2009-03-11 19:13:37.000000000 +0000 +++ geos-3.2.2/source/headers/Makefile.in 2010-04-18 16:08:09.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -43,6 +41,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,31 +54,75 @@ CONFIG_HEADER = config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(includedir)" -includeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(include_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -103,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -126,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -160,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -171,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -195,36 +241,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ geos @@ -239,14 +298,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/headers/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/headers/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/headers/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -264,18 +323,19 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ - $(MAKE) stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status source/headers/config.h $(srcdir)/config.h.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ @@ -287,27 +347,26 @@ clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) - test -z "$(includedir)" || $(mkdir_p) "$(DESTDIR)$(includedir)" - @list='$(include_HEADERS)'; for p in $$list; do \ + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ - $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) - @list='$(include_HEADERS)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ - rm -f "$(DESTDIR)$(includedir)/$$f"; \ - done + @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(includedir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(includedir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -333,15 +392,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -368,16 +426,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -385,14 +443,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -404,81 +462,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ list='$(SOURCES) $(HEADERS) config.h.in $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -489,7 +567,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -511,6 +589,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -521,8 +600,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive @@ -530,18 +608,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-includeHEADERS +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -560,24 +658,26 @@ ps-am: -uninstall-am: uninstall-includeHEADERS uninstall-info-am +uninstall-am: uninstall-includeHEADERS -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-recursive 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 \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ - install-man install-strip installcheck installcheck-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-includeHEADERS \ - uninstall-info-am + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-includeHEADERS + # 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. diff -Nru geos-3.1.0/source/index/bintree/Bintree.cpp geos-3.2.2/source/index/bintree/Bintree.cpp --- geos-3.1.0/source/index/bintree/Bintree.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/bintree/Bintree.cpp 2009-05-06 17:44:06.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Bintree.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Bintree.cpp 2476 2009-05-06 16:44:06Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -25,23 +25,26 @@ using namespace std; -/** -* Ensure that the Interval for the inserted item has non-zero extents. -* Use the current minExtent to pad it, if necessary -*/ Interval* -Bintree::ensureExtent(Interval *itemInterval, double minExtent) +Bintree::ensureExtent(const Interval* itemInterval, double minExtent) { - double min=itemInterval->getMin(); - double max=itemInterval->getMax(); + double min = itemInterval->getMin(); + double max = itemInterval->getMax(); // has a non-zero extent - if (min!=max) return new Interval(itemInterval); + if (min != max) + { + // GEOS forces a copy here to be predictable wrt + // memory management. May change in the future. + return new Interval(*itemInterval); + } + // pad extent - if (min==max) { - min=min-minExtent/2.0; - max=min+minExtent/2.0; + if (min==max) + { + min = min-minExtent/2.0; + max = min+minExtent/2.0; } -// delete itemInterval; + return new Interval(min, max); } diff -Nru geos-3.1.0/source/index/bintree/Interval.cpp geos-3.2.2/source/index/bintree/Interval.cpp --- geos-3.1.0/source/index/bintree/Interval.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/bintree/Interval.cpp 2009-05-06 17:36:14.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Interval.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Interval.cpp 2475 2009-05-06 16:36:14Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -35,7 +35,7 @@ { } -Interval::Interval(Interval* interval) +Interval::Interval(const Interval* interval) { init(interval->min, interval->max); } @@ -52,19 +52,19 @@ } double -Interval::getMin() +Interval::getMin() const { return min; } double -Interval::getMax() +Interval::getMax() const { return max; } double -Interval::getWidth() +Interval::getWidth() const { return max-min; } @@ -77,32 +77,32 @@ } bool -Interval::overlaps(Interval *interval) +Interval::overlaps(const Interval *interval) const { return overlaps(interval->min,interval->max); } bool -Interval::overlaps(double nmin, double nmax) +Interval::overlaps(double nmin, double nmax) const { if (min>nmax || maxmin,interval->max); } bool -Interval::contains(double nmin, double nmax) +Interval::contains(double nmin, double nmax) const { return (nmin>=min && nmax<=max); } bool -Interval::contains(double p) +Interval::contains(double p) const { return (p>=min && p<=max); } diff -Nru geos-3.1.0/source/index/bintree/Makefile.in geos-3.2.2/source/index/bintree/Makefile.in --- geos-3.1.0/source/index/bintree/Makefile.in 2009-03-11 19:13:55.000000000 +0000 +++ geos-3.2.2/source/index/bintree/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libindexbintree_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,22 +53,25 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libindexbintree_la_DEPENDENCIES = am_libindexbintree_la_OBJECTS = Bintree.lo Interval.lo Node.lo Key.lo \ NodeBase.lo Root.lo libindexbintree_la_OBJECTS = $(am_libindexbintree_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libindexbintree_la_SOURCES) DIST_SOURCES = $(libindexbintree_la_SOURCES) ETAGS = etags @@ -75,8 +79,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -104,21 +106,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -127,20 +125,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -161,6 +167,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -172,19 +179,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -196,36 +197,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libindexbintree.la INCLUDES = -I$(top_srcdir)/source/headers libindexbintree_la_SOURCES = \ @@ -245,14 +259,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/bintree/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/index/bintree/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/bintree/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/index/bintree/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -270,6 +284,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -280,7 +295,7 @@ rm -f "$${dir}/so_locations"; \ done libindexbintree.la: $(libindexbintree_la_OBJECTS) $(libindexbintree_la_DEPENDENCIES) - $(CXXLINK) $(libindexbintree_la_LDFLAGS) $(libindexbintree_la_OBJECTS) $(libindexbintree_la_LIBADD) $(LIBS) + $(CXXLINK) $(libindexbintree_la_OBJECTS) $(libindexbintree_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -296,22 +311,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Root.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -322,82 +337,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -425,6 +443,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -438,7 +457,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -446,18 +465,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -478,19 +517,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/index/chain/Makefile.in geos-3.2.2/source/index/chain/Makefile.in --- geos-3.1.0/source/index/chain/Makefile.in 2009-03-11 19:13:56.000000000 +0000 +++ geos-3.2.2/source/index/chain/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libindexchain_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,22 +53,25 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libindexchain_la_LIBADD = am_libindexchain_la_OBJECTS = MonotoneChain.lo MonotoneChainBuilder.lo \ MonotoneChainOverlapAction.lo MonotoneChainSelectAction.lo libindexchain_la_OBJECTS = $(am_libindexchain_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libindexchain_la_SOURCES) DIST_SOURCES = $(libindexchain_la_SOURCES) ETAGS = etags @@ -75,8 +79,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -104,21 +106,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -127,20 +125,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -161,6 +167,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -172,19 +179,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -196,36 +197,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libindexchain.la INCLUDES = -I$(top_srcdir)/source/headers libindexchain_la_SOURCES = \ @@ -242,14 +256,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/chain/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/index/chain/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/chain/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/index/chain/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -267,6 +281,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -277,7 +292,7 @@ rm -f "$${dir}/so_locations"; \ done libindexchain.la: $(libindexchain_la_OBJECTS) $(libindexchain_la_DEPENDENCIES) - $(CXXLINK) $(libindexchain_la_LDFLAGS) $(libindexchain_la_OBJECTS) $(libindexchain_la_LIBADD) $(LIBS) + $(CXXLINK) $(libindexchain_la_OBJECTS) $(libindexchain_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -291,22 +306,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MonotoneChainSelectAction.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -317,82 +332,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -420,6 +438,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -433,7 +452,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -441,18 +460,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -473,19 +512,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/index/chain/MonotoneChainBuilder.cpp geos-3.2.2/source/index/chain/MonotoneChainBuilder.cpp --- geos-3.1.0/source/index/chain/MonotoneChainBuilder.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/chain/MonotoneChainBuilder.cpp 2009-06-04 16:01:08.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MonotoneChainBuilder.cpp 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: MonotoneChainBuilder.cpp 2538 2009-06-04 15:01:08Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/chain/MonotoneChainBuilder.java rev 1.12 (JTS-1.10) + * **********************************************************************/ #include @@ -18,6 +22,7 @@ #include #include +#include #include #include @@ -51,77 +56,87 @@ MonotoneChainBuilder::getChains(const CoordinateSequence* pts, void* context, vector& mcList) { - vector startIndex; - getChainStartIndices(pts, startIndex); + vector startIndex; + getChainStartIndices(*pts, startIndex); size_t nindexes = startIndex.size(); if (nindexes > 0) { size_t n = nindexes - 1; for(size_t i = 0; i < n; i++) { - MonotoneChain* mc = new MonotoneChain(pts, startIndex[i], startIndex[i+1], context); + MonotoneChain* mc = new MonotoneChain(*pts, startIndex[i], startIndex[i+1], context); mcList.push_back(mc); } } } -/** - * Return an array containing lists of start/end indexes of the monotone chains - * for the given list of coordinates. - * The last entry in the array points to the end point of the point array, - * for use as a sentinel. - */ +/* static public */ void -MonotoneChainBuilder::getChainStartIndices(const CoordinateSequence *pts, - vector& startIndexList) +MonotoneChainBuilder::getChainStartIndices(const CoordinateSequence& pts, + vector& startIndexList) { // find the startpoint (and endpoints) of all monotone chains // in this edge - int start = 0; + size_t start = 0; startIndexList.push_back(start); - const std::size_t n = pts->getSize() - 1; + const size_t n = pts.getSize() - 1; do - { - int last = findChainEnd(pts, start); + { + size_t last = findChainEnd(pts, start); startIndexList.push_back(last); start = last; - } while (static_cast(start) < n); + } while (start < n); } -/** - * @return the index of the last point in the monotone chain starting - * at start. - */ -int -MonotoneChainBuilder::findChainEnd(const CoordinateSequence *pts, int start) +/* private static */ +size_t +MonotoneChainBuilder::findChainEnd(const CoordinateSequence& pts, size_t start) { - std::size_t npts = pts->getSize(); - // skip any zero-length segments at start of sequence - while ( pts->getAt( start).equals2D( pts->getAt( start + 1) ) ) - if ( ++start >= ( npts - 1 ) ) - // bail if there are no non-zero-length segments - return npts - 1; - - // determine quadrant for chain - int chainQuad=Quadrant::quadrant(pts->getAt(start),pts->getAt(start + 1)); - std::size_t last=start+1; + const size_t npts = pts.getSize(); // cache + + assert(start < npts); + assert(npts); // should be implied by the assertion above, + // 'start' being unsigned + + size_t safeStart = start; + + // skip any zero-length segments at the start of the sequence + // (since they cannot be used to establish a quadrant) + while ( safeStart < npts - 1 + && pts[safeStart].equals2D(pts[safeStart+1]) ) + { + ++safeStart; + } + + // check if there are NO non-zero-length segments + if (safeStart >= npts - 1) { + return npts - 1; + } + + // determine overall quadrant for chain + // (which is the starting quadrant) + int chainQuad = Quadrant::quadrant(pts[safeStart], + pts[safeStart + 1]); + size_t last = start + 1; while (last < npts) { - // skip a zero-length segnments - if (! pts->getAt( last - 1).equals2D( pts->getAt( last) ) ) + // skip zero-length segments, but include them in the chain + if (! pts[last - 1].equals2D( pts[last] ) ) { // compute quadrant for next possible segment in chain - int quad=Quadrant::quadrant(pts->getAt(last-1),pts->getAt(last)); - if (quad!=chainQuad) break; + int quad = Quadrant::quadrant( pts[last - 1], + pts[last] ); + if (quad != chainQuad) break; } - last++; + ++last; } #if GEOS_DEBUG std::cerr<<"MonotoneChainBuilder::findChainEnd() returning"<(last - 1); + + return last - 1; } } // namespace geos.index.chain diff -Nru geos-3.1.0/source/index/chain/MonotoneChain.cpp geos-3.2.2/source/index/chain/MonotoneChain.cpp --- geos-3.1.0/source/index/chain/MonotoneChain.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/chain/MonotoneChain.cpp 2009-05-06 18:42:58.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MonotoneChain.cpp 2194 2008-09-23 23:01:00Z mloskot $ + * $Id: MonotoneChain.cpp 2479 2009-05-06 17:42:58Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: index/chain/MonotoneChain.java rev. 1.13 (JTS-1.7) + * Last port: index/chain/MonotoneChain.java rev. 1.15 (JTS-1.10) * **********************************************************************/ @@ -31,9 +31,15 @@ namespace index { // geos.index namespace chain { // geos.index.chain -MonotoneChain::MonotoneChain(const geom::CoordinateSequence *newPts, - int nstart, int nend, void* nContext) -: pts(newPts), env(0), context(nContext), start(nstart), end(nend), id(-1) +MonotoneChain::MonotoneChain(const geom::CoordinateSequence& newPts, + size_t nstart, size_t nend, void* nContext) + : + pts(newPts), + env(0), + context(nContext), + start(nstart), + end(nend), + id(-1) { } @@ -42,49 +48,45 @@ delete env; } -Envelope* -MonotoneChain::getEnvelope() +const Envelope& +MonotoneChain::getEnvelope() const { if (0 == env) { - const Coordinate& p0 = pts->getAt(start); - const Coordinate& p1 = pts->getAt(end); + const Coordinate& p0 = pts[start]; + const Coordinate& p1 = pts[end]; env = new Envelope(p0, p1); } - return env; + return *env; } void -MonotoneChain::getLineSegment(unsigned int index, LineSegment *ls) +MonotoneChain::getLineSegment(size_t index, LineSegment& ls) const { - ls->p0=pts->getAt(index); - ls->p1=pts->getAt(index+1); + ls.p0 = pts[index]; + ls.p1 = pts[index+1]; } -/** -* Return the subsequence of coordinates forming this chain. -* Allocates a new array to hold the Coordinates -*/ -CoordinateSequence* -MonotoneChain::getCoordinates() +std::auto_ptr +MonotoneChain::getCoordinates() const { - return pts->clone(); + return std::auto_ptr(pts.clone()); } void MonotoneChain::select(const Envelope& searchEnv, MonotoneChainSelectAction& mcs) { - computeSelect(searchEnv,start,end,mcs); + computeSelect(searchEnv, start, end, mcs); } void MonotoneChain::computeSelect(const Envelope& searchEnv, - unsigned int start0, unsigned int end0, + size_t start0, size_t end0, MonotoneChainSelectAction& mcs ) { - const Coordinate& p0=pts->getAt(start0); - const Coordinate& p1=pts->getAt(end0); - mcs.tempEnv1->init(p0,p1); + const Coordinate& p0=pts[start0]; + const Coordinate& p1=pts[end0]; + mcs.tempEnv1.init(p0,p1); //Debug.println("trying:"+p0+p1+" [ "+start0+","+end0+" ]"); // terminating condition for the recursion @@ -113,37 +115,42 @@ } } +/* public */ void -MonotoneChain::computeOverlaps(MonotoneChain *mc, MonotoneChainOverlapAction *mco) +MonotoneChain::computeOverlaps(MonotoneChain *mc, + MonotoneChainOverlapAction *mco) { - computeOverlaps(start,end,mc,mc->start,mc->end,mco); + computeOverlaps(start, end, *mc, mc->start, mc->end, *mco); } +/*private*/ void -MonotoneChain::computeOverlaps(int start0, int end0, MonotoneChain *mc, - int start1, int end1, MonotoneChainOverlapAction *mco) +MonotoneChain::computeOverlaps(size_t start0, size_t end0, + MonotoneChain& mc, + size_t start1, size_t end1, + MonotoneChainOverlapAction& mco) { //Debug.println("computeIntersectsForChain:"+p00+p01+p10+p11); // terminating condition for the recursion if (end0-start0==1 && end1-start1==1) { - mco->overlap(this,start0,mc,start1); + mco.overlap(*this, start0, mc, start1); return; } - const Coordinate& p00=pts->getAt(start0); - const Coordinate& p01=pts->getAt(end0); - const Coordinate& p10=mc->pts->getAt(start1); - const Coordinate& p11=mc->pts->getAt(end1); + const Coordinate& p00 = pts[start0]; + const Coordinate& p01 = pts[end0]; + const Coordinate& p10 = mc.pts[start1]; + const Coordinate& p11 = mc.pts[end1]; // nothing to do if the envelopes of these chains don't overlap - mco->tempEnv1->init(p00,p01); - mco->tempEnv2->init(p10,p11); - if (!mco->tempEnv1->intersects(mco->tempEnv2)) return; + mco.tempEnv1.init(p00, p01); + mco.tempEnv2.init(p10, p11); + if (!mco.tempEnv1.intersects(mco.tempEnv2)) return; // the chains overlap,so split each in half and iterate (binary search) - int mid0=(start0+end0)/2; - int mid1=(start1+end1)/2; + size_t mid0=(start0+end0)/2; + size_t mid1=(start1+end1)/2; // Assert: mid != start or end (since we checked above for // end-start <= 1) @@ -151,17 +158,17 @@ if (start0 @@ -25,32 +29,13 @@ namespace index { // geos.index namespace chain { // geos.index.chain -MonotoneChainOverlapAction::MonotoneChainOverlapAction() { - overlapSeg1=new geom::LineSegment(); - overlapSeg2=new geom::LineSegment(); - tempEnv1=new geom::Envelope(); - tempEnv2=new geom::Envelope(); - -} - -MonotoneChainOverlapAction::~MonotoneChainOverlapAction() { - delete overlapSeg1; - delete overlapSeg2; - delete tempEnv1; - delete tempEnv2; -} - - -/** - * This function can be overridden if the original chains are needed - */ void -MonotoneChainOverlapAction::overlap(MonotoneChain *mc1, int start1, - MonotoneChain *mc2, int start2) +MonotoneChainOverlapAction::overlap(MonotoneChain& mc1, size_t start1, + MonotoneChain& mc2, size_t start2) { - mc1->getLineSegment(start1,overlapSeg1); - mc2->getLineSegment(start2,overlapSeg2); - overlap(overlapSeg1,overlapSeg2); + mc1.getLineSegment(start1, overlapSeg1); + mc2.getLineSegment(start2, overlapSeg2); + overlap(overlapSeg1, overlapSeg2); } } // namespace geos.index.chain diff -Nru geos-3.1.0/source/index/chain/MonotoneChainSelectAction.cpp geos-3.2.2/source/index/chain/MonotoneChainSelectAction.cpp --- geos-3.1.0/source/index/chain/MonotoneChainSelectAction.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/chain/MonotoneChainSelectAction.cpp 2009-05-06 18:10:01.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MonotoneChainSelectAction.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MonotoneChainSelectAction.cpp 2477 2009-05-06 17:10:01Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/chain/MonotoneChainSelectAction.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #include @@ -24,22 +28,11 @@ namespace index { // geos.index namespace chain { // geos.index.chain -MonotoneChainSelectAction::MonotoneChainSelectAction() -{ - selectedSegment=new geom::LineSegment(); - tempEnv1=new geom::Envelope(); -} - -MonotoneChainSelectAction::~MonotoneChainSelectAction() -{ - delete selectedSegment; - delete tempEnv1; -} - void MonotoneChainSelectAction::select(MonotoneChain& mc, unsigned int start) { mc.getLineSegment(start, selectedSegment); + select(selectedSegment); } diff -Nru geos-3.1.0/source/index/intervalrtree/Makefile.in geos-3.2.2/source/index/intervalrtree/Makefile.in --- geos-3.1.0/source/index/intervalrtree/Makefile.in 2009-03-11 19:13:56.000000000 +0000 +++ geos-3.2.2/source/index/intervalrtree/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libintervalrtree_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,23 +53,26 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libintervalrtree_la_LIBADD = am_libintervalrtree_la_OBJECTS = IntervalRTreeBranchNode.lo \ IntervalRTreeLeafNode.lo IntervalRTreeNode.lo \ SortedPackedIntervalRTree.lo libintervalrtree_la_OBJECTS = $(am_libintervalrtree_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libintervalrtree_la_SOURCES) DIST_SOURCES = $(libintervalrtree_la_SOURCES) ETAGS = etags @@ -76,8 +80,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -105,21 +107,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -128,20 +126,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -162,6 +168,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -173,19 +180,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -197,36 +198,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libintervalrtree.la INCLUDES = -I$(top_srcdir)/source/headers libintervalrtree_la_SOURCES = \ @@ -243,14 +257,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/intervalrtree/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/index/intervalrtree/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/intervalrtree/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/index/intervalrtree/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -268,6 +282,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -278,7 +293,7 @@ rm -f "$${dir}/so_locations"; \ done libintervalrtree.la: $(libintervalrtree_la_OBJECTS) $(libintervalrtree_la_DEPENDENCIES) - $(CXXLINK) $(libintervalrtree_la_LDFLAGS) $(libintervalrtree_la_OBJECTS) $(libintervalrtree_la_LIBADD) $(LIBS) + $(CXXLINK) $(libintervalrtree_la_OBJECTS) $(libintervalrtree_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -292,22 +307,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SortedPackedIntervalRTree.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -318,82 +333,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -421,6 +439,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -434,7 +453,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -442,18 +461,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -474,19 +513,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/index/intervalrtree/SortedPackedIntervalRTree.cpp geos-3.2.2/source/index/intervalrtree/SortedPackedIntervalRTree.cpp --- geos-3.1.0/source/index/intervalrtree/SortedPackedIntervalRTree.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/intervalrtree/SortedPackedIntervalRTree.cpp 2009-12-03 19:23:05.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SortedPackedIntervalRTree.cpp 2161 2008-08-18 16:29:09Z mloskot $ + * $Id: SortedPackedIntervalRTree.cpp 2768 2009-12-03 19:23:05Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -22,6 +22,10 @@ #include +#ifdef _MSC_VER +#pragma warning(disable : 4127) +#endif + namespace geos { namespace index { namespace intervalrtree { @@ -99,8 +103,9 @@ // public: // SortedPackedIntervalRTree::SortedPackedIntervalRTree() -: root( NULL), + : leaves( new IntervalRTreeNode::ConstVect()), + root( NULL), level( 0) { } diff -Nru geos-3.1.0/source/index/Makefile.in geos-3.2.2/source/index/Makefile.in --- geos-3.1.0/source/index/Makefile.in 2009-03-11 19:13:55.000000000 +0000 +++ geos-3.2.2/source/index/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libindex_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,6 +53,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libindex_la_DEPENDENCIES = bintree/libindexbintree.la \ chain/libindexchain.la intervalrtree/libintervalrtree.la \ @@ -59,31 +61,61 @@ sweepline/libindexsweepline.la am_libindex_la_OBJECTS = libindex_la_OBJECTS = $(am_libindex_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libindex_la_SOURCES) DIST_SOURCES = $(libindex_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -111,21 +143,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -134,20 +162,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -168,6 +204,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -179,19 +216,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -203,36 +234,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ bintree \ chain \ @@ -258,14 +302,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/index/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/index/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -283,6 +327,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -293,7 +338,7 @@ rm -f "$${dir}/so_locations"; \ done libindex.la: $(libindex_la_OBJECTS) $(libindex_la_DEPENDENCIES) - $(LINK) $(libindex_la_LDFLAGS) $(libindex_la_OBJECTS) $(libindex_la_LIBADD) $(LIBS) + $(LINK) $(libindex_la_OBJECTS) $(libindex_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -307,10 +352,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -335,15 +376,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -370,16 +410,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -387,14 +427,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -406,81 +446,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -510,6 +570,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -522,7 +583,7 @@ distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -530,18 +591,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -561,23 +642,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/index/quadtree/DoubleBits.cpp geos-3.2.2/source/index/quadtree/DoubleBits.cpp --- geos-3.1.0/source/index/quadtree/DoubleBits.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/DoubleBits.cpp 2009-04-27 16:00:53.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DoubleBits.cpp 2143 2008-07-26 23:06:11Z mloskot $ + * $Id: DoubleBits.cpp 2409 2009-04-27 15:00:53Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: index/quadtree/DoubleBits.java rev. 1.7 (JTS-1.7.1) + * Last port: index/quadtree/DoubleBits.java rev. 1.7 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/index/quadtree/IntervalSize.cpp geos-3.2.2/source/index/quadtree/IntervalSize.cpp --- geos-3.1.0/source/index/quadtree/IntervalSize.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/IntervalSize.cpp 2009-04-27 16:39:42.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IntervalSize.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IntervalSize.cpp 2411 2009-04-27 15:39:42Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/quadtree/IntervalSize.java rev 1.7 (JTS-1.10) + * **********************************************************************/ #include @@ -26,13 +30,17 @@ namespace index { // geos.index namespace quadtree { // geos.index.quadtree -bool IntervalSize::isZeroWidth(double mn,double mx){ - double width=mx-mn; - if (width==0.0) return true; - double maxAbs=max(fabs(mn),fabs(mx)); - double scaledInterval=width/maxAbs; - int level=DoubleBits::exponent(scaledInterval); - return level<=MIN_BINARY_EXPONENT; +/* public static */ +bool +IntervalSize::isZeroWidth(double mn, double mx) +{ + double width = mx - mn; + if (width == 0.0) return true; + + double maxAbs = max(fabs(mn), fabs(mx)); + double scaledInterval = width / maxAbs; + int level = DoubleBits::exponent(scaledInterval); + return level <= MIN_BINARY_EXPONENT; } } // namespace geos.index.quadtree diff -Nru geos-3.1.0/source/index/quadtree/Key.cpp geos-3.2.2/source/index/quadtree/Key.cpp --- geos-3.1.0/source/index/quadtree/Key.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/Key.cpp 2009-04-25 01:23:06.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: Key.cpp 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: Key.cpp 2407 2009-04-25 00:23:06Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * @@ -12,6 +13,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/quadtree/Key.java rev 1.8 (JTS-1.10) + * **********************************************************************/ #include @@ -35,12 +40,13 @@ namespace index { // geos.index namespace quadtree { // geos.index.quadtree +/* static public */ int -Key::computeQuadLevel(Envelope *env) +Key::computeQuadLevel(const Envelope& env) { - double dx=env->getWidth(); - double dy=env->getHeight(); - double dMax=dx>dy?dx:dy; + double dx = env.getWidth(); + double dy = env.getHeight(); + double dMax = dx > dy ? dx : dy; int level=DoubleBits::exponent(dMax)+1; #if GEOS_DEBUG std::cerr<<"Maxdelta:"<getMinX()+env->getMaxX())/2, - (env->getMinY()+env->getMaxY())/2); + ( env.getMinX() + env.getMaxX() ) / 2, + ( env.getMinY() + env.getMaxY() ) / 2 + ); } -/** - * return a square envelope containing the argument envelope, - * whose extent is a power of two and which is based at a power of 2 - */ -void Key::computeKey(Envelope *itemEnv) { +/*public*/ +void +Key::computeKey(const Envelope& itemEnv) +{ level=computeQuadLevel(itemEnv); - env=new Envelope(); - computeKey(level,itemEnv); + env.init(); // reset to null + computeKey(level, itemEnv); // MD - would be nice to have a non-iterative form of this algorithm - while (!env->contains(itemEnv)) { + while (!env.contains(itemEnv)) { level+=1; - computeKey(level,itemEnv); + computeKey(level, itemEnv); } #if GEOS_DEBUG std::cerr<<"Key::computeKey:"<toString()<toString()<x=std::floor(itemEnv->getMinX()/quadSize)*quadSize; - pt->y=std::floor(itemEnv->getMinY()/quadSize)*quadSize; - env->init(pt->x,pt->x+quadSize,pt->y,pt->y+quadSize); + pt.x = std::floor(itemEnv.getMinX()/quadSize)*quadSize; + pt.y = std::floor(itemEnv.getMinY()/quadSize)*quadSize; + env.init(pt.x, pt.x + quadSize, pt.y, pt.y + quadSize); } } // namespace geos.index.quadtree diff -Nru geos-3.1.0/source/index/quadtree/Makefile.in geos-3.2.2/source/index/quadtree/Makefile.in --- geos-3.1.0/source/index/quadtree/Makefile.in 2009-03-11 19:13:56.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libindexquadtree_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,22 +53,25 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libindexquadtree_la_LIBADD = am_libindexquadtree_la_OBJECTS = DoubleBits.lo IntervalSize.lo \ Quadtree.lo Key.lo Node.lo NodeBase.lo Root.lo libindexquadtree_la_OBJECTS = $(am_libindexquadtree_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libindexquadtree_la_SOURCES) DIST_SOURCES = $(libindexquadtree_la_SOURCES) ETAGS = etags @@ -75,8 +79,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -104,21 +106,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -127,20 +125,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -161,6 +167,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -172,19 +179,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -196,36 +197,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libindexquadtree.la INCLUDES = -I$(top_srcdir)/source/headers libindexquadtree_la_SOURCES = \ @@ -245,14 +259,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/quadtree/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/index/quadtree/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/index/quadtree/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/index/quadtree/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -270,6 +284,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -280,7 +295,7 @@ rm -f "$${dir}/so_locations"; \ done libindexquadtree.la: $(libindexquadtree_la_OBJECTS) $(libindexquadtree_la_DEPENDENCIES) - $(CXXLINK) $(libindexquadtree_la_LDFLAGS) $(libindexquadtree_la_OBJECTS) $(libindexquadtree_la_LIBADD) $(LIBS) + $(CXXLINK) $(libindexquadtree_la_OBJECTS) $(libindexquadtree_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -297,22 +312,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Root.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -323,82 +338,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -426,6 +444,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -439,7 +458,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -447,18 +466,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -479,19 +518,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/index/quadtree/NodeBase.cpp geos-3.2.2/source/index/quadtree/NodeBase.cpp --- geos-3.1.0/source/index/quadtree/NodeBase.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/NodeBase.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodeBase.cpp 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: NodeBase.cpp 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/quadtree/NodeBase.java rev 1.9 (JTS-1.10) + * **********************************************************************/ #include @@ -58,15 +62,16 @@ return subnodeIndex; } -NodeBase::NodeBase() { - items=new vector(); - subnode[0]=NULL; - subnode[1]=NULL; - subnode[2]=NULL; - subnode[3]=NULL; +NodeBase::NodeBase() +{ + subnode[0]=0; + subnode[1]=0; + subnode[2]=0; + subnode[3]=0; } -NodeBase::~NodeBase() { +NodeBase::~NodeBase() +{ delete subnode[0]; delete subnode[1]; delete subnode[2]; @@ -75,27 +80,33 @@ subnode[1]=NULL; subnode[2]=NULL; subnode[3]=NULL; - delete items; } -vector* NodeBase::getItems() { +vector& +NodeBase::getItems() +{ return items; } -void NodeBase::add(void* item) { - items->push_back(item); +void +NodeBase::add(void* item) +{ + items.push_back(item); //GEOS_DEBUG itemCount++; //GEOS_DEBUG System.out.print(itemCount); } -vector* -NodeBase::addAllItems(vector *resultItems) +vector& +NodeBase::addAllItems(vector& resultItems) const { - //<> Can we assert that this node cannot have both items - //and subnodes? [Jon Aquino] - resultItems->insert(resultItems->end(),items->begin(),items->end()); - for(int i=0;i<4;i++) { - if (subnode[i]!=NULL) { + // this node may have items as well as subnodes (since items may not + // be wholely contained in any single subnode + resultItems.insert(resultItems.end(), items.begin(), items.end()); + + for(int i=0; i<4; ++i) + { + if ( subnode[i] ) + { subnode[i]->addAllItems(resultItems); } } @@ -103,65 +114,78 @@ } void -NodeBase::addAllItemsFromOverlapping(const Envelope *searchEnv, vector *resultItems) +NodeBase::addAllItemsFromOverlapping(const Envelope& searchEnv, + vector& resultItems) const { if (!isSearchMatch(searchEnv)) return; - //<> Can we assert that this node cannot have both items - //and subnodes? [Jon Aquino] - resultItems->insert(resultItems->end(),items->begin(),items->end()); - for(int i=0;i<4;i++) { - if (subnode[i]!=NULL) { - subnode[i]->addAllItemsFromOverlapping(searchEnv,resultItems); + // this node may have items as well as subnodes (since items may not + // be wholely contained in any single subnode + resultItems.insert(resultItems.end(), items.begin(), items.end()); + + for(int i=0; i<4; ++i) + { + if ( subnode[i] ) + { + subnode[i]->addAllItemsFromOverlapping(searchEnv, + resultItems); } } } //<> In Samet's terminology, I think what we're returning here is //actually level+1 rather than depth. (See p. 4 of his book) [Jon Aquino] -int NodeBase::depth() { - int maxSubDepth=0; - for(int i=0;i<4;i++) { - if (subnode[i]!=NULL) { - int sqd=subnode[i]->depth(); - if (sqd>maxSubDepth) +unsigned int +NodeBase::depth() const +{ + unsigned int maxSubDepth=0; + for (int i=0; i<4; ++i) + { + if (subnode[i] != NULL) + { + unsigned int sqd=subnode[i]->depth(); + if ( sqd > maxSubDepth ) maxSubDepth=sqd; } } - return maxSubDepth+1; + return maxSubDepth + 1; } -//<> "size" is a bit generic. How about "itemCount"? [Jon Aquino] -int NodeBase::size() { - int subSize=0; - for(int i=0;i<4;i++) { - if (subnode[i]!=NULL) { - subSize+=subnode[i]->size(); +unsigned int +NodeBase::size() const +{ + unsigned int subSize=0; + for(int i=0; i<4; i++) + { + if (subnode[i] != NULL) + { + subSize += subnode[i]->size(); } } - return subSize+(int)items->size(); + return subSize + items.size(); } -//<> The Java Language Specification recommends that "Methods to -//get and set an attribute that might be thought of as a variable V should be -//named getV and setV" (6.8.3). Perhaps this and other methods should be -//renamed to "get..."? [Jon Aquino] -int NodeBase::nodeCount() { - int subSize=0; - for(int i=0;i<4;i++) { - if (subnode[i]!=NULL) { - subSize+=subnode[i]->size(); +unsigned int +NodeBase::getNodeCount() const +{ + unsigned int subSize=0; + for(int i=0; i<4; ++i) + { + if (subnode[i] != NULL) + { + subSize += subnode[i]->size(); } } - return subSize+1; + + return subSize + 1; } string NodeBase::toString() const { ostringstream s; - s<<"ITEMS:"<size()<::iterator i=items->begin(), e=items->end(); + for (vector::iterator i=items.begin(), e=items.end(); i!=e; i++) { visitor.visitItem(*i); @@ -209,16 +233,22 @@ NodeBase::remove(const Envelope* itemEnv, void* item) { // use envelope to restrict nodes scanned - if (! isSearchMatch(itemEnv)) return false; + if (! isSearchMatch(*itemEnv)) return false; bool found = false; - for (int i = 0; i < 4; i++) { - if (subnode[i] != NULL) { + for (int i = 0; i < 4; ++i) + { + if ( subnode[i] ) + { found = subnode[i]->remove(itemEnv, item); - if (found) { + if (found) + { // trim subtree if empty if (subnode[i]->isPrunable()) - subnode[i] = NULL; + { + delete subnode[i]; + subnode[i] = NULL; + } break; } } @@ -229,9 +259,9 @@ // otherwise, try and remove the item from the list of items // in this node vector::iterator foundIter = - find(items->begin(), items->end(), item); - if ( foundIter != items->end() ) { - items->erase(foundIter); + find(items.begin(), items.end(), item); + if ( foundIter != items.end() ) { + items.erase(foundIter); return true; } else { return false; diff -Nru geos-3.1.0/source/index/quadtree/Node.cpp geos-3.2.2/source/index/quadtree/Node.cpp --- geos-3.1.0/source/index/quadtree/Node.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/Node.cpp 2009-04-27 20:38:44.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Node.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Node.cpp 2415 2009-04-27 19:38:44Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/quadtree/Node.java rev 1.8 (JTS-1.10) + * **********************************************************************/ #include @@ -37,26 +41,39 @@ namespace index { // geos.index namespace quadtree { // geos.index.quadtree -Node* -Node::createNode(Envelope *env) +/* public static */ +std::auto_ptr +Node::createNode(const Envelope& env) { - Key* key=new Key(env); - Node *node=new Node(new Envelope(*(key->getEnvelope())),key->getLevel()); - delete key; + Key key(env); + + std::auto_ptr nenv ( new Envelope(key.getEnvelope()) ); + std::auto_ptr node ( + new Node(nenv, key.getLevel()) + ); return node; } -Node* -Node::createExpanded(Node *node, const Envelope *addEnv) +/* static public */ +std::auto_ptr +Node::createExpanded(std::auto_ptr node, const Envelope& addEnv) { - Envelope *expandEnv=new Envelope(*addEnv); - if (node!=NULL) expandEnv->expandToInclude(node->env); + Envelope expandEnv(addEnv); + if ( node.get() ) // should this be asserted ? + { + expandEnv.expandToInclude(node->getEnvelope()); + } + #if GEOS_DEBUG - cerr<<"Node::createExpanded computed "<toString()<insertNode(node); - delete expandEnv; + + std::auto_ptr largerNode = createNode(expandEnv); + if ( node.get() ) // should this be asserted ? + { + largerNode->insertNode(node); + } + return largerNode; } @@ -64,14 +81,17 @@ Node* Node::getNode(const Envelope *searchEnv) { - int subnodeIndex=getSubnodeIndex(searchEnv, centre); + int subnodeIndex = getSubnodeIndex(searchEnv, centre); // if subquadIndex is -1 searchEnv is not contained in a subquad - if (subnodeIndex!=-1) { + if (subnodeIndex != -1) + { // create the quad if it does not exist - Node *node=getSubnode(subnodeIndex); + Node *node = getSubnode(subnodeIndex); // recursively search the found/created quad return node->getNode(searchEnv); - } else { + } + else + { return this; } } @@ -92,36 +112,50 @@ return this; } -void Node::insertNode(Node* node) { - assert(env==NULL || env->contains(node->env)); - //System.out.println(env); - //System.out.println(quad.env); - int index=getSubnodeIndex(node->env, centre); - //System.out.println(index); - if (node->level==level-1) { - subnode[index]=node; +void +Node::insertNode(std::auto_ptr node) +{ + assert( env->contains(node->getEnvelope()) ); + + int index = getSubnodeIndex(node->getEnvelope(), centre); + + if (node->level == level-1) + { + // We take ownership of node + delete subnode[index]; + subnode[index] = node.release(); + //System.out.println("inserted"); - } else { - // the quad is not a direct child, so make a new child quad to contain it - // and recursively insert the quad - Node *childNode=createSubnode(index); + } + else + { + // the quad is not a direct child, so make a new child + // quad to contain it and recursively insert the quad + std::auto_ptr childNode ( createSubnode(index) ); + + // childNode takes ownership of node childNode->insertNode(node); - subnode[index]=childNode; + + // We take ownership of childNode + delete subnode[index]; + subnode[index] = childNode.release(); } } -/** -* get the subquad for the index. -* If it doesn't exist, create it -*/ -Node* Node::getSubnode(int index){ - if (subnode[index]==NULL) { - subnode[index]=createSubnode(index); +Node* +Node::getSubnode(int index) +{ + assert(index >=0 && index < 4); + if (subnode[index] == NULL) + { + subnode[index] = createSubnode(index).release(); } return subnode[index]; } -Node* Node::createSubnode(int index) { +std::auto_ptr +Node::createSubnode(int index) +{ // create a new subquad in the appropriate quadrant double minx=0.0; double maxx=0.0; @@ -141,21 +175,21 @@ miny=env->getMinY(); maxy=centre.y; break; - case 2: + case 2: minx=env->getMinX(); maxx=centre.x; miny=centre.y; maxy=env->getMaxY(); break; - case 3: + case 3: minx=centre.x; maxx=env->getMaxX(); miny=centre.y; maxy=env->getMaxY(); break; } - Envelope *sqEnv=new Envelope(minx,maxx,miny,maxy); - Node *node=new Node(sqEnv,level-1); + std::auto_ptr sqEnv ( new Envelope(minx,maxx,miny,maxy) ); + std::auto_ptr node ( new Node(sqEnv, level-1) ); return node; } @@ -168,6 +202,7 @@ return os.str(); } + } // namespace geos.index.quadtree } // namespace geos.index } // namespace geos diff -Nru geos-3.1.0/source/index/quadtree/Quadtree.cpp geos-3.2.2/source/index/quadtree/Quadtree.cpp --- geos-3.1.0/source/index/quadtree/Quadtree.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/Quadtree.cpp 2009-04-27 16:30:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Quadtree.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Quadtree.cpp 2410 2009-04-27 15:30:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: index/quadtree/Quadtree.java rev. 1.14 + * Last port: index/quadtree/Quadtree.java rev. 1.16 (JTS-1.10) * **********************************************************************/ @@ -71,41 +71,35 @@ { for (unsigned int i=0; idepth(); - return 0; + return root.depth(); } /*public*/ int Quadtree::size() { - assert(root!=NULL); - return root->size(); + return root.size(); } /*public*/ void Quadtree::insert(const Envelope *itemEnv, void* item) { - collectStats(itemEnv); + collectStats(*itemEnv); Envelope *insertEnv=ensureExtent(itemEnv,minExtent); if ( insertEnv != itemEnv ) newEnvelopes.push_back(insertEnv); - root->insert(insertEnv,item); + root.insert(insertEnv,item); #if GEOS_DEBUG cerr<<"Quadtree::insert("<toString()<<", "<toString()<toString()<addAllItemsFromOverlapping(searchEnv, &foundItems); + root.addAllItemsFromOverlapping(*searchEnv, foundItems); #if GEOS_DEBUG cerr<<"Quadtree::query returning "<toString()< *foundItems=new vector(); - root->addAllItems(foundItems); + root.addAllItems(*foundItems); return foundItems; } @@ -142,26 +136,29 @@ Quadtree::remove(const Envelope* itemEnv, void* item) { Envelope* posEnv = ensureExtent(itemEnv, minExtent); - return root->remove(posEnv, item); + bool ret = root.remove(posEnv, item); + if ( posEnv != itemEnv ) delete posEnv; + return ret; } /*private*/ void -Quadtree::collectStats(const Envelope *itemEnv) +Quadtree::collectStats(const Envelope& itemEnv) { - double delX=itemEnv->getWidth(); - if (delX0.0) - minExtent=delX; - double delY=itemEnv->getWidth(); - if (delY0.0) - minExtent=delY; + double delX = itemEnv.getWidth(); + if (delX < minExtent && delX > 0.0) + minExtent = delX; + + double delY = itemEnv.getHeight(); + if (delY < minExtent && delY > 0.0) + minExtent = delY; } /*public*/ string Quadtree::toString() const { - string ret = root->toString(); + string ret = root.toString(); return ret; } diff -Nru geos-3.1.0/source/index/quadtree/Root.cpp geos-3.2.2/source/index/quadtree/Root.cpp --- geos-3.1.0/source/index/quadtree/Root.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/index/quadtree/Root.cpp 2009-04-27 20:38:44.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Root.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Root.cpp 2415 2009-04-27 19:38:44Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: index/quadtree/Root.java rev 1.7 (JTS-1.10) + * **********************************************************************/ #include @@ -38,7 +42,7 @@ // the singleton root quad is centred at the origin. //Coordinate* Root::origin=new Coordinate(0.0, 0.0); -Coordinate Root::origin(0.0, 0.0); +const Coordinate Root::origin(0.0, 0.0); /*public*/ void @@ -46,11 +50,12 @@ { #if GEOS_DEBUG - std::cerr<<"("<toString()<<", "<toString()<<", "<getEnvelope()->contains(itemEnv)) { - Node *largerNode=Node::createExpanded(node,itemEnv); - //delete subnode[index]; - subnode[index]=largerNode; + if (node==NULL || !node->getEnvelope()->contains(itemEnv)) + { + std::auto_ptr snode (node); // may be NULL + node = 0; subnode[index] = 0; + + std::auto_ptr largerNode = + Node::createExpanded(snode, *itemEnv); + +#if GEOS_DEBUG + std::cerr<<"("< #include diff -Nru geos-3.1.0/source/io/Makefile.in geos-3.2.2/source/io/Makefile.in --- geos-3.1.0/source/io/Makefile.in 2009-03-11 19:13:57.000000000 +0000 +++ geos-3.2.2/source/io/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -16,17 +17,12 @@ #SUBDIRS = markup -SOURCES = $(libio_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -46,6 +42,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -54,6 +55,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libio_la_DEPENDENCIES = am_libio_la_OBJECTS = ParseException.lo StringTokenizer.lo \ @@ -61,17 +63,19 @@ WKTWriter.lo WKBReader.lo WKBWriter.lo Writer.lo Unload.lo \ CLocalizer.lo libio_la_OBJECTS = $(am_libio_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libio_la_SOURCES) DIST_SOURCES = $(libio_la_SOURCES) ETAGS = etags @@ -79,8 +83,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -108,21 +110,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -131,20 +129,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -165,6 +171,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -176,19 +183,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -200,36 +201,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = libio.la INCLUDES = -I$(top_srcdir)/source/headers libio_la_SOURCES = \ @@ -254,14 +268,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/io/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/io/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/io/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/io/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -279,6 +293,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -289,7 +304,7 @@ rm -f "$${dir}/so_locations"; \ done libio.la: $(libio_la_OBJECTS) $(libio_la_DEPENDENCIES) - $(CXXLINK) $(libio_la_LDFLAGS) $(libio_la_OBJECTS) $(libio_la_LIBADD) $(LIBS) + $(CXXLINK) $(libio_la_OBJECTS) $(libio_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -310,22 +325,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Writer.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -336,82 +351,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -439,6 +457,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -452,7 +471,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -460,18 +479,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -492,19 +531,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/io/ParseException.cpp geos-3.2.2/source/io/ParseException.cpp --- geos-3.1.0/source/io/ParseException.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/io/ParseException.cpp 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ParseException.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ParseException.cpp 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/ParseException.java rev. 1.13 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/io/StringTokenizer.cpp geos-3.2.2/source/io/StringTokenizer.cpp --- geos-3.1.0/source/io/StringTokenizer.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/io/StringTokenizer.cpp 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: StringTokenizer.cpp 2143 2008-07-26 23:06:11Z mloskot $ + * $Id: StringTokenizer.cpp 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: ORIGINAL WORK + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/io/WKBReader.cpp geos-3.2.2/source/io/WKBReader.cpp --- geos-3.1.0/source/io/WKBReader.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/io/WKBReader.cpp 2009-12-04 15:20:38.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKBReader.cpp 2227 2008-11-26 19:25:04Z pramsey $ + * $Id: WKBReader.cpp 2794 2009-12-04 15:20:38Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKBReader.java rev. 1.1 (JTS-1.7) + * **********************************************************************/ #include @@ -43,8 +47,6 @@ namespace geos { namespace io { // geos.io -string WKBReader::BAD_GEOM_TYPE_MSG = "bad geometry type encountered in "; - WKBReader::WKBReader() : factory(*(GeometryFactory::getDefaultInstance())) @@ -55,7 +57,7 @@ { static const char hex[] = "0123456789ABCDEF"; - long pos = is.tellg(); // take note of input stream get pointer + std::streampos pos = is.tellg(); // take note of input stream get pointer is.seekg(0, ios::beg); // rewind input stream char each=0; @@ -121,21 +123,27 @@ result_high = 9; break; case 'A' : + case 'a' : result_high = 10; break; case 'B' : + case 'b' : result_high = 11; break; case 'C' : + case 'c' : result_high = 12; break; case 'D' : + case 'd' : result_high = 13; break; case 'E' : + case 'e' : result_high = 14; break; case 'F' : + case 'f' : result_high = 15; break; default: @@ -175,21 +183,27 @@ result_low = 9; break; case 'A' : + case 'a' : result_low = 10; break; case 'B' : + case 'b' : result_low = 11; break; case 'C' : + case 'c' : result_low = 12; break; case 'D' : + case 'd' : result_low = 13; break; case 'E' : + case 'e' : result_low = 14; break; case 'F' : + case 'f' : result_low = 15; break; default: diff -Nru geos-3.1.0/source/io/WKBWriter.cpp geos-3.2.2/source/io/WKBWriter.cpp --- geos-3.1.0/source/io/WKBWriter.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/io/WKBWriter.cpp 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKBWriter.cpp 2228 2008-11-26 19:27:17Z pramsey $ + * $Id: WKBWriter.cpp 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKBWriter.java rev. 1.1 (JTS-1.7) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/io/WKTReader.cpp geos-3.2.2/source/io/WKTReader.cpp --- geos-3.1.0/source/io/WKTReader.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/io/WKTReader.cpp 2009-11-30 13:55:12.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKTReader.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: WKTReader.cpp 2754 2009-11-30 13:55:12Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,11 +12,16 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKTReader.java rev. 1.1 (JTS-1.7) + * **********************************************************************/ #include #include #include +#include #include #include #include @@ -57,6 +62,7 @@ WKTReader::read(const string &wellKnownText) { //auto_ptr tokenizer(new StringTokenizer(wellKnownText)); + CLocalizer clocale; StringTokenizer tokenizer(wellKnownText); Geometry *g=NULL; g=readGeometryTaggedText(&tokenizer); @@ -326,7 +332,6 @@ } err << endl; throw ParseException(err.str()); - return NULL; } } diff -Nru geos-3.1.0/source/io/WKTWriter.cpp geos-3.2.2/source/io/WKTWriter.cpp --- geos-3.1.0/source/io/WKTWriter.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/io/WKTWriter.cpp 2009-12-14 15:23:12.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: WKTWriter.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: WKTWriter.cpp 2824 2009-12-14 15:23:12Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,10 +12,15 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: io/WKTWriter.java rev. 1.34 (JTS-1.7) + * **********************************************************************/ #include #include +#include #include #include #include @@ -53,7 +58,8 @@ string WKTWriter::toLineString(const CoordinateSequence& seq) { - stringstream buf("LINESTRING ", ios_base::in|ios_base::out); + stringstream buf(ios_base::in|ios_base::out); + buf << "LINESTRING "; unsigned int npts = seq.getSize(); if ( npts == 0 ) { @@ -80,8 +86,8 @@ string WKTWriter::toLineString(const Coordinate& p0, const Coordinate& p1) { - stringstream ret("LINESTRING (", ios_base::in|ios_base::out); - ret << p0.x << " " << p0.y; + stringstream ret(ios_base::in|ios_base::out); + ret << "LINESTRING (" << p0.x << " " << p0.y; #if PRINT_Z ret << " " << p0.z; #endif @@ -89,6 +95,7 @@ #if PRINT_Z ret << " " << p1.z; #endif + ret << ")"; return ret.str(); } @@ -97,7 +104,8 @@ string WKTWriter::toPoint(const Coordinate& p0) { - stringstream ret("POINT (", ios_base::in|ios_base::out); + stringstream ret(ios_base::in|ios_base::out); + ret << "POINT ("; #if PRINT_Z ret << p0.x << " " << p0.y << " " << p0.z << " )"; #else @@ -151,7 +159,11 @@ writeFormatted(geometry, true, writer); } -void WKTWriter::writeFormatted(const Geometry *geometry, bool isFormatted, Writer *writer) { +void +WKTWriter::writeFormatted(const Geometry *geometry, bool isFormatted, + Writer *writer) +{ + CLocalizer clocale; this->isFormatted=isFormatted; formatter=createFormatter(geometry->getPrecisionModel()); appendGeometryTaggedText(geometry, 0, writer); diff -Nru geos-3.1.0/source/io/Writer.cpp geos-3.2.2/source/io/Writer.cpp --- geos-3.1.0/source/io/Writer.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/io/Writer.cpp 2009-06-15 15:03:52.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Writer.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: Writer.cpp 2579 2009-06-15 14:03:52Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: ORIGINAL WORK to be used like java.io.Writer + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/linearref/ExtractLineByLocation.cpp geos-3.2.2/source/linearref/ExtractLineByLocation.cpp --- geos-3.1.0/source/linearref/ExtractLineByLocation.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/ExtractLineByLocation.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,178 @@ +/********************************************************************** + * $Id: ExtractLineByLocation.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/ExtractLineByLocation.java rev. 1.35 + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos +{ +namespace linearref // geos.linearref +{ + + +Geometry *ExtractLineByLocation::extract(const Geometry *line, const LinearLocation& start, const LinearLocation& end) +{ + ExtractLineByLocation ls(line); + return ls.extract(start, end); +} + +ExtractLineByLocation::ExtractLineByLocation(const Geometry *line) : + line(line) {} + + +Geometry *ExtractLineByLocation::extract(const LinearLocation& start, const LinearLocation& end) +{ + if (end.compareTo(start) < 0) + { + Geometry* backwards = computeLinear(end, start); + Geometry* forwards = reverse(backwards); + delete backwards; + return forwards; + } + return computeLinear(start, end); +} + +Geometry *ExtractLineByLocation::reverse(const Geometry *linear) +{ + const LineString* ls = dynamic_cast(linear); + if (ls) + { + return ls->reverse(); + } + else + { + const MultiLineString* mls = dynamic_cast(linear); + if (mls) + { + return mls->reverse(); + } + else + { + assert(!"non-linear geometry encountered"); + return 0; + } + } +} + +LineString* ExtractLineByLocation::computeLine(const LinearLocation& start, const LinearLocation& end) +{ + CoordinateSequence* coordinates = line->getCoordinates(); + CoordinateArraySequence newCoordinateArray; + + const unsigned int indexStep = 1; + unsigned int startSegmentIndex = start.getSegmentIndex(); + + if (start.getSegmentFraction() > 0.0) + { + startSegmentIndex += indexStep; + } + + unsigned int lastSegmentIndex = end.getSegmentIndex(); + if (end.getSegmentFraction() == 1.0) + { + lastSegmentIndex += indexStep; + } + + if (lastSegmentIndex >= coordinates->size()) + { + assert(coordinates->size() > 0); + lastSegmentIndex = coordinates->size() - indexStep; + } + + if (! start.isVertex()) + { + newCoordinateArray.add(start.getCoordinate(line)); + } + + for (unsigned int i = startSegmentIndex; i <= lastSegmentIndex; i++) + { + newCoordinateArray.add((*coordinates)[i]); + } + + if (! end.isVertex()) + { + newCoordinateArray.add(end.getCoordinate(line)); + } + + // ensure there is at least one coordinate in the result + if (newCoordinateArray.size() == 0) + { + newCoordinateArray.add(start.getCoordinate(line)); + } + + /** + * Ensure there is enough coordinates to build a valid line. + * Make a 2-point line with duplicate coordinates, if necessary. + * There will always be at least one coordinate in the coordList. + */ + if (newCoordinateArray.size() <= 1) + { + newCoordinateArray.add(newCoordinateArray[0]); + } + + return line->getFactory()->createLineString(newCoordinateArray); +} + +Geometry *ExtractLineByLocation::computeLinear(const LinearLocation& start, const LinearLocation& end) +{ + LinearGeometryBuilder builder(line->getFactory()); + builder.setFixInvalidLines(true); + + if (! start.isVertex()) + { + builder.add(start.getCoordinate(line)); + } + + for (LinearIterator it(line, start); it.hasNext(); it.next()) + { + if (end.compareLocationValues(it.getComponentIndex(), it.getVertexIndex(), 0.0) < 0) + { + break; + } + Coordinate pt = it.getSegmentStart(); + builder.add(pt); + if (it.isEndOfLine()) + { + builder.endLine(); + } + } + if (! end.isVertex()) + { + builder.add(end.getCoordinate(line)); + } + return builder.getGeometry(); +} +} +} diff -Nru geos-3.1.0/source/linearref/LengthIndexedLine.cpp geos-3.2.2/source/linearref/LengthIndexedLine.cpp --- geos-3.1.0/source/linearref/LengthIndexedLine.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LengthIndexedLine.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,126 @@ +/********************************************************************** + * $Id: LengthIndexedLine.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LengthIndexedLine.java rev. 1.35 + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos +{ +namespace linearref // geos.linearref +{ + +LengthIndexedLine::LengthIndexedLine(const Geometry* linearGeom) : + linearGeom(linearGeom) {} + +Coordinate LengthIndexedLine::extractPoint(double index) const +{ + LinearLocation loc = LengthLocationMap::getLocation(linearGeom, index); + Coordinate coord = loc.getCoordinate(linearGeom); + return coord; +} + +Coordinate LengthIndexedLine::extractPoint(double index, double offsetDistance) const +{ + LinearLocation loc = LengthLocationMap::getLocation(linearGeom, index); + Coordinate ret; + loc.getSegment(linearGeom)->pointAlongOffset(loc.getSegmentFraction(), offsetDistance, ret); + return ret; +} + + +Geometry *LengthIndexedLine::extractLine(double startIndex, double endIndex) const +{ + + const LinearLocation startLoc = locationOf(startIndex); + const LinearLocation endLoc = locationOf(endIndex); + Geometry* g = ExtractLineByLocation::extract(linearGeom, startLoc, endLoc); + return g; +} + +LinearLocation LengthIndexedLine::locationOf(double index) const +{ + return LengthLocationMap::getLocation(linearGeom, index); +} + + +double LengthIndexedLine::indexOf(const Coordinate& pt) const +{ + return LengthIndexOfPoint::indexOf(linearGeom, pt); +} + + +double LengthIndexedLine::indexOfAfter(const Coordinate& pt, double minIndex) const +{ + return LengthIndexOfPoint::indexOfAfter(linearGeom, pt, minIndex); +} + + +double* LengthIndexedLine::indicesOf(const Geometry* subLine) const +{ + LinearLocation* locIndex = LocationIndexOfLine::indicesOf(linearGeom, subLine); + double* index = new double[2]; + index[0] = LengthLocationMap::getLength(linearGeom, locIndex[0]); + index[1] = LengthLocationMap::getLength(linearGeom, locIndex[1]); + delete [] locIndex; + return index; +} + + +double LengthIndexedLine::project(const Coordinate& pt) const +{ + return LengthIndexOfPoint::indexOf(linearGeom, pt); +} + +double LengthIndexedLine::getStartIndex() const +{ + return 0.0; +} + +double LengthIndexedLine::getEndIndex() const +{ + return linearGeom->getLength(); +} + +bool LengthIndexedLine::isValidIndex(double index) const +{ + return (index >= getStartIndex() + && index <= getEndIndex()); +} + +double LengthIndexedLine::clampIndex(double index) const +{ + double startIndex = getStartIndex(); + if (index < startIndex) return startIndex; + + double endIndex = getEndIndex(); + if (index > endIndex) return endIndex; + + return index; +} +} +} diff -Nru geos-3.1.0/source/linearref/LengthIndexOfPoint.cpp geos-3.2.2/source/linearref/LengthIndexOfPoint.cpp --- geos-3.1.0/source/linearref/LengthIndexOfPoint.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LengthIndexOfPoint.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,125 @@ +/********************************************************************** + * $Id: LengthIndexOfPoint.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/RobustLineIntersector.java rev. 1.35 + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos +{ +namespace linearref // geos.linearref +{ + +double LengthIndexOfPoint::indexOf(const Geometry *linearGeom, const Coordinate& inputPt) +{ + LengthIndexOfPoint locater(linearGeom); + return locater.indexOf(inputPt); +} + +double LengthIndexOfPoint::indexOfAfter(const Geometry *linearGeom, const Coordinate& inputPt, double minIndex) +{ + LengthIndexOfPoint locater(linearGeom); + return locater.indexOfAfter(inputPt, minIndex); +} + +LengthIndexOfPoint::LengthIndexOfPoint(const Geometry *linearGeom): + linearGeom(linearGeom) {} + +double LengthIndexOfPoint::indexOf(const Coordinate& inputPt) const +{ + return indexOfFromStart(inputPt, -1.0); +} + + +double LengthIndexOfPoint::indexOfAfter(const Coordinate& inputPt, double minIndex) const +{ + if (minIndex < 0.0) return indexOf(inputPt); + + // sanity check for minIndex at or past end of line + double endIndex = linearGeom->getLength(); + if (endIndex < minIndex) + return endIndex; + + double closestAfter = indexOfFromStart(inputPt, minIndex); + /** + * Return the minDistanceLocation found. + * This will not be null, since it was initialized to minLocation + */ + if (closestAfter <= minIndex) + { + throw util::IllegalArgumentException("computed index is before specified minimum index"); + } + return closestAfter; +} + +double LengthIndexOfPoint::indexOfFromStart(const Coordinate& inputPt, double minIndex) const +{ + double minDistance = numeric_limits::max(); + + double ptMeasure = minIndex; + double segmentStartMeasure = 0.0; + LineSegment seg; + LinearIterator it(linearGeom); + while (it.hasNext()) + { + if (! it.isEndOfLine()) + { + seg.p0 = it.getSegmentStart(); + seg.p1 = it.getSegmentEnd(); + double segDistance = seg.distance(inputPt); + double segMeasureToPt = segmentNearestMeasure(&seg, inputPt, segmentStartMeasure); + if (segDistance < minDistance + && segMeasureToPt > minIndex) + { + ptMeasure = segMeasureToPt; + minDistance = segDistance; + } + segmentStartMeasure += seg.getLength(); + } + it.next(); + } + return ptMeasure; +} + +double LengthIndexOfPoint::segmentNearestMeasure(const LineSegment* seg, + const Coordinate& inputPt, + double segmentStartMeasure) const +{ + // found new minimum, so compute location distance of point + double projFactor = seg->projectionFactor(inputPt); + if (projFactor <= 0.0) + return segmentStartMeasure; + if (projFactor <= 1.0) + return segmentStartMeasure + projFactor * seg->getLength(); + // projFactor > 1.0 + return segmentStartMeasure + seg->getLength(); +} +} +} + diff -Nru geos-3.1.0/source/linearref/LengthLocationMap.cpp geos-3.2.2/source/linearref/LengthLocationMap.cpp --- geos-3.1.0/source/linearref/LengthLocationMap.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LengthLocationMap.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,122 @@ +/********************************************************************** + * $Id: LengthLocationMap.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: algorithm/LengthLocationMap.java rev. 1.35 + * + **********************************************************************/ + + +#include +#include +#include +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos +{ +namespace linearref // geos.linearref +{ + + +LinearLocation LengthLocationMap::getLocation(const Geometry* linearGeom, double length) +{ + LengthLocationMap locater(linearGeom); + return locater.getLocation(length); +} + +double LengthLocationMap::getLength(const Geometry* linearGeom, const LinearLocation& loc) +{ + LengthLocationMap locater(linearGeom); + return locater.getLength(loc); +} + + +LengthLocationMap::LengthLocationMap(const Geometry* linearGeom) : + linearGeom(linearGeom) {} + +LinearLocation LengthLocationMap::getLocation(double length) const +{ + double forwardLength = length; + if (length < 0.0) + { + double lineLen = linearGeom->getLength(); + forwardLength = lineLen + length; + } + return getLocationForward(forwardLength); +} + +LinearLocation LengthLocationMap::getLocationForward(double length) const +{ + if (length <= 0.0) + return LinearLocation(); + + double totalLength = 0.0; + + LinearIterator it (linearGeom); + while (it.hasNext()) + { + if (! it.isEndOfLine()) + { + Coordinate p0 = it.getSegmentStart(); + Coordinate p1 = it.getSegmentEnd(); + double segLen = p1.distance(p0); + // length falls in this segment + if (totalLength + segLen > length) + { + double frac = (length - totalLength) / segLen; + unsigned int compIndex = it.getComponentIndex(); + unsigned int segIndex = it.getVertexIndex(); + return LinearLocation(compIndex, segIndex, frac); + } + totalLength += segLen; + } + it.next(); + } + // length is longer than line - return end location + return LinearLocation::getEndLocation(linearGeom); +} + + +double LengthLocationMap::getLength(const LinearLocation& loc) const +{ + double totalLength = 0.0; + + LinearIterator it(linearGeom); + while (it.hasNext()) + { + if (! it.isEndOfLine()) + { + Coordinate p0 = it.getSegmentStart(); + Coordinate p1 = it.getSegmentEnd(); + double segLen = p1.distance(p0); + // length falls in this segment + if (loc.getComponentIndex() == it.getComponentIndex() + && loc.getSegmentIndex() == it.getVertexIndex()) + { + return totalLength + segLen * loc.getSegmentFraction(); + } + totalLength += segLen; + } + it.next(); + } + return totalLength; +} + +} +} diff -Nru geos-3.1.0/source/linearref/LinearGeometryBuilder.cpp geos-3.2.2/source/linearref/LinearGeometryBuilder.cpp --- geos-3.1.0/source/linearref/LinearGeometryBuilder.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LinearGeometryBuilder.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,163 @@ +/********************************************************************** + * $Id: LinearGeometryBuilder.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearGeometryBuilder.java rev. 1.1 + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos +{ + +namespace linearref // geos.linearref +{ + +/* public */ +LinearGeometryBuilder::LinearGeometryBuilder(const GeometryFactory* geomFact) : + geomFact(geomFact), + ignoreInvalidLines(false), + fixInvalidLines(false), + coordList(0) {} + +/* public */ +void +LinearGeometryBuilder::setIgnoreInvalidLines(bool ignoreInvalidLines) +{ + this->ignoreInvalidLines = ignoreInvalidLines; +} + +/* public */ +void +LinearGeometryBuilder::setFixInvalidLines(bool fixInvalidLines) +{ + this->fixInvalidLines = fixInvalidLines; +} + +/* public */ +void +LinearGeometryBuilder::add(const Coordinate& pt) +{ + add(pt, true); +} + +/* public */ +void +LinearGeometryBuilder::add(const Coordinate& pt, bool allowRepeatedPoints) +{ + if (!coordList) + coordList = new CoordinateArraySequence(); + coordList->add(pt, allowRepeatedPoints); + lastPt = pt; +} + +/* public */ +Coordinate +LinearGeometryBuilder::getLastCoordinate() const +{ + return lastPt; +} + +/* public */ +void +LinearGeometryBuilder::endLine() +{ + if (!coordList) + { + return; + } + if (coordList->size() < 2) + { + if (ignoreInvalidLines) + { + if (coordList) + { + delete coordList; + coordList = 0; + } + return; + } + else if (fixInvalidLines) + { + assert(!coordList->isEmpty()); // just to be sure + + // NOTE: we copy the point cause reallocation of + // vector memory will invalidate the reference + // to one of its elements. + // + // We wouldn't have such problems with a vector + // of pointers (as used in JTS)... + // + Coordinate firstPoint = (*coordList)[0]; + add(firstPoint); + } + } + + LineString* line = 0; + try + { + line = geomFact->createLineString(coordList); + } + catch (util::IllegalArgumentException ex) + { + // exception is due to too few points in line. + // only propagate if not ignoring short lines + if (! ignoreInvalidLines) + throw ex; + } + + if (line) lines.push_back(line); + coordList = 0; +} + +/* public */ +Geometry* +LinearGeometryBuilder::getGeometry() +{ + // end last line in case it was not done by user + endLine(); + + // NOTE: lines elements are cloned + return geomFact->buildGeometry(lines); +} + +/* public */ +LinearGeometryBuilder::~LinearGeometryBuilder() +{ + for (GeomPtrVect::const_iterator i=lines.begin(), e=lines.end(); + i != e; ++i) + { + delete *i; + } +} + +} // namespace geos.linearref +} // namespace geos diff -Nru geos-3.1.0/source/linearref/LinearIterator.cpp geos-3.2.2/source/linearref/LinearIterator.cpp --- geos-3.1.0/source/linearref/LinearIterator.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LinearIterator.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,141 @@ +/********************************************************************** + * $Id: LinearIterator.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearIterator.java rev. 1.35 + * + **********************************************************************/ + + +#include +#include +#include +#include + +using namespace geos::geom; + +namespace geos +{ +namespace linearref // geos.linearref +{ + +unsigned int LinearIterator::segmentEndVertexIndex(const LinearLocation& loc) +{ + if (loc.getSegmentFraction() > 0.0) + return loc.getSegmentIndex() + 1; + return loc.getSegmentIndex(); +} + +LinearIterator::LinearIterator(const Geometry* linear) : + vertexIndex(0), + componentIndex(0), + linear(linear), + numLines(linear->getNumGeometries()) +{ + loadCurrentLine(); +} + + +LinearIterator::LinearIterator(const Geometry* linear, const LinearLocation& start): + vertexIndex(segmentEndVertexIndex(start)), + componentIndex(start.getComponentIndex()), + linear(linear), + numLines(linear->getNumGeometries()) +{ + loadCurrentLine(); +} + +LinearIterator::LinearIterator(const Geometry* linear, unsigned int componentIndex, unsigned int vertexIndex) : + vertexIndex(vertexIndex), + componentIndex(componentIndex), + linear(linear), + numLines(linear->getNumGeometries()) +{ + loadCurrentLine(); +} + +void LinearIterator::loadCurrentLine() +{ + if (componentIndex >= numLines) + { + currentLine = 0; + return; + } + currentLine = dynamic_cast (linear->getGeometryN(componentIndex)); +} + +bool LinearIterator::hasNext() const +{ + if (componentIndex >= numLines) return false; + if (componentIndex == numLines - 1 + && vertexIndex >= currentLine->getNumPoints()) + return false; + return true; +} + +void LinearIterator::next() +{ + if (! hasNext()) return; + + vertexIndex++; + if (vertexIndex >= currentLine->getNumPoints()) + { + componentIndex++; + loadCurrentLine(); + vertexIndex = 0; + } +} + +bool LinearIterator::isEndOfLine() const +{ + if (componentIndex >= numLines) return false; + //LineString currentLine = (LineString) linear.getGeometryN(componentIndex); + if (!currentLine) + return false; + if (vertexIndex < currentLine->getNumPoints() - 1) + return false; + return true; +} + +unsigned int LinearIterator::getComponentIndex() const +{ + return componentIndex; +} + +unsigned int LinearIterator::getVertexIndex() const +{ + return vertexIndex; +} + +const LineString* LinearIterator::getLine() const +{ + return currentLine; +} + +Coordinate LinearIterator::getSegmentStart() const +{ + return currentLine->getCoordinateN(vertexIndex); +} + +Coordinate LinearIterator::getSegmentEnd() const +{ + if (vertexIndex < getLine()->getNumPoints() - 1) + return currentLine->getCoordinateN(vertexIndex + 1); + Coordinate c; + c.setNull(); + return c; +} +} +} diff -Nru geos-3.1.0/source/linearref/LinearLocation.cpp geos-3.2.2/source/linearref/LinearLocation.cpp --- geos-3.1.0/source/linearref/LinearLocation.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LinearLocation.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,327 @@ +/********************************************************************** + * $Id: LinearLocation.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LinearLocation.java rev. 1.10 + * + **********************************************************************/ + +#include +#include +#include +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos { +namespace linearref { // geos::linearref + +/* public static */ +LinearLocation +LinearLocation::getEndLocation(const Geometry* linear) +{ + // assert: linear is LineString or MultiLineString + LinearLocation loc; + loc.setToEnd(linear); + return loc; +} + +/* public static */ +Coordinate +LinearLocation::pointAlongSegmentByFraction(const Coordinate& p0, const Coordinate& p1, double frac) +{ + if (frac <= 0.0) return p0; + if (frac >= 1.0) return p1; + + double x = (p1.x - p0.x) * frac + p0.x; + double y = (p1.y - p0.y) * frac + p0.y; + // interpolate Z value. If either input Z is NaN, result z will be NaN as well. + double z = (p1.z - p0.z) * frac + p0.z; + return Coordinate(x, y, z); +} + +/* public */ +LinearLocation::LinearLocation(unsigned int segmentIndex, + double segmentFraction) + : + componentIndex(0), + segmentIndex(segmentIndex), + segmentFraction(segmentFraction) +{} + + +/* public */ +LinearLocation::LinearLocation(unsigned int componentIndex, + unsigned int segmentIndex, double segmentFraction) + : + componentIndex(componentIndex), + segmentIndex(segmentIndex), + segmentFraction(segmentFraction) +{ + normalize(); +} + +/* private */ +void +LinearLocation::normalize() +{ + if (segmentFraction < 0.0) + { + segmentFraction = 0.0; + } + if (segmentFraction > 1.0) + { + segmentFraction = 1.0; + } + + if (componentIndex < 0) + { + componentIndex = 0; + segmentIndex = 0; + segmentFraction = 0.0; + } + if (segmentIndex < 0) + { + segmentIndex = 0; + segmentFraction = 0.0; + } + if (segmentFraction == 1.0) + { + segmentFraction = 0.0; + segmentIndex += 1; + } +} + +/* public */ +void +LinearLocation::clamp(const Geometry* linear) +{ + if (componentIndex >= linear->getNumGeometries()) + { + setToEnd(linear); + return; + } + if (segmentIndex >= linear->getNumPoints()) + { + const LineString* line = dynamic_cast (linear->getGeometryN(componentIndex)); + segmentIndex = line->getNumPoints() - 1; + segmentFraction = 1.0; + } +} + +/* public */ +void +LinearLocation::snapToVertex(const Geometry* linearGeom, double minDistance) +{ + if (segmentFraction <= 0.0 || segmentFraction >= 1.0) + return; + double segLen = getSegmentLength(linearGeom); + double lenToStart = segmentFraction * segLen; + double lenToEnd = segLen - lenToStart; + if (lenToStart <= lenToEnd && lenToStart < minDistance) + { + segmentFraction = 0.0; + } + else if (lenToEnd <= lenToStart && lenToEnd < minDistance) + { + segmentFraction = 1.0; + } +} + +/* public */ +double +LinearLocation::getSegmentLength(const Geometry* linearGeom) const +{ + const LineString* lineComp = dynamic_cast (linearGeom->getGeometryN(componentIndex)); + + // ensure segment index is valid + unsigned int segIndex = segmentIndex; + if (segmentIndex >= lineComp->getNumPoints() - 1) + segIndex = lineComp->getNumPoints() - 2; + + Coordinate p0 = lineComp->getCoordinateN(segIndex); + Coordinate p1 = lineComp->getCoordinateN(segIndex + 1); + return p0.distance(p1); +} + +/* public */ +void +LinearLocation::setToEnd(const Geometry* linear) +{ + componentIndex = linear->getNumGeometries() - 1; + const LineString* lastLine = dynamic_cast(linear->getGeometryN(componentIndex)); + segmentIndex = lastLine->getNumPoints() - 1; + segmentFraction = 1.0; +} + +/* public */ +unsigned int +LinearLocation::getComponentIndex() const +{ + return componentIndex; +} + +/* public */ +unsigned int +LinearLocation::getSegmentIndex() const +{ + return segmentIndex; +} + +/* public */ +double +LinearLocation::getSegmentFraction() const +{ + return segmentFraction; +} + +/* public */ +bool +LinearLocation::isVertex() const +{ + return segmentFraction <= 0.0 || segmentFraction >= 1.0; +} + +/* public */ +Coordinate +LinearLocation::getCoordinate(const Geometry* linearGeom) const +{ + const LineString* lineComp = dynamic_cast (linearGeom->getGeometryN(componentIndex)); + Coordinate p0 = lineComp->getCoordinateN(segmentIndex); + if (segmentIndex >= lineComp->getNumPoints() - 1) + return p0; + Coordinate p1 = lineComp->getCoordinateN(segmentIndex + 1); + return pointAlongSegmentByFraction(p0, p1, segmentFraction); +} + +/* public */ +std::auto_ptr +LinearLocation::getSegment(const Geometry* linearGeom) const +{ + const LineString* lineComp = dynamic_cast (linearGeom->getGeometryN(componentIndex)); + Coordinate p0 = lineComp->getCoordinateN(segmentIndex); + // check for endpoint - return last segment of the line if so + if (segmentIndex >= lineComp->getNumPoints() - 1) + { + Coordinate prev = lineComp->getCoordinateN(lineComp->getNumPoints() - 2); + return std::auto_ptr(new LineSegment(prev, p0)); + } + Coordinate p1 = lineComp->getCoordinateN(segmentIndex + 1); + return std::auto_ptr(new LineSegment(p0, p1)); +} + +/* public */ +bool +LinearLocation::isValid(const Geometry* linearGeom) const +{ + if (componentIndex < 0 || componentIndex >= linearGeom->getNumGeometries()) + return false; + + const LineString* lineComp = dynamic_cast (linearGeom->getGeometryN(componentIndex)); + if (segmentIndex < 0 || segmentIndex > lineComp->getNumPoints()) + return false; + if (segmentIndex == lineComp->getNumPoints() && segmentFraction != 0.0) + return false; + + if (segmentFraction < 0.0 || segmentFraction > 1.0) + return false; + return true; +} + +/* public */ +int +LinearLocation::compareTo(const LinearLocation& other) const +{ + // compare component indices + if (componentIndex < other.componentIndex) return -1; + if (componentIndex > other.componentIndex) return 1; + // compare segments + if (segmentIndex < other.segmentIndex) return -1; + if (segmentIndex > other.segmentIndex) return 1; + // same segment, so compare segment fraction + if (segmentFraction < other.segmentFraction) return -1; + if (segmentFraction > other.segmentFraction) return 1; + // same location + return 0; +} + +/* public */ +int +LinearLocation::compareLocationValues(unsigned int componentIndex1, + unsigned int segmentIndex1, double segmentFraction1) const +{ + // compare component indices + if (componentIndex < componentIndex1) return -1; + if (componentIndex > componentIndex1) return 1; + // compare segments + if (segmentIndex < segmentIndex1) return -1; + if (segmentIndex > segmentIndex1) return 1; + // same segment, so compare segment fraction + if (segmentFraction < segmentFraction1) return -1; + if (segmentFraction > segmentFraction1) return 1; + // same location + return 0; +} + + +/* public static */ +int +LinearLocation::compareLocationValues( + unsigned int componentIndex0, unsigned int segmentIndex0, + double segmentFraction0, + unsigned int componentIndex1, unsigned int segmentIndex1, + double segmentFraction1) +{ + // compare component indices + if (componentIndex0 < componentIndex1) return -1; + if (componentIndex0 > componentIndex1) return 1; + // compare segments + if (segmentIndex0 < segmentIndex1) return -1; + if (segmentIndex0 > segmentIndex1) return 1; + // same segment, so compare segment fraction + if (segmentFraction0 < segmentFraction1) return -1; + if (segmentFraction0 > segmentFraction1) return 1; + // same location + return 0; +} + + +/* public */ +bool +LinearLocation::isOnSameSegment(const LinearLocation& loc) const +{ + if (componentIndex != loc.componentIndex) return false; + if (segmentIndex == loc.segmentIndex) return true; + if (loc.segmentIndex - segmentIndex == 1 + && loc.segmentFraction == 0.0) + return true; + if (segmentIndex - loc.segmentIndex == 1 + && segmentFraction == 0.0) + return true; + return false; +} + + +ostream& operator<<(ostream &out, const LinearLocation &obj) +{ + return out << "LinearLocation(" << obj.componentIndex << ", " << + obj.segmentIndex << ", " << obj.segmentFraction << ")"; +} + +} // namespace geos.linearref +} // namespace geos + diff -Nru geos-3.1.0/source/linearref/LocationIndexOfLine.cpp geos-3.2.2/source/linearref/LocationIndexOfLine.cpp --- geos-3.1.0/source/linearref/LocationIndexOfLine.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LocationIndexOfLine.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,72 @@ +/********************************************************************** + * $Id: LocationIndexOfLine.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LengthIndexedLine.java rev. 1.35 + * + **********************************************************************/ + +#include +#include +#include +#include +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos +{ +namespace linearref // geos.linearref +{ + +/* public static */ +LinearLocation* +LocationIndexOfLine::indicesOf(const Geometry* linearGeom, + const Geometry* subLine) +{ + LocationIndexOfLine locater(linearGeom); + return locater.indicesOf(subLine); +} + +LocationIndexOfLine::LocationIndexOfLine(const Geometry* linearGeom) : + linearGeom(linearGeom) {} + +/* public */ +LinearLocation* +LocationIndexOfLine::indicesOf(const Geometry* subLine) const +{ + Coordinate startPt = dynamic_cast (subLine->getGeometryN(0))->getCoordinateN(0); + const LineString* lastLine = dynamic_cast (subLine->getGeometryN(subLine->getNumGeometries() - 1)); + Coordinate endPt = lastLine->getCoordinateN(lastLine->getNumPoints() - 1); + + LocationIndexOfPoint locPt(linearGeom); + LinearLocation *subLineLoc = new LinearLocation[2]; + subLineLoc[0] = locPt.indexOf(startPt); + + // check for case where subline is zero length + if (subLine->getLength() == 0.0) + { + subLineLoc[1] = subLineLoc[0]; + } + else + { + subLineLoc[1] = locPt.indexOfAfter(endPt, &subLineLoc[0]); + } + return subLineLoc; +} +} +} diff -Nru geos-3.1.0/source/linearref/LocationIndexOfPoint.cpp geos-3.2.2/source/linearref/LocationIndexOfPoint.cpp --- geos-3.1.0/source/linearref/LocationIndexOfPoint.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/LocationIndexOfPoint.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,122 @@ +/********************************************************************** + * $Id: LocationIndexOfPoint.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2005-2006 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: linearref/LocationIndexOfPoint.java rev. 1.35 + * + **********************************************************************/ + + +#include +#include +#include +#include +#include + +#include +#include + +using namespace std; + +using namespace geos::geom; + +namespace geos +{ +namespace linearref // geos.linearref +{ + +LinearLocation LocationIndexOfPoint::indexOfFromStart(const Coordinate& inputPt, LinearLocation* minIndex) const +{ + double minDistance = numeric_limits::max(); + int minComponentIndex = 0; + int minSegmentIndex = 0; + double minFrac = -1.0; + + LineSegment seg; + for (LinearIterator it(linearGeom); + it.hasNext(); it.next()) + { + if (! it.isEndOfLine()) + { + seg.p0 = it.getSegmentStart(); + seg.p1 = it.getSegmentEnd(); + double segDistance = seg.distance(inputPt); + double segFrac = seg.segmentFraction(inputPt); + + int candidateComponentIndex = it.getComponentIndex(); + int candidateSegmentIndex = it.getVertexIndex(); + if (segDistance < minDistance) + { + // ensure after minLocation, if any + if (!minIndex || + minIndex->compareLocationValues(candidateComponentIndex, candidateSegmentIndex, segFrac) < 0) + { + // otherwise, save this as new minimum + minComponentIndex = candidateComponentIndex; + minSegmentIndex = candidateSegmentIndex; + minFrac = segFrac; + minDistance = segDistance; + } + } + } + } + LinearLocation loc(minComponentIndex, minSegmentIndex, minFrac); + return loc; +} + + +LinearLocation LocationIndexOfPoint::indexOf(const Geometry *linearGeom, const Coordinate& inputPt) +{ + LocationIndexOfPoint locater(linearGeom); + return locater.indexOf(inputPt); +} + +LinearLocation LocationIndexOfPoint::indexOfAfter(const Geometry *linearGeom, const Coordinate& inputPt, LinearLocation* minIndex) +{ + LocationIndexOfPoint locater(linearGeom); + return locater.indexOfAfter(inputPt, minIndex); +} + +LocationIndexOfPoint::LocationIndexOfPoint(const Geometry *linearGeom) : + linearGeom(linearGeom) +{} + +LinearLocation LocationIndexOfPoint::indexOf(const Coordinate& inputPt) const +{ + return indexOfFromStart(inputPt, 0); +} + +LinearLocation LocationIndexOfPoint::indexOfAfter(const Coordinate& inputPt, LinearLocation* minIndex) const +{ + if (!minIndex) return indexOf(inputPt); + + // sanity check for minLocation at or past end of line + LinearLocation endLoc = LinearLocation::getEndLocation(linearGeom); + if (endLoc.compareTo(*minIndex) <= 0) + return endLoc; + + LinearLocation closestAfter = indexOfFromStart(inputPt, minIndex); + /** + * Return the minDistanceLocation found. + * This will not be null, since it was initialized to minLocation + */ + if (closestAfter.compareTo(*minIndex) < 0) + { + throw util::IllegalArgumentException("computed location is before specified minimum location"); + } + return closestAfter; +} +} +} diff -Nru geos-3.1.0/source/linearref/Makefile.am geos-3.2.2/source/linearref/Makefile.am --- geos-3.1.0/source/linearref/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/Makefile.am 2009-08-12 20:01:57.000000000 +0100 @@ -0,0 +1,20 @@ + +noinst_LTLIBRARIES = liblinearref.la + +INCLUDES = -I$(top_srcdir)/source/headers + +liblinearref_la_SOURCES = \ + ExtractLineByLocation.cpp \ + LengthIndexedLine.cpp \ + LengthIndexOfPoint.cpp \ + LengthLocationMap.cpp \ + LinearIterator.cpp \ + LinearGeometryBuilder.cpp \ + LinearLocation.cpp \ + LocationIndexOfLine.cpp \ + LocationIndexOfPoint.cpp + +# Deprecated files +# (http://geos.refractions.net/pipermail/geos-devel/2006-March/001828.html): +#NonRobustLineIntersector.cpp +#RobustLineIntersector.cpp diff -Nru geos-3.1.0/source/linearref/Makefile.in geos-3.2.2/source/linearref/Makefile.in --- geos-3.1.0/source/linearref/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/linearref/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -0,0 +1,553 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = source/linearref +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +liblinearref_la_LIBADD = +am_liblinearref_la_OBJECTS = ExtractLineByLocation.lo \ + LengthIndexedLine.lo LengthIndexOfPoint.lo \ + LengthLocationMap.lo LinearIterator.lo \ + LinearGeometryBuilder.lo LinearLocation.lo \ + LocationIndexOfLine.lo LocationIndexOfPoint.lo +liblinearref_la_OBJECTS = $(am_liblinearref_la_OBJECTS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(liblinearref_la_SOURCES) +DIST_SOURCES = $(liblinearref_la_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LTLIBRARIES = liblinearref.la +INCLUDES = -I$(top_srcdir)/source/headers +liblinearref_la_SOURCES = \ + ExtractLineByLocation.cpp \ + LengthIndexedLine.cpp \ + LengthIndexOfPoint.cpp \ + LengthLocationMap.cpp \ + LinearIterator.cpp \ + LinearGeometryBuilder.cpp \ + LinearLocation.cpp \ + LocationIndexOfLine.cpp \ + LocationIndexOfPoint.cpp + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/linearref/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/linearref/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +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 +liblinearref.la: $(liblinearref_la_OBJECTS) $(liblinearref_la_DEPENDENCIES) + $(CXXLINK) $(liblinearref_la_OBJECTS) $(liblinearref_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ExtractLineByLocation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LengthIndexOfPoint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LengthIndexedLine.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LengthLocationMap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LinearGeometryBuilder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LinearIterator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LinearLocation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LocationIndexOfLine.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LocationIndexOfPoint.Plo@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +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: + +.MAKE: install-am install-strip + +.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-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + 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 + + +# Deprecated files +# (http://geos.refractions.net/pipermail/geos-devel/2006-March/001828.html): +#NonRobustLineIntersector.cpp +#RobustLineIntersector.cpp + +# 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 -Nru geos-3.1.0/source/Makefile.am geos-3.2.2/source/Makefile.am --- geos-3.1.0/source/Makefile.am 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/Makefile.am 2009-08-12 20:01:57.000000000 +0100 @@ -4,6 +4,7 @@ headers \ index \ io \ + linearref \ noding \ operation \ planargraph \ @@ -31,6 +32,7 @@ geomgraph/libgeomgraph.la \ index/libindex.la \ io/libio.la \ + linearref/liblinearref.la \ noding/libnoding.la \ operation/liboperation.la \ planargraph/libplanargraph.la \ diff -Nru geos-3.1.0/source/Makefile.in geos-3.2.2/source/Makefile.in --- geos-3.1.0/source/Makefile.in 2009-03-11 19:13:33.000000000 +0000 +++ geos-3.2.2/source/Makefile.in 2010-04-18 16:08:08.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libgeos_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,49 +53,99 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" -libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) libgeos_la_DEPENDENCIES = algorithm/libalgorithm.la geom/libgeom.la \ geomgraph/libgeomgraph.la index/libindex.la io/libio.la \ - noding/libnoding.la operation/liboperation.la \ - planargraph/libplanargraph.la precision/libprecision.la \ - simplify/libsimplify.la util/libutil.la + linearref/liblinearref.la noding/libnoding.la \ + operation/liboperation.la planargraph/libplanargraph.la \ + precision/libprecision.la simplify/libsimplify.la \ + util/libutil.la am_libgeos_la_OBJECTS = inlines.lo libgeos_la_OBJECTS = $(am_libgeos_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +libgeos_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libgeos_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libgeos_la_SOURCES) DIST_SOURCES = $(libgeos_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -122,21 +173,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -145,20 +192,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -179,6 +234,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -190,19 +246,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -214,42 +264,56 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ algorithm \ geom \ headers \ index \ io \ + linearref \ noding \ operation \ planargraph \ @@ -274,6 +338,7 @@ geomgraph/libgeomgraph.la \ index/libindex.la \ io/libio.la \ + linearref/liblinearref.la \ noding/libnoding.la \ operation/liboperation.la \ planargraph/libplanargraph.la \ @@ -289,14 +354,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -314,23 +379,28 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + list2="$$list2 $$p"; \ else :; fi; \ - done + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) - @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: @@ -342,7 +412,7 @@ rm -f "$${dir}/so_locations"; \ done libgeos.la: $(libgeos_la_OBJECTS) $(libgeos_la_DEPENDENCIES) - $(CXXLINK) -rpath $(libdir) $(libgeos_la_LDFLAGS) $(libgeos_la_OBJECTS) $(libgeos_la_LIBADD) $(LIBS) + $(libgeos_la_LINK) -rpath $(libdir) $(libgeos_la_OBJECTS) $(libgeos_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -353,22 +423,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inlines.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -379,10 +449,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -407,15 +473,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -442,16 +507,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -459,14 +524,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -478,81 +543,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -563,7 +648,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive @@ -585,6 +670,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -598,7 +684,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -606,18 +692,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: install-libLTLIBRARIES +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -638,24 +744,27 @@ ps-am: -uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES +uninstall-am: uninstall-libLTLIBRARIES -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libLTLIBRARIES clean-libtool \ - clean-recursive ctags ctags-recursive distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags ctags-recursive \ + 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-libLTLIBRARIES install-man \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-info-am uninstall-libLTLIBRARIES + uninstall-libLTLIBRARIES + # 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. diff -Nru geos-3.1.0/source/Makefile.vc geos-3.2.2/source/Makefile.vc --- geos-3.1.0/source/Makefile.vc 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/Makefile.vc 2010-03-26 11:57:46.000000000 +0000 @@ -1,360 +1,371 @@ -# $Id: Makefile.vc 2258 2009-01-26 20:44:50Z warmerdam $ +# $Id: Makefile.vc 2949 2010-03-26 11:57:46Z mloskot $ # # Building on Win32 with Visual C++ 7.0, 7.1, 8.0 or 9.0 -# ------------------------------------------------------ +############################################################################### # # Produces: # geos.lib: static library for use of C or C++ API. # geos.dll: DLL - only exports the C API -# geos_i.lib: Stub library to link against for use of geos.dll. +# geos_i.lib: stub library to link against for use of geos.dll. # -# This makefile mostly maintained by Frank Warmerdam +# geos_d.lib: debug static library for use of C or C++ API. +# geos_d.dll: debug DLL - only exports the C API +# geos_i_d.lib: debug stub library to link against for use of geos.dll. # +# This makefile mostly maintained by Frank Warmerdam +# with support by Mateusz Loskot +############################################################################### +GEOS_ROOT=.. +!INCLUDE $(GEOS_ROOT)\nmake.opt !INCLUDE dirlist.mk -# Commands -# -MAKE = nmake -CC = cl.exe -LINK = link.exe -RM = -del - -# Check compiler version given in command line -# nmake -f makefile.vc MSVC_VER=xxxx -# By default, Visual C++ 7.1 (1310) is configured. -# -!IFNDEF MSVC_VER -MSVC_VER=1310 -!ENDIF - -# Collect compiler version specific flags -!IF $(MSVC_VER) >= 1400 -MSVC_CPPFLAGS = /EHs /D "_CRT_SECURE_NO_DEPRECATE" -!ELSE -MSVC_CPPFLAGS = /GX -!ENDIF - -# Determine requested build configuration, by default use release and -# build optimized binaries. For Debug, use -# nmake -f makefile.vc DEBUG=1 -!IFNDEF DEBUG -CFLAGS = -Iheaders /MD /GR /O2 /W3 /nologo /D "NDEBUG" \ - /D "NOMINMAX" /D "WIN32_LEAN_AND_MEAN" /D "NOGDI" \ - $(MSVC_CPPFLAGS) -!ELSE -CFLAGS = -Iheaders /MDd /GR /Od /W4 /Zi /nologo /D "_DEBUG" \ - /D "NOMINMAX" /D "WIN32_LEAN_AND_MEAN" /D "NOGDI" \ - $(MSVC_CPPFLAGS) -!ENDIF - -# Names of binary files -LIBNAME = geos.lib -DLLNAME = geos.dll -CDLLNAME = geos_c.dll -CLIBNAME = geos_c_i.lib -SLIBNAME = geos_i.lib +############################################################################### +# Output location +# TODO: not yet supported +#OUT_DIR = $(GEOS_ROOT)\bin\$(BUILD_DIR) +############################################################################### # List of objects + +OBJ_EXT = obj +EXT = $(OBJ_EXT) + OBJ = \ - algorithm\CentroidArea.obj \ - algorithm\CentroidLine.obj \ - algorithm\CentroidPoint.obj \ - algorithm\CGAlgorithms.obj \ - algorithm\ConvexHull.obj \ - algorithm\HCoordinate.obj \ - algorithm\InteriorPointArea.obj \ - algorithm\InteriorPointLine.obj \ - algorithm\InteriorPointPoint.obj \ - algorithm\LineIntersector.obj \ - algorithm\MCPointInRing.obj \ - algorithm\MinimumDiameter.obj \ - algorithm\NotRepresentableException.obj \ - algorithm\PointLocator.obj \ - algorithm\RayCrossingCounter.obj \ - algorithm\RobustDeterminant.obj \ - algorithm\SimplePointInRing.obj \ - algorithm\SIRtreePointInRing.obj \ - algorithm\locate\IndexedPointInAreaLocator.obj \ - algorithm\locate\PointOnGeometryLocator.obj \ - algorithm\locate\SimplePointInAreaLocator.obj \ - geom\Coordinate.obj \ - geom\CoordinateArraySequence.obj \ - geom\CoordinateArraySequenceFactory.obj \ - geom\CoordinateSequence.obj \ - geom\Dimension.obj \ - geom\Envelope.obj \ - geom\Geometry.obj \ - geom\GeometryCollection.obj \ - geom\GeometryComponentFilter.obj \ - geom\GeometryFactory.obj \ - geom\IntersectionMatrix.obj \ - geom\LinearRing.obj \ - geom\LineSegment.obj \ - geom\LineString.obj \ - geom\Location.obj \ - geom\MultiLineString.obj \ - geom\MultiPoint.obj \ - geom\MultiPolygon.obj \ - geom\Point.obj \ - geom\Polygon.obj \ - geom\PrecisionModel.obj \ - geom\Triangle.obj \ - geom\util\CoordinateOperation.obj \ - geom\util\GeometryEditor.obj \ - geom\util\GeometryTransformer.obj \ - geom\util\GeometryCombiner.obj \ - geom\util\ShortCircuitedGeometryVisitor.obj \ - geom\prep\AbstractPreparedPolygonContains.obj \ - geom\prep\BasicPreparedGeometry.obj \ - geom\prep\PreparedGeometry.obj \ - geom\prep\PreparedGeometryFactory.obj \ - geom\prep\PreparedLineString.obj \ - geom\prep\PreparedLineStringIntersects.obj \ - geom\prep\PreparedPoint.obj \ - geom\prep\PreparedPolygon.obj \ - geom\prep\PreparedPolygonContains.obj \ - geom\prep\PreparedPolygonContainsProperly.obj \ - geom\prep\PreparedPolygonCovers.obj \ - geom\prep\PreparedPolygonIntersects.obj \ - geom\prep\PreparedPolygonPredicate.obj \ - geomgraph\Depth.obj \ - geomgraph\DirectedEdge.obj \ - geomgraph\DirectedEdgeStar.obj \ - geomgraph\Edge.obj \ - geomgraph\EdgeEnd.obj \ - geomgraph\EdgeEndStar.obj \ - geomgraph\EdgeIntersection.obj \ - geomgraph\EdgeIntersectionList.obj \ - geomgraph\EdgeList.obj \ - geomgraph\EdgeNodingValidator.obj \ - geomgraph\EdgeRing.obj \ - geomgraph\GeometryGraph.obj \ - geomgraph\GraphComponent.obj \ - geomgraph\Label.obj \ - geomgraph\Node.obj \ - geomgraph\NodeFactory.obj \ - geomgraph\NodeMap.obj \ - geomgraph\PlanarGraph.obj \ - geomgraph\Position.obj \ - geomgraph\Quadrant.obj \ - geomgraph\TopologyLocation.obj \ - geomgraph\index\MonotoneChainEdge.obj \ - geomgraph\index\MonotoneChainIndexer.obj \ - geomgraph\index\SegmentIntersector.obj \ - geomgraph\index\SimpleEdgeSetIntersector.obj \ - geomgraph\index\SimpleMCSweepLineIntersector.obj \ - geomgraph\index\SimpleSweepLineIntersector.obj \ - geomgraph\index\SweepLineEvent.obj \ - geomgraph\index\SweepLineSegment.obj \ - index\bintree\Bintree.obj \ - index\bintree\Interval.obj \ - index\bintree\Key.obj \ - index\bintree\Node.obj \ - index\bintree\NodeBase.obj \ - index\bintree\Root.obj \ - index\chain\MonotoneChain.obj \ - index\chain\MonotoneChainBuilder.obj \ - index\chain\MonotoneChainOverlapAction.obj \ - index\chain\MonotoneChainSelectAction.obj \ - index\intervalrtree\IntervalRTreeBranchNode.obj \ - index\intervalrtree\IntervalRTreeLeafNode.obj \ - index\intervalrtree\IntervalRTreeNode.obj \ - index\intervalrtree\SortedPackedIntervalRTree.obj \ - index\quadtree\DoubleBits.obj \ - index\quadtree\IntervalSize.obj \ - index\quadtree\Key.obj \ - index\quadtree\Node.obj \ - index\quadtree\NodeBase.obj \ - index\quadtree\Root.obj \ - index\quadtree\Quadtree.obj \ - index\strtree\AbstractNode.obj \ - index\strtree\AbstractSTRtree.obj \ - index\strtree\Interval.obj \ - index\strtree\ItemBoundable.obj \ - index\strtree\SIRtree.obj \ - index\strtree\STRtree.obj \ - index\sweepline\SweepLineEvent.obj \ - index\sweepline\SweepLineIndex.obj \ - index\sweepline\SweepLineInterval.obj \ - io\ByteOrderDataInStream.obj \ - io\ByteOrderValues.obj \ - io\CLocalizer.obj \ - io\ParseException.obj \ - io\StringTokenizer.obj \ - io\Unload.obj \ - io\WKBReader.obj \ - io\WKBWriter.obj \ - io\WKTReader.obj \ - io\WKTWriter.obj \ - io\Writer.obj \ - noding\FastNodingValidator.obj \ - noding\FastSegmentSetIntersectionFinder.obj \ - noding\IntersectionAdder.obj \ - noding\IntersectionFinderAdder.obj \ - noding\IteratedNoder.obj \ - noding\MCIndexNoder.obj \ - noding\MCIndexSegmentSetMutualIntersector.obj \ - noding\NodedSegmentString.obj \ - noding\NodingValidator.obj \ - noding\Octant.obj \ - noding\ScaledNoder.obj \ - noding\SegmentIntersectionDetector.obj \ - noding\SegmentNode.obj \ - noding\SegmentNodeList.obj \ - noding\SegmentString.obj \ - noding\SegmentStringUtil.obj \ - noding\SimpleNoder.obj \ - noding\SingleInteriorIntersectionFinder.obj \ - noding\snapround\HotPixel.obj \ - noding\snapround\MCIndexPointSnapper.obj \ - noding\snapround\MCIndexSnapRounder.obj \ - noding\snapround\SimpleSnapRounder.obj \ - operation\GeometryGraphOperation.obj \ - operation\IsSimpleOp.obj \ - operation\buffer\BufferBuilder.obj \ - operation\buffer\BufferOp.obj \ - operation\buffer\BufferSubgraph.obj \ - operation\buffer\OffsetCurveBuilder.obj \ - operation\buffer\OffsetCurveSetBuilder.obj \ - operation\buffer\RightmostEdgeFinder.obj \ - operation\buffer\SubgraphDepthLocater.obj \ - operation\distance\ConnectedElementLocationFilter.obj \ - operation\distance\ConnectedElementPointFilter.obj \ - operation\distance\DistanceOp.obj \ - operation\distance\GeometryLocation.obj \ - operation\linemerge\EdgeString.obj \ - operation\linemerge\LineMergeDirectedEdge.obj \ - operation\linemerge\LineMergeEdge.obj \ - operation\linemerge\LineMergeGraph.obj \ - operation\linemerge\LineMerger.obj \ - operation\linemerge\LineSequencer.obj \ - operation\overlay\EdgeSetNoder.obj \ - operation\overlay\ElevationMatrix.obj \ - operation\overlay\ElevationMatrixCell.obj \ - operation\overlay\FuzzyPointLocator.obj \ - operation\overlay\LineBuilder.obj \ - operation\overlay\MaximalEdgeRing.obj \ - operation\overlay\MinimalEdgeRing.obj \ - operation\overlay\OffsetPointGenerator.obj \ - operation\overlay\OverlayNodeFactory.obj \ - operation\overlay\OverlayOp.obj \ - operation\overlay\OverlayResultValidator.obj \ - operation\overlay\PointBuilder.obj \ - operation\overlay\PolygonBuilder.obj \ - operation\polygonize\PolygonizeDirectedEdge.obj \ - operation\polygonize\PolygonizeEdge.obj \ - operation\polygonize\EdgeRing.obj \ - operation\polygonize\PolygonizeGraph.obj \ - operation\polygonize\Polygonizer.obj \ - operation\predicate\RectangleContains.obj \ - operation\predicate\RectangleIntersects.obj \ - operation\predicate\SegmentIntersectionTester.obj \ - operation\relate\EdgeEndBuilder.obj \ - operation\relate\EdgeEndBundle.obj \ - operation\relate\EdgeEndBundleStar.obj \ - operation\relate\RelateComputer.obj \ - operation\relate\RelateNode.obj \ - operation\relate\RelateNodeFactory.obj \ - operation\relate\RelateNodeGraph.obj \ - operation\relate\RelateOp.obj \ - operation\union\CascadedPolygonUnion.obj \ - operation\valid\ConnectedInteriorTester.obj \ - operation\valid\ConsistentAreaTester.obj \ - operation\valid\IsValidOp.obj \ - operation\valid\QuadtreeNestedRingTester.obj \ - operation\valid\RepeatedPointTester.obj \ - operation\valid\SimpleNestedRingTester.obj \ - operation\valid\SweeplineNestedRingTester.obj \ - operation\valid\TopologyValidationError.obj \ - planargraph\DirectedEdge.obj \ - planargraph\DirectedEdgeStar.obj \ - planargraph\Edge.obj \ - planargraph\Node.obj \ - planargraph\NodeMap.obj \ - planargraph\PlanarGraph.obj \ - planargraph\Subgraph.obj \ - planargraph\algorithm\ConnectedSubgraphFinder.obj \ - precision\CommonBits.obj \ - precision\CommonBitsOp.obj \ - precision\CommonBitsRemover.obj \ - precision\EnhancedPrecisionOp.obj \ - precision\GeometrySnapper.obj \ - precision\LineStringSnapper.obj \ - precision\SimpleGeometryPrecisionReducer.obj \ - simplify\DouglasPeuckerLineSimplifier.obj \ - simplify\DouglasPeuckerSimplifier.obj \ - simplify\LineSegmentIndex.obj \ - simplify\TaggedLineSegment.obj \ - simplify\TaggedLinesSimplifier.obj \ - simplify\TaggedLineString.obj \ - simplify\TaggedLineStringSimplifier.obj \ - simplify\TopologyPreservingSimplifier.obj \ - util\Assert.obj \ - util\GeometricShapeFactory.obj \ - util\math.obj \ - util\Profiler.obj \ - ..\capi\geos_c.obj \ - ..\capi\geos_ts_c.obj \ - inlines.obj + algorithm\Angle.$(EXT) \ + algorithm\BoundaryNodeRule.$(EXT) \ + algorithm\CentroidArea.$(EXT) \ + algorithm\CentroidLine.$(EXT) \ + algorithm\CentroidPoint.$(EXT) \ + algorithm\CGAlgorithms.$(EXT) \ + algorithm\ConvexHull.$(EXT) \ + algorithm\HCoordinate.$(EXT) \ + algorithm\InteriorPointArea.$(EXT) \ + algorithm\InteriorPointLine.$(EXT) \ + algorithm\InteriorPointPoint.$(EXT) \ + algorithm\LineIntersector.$(EXT) \ + algorithm\MCPointInRing.$(EXT) \ + algorithm\MinimumDiameter.$(EXT) \ + algorithm\NotRepresentableException.$(EXT) \ + algorithm\PointLocator.$(EXT) \ + algorithm\RayCrossingCounter.$(EXT) \ + algorithm\RobustDeterminant.$(EXT) \ + algorithm\SimplePointInRing.$(EXT) \ + algorithm\SIRtreePointInRing.$(EXT) \ + algorithm\distance\DiscreteHausdorffDistance.$(EXT) \ + algorithm\distance\DistanceToPoint.$(EXT) \ + algorithm\locate\IndexedPointInAreaLocator.$(EXT) \ + algorithm\locate\PointOnGeometryLocator.$(EXT) \ + algorithm\locate\SimplePointInAreaLocator.$(EXT) \ + geom\Coordinate.$(EXT) \ + geom\CoordinateArraySequence.$(EXT) \ + geom\CoordinateArraySequenceFactory.$(EXT) \ + geom\CoordinateSequence.$(EXT) \ + geom\CoordinateSequenceFactory.$(EXT) \ + geom\Dimension.$(EXT) \ + geom\Envelope.$(EXT) \ + geom\Geometry.$(EXT) \ + geom\GeometryCollection.$(EXT) \ + geom\GeometryComponentFilter.$(EXT) \ + geom\GeometryFactory.$(EXT) \ + geom\GeometryList.$(EXT) \ + geom\IntersectionMatrix.$(EXT) \ + geom\LinearRing.$(EXT) \ + geom\LineSegment.$(EXT) \ + geom\LineString.$(EXT) \ + geom\Location.$(EXT) \ + geom\MultiLineString.$(EXT) \ + geom\MultiPoint.$(EXT) \ + geom\MultiPolygon.$(EXT) \ + geom\Point.$(EXT) \ + geom\Polygon.$(EXT) \ + geom\PrecisionModel.$(EXT) \ + geom\Triangle.$(EXT) \ + geom\util\ComponentCoordinateExtracter.$(EXT) \ + geom\util\CoordinateOperation.$(EXT) \ + geom\util\GeometryEditor.$(EXT) \ + geom\util\GeometryTransformer.$(EXT) \ + geom\util\GeometryCombiner.$(EXT) \ + geom\util\ShortCircuitedGeometryVisitor.$(EXT) \ + geom\prep\AbstractPreparedPolygonContains.$(EXT) \ + geom\prep\BasicPreparedGeometry.$(EXT) \ + geom\prep\PreparedGeometry.$(EXT) \ + geom\prep\PreparedGeometryFactory.$(EXT) \ + geom\prep\PreparedLineString.$(EXT) \ + geom\prep\PreparedLineStringIntersects.$(EXT) \ + geom\prep\PreparedPoint.$(EXT) \ + geom\prep\PreparedPolygon.$(EXT) \ + geom\prep\PreparedPolygonContains.$(EXT) \ + geom\prep\PreparedPolygonContainsProperly.$(EXT) \ + geom\prep\PreparedPolygonCovers.$(EXT) \ + geom\prep\PreparedPolygonIntersects.$(EXT) \ + geom\prep\PreparedPolygonPredicate.$(EXT) \ + geomgraph\Depth.$(EXT) \ + geomgraph\DirectedEdge.$(EXT) \ + geomgraph\DirectedEdgeStar.$(EXT) \ + geomgraph\Edge.$(EXT) \ + geomgraph\EdgeEnd.$(EXT) \ + geomgraph\EdgeEndStar.$(EXT) \ + geomgraph\EdgeIntersection.$(EXT) \ + geomgraph\EdgeIntersectionList.$(EXT) \ + geomgraph\EdgeList.$(EXT) \ + geomgraph\EdgeNodingValidator.$(EXT) \ + geomgraph\EdgeRing.$(EXT) \ + geomgraph\GeometryGraph.$(EXT) \ + geomgraph\GraphComponent.$(EXT) \ + geomgraph\Label.$(EXT) \ + geomgraph\Node.$(EXT) \ + geomgraph\NodeFactory.$(EXT) \ + geomgraph\NodeMap.$(EXT) \ + geomgraph\PlanarGraph.$(EXT) \ + geomgraph\Position.$(EXT) \ + geomgraph\Quadrant.$(EXT) \ + geomgraph\TopologyLocation.$(EXT) \ + geomgraph\index\MonotoneChainEdge.$(EXT) \ + geomgraph\index\MonotoneChainIndexer.$(EXT) \ + geomgraph\index\SegmentIntersector.$(EXT) \ + geomgraph\index\SimpleEdgeSetIntersector.$(EXT) \ + geomgraph\index\SimpleMCSweepLineIntersector.$(EXT) \ + geomgraph\index\SimpleSweepLineIntersector.$(EXT) \ + geomgraph\index\SweepLineEvent.$(EXT) \ + geomgraph\index\SweepLineSegment.$(EXT) \ + index\bintree\Bintree.$(EXT) \ + index\bintree\Interval.$(EXT) \ + index\bintree\Key.$(EXT) \ + index\bintree\Node.$(EXT) \ + index\bintree\NodeBase.$(EXT) \ + index\bintree\Root.$(EXT) \ + index\chain\MonotoneChain.$(EXT) \ + index\chain\MonotoneChainBuilder.$(EXT) \ + index\chain\MonotoneChainOverlapAction.$(EXT) \ + index\chain\MonotoneChainSelectAction.$(EXT) \ + index\intervalrtree\IntervalRTreeBranchNode.$(EXT) \ + index\intervalrtree\IntervalRTreeLeafNode.$(EXT) \ + index\intervalrtree\IntervalRTreeNode.$(EXT) \ + index\intervalrtree\SortedPackedIntervalRTree.$(EXT) \ + index\quadtree\DoubleBits.$(EXT) \ + index\quadtree\IntervalSize.$(EXT) \ + index\quadtree\Key.$(EXT) \ + index\quadtree\Node.$(EXT) \ + index\quadtree\NodeBase.$(EXT) \ + index\quadtree\Root.$(EXT) \ + index\quadtree\Quadtree.$(EXT) \ + index\strtree\AbstractNode.$(EXT) \ + index\strtree\AbstractSTRtree.$(EXT) \ + index\strtree\Interval.$(EXT) \ + index\strtree\ItemBoundable.$(EXT) \ + index\strtree\SIRtree.$(EXT) \ + index\strtree\STRtree.$(EXT) \ + index\sweepline\SweepLineEvent.$(EXT) \ + index\sweepline\SweepLineIndex.$(EXT) \ + index\sweepline\SweepLineInterval.$(EXT) \ + io\ByteOrderDataInStream.$(EXT) \ + io\ByteOrderValues.$(EXT) \ + io\CLocalizer.$(EXT) \ + io\ParseException.$(EXT) \ + io\StringTokenizer.$(EXT) \ + io\Unload.$(EXT) \ + io\WKBReader.$(EXT) \ + io\WKBWriter.$(EXT) \ + io\WKTReader.$(EXT) \ + io\WKTWriter.$(EXT) \ + io\Writer.$(EXT) \ + noding\BasicSegmentString.$(EXT) \ + noding\FastNodingValidator.$(EXT) \ + noding\FastSegmentSetIntersectionFinder.$(EXT) \ + noding\IntersectionAdder.$(EXT) \ + noding\IntersectionFinderAdder.$(EXT) \ + noding\IteratedNoder.$(EXT) \ + noding\MCIndexNoder.$(EXT) \ + noding\MCIndexSegmentSetMutualIntersector.$(EXT) \ + noding\NodedSegmentString.$(EXT) \ + noding\NodingValidator.$(EXT) \ + noding\Octant.$(EXT) \ + noding\OrientedCoordinateArray.$(EXT) \ + noding\ScaledNoder.$(EXT) \ + noding\SegmentIntersectionDetector.$(EXT) \ + noding\SegmentNode.$(EXT) \ + noding\SegmentNodeList.$(EXT) \ + noding\SegmentString.$(EXT) \ + noding\SegmentStringUtil.$(EXT) \ + noding\SimpleNoder.$(EXT) \ + noding\SingleInteriorIntersectionFinder.$(EXT) \ + noding\snapround\HotPixel.$(EXT) \ + noding\snapround\MCIndexPointSnapper.$(EXT) \ + noding\snapround\MCIndexSnapRounder.$(EXT) \ + noding\snapround\SimpleSnapRounder.$(EXT) \ + operation\GeometryGraphOperation.$(EXT) \ + operation\IsSimpleOp.$(EXT) \ + operation\buffer\BufferBuilder.$(EXT) \ + operation\buffer\BufferInputLineSimplifier.$(EXT) \ + operation\buffer\BufferParameters.$(EXT) \ + operation\buffer\BufferOp.$(EXT) \ + operation\buffer\BufferSubgraph.$(EXT) \ + operation\buffer\OffsetCurveBuilder.$(EXT) \ + operation\buffer\OffsetCurveSetBuilder.$(EXT) \ + operation\buffer\RightmostEdgeFinder.$(EXT) \ + operation\buffer\SubgraphDepthLocater.$(EXT) \ + operation\distance\ConnectedElementLocationFilter.$(EXT) \ + operation\distance\ConnectedElementPointFilter.$(EXT) \ + operation\distance\DistanceOp.$(EXT) \ + operation\distance\GeometryLocation.$(EXT) \ + operation\linemerge\EdgeString.$(EXT) \ + operation\linemerge\LineMergeDirectedEdge.$(EXT) \ + operation\linemerge\LineMergeEdge.$(EXT) \ + operation\linemerge\LineMergeGraph.$(EXT) \ + operation\linemerge\LineMerger.$(EXT) \ + operation\linemerge\LineSequencer.$(EXT) \ + operation\overlay\EdgeSetNoder.$(EXT) \ + operation\overlay\ElevationMatrix.$(EXT) \ + operation\overlay\ElevationMatrixCell.$(EXT) \ + operation\overlay\LineBuilder.$(EXT) \ + operation\overlay\MaximalEdgeRing.$(EXT) \ + operation\overlay\MinimalEdgeRing.$(EXT) \ + operation\overlay\OverlayNodeFactory.$(EXT) \ + operation\overlay\OverlayOp.$(EXT) \ + operation\overlay\PointBuilder.$(EXT) \ + operation\overlay\PolygonBuilder.$(EXT) \ + operation\overlay\snap\GeometrySnapper.$(EXT) \ + operation\overlay\snap\LineStringSnapper.$(EXT) \ + operation\overlay\snap\SnapOverlayOp.$(EXT) \ + operation\overlay\snap\SnapIfNeededOverlayOp.$(EXT) \ + operation\overlay\validate\FuzzyPointLocator.$(EXT) \ + operation\overlay\validate\OffsetPointGenerator.$(EXT) \ + operation\overlay\validate\OverlayResultValidator.$(EXT) \ + operation\polygonize\PolygonizeDirectedEdge.$(EXT) \ + operation\polygonize\PolygonizeEdge.$(EXT) \ + operation\polygonize\EdgeRing.$(EXT) \ + operation\polygonize\PolygonizeGraph.$(EXT) \ + operation\polygonize\Polygonizer.$(EXT) \ + operation\predicate\RectangleContains.$(EXT) \ + operation\predicate\RectangleIntersects.$(EXT) \ + operation\predicate\SegmentIntersectionTester.$(EXT) \ + operation\relate\EdgeEndBuilder.$(EXT) \ + operation\relate\EdgeEndBundle.$(EXT) \ + operation\relate\EdgeEndBundleStar.$(EXT) \ + operation\relate\RelateComputer.$(EXT) \ + operation\relate\RelateNode.$(EXT) \ + operation\relate\RelateNodeFactory.$(EXT) \ + operation\relate\RelateNodeGraph.$(EXT) \ + operation\relate\RelateOp.$(EXT) \ + operation\union\CascadedPolygonUnion.$(EXT) \ + operation\valid\ConnectedInteriorTester.$(EXT) \ + operation\valid\ConsistentAreaTester.$(EXT) \ + operation\valid\IndexedNestedRingTester.$(EXT) \ + operation\valid\IsValidOp.$(EXT) \ + operation\valid\QuadtreeNestedRingTester.$(EXT) \ + operation\valid\RepeatedPointTester.$(EXT) \ + operation\valid\SimpleNestedRingTester.$(EXT) \ + operation\valid\SweeplineNestedRingTester.$(EXT) \ + operation\valid\TopologyValidationError.$(EXT) \ + planargraph\DirectedEdge.$(EXT) \ + planargraph\DirectedEdgeStar.$(EXT) \ + planargraph\Edge.$(EXT) \ + planargraph\Node.$(EXT) \ + planargraph\NodeMap.$(EXT) \ + planargraph\PlanarGraph.$(EXT) \ + planargraph\Subgraph.$(EXT) \ + planargraph\algorithm\ConnectedSubgraphFinder.$(EXT) \ + precision\CommonBits.$(EXT) \ + precision\CommonBitsOp.$(EXT) \ + precision\CommonBitsRemover.$(EXT) \ + precision\EnhancedPrecisionOp.$(EXT) \ + precision\SimpleGeometryPrecisionReducer.$(EXT) \ + simplify\DouglasPeuckerLineSimplifier.$(EXT) \ + simplify\DouglasPeuckerSimplifier.$(EXT) \ + simplify\LineSegmentIndex.$(EXT) \ + simplify\TaggedLineSegment.$(EXT) \ + simplify\TaggedLinesSimplifier.$(EXT) \ + simplify\TaggedLineString.$(EXT) \ + simplify\TaggedLineStringSimplifier.$(EXT) \ + simplify\TopologyPreservingSimplifier.$(EXT) \ + util\Assert.$(EXT) \ + util\GeometricShapeFactory.$(EXT) \ + util\math.$(EXT) \ + util\Profiler.$(EXT) \ + linearref\ExtractLineByLocation.$(EXT) \ + linearref\LengthIndexOfPoint.$(EXT) \ + linearref\LengthIndexedLine.$(EXT) \ + linearref\LengthLocationMap.$(EXT) \ + linearref\LinearGeometryBuilder.$(EXT) \ + linearref\LinearIterator.$(EXT) \ + linearref\LinearLocation.$(EXT) \ + linearref\LocationIndexOfLine.$(EXT) \ + linearref\LocationIndexOfPoint.$(EXT) \ + ..\capi\geos_c.$(EXT) \ + ..\capi\geos_ts_c.$(EXT) \ + inlines.$(EXT) TEST_EXE = TestSweepLineSpeed.exe -default: $(LIBNAME) $(DLLNAME) $(CDLLNAME) +############################################################################### +# Build targets + +default: $(LIBNAME) $(DLLNAME) $(CDLLNAME) + +all: $(LIBNAME) $(DLLNAME) $(CDLLNAME) TestSweepLineSpeed.exe geostest.exe + +check: all + TestSweepLineSpeed.exe + $(LIBNAME): headers/geos/platform.h headers/geos/version.h ../capi/geos_c.h $(OBJ) if exist $(LIBNAME) del $(LIBNAME) $(LINK) /lib /out:$(LIBNAME) $(OBJ) $(DLLNAME): $(OBJ) - link /dll /debug $(OBJ) /out:$(DLLNAME) /implib:$(SLIBNAME) + $(LINK) /dll /debug $(OBJ) /out:$(DLLNAME) /implib:$(SLIBNAME) if exist $(DLLNAME).manifest mt -manifest $(DLLNAME).manifest -outputresource:$(DLLNAME);2 $(CDLLNAME): ..\capi\geos_c.obj ..\capi\geos_ts_c.obj $(DLLNAME) - link /dll /debug ..\capi\geos_c.obj ..\capi\geos_ts_c.obj $(LIBNAME) /out:$(CDLLNAME) /implib:$(CLIBNAME) + $(LINK) /dll /debug ..\capi\geos_c.obj ..\capi\geos_ts_c.obj $(LIBNAME) /out:$(CDLLNAME) /implib:$(CLIBNAME) if exist $(CDLLNAME).manifest mt -manifest $(CDLLNAME).manifest -outputresource:$(CDLLNAME);2 headers/geos/platform.h: headers/geos/platform.h.vc - copy headers\geos\platform.h.vc headers\geos\platform.h + $(CP) headers\geos\platform.h.vc headers\geos\platform.h headers/geos/version.h: headers/geos/version.h.vc - if not exist headers\geos\version.h copy headers\geos\version.h.vc headers\geos\version.h + if not exist headers\geos\version.h $(CP) headers\geos\version.h.vc headers\geos\version.h # geos_c.h should already be in distribution, if is not you'll # have to run ./configure to recreate ../capi/geos_c.h: ../capi/geos_c.h.in. - copy ..\capi\geos_c.h.in ..\capi\geos_c.h - + $(CP) ..\capi\geos_c.h.in ..\capi\geos_c.h + .cpp.obj: - $(CC) $(CFLAGS) /c $*.cpp /Fo$@ + $(CC) $(CFLAGS) /c $*.cpp /Fo$@ + +{..\capi}.cpp.obj: + $(CC) $(CFLAGS) /D "GEOS_DLL_EXPORT" /c $*.cpp /Fo$@ .c.obj: $(CC) $(CFLAGS) /c $*.c /Fo$@ clean: - $(RM) $(LIBNAME) - $(RM) $(SLIBNAME) - $(RM) $(DLLNAME) - $(RM) $(SLIBNAME) - $(RM) $(CLIBNAME) - $(RM) $(CDLLNAME) - $(RM) ..\capi\*.obj - $(RM) *.exe - $(RM) *.exp - $(RM) *.ilk - $(RM) *.manifest - $(RM) *.obj - $(RM) *.pdb - for %d in ( $(GEOS_DIRLIST) ) do \ - del %d\*.obj - + @ECHO "*** Cleaning GEOS source tree" + @IF EXIST $(LIBNAME) $(RM) $(LIBNAME) + @IF EXIST $(SLIBNAME) $(RM) $(SLIBNAME) + @IF EXIST $(DLLNAME) $(RM) $(DLLNAME) + @IF EXIST $(SLIBNAME) $(RM) $(SLIBNAME) + @IF EXIST $(CLIBNAME) $(RM) $(CLIBNAME) + @IF EXIST $(CDLLNAME) $(RM) $(CDLLNAME) + -@del ..\capi\*.obj + -@del *.exe + -@del *.exp + -@del *.ilk + -@del *.manifest + -@del *.obj + -@del *.pdb + -@FOR %d IN ( $(GEOS_DIRLIST) ) DO del %d\*.obj TestSweepLineSpeed.exe: $(LIBNAME) \ - bigtest\GeometryTestFactory.obj \ - bigtest\TestSweepLineSpeed.obj - link /debug /out:TestSweepLineSpeed.exe \ - bigtest\TestSweepLineSpeed.obj \ - bigtest\GeometryTestFactory.obj \ + ..\tests\bigtest\GeometryTestFactory.obj \ + ..\tests\bigtest\TestSweepLineSpeed.obj + $(LINK) /debug /out:TestSweepLineSpeed.exe \ + ..\tests\bigtest\TestSweepLineSpeed.obj \ + ..\tests\bigtest\GeometryTestFactory.obj \ $(LIBNAME) -geostest.exe: $(DLLNAME) ..\capi\geostest.obj - link /debug ..\capi\geostest.obj $(SLIBNAME) +geostest.exe: $(CDLLNAME) ..\tests\unit\capi\geostest.obj + $(LINK) /debug ..\tests\unit\capi\geostest.obj $(CLIBNAME) + +# EOF diff -Nru geos-3.1.0/source/noding/BasicSegmentString.cpp geos-3.2.2/source/noding/BasicSegmentString.cpp --- geos-3.1.0/source/noding/BasicSegmentString.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/noding/BasicSegmentString.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,84 @@ +/********************************************************************** + * $Id: BasicSegmentString.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: noding/BasicSegmentString.java rev. 1.1 (JTS-1.9) + * + **********************************************************************/ + +#include +#include +#include +#include +#include +//#include + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif + +#include +#include + +using namespace geos::algorithm; +using namespace geos::geom; + +namespace geos { +namespace noding { // geos.noding + + + +/*public*/ +int +BasicSegmentString::getSegmentOctant(unsigned int index) const +{ + if (index >= size() - 1) return -1; + return Octant::octant(getCoordinate(index), getCoordinate(index+1)); +} + +/* virtual public */ +const geom::Coordinate& +BasicSegmentString::getCoordinate(unsigned int i) const +{ + return pts->getAt(i); +} + +/* virtual public */ +geom::CoordinateSequence* +BasicSegmentString::getCoordinates() const +{ + return pts; +} + +/* virtual public */ +bool +BasicSegmentString::isClosed() const +{ + return pts->getAt(0)==pts->getAt(size()-1); +} + +/* public virtual */ +std::ostream& +BasicSegmentString::print(std::ostream& os) const +{ + os << "BasicSegmentString: " << std::endl; + os << " LINESTRING" << *(pts) << ";" << std::endl; + + return os; +} + + +} // namespace geos.noding +} // namespace geos + diff -Nru geos-3.1.0/source/noding/IntersectionAdder.cpp geos-3.2.2/source/noding/IntersectionAdder.cpp --- geos-3.1.0/source/noding/IntersectionAdder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/IntersectionAdder.cpp 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IntersectionAdder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IntersectionAdder.cpp 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,12 +13,13 @@ * ********************************************************************** * - * Last port: noding/IntersectionAdder.java rev. 1.4 (JTS-1.7) + * Last port: noding/IntersectionAdder.java rev. 1.6 (JTS-1.9) * **********************************************************************/ #include #include +#include #include #include @@ -90,8 +91,13 @@ if (! isTrivialIntersection(e0, segIndex0, e1, segIndex1)) { hasIntersectionVar = true; - e0->addIntersections(&li, segIndex0, 0); - e1->addIntersections(&li, segIndex1, 1); + + NodedSegmentString* ee0 = dynamic_cast(e0); + NodedSegmentString* ee1 = dynamic_cast(e1); + assert(ee0 && ee1); + ee0->addIntersections(&li, segIndex0, 0); + ee1->addIntersections(&li, segIndex1, 1); + if (li.isProper()) { numProperIntersections++; //Debug.println(li.toString()); diff -Nru geos-3.1.0/source/noding/IntersectionFinderAdder.cpp geos-3.2.2/source/noding/IntersectionFinderAdder.cpp --- geos-3.1.0/source/noding/IntersectionFinderAdder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/IntersectionFinderAdder.cpp 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IntersectionFinderAdder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IntersectionFinderAdder.cpp 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,7 +13,7 @@ * ********************************************************************** * - * Last port: noding/IntersectionFinderAdder.java rev. 1.2 (JTS-1.7) + * Last port: noding/IntersectionFinderAdder.java rev. 1.5 (JTS-1.9) * **********************************************************************/ @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -53,8 +54,12 @@ { interiorIntersections.push_back(li.getIntersection(intIndex)); } - e0->addIntersections(&li, segIndex0, 0); - e1->addIntersections(&li, segIndex1, 1); + + NodedSegmentString* ee0 = dynamic_cast(e0); + NodedSegmentString* ee1 = dynamic_cast(e1); + assert(ee0 && ee1); + ee0->addIntersections(&li, segIndex0, 0); + ee1->addIntersections(&li, segIndex1, 1); } } } diff -Nru geos-3.1.0/source/noding/IteratedNoder.cpp geos-3.2.2/source/noding/IteratedNoder.cpp --- geos-3.1.0/source/noding/IteratedNoder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/IteratedNoder.cpp 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IteratedNoder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: IteratedNoder.cpp 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: noding/IteratedNoder.java rev. 1.6 (JTS-1.7) + * Last port: noding/IteratedNoder.java rev. 1.6 (JTS-1.9) * **********************************************************************/ diff -Nru geos-3.1.0/source/noding/Makefile.am geos-3.2.2/source/noding/Makefile.am --- geos-3.1.0/source/noding/Makefile.am 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/Makefile.am 2009-04-08 15:54:59.000000000 +0100 @@ -5,6 +5,7 @@ INCLUDES = -I$(top_srcdir)/source/headers libnoding_la_SOURCES = \ + BasicSegmentString.cpp \ FastNodingValidator.cpp \ FastSegmentSetIntersectionFinder.cpp \ IntersectionAdder.cpp \ @@ -15,6 +16,7 @@ NodedSegmentString.cpp \ NodingValidator.cpp \ Octant.cpp \ + OrientedCoordinateArray.cpp \ ScaledNoder.cpp \ SegmentIntersectionDetector.cpp \ SegmentNode.cpp \ diff -Nru geos-3.1.0/source/noding/Makefile.in geos-3.2.2/source/noding/Makefile.in --- geos-3.1.0/source/noding/Makefile.in 2009-03-11 19:13:58.000000000 +0000 +++ geos-3.2.2/source/noding/Makefile.in 2010-04-18 16:08:12.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libnoding_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,44 +53,76 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libnoding_la_DEPENDENCIES = snapround/libsnapround.la -am_libnoding_la_OBJECTS = FastNodingValidator.lo \ +am_libnoding_la_OBJECTS = BasicSegmentString.lo FastNodingValidator.lo \ FastSegmentSetIntersectionFinder.lo IntersectionAdder.lo \ IntersectionFinderAdder.lo IteratedNoder.lo MCIndexNoder.lo \ MCIndexSegmentSetMutualIntersector.lo NodedSegmentString.lo \ - NodingValidator.lo Octant.lo ScaledNoder.lo \ - SegmentIntersectionDetector.lo SegmentNode.lo \ + NodingValidator.lo Octant.lo OrientedCoordinateArray.lo \ + ScaledNoder.lo SegmentIntersectionDetector.lo SegmentNode.lo \ SegmentNodeList.lo SegmentString.lo SegmentStringUtil.lo \ SimpleNoder.lo SingleInteriorIntersectionFinder.lo libnoding_la_OBJECTS = $(am_libnoding_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libnoding_la_SOURCES) DIST_SOURCES = $(libnoding_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -117,21 +150,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -140,20 +169,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -174,6 +211,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -185,19 +223,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -209,40 +241,54 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = snapround noinst_LTLIBRARIES = libnoding.la INCLUDES = -I$(top_srcdir)/source/headers libnoding_la_SOURCES = \ + BasicSegmentString.cpp \ FastNodingValidator.cpp \ FastSegmentSetIntersectionFinder.cpp \ IntersectionAdder.cpp \ @@ -253,6 +299,7 @@ NodedSegmentString.cpp \ NodingValidator.cpp \ Octant.cpp \ + OrientedCoordinateArray.cpp \ ScaledNoder.cpp \ SegmentIntersectionDetector.cpp \ SegmentNode.cpp \ @@ -271,14 +318,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/noding/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/noding/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/noding/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/noding/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -296,6 +343,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -306,7 +354,7 @@ rm -f "$${dir}/so_locations"; \ done libnoding.la: $(libnoding_la_OBJECTS) $(libnoding_la_DEPENDENCIES) - $(CXXLINK) $(libnoding_la_LDFLAGS) $(libnoding_la_OBJECTS) $(libnoding_la_LIBADD) $(LIBS) + $(CXXLINK) $(libnoding_la_OBJECTS) $(libnoding_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -314,6 +362,7 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BasicSegmentString.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FastNodingValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FastSegmentSetIntersectionFinder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IntersectionAdder.Plo@am__quote@ @@ -324,6 +373,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NodedSegmentString.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NodingValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Octant.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OrientedCoordinateArray.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScaledNoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentIntersectionDetector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentNode.Plo@am__quote@ @@ -334,22 +384,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SingleInteriorIntersectionFinder.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -360,10 +410,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -388,15 +434,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -423,16 +468,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -440,14 +485,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -459,81 +504,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -563,6 +628,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -576,7 +642,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -584,18 +650,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -616,23 +702,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/noding/MCIndexNoder.cpp geos-3.2.2/source/noding/MCIndexNoder.cpp --- geos-3.1.0/source/noding/MCIndexNoder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/MCIndexNoder.cpp 2009-05-06 18:42:58.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexNoder.cpp 1939 2006-12-11 17:42:55Z strk $ + * $Id: MCIndexNoder.cpp 2479 2009-05-06 17:42:58Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,13 +13,13 @@ * ********************************************************************** * - * Last port: noding/MCIndexNoder.java rev. 1.4 (JTS-1.7) + * Last port: noding/MCIndexNoder.java rev. 1.6 (JTS-1.9) * **********************************************************************/ #include #include -#include +#include #include #include @@ -72,7 +72,7 @@ MonotoneChain* queryChain = *i; assert(queryChain); vector overlapChains; - index.query(queryChain->getEnvelope(), overlapChains); + index.query(&(queryChain->getEnvelope()), overlapChains); for (vector::iterator j=overlapChains.begin(), jEnd=overlapChains.end(); j != jEnd; @@ -117,7 +117,7 @@ assert(mc); mc->setId(idCounter++); - index.insert(mc->getEnvelope(), mc); + index.insert(&(mc->getEnvelope()), mc); // MonotoneChain objects deletion delegated to destructor monoChains.push_back(mc); @@ -136,16 +136,16 @@ } void -MCIndexNoder::SegmentOverlapAction::overlap(MonotoneChain* mc1, int start1, - MonotoneChain* mc2, int start2) +MCIndexNoder::SegmentOverlapAction::overlap(MonotoneChain& mc1, size_t start1, + MonotoneChain& mc2, size_t start2) { SegmentString* ss1 = const_cast( - static_cast(mc1->getContext()) + static_cast(mc1.getContext()) ); assert(ss1); SegmentString* ss2 = const_cast( - static_cast(mc2->getContext()) + static_cast(mc2.getContext()) ); assert(ss2); diff -Nru geos-3.1.0/source/noding/MCIndexSegmentSetMutualIntersector.cpp geos-3.2.2/source/noding/MCIndexSegmentSetMutualIntersector.cpp --- geos-3.1.0/source/noding/MCIndexSegmentSetMutualIntersector.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/MCIndexSegmentSetMutualIntersector.cpp 2009-11-19 21:30:01.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexSegmentSetMutualIntersector.cpp 2196 2008-10-04 18:14:09Z pramsey $ + * $Id: MCIndexSegmentSetMutualIntersector.cpp 2732 2009-11-19 21:30:01Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -45,7 +45,7 @@ { MonotoneChain * mc = (*segChains)[i]; mc->setId(indexCounter++); - index->insert(mc->getEnvelope(), mc); + index->insert(&(mc->getEnvelope()), mc); } } @@ -54,12 +54,12 @@ { MCIndexSegmentSetMutualIntersector::SegmentOverlapAction overlapAction( *segInt); - for (std::size_t i = 0, ni = monoChains->size(); i < ni; i++) + for (MonoChains::size_type i = 0, ni = monoChains.size(); i < ni; ++i) { - MonotoneChain * queryChain = (MonotoneChain *)((*monoChains)[i]); + MonotoneChain * queryChain = (MonotoneChain *)monoChains[i]; std::vector overlapChains; - index->query( queryChain->getEnvelope(), overlapChains); + index->query( &(queryChain->getEnvelope()), overlapChains); for (std::size_t j = 0, nj = overlapChains.size(); j < nj; j++) { @@ -76,16 +76,16 @@ void MCIndexSegmentSetMutualIntersector::addToMonoChains(SegmentString* segStr) { - std::vector* segChains = 0; - segChains = MonotoneChainBuilder::getChains(segStr->getCoordinates(), segStr); + MonoChains* segChains = + MonotoneChainBuilder::getChains(segStr->getCoordinates(), segStr); chainStore.push_back(segChains); - for (std::size_t i = 0, ni = segChains->size(); i < ni; i++) + for (MonoChains::size_type i = 0, ni = segChains->size(); i < ni; i++) { MonotoneChain* mc = (*segChains)[i]; mc->setId( processCounter++ ); - monoChains->push_back(mc); + monoChains.push_back(mc); } } @@ -94,7 +94,7 @@ // MCIndexSegmentSetMutualIntersector::MCIndexSegmentSetMutualIntersector() -: monoChains( new std::vector()), +: monoChains(), index(new geos::index::strtree::STRtree()), indexCounter(0), processCounter(0), @@ -105,7 +105,6 @@ MCIndexSegmentSetMutualIntersector::~MCIndexSegmentSetMutualIntersector() { delete index; - delete monoChains; chainstore_mm_type::iterator end = chainStore.end(); for (chainstore_mm_type::iterator it = chainStore.begin(); it != end; ++it) @@ -138,7 +137,7 @@ { processCounter = indexCounter + 1; nOverlaps = 0; - monoChains->clear(); + monoChains.clear(); for (std::size_t i = 0, n = segStrings->size(); i < n; i++) { @@ -150,10 +149,11 @@ void -MCIndexSegmentSetMutualIntersector::SegmentOverlapAction::overlap( MonotoneChain * mc1, int start1, MonotoneChain * mc2, int start2) +MCIndexSegmentSetMutualIntersector::SegmentOverlapAction::overlap( + MonotoneChain& mc1, size_t start1, MonotoneChain& mc2, size_t start2) { - SegmentString * ss1 = (SegmentString *)(mc1->getContext()); - SegmentString * ss2 = (SegmentString *)(mc2->getContext()); + SegmentString * ss1 = (SegmentString *)(mc1.getContext()); + SegmentString * ss2 = (SegmentString *)(mc2.getContext()); si.processIntersections(ss1, start1, ss2, start2); } diff -Nru geos-3.1.0/source/noding/NodedSegmentString.cpp geos-3.2.2/source/noding/NodedSegmentString.cpp --- geos-3.1.0/source/noding/NodedSegmentString.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/NodedSegmentString.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodedSegmentString.cpp 2161 2008-08-18 16:29:09Z mloskot $ + * $Id: NodedSegmentString.cpp 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,14 +11,163 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/NodedSegmentString.java rev. 1.2 (JTS-1.9) + * **********************************************************************/ #include +#include +#include + +using namespace geos::algorithm; +using namespace geos::geom; namespace geos { namespace noding { // geos::noding +const SegmentNodeList& +NodedSegmentString::getNodeList() const +{ + return nodeList; +} + +SegmentNodeList& +NodedSegmentString::getNodeList() +{ + return nodeList; +} + + +/*public*/ +int +NodedSegmentString::getSegmentOctant(unsigned int index) const +{ + if (index >= size() - 1) return -1; + return Octant::octant(getCoordinate(index), getCoordinate(index+1)); +} + +/*public*/ +void +NodedSegmentString::addIntersections(LineIntersector *li, unsigned int + segmentIndex, int geomIndex) +{ + for (int i=0, n=li->getIntersectionNum(); igetIntersection(intIndex); + addIntersection(intPt, segmentIndex); +} + +/*public*/ +void +NodedSegmentString::addIntersection(const Coordinate& intPt, + unsigned int segmentIndex) +{ + unsigned int normalizedSegmentIndex = segmentIndex; + + if ( segmentIndex > size()-2 ) + { + throw util::IllegalArgumentException("SegmentString::addIntersection: SegmentIndex out of range"); + } + + // normalize the intersection point location + unsigned int nextSegIndex = normalizedSegmentIndex + 1; + if (nextSegIndex < size()) + { + const Coordinate& nextPt = pts->getAt(nextSegIndex); + + // Normalize segment index if intPt falls on vertex + // The check for point equality is 2D only - + // Z values are ignored + if (intPt.equals2D(nextPt)) { + normalizedSegmentIndex = nextSegIndex; + } + } + + /* + * Add the intersection point to edge intersection list + * (unless the node is already known) + */ + //SegmentNode *ei= + nodeList.add(intPt, normalizedSegmentIndex); + + +} + +/* public static */ +void +NodedSegmentString::getNodedSubstrings( + const SegmentString::NonConstVect& segStrings, + SegmentString::NonConstVect *resultEdgeList) +{ + assert(resultEdgeList); + for ( SegmentString::NonConstVect::const_iterator + i=segStrings.begin(), iEnd=segStrings.end(); + i != iEnd; ++i ) + { + NodedSegmentString* ss = dynamic_cast(*i); + assert(ss); + ss->getNodeList().addSplitEdges(resultEdgeList); + } +} + +/* public static */ +SegmentString::NonConstVect* +NodedSegmentString::getNodedSubstrings( + const SegmentString::NonConstVect& segStrings) +{ + SegmentString::NonConstVect* resultEdgelist = \ + new SegmentString::NonConstVect(); + getNodedSubstrings(segStrings, resultEdgelist); + return resultEdgelist; +} + +/* virtual public */ +const geom::Coordinate& +NodedSegmentString::getCoordinate(unsigned int i) const +{ + return pts->getAt(i); +} + +/* virtual public */ +geom::CoordinateSequence* +NodedSegmentString::getCoordinates() const +{ + return pts; +} + +/* virtual public */ +bool +NodedSegmentString::isClosed() const +{ + return pts->getAt(0)==pts->getAt(size()-1); +} + +/* public virtual */ +std::ostream& +NodedSegmentString::print(std::ostream& os) const +{ + os << "NodedSegmentString: " << std::endl; + os << " LINESTRING" << *(pts) << ";" << std::endl; + os << " Nodes: " << nodeList.size() << std::endl; + + return os; +} + + } // geos::noding } // geos diff -Nru geos-3.1.0/source/noding/OrientedCoordinateArray.cpp geos-3.2.2/source/noding/OrientedCoordinateArray.cpp --- geos-3.1.0/source/noding/OrientedCoordinateArray.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/noding/OrientedCoordinateArray.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,99 @@ +/********************************************************************** + * $Id: OrientedCoordinateArray.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: noding/OrientedCoordinateArray.java rev. 1.1 (JTS-1.9) + * + **********************************************************************/ + +//#include +//#include + +#include + +//#include +//#include +//#include +#include + +//using namespace std; +using namespace geos::geom; + +#ifdef _MSC_VER +#pragma warning(disable : 4127) +#endif + +namespace geos { +namespace noding { // geos.noding + +/* private static */ +bool +OrientedCoordinateArray::orientation(const CoordinateSequence& pts) +{ + return CoordinateSequence::increasingDirection(pts) == 1; +} + +int +OrientedCoordinateArray::compareTo(const OrientedCoordinateArray& oca) const +{ + int comp = compareOriented(pts, orientationVar, + oca.pts, oca.orientationVar); +#if 0 // MD - testing only + int oldComp = SegmentStringDissolver.ptsComp.compare(pts, oca.pts); + if ((oldComp == 0 || comp == 0) && oldComp != comp) { + System.out.println("bidir mismatch"); + + boolean orient1 = orientation(pts); + boolean orient2 = orientation(oca.pts); + int comp2 = compareOriented(pts, orientation, + oca.pts, oca.orientation); + int oldComp2 = SegmentStringDissolver.ptsComp.compare(pts, oca.pts); + } +#endif + + return comp; +} + +/* private static */ +int +OrientedCoordinateArray::compareOriented(const geom::CoordinateSequence& pts1, + bool orientation1, + const geom::CoordinateSequence& pts2, + bool orientation2) +{ + int dir1 = orientation1 ? 1 : -1; + int dir2 = orientation2 ? 1 : -1; + int limit1 = orientation1 ? pts1.size() : -1; + int limit2 = orientation2 ? pts2.size() : -1; + + int i1 = orientation1 ? 0 : pts1.size() - 1; + int i2 = orientation2 ? 0 : pts2.size() - 1; + //int comp = 0; // unused, but is in JTS ... + while (true) { + int compPt = pts1[i1].compareTo(pts2[i2]); + if (compPt != 0) + return compPt; + i1 += dir1; + i2 += dir2; + bool done1 = i1 == limit1; + bool done2 = i2 == limit2; + if (done1 && ! done2) return -1; + if (! done1 && done2) return 1; + if (done1 && done2) return 0; + } +} + +} // namespace geos.noding +} // namespace geos + diff -Nru geos-3.1.0/source/noding/ScaledNoder.cpp geos-3.2.2/source/noding/ScaledNoder.cpp --- geos-3.1.0/source/noding/ScaledNoder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/ScaledNoder.cpp 2009-12-03 19:22:03.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ScaledNoder.cpp 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: ScaledNoder.cpp 2767 2009-12-03 19:22:03Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -73,7 +73,7 @@ } // anonym namespace -class ScaledNoder::Scaler: public geom::CoordinateFilter { +class ScaledNoder::Scaler : public geom::CoordinateFilter { public: const ScaledNoder& sn; Scaler(const ScaledNoder&n): sn(n) @@ -91,6 +91,11 @@ c->x = util::round( ( c->x - sn.offsetX ) * sn.scaleFactor ); c->y = util::round( ( c->y - sn.offsetY ) * sn.scaleFactor ); } + +private: + // Declare type as noncopyable + Scaler(const Scaler& other); + Scaler& operator=(const Scaler& rhs); }; class ScaledNoder::ReScaler: public geom::CoordinateFilter { @@ -107,7 +112,7 @@ void filter_ro(const geom::Coordinate* c) { - UNREFERENCED_PARAMETER(c); + ::geos::ignore_unused_variable_warning(c); assert(0); } @@ -115,6 +120,11 @@ c->x = c->x / sn.scaleFactor + sn.offsetX; c->y = c->y / sn.scaleFactor + sn.offsetY; } + +private: + // Declare type as noncopyable + ReScaler(const ReScaler& other); + ReScaler& operator=(const ReScaler& rhs); }; /*private*/ @@ -146,8 +156,6 @@ { SegmentString* ss=*i0; - ss->testInvariant(); - CoordinateSequence* cs=ss->getCoordinates(); #ifndef NDEBUG @@ -162,8 +170,6 @@ // the memory cost ? cs->removeRepeatedPoints(); - // Let SegmentString know that something might be changed - ss->notifyCoordinatesChange(); } } diff -Nru geos-3.1.0/source/noding/SegmentNode.cpp geos-3.2.2/source/noding/SegmentNode.cpp --- geos-3.1.0/source/noding/SegmentNode.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/SegmentNode.cpp 2009-04-08 10:42:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentNode.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentNode.cpp 2320 2009-04-08 09:42:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: noding/SegmentNode.java rev. 1.5 (JTS-1.7) + * Last port: noding/SegmentNode.java rev. 1.6 (JTS-1.9) * **********************************************************************/ @@ -27,7 +27,7 @@ #include #include -#include +#include #include using namespace std; @@ -103,7 +103,7 @@ }; /*public*/ -SegmentNode::SegmentNode(const SegmentString& ss, const Coordinate& nCoord, +SegmentNode::SegmentNode(const NodedSegmentString& ss, const Coordinate& nCoord, unsigned int nSegmentIndex, int nSegmentOctant) : segString(ss), @@ -111,7 +111,7 @@ coord(nCoord), segmentIndex(nSegmentIndex) { - // Number of points in SegmentString is one-more number of segments + // Number of points in NodedSegmentString is one-more number of segments assert(segmentIndex < segString.size() ); isInteriorVar = \ diff -Nru geos-3.1.0/source/noding/SegmentNodeList.cpp geos-3.2.2/source/noding/SegmentNodeList.cpp --- geos-3.1.0/source/noding/SegmentNodeList.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/SegmentNodeList.cpp 2009-05-06 18:54:38.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentNodeList.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SegmentNodeList.cpp 2481 2009-05-06 17:54:38Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: noding/SegmentNodeList.java rev. 1.7 (JTS-1.7) + * Last port: noding/SegmentNodeList.java rev. 1.8 (JTS-1.10) * **********************************************************************/ @@ -24,7 +24,8 @@ #include #include #include -#include +#include +#include // for use #include #include #include // FIXME: should we really be using this ? @@ -119,10 +120,11 @@ SegmentNodeList::findCollapsesFromExistingVertices( std::vector& collapsedVertexIndexes) { + if ( edge.size() < 2 ) return; // or we'll never exit the loop below + for (size_t i=0, n=edge.size()-2; isetAt(ei1->coord, ipt++); - SegmentString *ret = new SegmentString(pts, edge.getData()); + SegmentString *ret = new NodedSegmentString(pts, edge.getData()); #if GEOS_DEBUG std::cerr<<" SegmentString created"< -#include -#include -#include -#include -#include -#include +//#include +//#include +//#include +//#include +//#include +//#include //#include #ifndef GEOS_DEBUG @@ -39,122 +43,18 @@ namespace geos { namespace noding { // geos.noding -/*public*/ -void -SegmentString::addIntersections(LineIntersector *li, unsigned int segmentIndex, - int geomIndex) -{ - for (int i=0, n=li->getIntersectionNum(); igetIntersection(intIndex); - addIntersection(intPt, segmentIndex); -} - -/*public*/ -void -SegmentString::addIntersection(const Coordinate& intPt, - unsigned int segmentIndex) -{ - unsigned int normalizedSegmentIndex = segmentIndex; - - if ( segmentIndex > size()-2 ) - { - throw util::IllegalArgumentException("SegmentString::addIntersection: SegmentIndex out of range"); - } - - // normalize the intersection point location - unsigned int nextSegIndex = normalizedSegmentIndex + 1; - if (nextSegIndex < size()) - { - const Coordinate& nextPt = pts->getAt(nextSegIndex); - - // Normalize segment index if intPt falls on vertex - // The check for point equality is 2D only - - // Z values are ignored - if (intPt.equals2D(nextPt)) { - normalizedSegmentIndex = nextSegIndex; - } - } - - /* - * Add the intersection point to edge intersection list - * (unless the node is already known) - */ - //SegmentNode *ei= - nodeList.add(intPt, normalizedSegmentIndex); - - - testInvariant(); -} - -/* public static */ -void -SegmentString::getNodedSubstrings(const SegmentString::NonConstVect& segStrings, - SegmentString::NonConstVect *resultEdgeList) -{ - assert(resultEdgeList); - for ( SegmentString::NonConstVect::const_iterator - i=segStrings.begin(), iEnd=segStrings.end(); - i != iEnd; ++i ) - { - SegmentString* ss = *i; - assert(ss); - ss->getNodeList().addSplitEdges(resultEdgeList); - } -} - -/* public static */ -SegmentString::NonConstVect* -SegmentString::getNodedSubstrings(const SegmentString::NonConstVect& segStrings) -{ - SegmentString::NonConstVect* resultEdgelist = \ - new SegmentString::NonConstVect(); - getNodedSubstrings(segStrings, resultEdgelist); - return resultEdgelist; -} - -/*public*/ -int -SegmentString::getSegmentOctant(unsigned int index) const -{ - testInvariant(); - if (index >= size() - 1) return -1; - return Octant::octant(getCoordinate(index), getCoordinate(index+1)); -} - -/* public */ -void -SegmentString::notifyCoordinatesChange() const +std::ostream& operator<< (std::ostream& os, const SegmentString& ss) { - npts = pts->size(); - - // What about SegmentNodes ? should - // we invalidate them as well ? - - testInvariant(); + return ss.print(os); } - -std::ostream& operator<< (std::ostream& os, const SegmentString& ss) +std::ostream& +SegmentString::print(std::ostream& os) const { - os << "SegmentString: " << std::endl; - os << " LINESTRING" << *(ss.pts) << ";" << std::endl; - os << " Nodes: " << ss.nodeList.size() << std::endl; - + os << "SegmentString" << std::endl; return os; } - } // namespace geos.noding } // namespace geos diff -Nru geos-3.1.0/source/noding/SimpleNoder.cpp geos-3.2.2/source/noding/SimpleNoder.cpp --- geos-3.1.0/source/noding/SimpleNoder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/SimpleNoder.cpp 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleNoder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleNoder.cpp 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: noding/SimpleNoder.java rev. 1.7 (JTS-1.9) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/noding/snapround/HotPixel.cpp geos-3.2.2/source/noding/snapround/HotPixel.cpp --- geos-3.1.0/source/noding/snapround/HotPixel.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/snapround/HotPixel.cpp 2009-04-08 11:53:11.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: HotPixel.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: HotPixel.cpp 2322 2009-04-08 10:53:11Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,11 +13,12 @@ * ********************************************************************** * - * Last port: noding/snapround/HotPixel.java rev. 1.2 (JTS-1.7) + * Last port: noding/snapround/HotPixel.java rev. 1.3 (JTS-1.9) * **********************************************************************/ #include +#include #include #include @@ -25,6 +26,7 @@ # include "geos/noding/snapround/HotPixel.inl" #endif +#include // for std::min and std::max #include #include @@ -74,7 +76,12 @@ maxx = pt.x + tolerance; miny = pt.y - tolerance; maxy = pt.y + tolerance; - corner.assign(4, Coordinate(minx, maxy)); + + corner.resize(4); + corner[0] = Coordinate(maxx, maxy); + corner[1] = Coordinate(minx, maxy); + corner[2] = Coordinate(minx, miny); + corner[3] = Coordinate(maxx, maxy); } bool @@ -83,9 +90,6 @@ { if (scaleFactor == 1.0) return intersectsScaled(p0, p1); - Coordinate p0Scaled; - Coordinate p1Scaled; - copyScaled(p0, p0Scaled); copyScaled(p1, p1Scaled); @@ -97,12 +101,10 @@ const Coordinate& p1) const { -#define MIN(x,y) (x)<(y)?(x):(y) - - double segMinx = MIN(p0.x, p1.x); - double segMaxx = MIN(p0.x, p1.x); - double segMiny = MIN(p0.y, p1.y); - double segMaxy = MIN(p0.y, p1.y); + double segMinx = std::min(p0.x, p1.x); + double segMaxx = std::max(p0.x, p1.x); + double segMiny = std::min(p0.y, p1.y); + double segMaxy = std::max(p0.y, p1.y); bool isOutsidePixelEnv = maxx < segMinx || minx > segMaxx @@ -166,6 +168,21 @@ return false; } +bool +HotPixel::addSnappedNode(NodedSegmentString& segStr, size_t segIndex) +{ + const Coordinate& p0 = segStr.getCoordinate(segIndex); + const Coordinate& p1 = segStr.getCoordinate(segIndex + 1); + + if (intersects(p0, p1)) + { + //cout << "snapped: " << snapPt << endl; + segStr.addIntersection(getCoordinate(), segIndex); + return true; + } + return false; +} + } // namespace geos.noding.snapround } // namespace geos.noding diff -Nru geos-3.1.0/source/noding/snapround/Makefile.in geos-3.2.2/source/noding/snapround/Makefile.in --- geos-3.1.0/source/noding/snapround/Makefile.in 2009-03-11 19:13:58.000000000 +0000 +++ geos-3.2.2/source/noding/snapround/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libsnapround_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,38 +53,70 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libsnapround_la_DEPENDENCIES = am_libsnapround_la_OBJECTS = HotPixel.lo MCIndexPointSnapper.lo \ MCIndexSnapRounder.lo SimpleSnapRounder.lo libsnapround_la_OBJECTS = $(am_libsnapround_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libsnapround_la_SOURCES) DIST_SOURCES = $(libsnapround_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -111,21 +144,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -134,20 +163,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -168,6 +205,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -179,19 +217,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -203,36 +235,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libsnapround.la INCLUDES = -I$(top_srcdir)/source/headers @@ -251,14 +296,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/noding/snapround/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/noding/snapround/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/noding/snapround/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/noding/snapround/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -276,6 +321,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -286,7 +332,7 @@ rm -f "$${dir}/so_locations"; \ done libsnapround.la: $(libsnapround_la_OBJECTS) $(libsnapround_la_DEPENDENCIES) - $(CXXLINK) $(libsnapround_la_LDFLAGS) $(libsnapround_la_OBJECTS) $(libsnapround_la_LIBADD) $(LIBS) + $(CXXLINK) $(libsnapround_la_OBJECTS) $(libsnapround_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -300,22 +346,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleSnapRounder.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -326,10 +372,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -354,15 +396,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -389,16 +430,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -406,14 +447,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -425,81 +466,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -529,6 +590,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -542,7 +604,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -550,18 +612,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -582,23 +664,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/noding/snapround/MCIndexPointSnapper.cpp geos-3.2.2/source/noding/snapround/MCIndexPointSnapper.cpp --- geos-3.1.0/source/noding/snapround/MCIndexPointSnapper.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/snapround/MCIndexPointSnapper.cpp 2009-12-03 19:11:28.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexPointSnapper.cpp 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: MCIndexPointSnapper.cpp 2765 2009-12-03 19:11:28Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,7 +13,7 @@ * ********************************************************************** * - * Last port: noding/snapround/MCIndexPointSnapper.java rev. 1.2 (JTS-1.7) + * Last port: noding/snapround/MCIndexPointSnapper.java rev. 1.4 (JTS-1.9) * **********************************************************************/ @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -38,18 +39,13 @@ class HotPixelSnapAction: public index::chain::MonotoneChainSelectAction { -private: - const HotPixel& hotPixel; - SegmentString* parentEdge; - unsigned int vertexIndex; - bool isNodeAddedVar; - public: - HotPixelSnapAction(const HotPixel& nHotPixel, + HotPixelSnapAction(HotPixel& nHotPixel, SegmentString* nParentEdge, unsigned int nVertexIndex) : + MonotoneChainSelectAction(), hotPixel(nHotPixel), parentEdge(nParentEdge), vertexIndex(nVertexIndex), @@ -61,26 +57,35 @@ void select(chain::MonotoneChain& mc, unsigned int startIndex) { // This is casting away 'constness'! - SegmentString& ss = *(static_cast(mc.getContext())); + NodedSegmentString& ss = *(static_cast(mc.getContext())); // don't snap a vertex to itself if ( parentEdge ) { if (&ss == parentEdge && startIndex == vertexIndex) return; } - isNodeAddedVar = SimpleSnapRounder::addSnappedNode(hotPixel, ss, startIndex); + + //isNodeAddedVar = SimpleSnapRounder::addSnappedNode(hotPixel, ss, startIndex); + + isNodeAddedVar = hotPixel.addSnappedNode(ss, startIndex); } - void select(LineSegment* ls) - { - UNREFERENCED_PARAMETER(ls); - } + void select(const LineSegment& ls) + { + ::geos::ignore_unused_variable_warning(ls); + } + +private: + HotPixel& hotPixel; + SegmentString* parentEdge; + unsigned int vertexIndex; + bool isNodeAddedVar; + // Declare type as noncopyable + HotPixelSnapAction(const HotPixelSnapAction& other); + HotPixelSnapAction& operator=(const HotPixelSnapAction& rhs); }; class MCIndexPointSnapperVisitor: public ItemVisitor { -private: - const Envelope& pixelEnv; - chain::MonotoneChainSelectAction& action; public: MCIndexPointSnapperVisitor(const Envelope& nPixelEnv, HotPixelSnapAction& nAction) @@ -96,11 +101,19 @@ *(static_cast(item)); testChain.select(pixelEnv, action); } + +private: + const Envelope& pixelEnv; + chain::MonotoneChainSelectAction& action; + + // Declare type as noncopyable + MCIndexPointSnapperVisitor(const MCIndexPointSnapperVisitor& other); + MCIndexPointSnapperVisitor& operator=(const MCIndexPointSnapperVisitor& rhs); }; /* public */ bool -MCIndexPointSnapper::snap(const HotPixel& hotPixel, +MCIndexPointSnapper::snap(HotPixel& hotPixel, SegmentString* parentEdge, unsigned int vertexIndex) { diff -Nru geos-3.1.0/source/noding/snapround/MCIndexSnapRounder.cpp geos-3.2.2/source/noding/snapround/MCIndexSnapRounder.cpp --- geos-3.1.0/source/noding/snapround/MCIndexSnapRounder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/snapround/MCIndexSnapRounder.cpp 2009-04-07 20:00:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MCIndexSnapRounder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MCIndexSnapRounder.cpp 2319 2009-04-07 19:00:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,7 +13,7 @@ * ********************************************************************** * - * Last port: noding/snapround/MCIndexSnapRounder.java rev. 1.1 (JTS-1.7) + * Last port: noding/snapround/MCIndexSnapRounder.java rev. 1.3 (JTS-1.9) * **********************************************************************/ @@ -46,7 +46,7 @@ /*private*/ void MCIndexSnapRounder::findInteriorIntersections(MCIndexNoder& noder, - SegmentString::NonConstVect* segStrings, + NodedSegmentString::NonConstVect* segStrings, vector& intersections) { IntersectionFinderAdder intFinderAdder(li, intersections); @@ -71,7 +71,7 @@ /*private*/ void -MCIndexSnapRounder::computeEdgeVertexSnaps(SegmentString* e) +MCIndexSnapRounder::computeVertexSnaps(NodedSegmentString* e) { CoordinateSequence& pts0 = *(e->getCoordinates()); for (unsigned int i=0, n=pts0.size()-1; i(*i); + assert(edge0); + computeVertexSnaps(edge0); + } } /*private*/ @@ -125,7 +132,7 @@ SegmentString::NonConstVect& inputSegmentStrings) { auto_ptr resultSegStrings( - SegmentString::getNodedSubstrings(inputSegmentStrings) + NodedSegmentString::getNodedSubstrings(inputSegmentStrings) ); NodingValidator nv(*(resultSegStrings.get())); diff -Nru geos-3.1.0/source/noding/snapround/SimpleSnapRounder.cpp geos-3.2.2/source/noding/snapround/SimpleSnapRounder.cpp --- geos-3.1.0/source/noding/snapround/SimpleSnapRounder.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/noding/snapround/SimpleSnapRounder.cpp 2009-04-08 14:16:37.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleSnapRounder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleSnapRounder.cpp 2326 2009-04-08 13:16:37Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,13 +13,14 @@ * ********************************************************************** * - * Last port: noding/snapround/SimpleSnapRounder.java rev. 1.2 (JTS-1.7) + * Last port: noding/snapround/SimpleSnapRounder.java rev. 1.4 (JTS-1.9) * **********************************************************************/ #include #include #include +#include #include #include #include @@ -77,7 +78,7 @@ SegmentString::NonConstVect& inputSegmentStrings) { auto_ptr resultSegStrings( - SegmentString::getNodedSubstrings(inputSegmentStrings) + NodedSegmentString::getNodedSubstrings(inputSegmentStrings) ); NodingValidator nv(*(resultSegStrings.get())); @@ -99,9 +100,7 @@ i=segStrings.begin(), iEnd=segStrings.end(); i!=iEnd; ++i) { - SegmentString* ss = *i; - - ss->testInvariant(); + NodedSegmentString* ss = dynamic_cast(*i); computeSnaps(ss, snapPts); } @@ -109,7 +108,7 @@ /*private*/ void -SimpleSnapRounder::computeSnaps(SegmentString* ss, vector& snapPts) +SimpleSnapRounder::computeSnaps(NodedSegmentString* ss, vector& snapPts) { for (vector::iterator it=snapPts.begin(), itEnd=snapPts.end(); @@ -118,33 +117,14 @@ const Coordinate& snapPt = *it; HotPixel hotPixel(snapPt, scaleFactor, li); for (int i=0, n=ss->size()-1; igetCoordinates(); const CoordinateSequence* pts1 = e1->getCoordinates(); @@ -161,7 +141,7 @@ continue; } //cerr<<"trying "<getAt(i1)<<" "<getAt(i1 + 1)<addIntersection(p0, i0); @@ -179,12 +159,14 @@ i0=edges.begin(), i0End=edges.end(); i0!=i0End; ++i0) { - SegmentString* edge0 = *i0; + NodedSegmentString* edge0 = dynamic_cast(*i0); + assert(edge0); for (SegmentString::NonConstVect::const_iterator i1=edges.begin(), i1End=edges.end(); i1!=i1End; ++i1) { - SegmentString* edge1 = *i1; + NodedSegmentString* edge1 = dynamic_cast(*i1); + assert(edge1); computeVertexSnaps(edge0, edge1); } } diff -Nru geos-3.1.0/source/operation/buffer/BufferBuilder.cpp geos-3.2.2/source/operation/buffer/BufferBuilder.cpp --- geos-3.1.0/source/operation/buffer/BufferBuilder.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/BufferBuilder.cpp 2009-10-05 20:29:45.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: BufferBuilder.cpp 2231 2009-01-05 23:42:08Z swongu $ + * $Id: BufferBuilder.cpp 2658 2009-10-05 19:29:45Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2007 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * @@ -14,32 +15,39 @@ * ********************************************************************** * - * Last port: operation/buffer/BufferBuilder.java rev. 1.23 (JTS-1.7) + * Last port: operation/buffer/BufferBuilder.java rev. 1.30 (JTS-1.10) * **********************************************************************/ -#include -#include #include #include #include #include #include +#include +#include #include #include #include #include #include +#include +#include +#include +#include +#include #include #include #include #include +#include #include #include #include #include #include #include +#include #include #include @@ -48,6 +56,9 @@ #include #include +// Debug single sided buffer +//#define GEOS_DEBUG_SSB 1 + #ifndef GEOS_DEBUG #define GEOS_DEBUG 0 #endif @@ -62,6 +73,7 @@ using namespace geos::noding; using namespace geos::algorithm; using namespace geos::operation::overlay; +using namespace geos::operation::linemerge; namespace geos { namespace operation { // geos.operation @@ -100,6 +112,220 @@ /*public*/ Geometry* +BufferBuilder::bufferLineSingleSided( const Geometry* g, double distance, + bool leftSide ) +{ + // Returns the line used to create a single-sided buffer. + // Input requirement: Must be a LineString. + const LineString* l = dynamic_cast< const LineString* >( g ); + if ( !l ) throw util::IllegalArgumentException("BufferBuilder::bufferLineSingleSided only accept linestrings"); + + // Get geometry factory and precision model. + const PrecisionModel* precisionModel = workingPrecisionModel; + if ( !precisionModel ) precisionModel = l->getPrecisionModel(); + + assert( precisionModel ); + assert( l ); + + geomFact = l->getFactory(); + + // First, generate the two-sided buffer using a butt-cap. + BufferParameters modParams = bufParams; + modParams.setEndCapStyle(BufferParameters::CAP_FLAT); + Geometry* buf = 0; + + // This is a (temp?) hack to workaround the fact that + // BufferBuilder BufferParamaters are immutable after + // construction, while we want to force the end cap + // style to FLAT for single-sided buffering + { + BufferBuilder tmp(modParams); + buf = tmp.buffer( l, distance ); + } + + // Create MultiLineStrings from this polygon. + Geometry* bufLineString = buf->getBoundary(); + +#ifdef GEOS_DEBUG_SSB + std::cerr << "input|" << *l << std::endl; + std::cerr << "buffer|" << *bufLineString << std::endl; +#endif + + // Then, get the raw (i.e. unnoded) single sided offset curve. + OffsetCurveBuilder curveBuilder( precisionModel, modParams ); + std::vector< CoordinateSequence* > lineList; + + std::auto_ptr< CoordinateSequence > coords ( g->getCoordinates() ); + curveBuilder.getSingleSidedLineCurve( coords.get(), distance, + lineList, leftSide, !leftSide ); + coords.reset(); + + // Create a SegmentString from these coordinates. + SegmentString::NonConstVect curveList; + for ( unsigned int i = 0; i < lineList.size(); ++i ) + { + CoordinateSequence* seq = lineList[i]; + + SegmentString* ss = new NodedSegmentString(seq, NULL); + curveList.push_back( ss ); + } + + // Node these SegmentStrings. + Noder* noder = getNoder( precisionModel ); + noder->computeNodes( &curveList ); + SegmentString::NonConstVect* nodedEdges = noder->getNodedSubstrings(); + + // Create a geometry out of the noded substrings. + std::vector< Geometry* >* singleSidedNodedEdges = + new std::vector< Geometry * >(); + for ( unsigned int i = 0, n = nodedEdges->size(); i < n; ++i ) + { + SegmentString* ss = ( *nodedEdges )[i]; + + Geometry* tmp = geomFact->createLineString( + ss->getCoordinates()->clone() + ); + singleSidedNodedEdges->push_back( tmp ); + } + + if ( nodedEdges != &curveList ) delete nodedEdges; + + for (size_t i=0, n=curveList.size(); icreateMultiLineString( + singleSidedNodedEdges ); + +#ifdef GEOS_DEBUG_SSB + std::cerr << "edges|" << *singleSided << std::endl; +#endif + + // Use the boolean operation intersect to obtain the line segments lying + // on both the butt-cap buffer and this multi-line. + //Geometry* intersectedLines = singleSided->intersection( bufLineString ); + // NOTE: we use Snapped overlay because the actual buffer boundary might + // diverge from original offset curves due to the addition of + // intersections with caps and joins curves + using geos::operation::overlay::snap::SnapOverlayOp; + Geometry* intersectedLines = SnapOverlayOp::overlayOp(*singleSided, *bufLineString, OverlayOp::opINTERSECTION).release(); + +#ifdef GEOS_DEBUG_SSB + std::cerr << "intersection" << "|" << *intersectedLines << std::endl; +#endif + + // Merge result lines together. + LineMerger lineMerge; + lineMerge.add( intersectedLines ); + std::auto_ptr< std::vector< LineString* > > mergedLines ( + lineMerge.getMergedLineStrings() ); + + // Convert the result into a std::vector< Geometry* >. + std::vector< Geometry* >* mergedLinesGeom = new std::vector< Geometry* >(); + const Coordinate& startPoint = l->getCoordinatesRO()->front(); + const Coordinate& endPoint = l->getCoordinatesRO()->back(); + while( !mergedLines->empty() ) + { + // Remove end points if they are a part of the original line to be + // buffered. + CoordinateSequence::AutoPtr coords(mergedLines->back()->getCoordinates()); + if ( NULL != coords.get() ) + { + // Use 98% of the buffer width as the point-distance requirement - this + // is to ensure that the point that is "distance" +/- epsilon is not + // included. + const double ptDistAllowance = 0.98 * distance; + // Use 102% of the buffer width as the line-length requirement - this + // is to ensure that line segments that is length "distance" +/- + // epsilon is removed. + const double segLengthAllowance = 1.02 * distance; + + // Clean up the front of the list. + // Loop until the line's end is not inside the buffer width from + // the startPoint. + while ( coords->size() > 1 && + coords->front().distance( startPoint ) < ptDistAllowance ) + { + // Record the end segment length. + double segLength = coords->front().distance( ( *coords )[1] ); + // Stop looping if there are no more points, or if the segment + // length is larger than the buffer width. + if ( coords->size() <= 1 || segLength > segLengthAllowance ) + { + break; + } + // If the first point is less than buffer width away from the + // reference point, then delete the point. + coords->deleteAt( 0 ); + } + while ( coords->size() > 1 && + coords->front().distance( endPoint ) < ptDistAllowance ) + { + double segLength = coords->front().distance( ( *coords )[1] ); + if ( coords->size() <= 1 || segLength > segLengthAllowance ) + { + break; + } + coords->deleteAt( 0 ); + } + + // Clean up the back of the list. + while ( coords->size() > 1 && + coords->back().distance( startPoint ) < ptDistAllowance ) + { + double segLength = coords->back().distance( + ( *coords )[coords->size()-2] ); + if ( coords->size() <= 1 || segLength > segLengthAllowance ) + { + break; + } + coords->deleteAt( coords->size()-1 ); + } + while ( coords->size() > 1 && + coords->back().distance( endPoint ) < ptDistAllowance ) + { + double segLength = coords->back().distance( + ( *coords )[coords->size()-2] ); + if ( coords->size() <= 1 || segLength > segLengthAllowance ) + { + break; + } + coords->deleteAt( coords->size()-1 ); + } + + // Add the coordinates to the resultant line string. + if ( coords->size() > 1 ) + { + mergedLinesGeom->push_back( geomFact->createLineString( coords.release() ) ); + } + } + + geomFact->destroyGeometry( mergedLines->back() ); + mergedLines->pop_back(); + } + + // Clean up. + if ( noder != workingNoder ) delete noder; + geomFact->destroyGeometry( buf ); + geomFact->destroyGeometry( bufLineString ); + geomFact->destroyGeometry( singleSided ); + geomFact->destroyGeometry( intersectedLines ); + + if ( mergedLinesGeom->size() > 1 ) return geomFact->createMultiLineString( mergedLinesGeom ); + else + { + // Must be a single line + Geometry* single = (*mergedLinesGeom)[0]; + delete mergedLinesGeom; + return single; + } +} + +/*public*/ +Geometry* BufferBuilder::buffer(const Geometry *g, double distance) // throw(GEOSException *) { @@ -113,8 +339,7 @@ // factory must be the same as the one used by the input geomFact=g->getFactory(); - OffsetCurveBuilder curveBuilder(precisionModel, quadrantSegments); - curveBuilder.setEndCapStyle(endCapStyle); + OffsetCurveBuilder curveBuilder(precisionModel, bufParams); OffsetCurveSetBuilder curveSetBuilder(*g, distance, curveBuilder); std::vector& bufferSegStrList=curveSetBuilder.getCurves(); @@ -161,7 +386,7 @@ #endif Geometry* resultGeom=NULL; - std::vector *resultPolyList=NULL; + std::auto_ptr< std::vector > resultPolyList; std::vector subgraphList; try { @@ -178,7 +403,7 @@ #endif PolygonBuilder polyBuilder(geomFact); buildSubgraphs(subgraphList, polyBuilder); - resultPolyList=polyBuilder.getPolygons(); + resultPolyList.reset( polyBuilder.getPolygons() ); #if GEOS_DEBUG std::cerr << "PolygonBuilder got " << resultPolyList->size() << " polygons" << std::endl; @@ -195,7 +420,8 @@ return createEmptyResultGeometry(); } - resultGeom=geomFact->buildGeometry(resultPolyList); + // resultPolyList ownership transferred here + resultGeom=geomFact->buildGeometry(resultPolyList.release()); } catch (const util::GEOSException& /* exc */) { for (size_t i=0, n=subgraphList.size(); icomputeNodes(&bufferSegStrList); @@ -284,7 +510,7 @@ Edge* edge = new Edge(cs, new Label(*oldLabel)); // will take care of the Edge ownership - insertEdge(edge); + insertUniqueEdge(edge); } if ( nodedSegStrings != &bufferSegStrList ) @@ -297,7 +523,7 @@ /*private*/ void -BufferBuilder::insertEdge(Edge *e) +BufferBuilder::insertUniqueEdge(Edge *e) { // MD 8 Oct 03 speed up identical edge lookup // fast lookup diff -Nru geos-3.1.0/source/operation/buffer/BufferInputLineSimplifier.cpp geos-3.2.2/source/operation/buffer/BufferInputLineSimplifier.cpp --- geos-3.1.0/source/operation/buffer/BufferInputLineSimplifier.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/buffer/BufferInputLineSimplifier.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,217 @@ +/********************************************************************** + * $Id: BufferInputLineSimplifier.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: operation/buffer/BufferInputLineSimplifier.java rev 1.6 (JTS-1.10) + * + **********************************************************************/ + +#include "BufferInputLineSimplifier.h" +#include // for inlines +#include // for constructing the return +#include // for use + +#include +#include +#include + +//#include + +using namespace geos::algorithm; // CGAlgorithms +using namespace geos::geom; +//using namespace geos::geomgraph; // DirectedEdge, Position + +namespace geos { +namespace operation { // geos.operation +namespace buffer { // geos.operation.buffer + +BufferInputLineSimplifier::BufferInputLineSimplifier( + const geom::CoordinateSequence& input) + : + inputLine(input), + angleOrientation(CGAlgorithms::COUNTERCLOCKWISE) +{} + +/*public static*/ +std::auto_ptr +BufferInputLineSimplifier::simplify(const geom::CoordinateSequence& inputLine, + double distanceTol) +{ + BufferInputLineSimplifier simp(inputLine); + return simp.simplify(distanceTol); +} + +/* public */ +std::auto_ptr +BufferInputLineSimplifier::simplify(double nDistanceTol) +{ + distanceTol = fabs(nDistanceTol); + if (nDistanceTol < 0) + angleOrientation = CGAlgorithms::CLOCKWISE; + + // rely on fact that boolean array is filled with false value + static const int startValue = INIT; + isDeleted.assign(inputLine.size(), startValue); + + bool isChanged = false; + do { + isChanged = deleteShallowConcavities(); + } while (isChanged); + + return collapseLine(); +} + +/* private */ +bool +BufferInputLineSimplifier::deleteShallowConcavities() +{ + /** + * Do not simplify end line segments of the line string. + * This ensures that end caps are generated consistently. + */ + unsigned int index = 1; + //int maxIndex = inputLine.size() - 1; + + unsigned int midIndex = findNextNonDeletedIndex(index); + unsigned int lastIndex = findNextNonDeletedIndex(midIndex); + + bool isChanged = false; + while (lastIndex < inputLine.size()) + { + // test triple for shallow concavity + bool isMiddleVertexDeleted = false; + if (isDeletable(index, midIndex, lastIndex, + distanceTol)) + { + isDeleted[midIndex] = DELETE; + isMiddleVertexDeleted = true; + isChanged = true; + } + // move simplification window forward + if (isMiddleVertexDeleted) + index = lastIndex; + else + index = midIndex; + + midIndex = findNextNonDeletedIndex(index); + lastIndex = findNextNonDeletedIndex(midIndex); + } + return isChanged; +} + +/* private */ +unsigned int +BufferInputLineSimplifier::findNextNonDeletedIndex(unsigned int index) const +{ + unsigned int next = index + 1; + const unsigned int len = inputLine.size(); + while (next < len && isDeleted[next] == DELETE) + next++; + return next; +} + +/* private */ +std::auto_ptr +BufferInputLineSimplifier::collapseLine() const +{ + std::auto_ptr coordList( + new CoordinateArraySequence()); + + for (size_t i=0, n=inputLine.size(); iadd(inputLine[i]); + } + + return coordList; +} + +/* private */ +bool +BufferInputLineSimplifier::isDeletable(int i0, int i1, int i2, + double distanceTol) const +{ + const Coordinate& p0 = inputLine[i0]; + const Coordinate& p1 = inputLine[i1]; + const Coordinate& p2 = inputLine[i2]; + + if (! isConcave(p0, p1, p2)) return false; + if (! isShallow(p0, p1, p2, distanceTol)) return false; + + // MD - don't use this heuristic - it's too restricting + // if (p0.distance(p2) > distanceTol) return false; + + return isShallowSampled(p0, p1, i0, i2, distanceTol); +} + +/* private */ +bool +BufferInputLineSimplifier::isShallowConcavity(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2, + double distanceTol) const +{ + int orientation = CGAlgorithms::computeOrientation(p0, p1, p2); + bool isAngleToSimplify = (orientation == angleOrientation); + if (! isAngleToSimplify) + return false; + + double dist = CGAlgorithms::distancePointLine(p1, p0, p2); + return dist < distanceTol; +} + +/* private */ +bool +BufferInputLineSimplifier::isShallowSampled(const geom::Coordinate& p0, + const geom::Coordinate& p2, + int i0, int i2, + double distanceTol) const +{ + // check every n'th point to see if it is within tolerance + int inc = (i2 - i0) / NUM_PTS_TO_CHECK; + if (inc <= 0) inc = 1; + + for (int i = i0; i < i2; i += inc) { + if (! isShallow(p0, p2, inputLine[i], distanceTol)) + return false; + } + return true; +} + +/* private */ +bool +BufferInputLineSimplifier::isShallow(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2, + double distanceTol) const +{ + double dist = CGAlgorithms::distancePointLine(p1, p0, p2); + return dist < distanceTol; +} + +/* private */ +bool +BufferInputLineSimplifier::isConcave(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2) const +{ + int orientation = CGAlgorithms::computeOrientation(p0, p1, p2); + bool isConcave = (orientation == angleOrientation); + return isConcave; +} + +} // namespace geos.operation.buffer +} // namespace geos.operation +} // namespace geos + diff -Nru geos-3.1.0/source/operation/buffer/BufferInputLineSimplifier.h geos-3.2.2/source/operation/buffer/BufferInputLineSimplifier.h --- geos-3.1.0/source/operation/buffer/BufferInputLineSimplifier.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/buffer/BufferInputLineSimplifier.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,189 @@ +/********************************************************************** + * $Id: BufferInputLineSimplifier.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: operation/buffer/BufferInputLineSimplifier.java rev 1.6 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H +#define GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H + +#include // complete type required +#include // for enum + +#include +#include // for composition + + +// Forward declarations +namespace geos { + namespace geom { + class CoordinateSequence; + //class PrecisionModel; + } +} + +namespace geos { +namespace operation { // geos.operation +namespace buffer { // geos.operation.buffer + +/** \brief + * Simplifies a buffer input line to + * remove concavities with shallow depth. + * + * The most important benefit of doing this + * is to reduce the number of points and the complexity of + * shape which will be buffered. + * It also reduces the risk of gores created by + * the quantized fillet arcs (although this issue + * should be eliminated in any case by the + * offset curve generation logic). + * + * A key aspect of the simplification is that it + * affects inside (concave or inward) corners only. + * Convex (outward) corners are preserved, since they + * are required to ensure that the eventual buffer curve + * lies at the correct distance from the input geometry. + * + * Another important heuristic used is that the end segments + * of the input are never simplified. This ensures that + * the client buffer code is able to generate end caps consistently. + * + * No attempt is made to avoid self-intersections in the output. + * This is acceptable for use for generating a buffer offset curve, + * but means that this cannot be used as a general-purpose polygon + * simplification algorithm. + * + * @author Martin Davis + * + */ +class BufferInputLineSimplifier +{ + +public: + + /** + * Simplify the input coordinate list. + * + * If the distance tolerance is positive, + * concavities on the LEFT side of the line are simplified. + * If the supplied distance tolerance is negative, + * concavities on the RIGHT side of the line are simplified. + * + * @param inputLine the coordinate sequence to simplify + * @param distanceTol simplification distance tolerance to use + * @return a simplified version of the coordinate sequence + */ + static std::auto_ptr simplify( + const geom::CoordinateSequence& inputLine, double distanceTol); + + BufferInputLineSimplifier(const geom::CoordinateSequence& input); + + /** + * Simplify the input coordinate list. + * If the distance tolerance is positive, + * concavities on the LEFT side of the line are simplified. + * If the supplied distance tolerance is negative, + * concavities on the RIGHT side of the line are simplified. + * + * @param distanceTol simplification distance tolerance to use + * @return the simplified coordinate list + */ + std::auto_ptr simplify(double distanceTol); + +private: + + /** + * Uses a sliding window containing 3 vertices to detect shallow angles + * in which the middle vertex can be deleted, since it does not + * affect the shape of the resulting buffer in a significant way. + * @return + */ + bool deleteShallowConcavities(); + + /** + * Finds the next non-deleted index, + * or the end of the point array if none + * + * @param index + * @return the next non-deleted index, if any + * @return inputLine.size() if there are no more non-deleted indices + */ + unsigned int findNextNonDeletedIndex(unsigned int index) const; + + std::auto_ptr collapseLine() const; + + bool isDeletable(int i0, int i1, int i2, double distanceTol) const; + + bool isShallowConcavity(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2, + double distanceTol) const; + + /** + * Checks for shallowness over a sample of points in the given section. + * + * This helps prevents the siplification from incrementally + * "skipping" over points which are in fact non-shallow. + * + * @param p0 start coordinate of section + * @param p2 end coordinate of section + * @param i0 start index of section + * @param i2 end index of section + * @param distanceTol distance tolerance + * @return + */ + bool isShallowSampled(const geom::Coordinate& p0, + const geom::Coordinate& p2, + int i0, int i2, double distanceTol) const; + + bool isShallow(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2, + double distanceTol) const; + + bool isConcave(const geom::Coordinate& p0, + const geom::Coordinate& p1, + const geom::Coordinate& p2) const; + + static const int NUM_PTS_TO_CHECK = 10; + + static const int INIT = 0; + static const int DELETE = 1; + static const int KEEP = 1; + + const geom::CoordinateSequence& inputLine; + double distanceTol; + std::vector isDeleted; + + int angleOrientation; + + // Declare type as noncopyable + BufferInputLineSimplifier(const BufferInputLineSimplifier& other); + BufferInputLineSimplifier& operator=(const BufferInputLineSimplifier& rhs); +}; + + +} // namespace geos.operation.buffer +} // namespace geos.operation +} // namespace geos + + +#endif // ndef GEOS_OP_BUFFER_BUFFERINPUTLINESIMPLIFIER_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/operation/buffer/BufferOp.cpp geos-3.2.2/source/operation/buffer/BufferOp.cpp --- geos-3.1.0/source/operation/buffer/BufferOp.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/BufferOp.cpp 2009-06-08 11:07:05.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: BufferOp.cpp 2171 2008-08-22 17:25:40Z warmerdam $ + * $Id: BufferOp.cpp 2559 2009-06-08 10:07:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005-2007 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * @@ -14,7 +15,7 @@ * ********************************************************************** * - * Last port: operation/buffer/BufferOp.java rev. 1.35 (JTS-1.7) + * Last port: operation/buffer/BufferOp.java rev. 1.43 (JTS-1.10) * **********************************************************************/ @@ -98,16 +99,6 @@ return resultGeometry; } -/*public*/ -Geometry* -BufferOp::getResultGeometry(double nDistance, int nQuadrantSegments) -{ - distance=nDistance; - setQuadrantSegments(nQuadrantSegments); - computeGeometry(); - return resultGeometry; -} - /*private*/ void BufferOp::computeGeometry() @@ -163,9 +154,7 @@ void BufferOp::bufferOriginalPrecision() { - BufferBuilder bufBuilder; - bufBuilder.setQuadrantSegments(quadrantSegments); - bufBuilder.setEndCapStyle(endCapStyle); + BufferBuilder bufBuilder(bufParams); //std::cerr<<"computing with original precision"< + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: operation/buffer/BufferParameters.java rev 1.5 (JTS-1.10) + * + **********************************************************************/ + +#include // for std::abs() +#include // for cos + +#include + + +#ifndef M_PI +#define M_PI 3.14159265358979323846 +#endif + +namespace geos { +namespace operation { // geos.operation +namespace buffer { // geos.operation.buffer + +// public static const +const double BufferParameters::DEFAULT_MITRE_LIMIT = 5.0; + +// public +BufferParameters::BufferParameters(int quadrantSegments) + : + quadrantSegments(DEFAULT_QUADRANT_SEGMENTS), + endCapStyle(CAP_ROUND), + joinStyle(JOIN_ROUND), + mitreLimit(DEFAULT_MITRE_LIMIT) +{ + setQuadrantSegments(quadrantSegments); +} + +// public +BufferParameters::BufferParameters(int quadrantSegments, + EndCapStyle endCapStyle) + : + quadrantSegments(DEFAULT_QUADRANT_SEGMENTS), + endCapStyle(CAP_ROUND), + joinStyle(JOIN_ROUND), + mitreLimit(DEFAULT_MITRE_LIMIT) +{ + setQuadrantSegments(quadrantSegments); + setEndCapStyle(endCapStyle); +} + +// public +BufferParameters::BufferParameters(int quadrantSegments, + EndCapStyle endCapStyle, + JoinStyle joinStyle, + double mitreLimit) + : + quadrantSegments(DEFAULT_QUADRANT_SEGMENTS), + endCapStyle(CAP_ROUND), + joinStyle(JOIN_ROUND), + mitreLimit(DEFAULT_MITRE_LIMIT) +{ + setQuadrantSegments(quadrantSegments); + setEndCapStyle(endCapStyle); + setJoinStyle(joinStyle); + setMitreLimit(mitreLimit); +} + +// public +void +BufferParameters::setQuadrantSegments(int quadSegs) +{ + quadrantSegments = quadSegs; + + /** + * Indicates how to construct fillets. + * If qs >= 1, fillet is round, and qs indicates number of + * segments to use to approximate a quarter-circle. + * If qs = 0, fillet is bevelled flat (i.e. no filleting is performed) + * If qs < 0, fillet is mitred, and absolute value of qs + * indicates maximum length of mitre according to + * + * mitreLimit = |qs| + */ + if (quadrantSegments == 0) + joinStyle = JOIN_BEVEL; + if (quadrantSegments < 0) { + joinStyle = JOIN_MITRE; + mitreLimit = std::abs(quadrantSegments); + } + + if (quadSegs <= 0) { + quadrantSegments = 1; + } + + /** + * If join style was set by the quadSegs value, + * use the default for the actual quadrantSegments value. + */ + if (joinStyle != JOIN_ROUND) { + quadrantSegments = DEFAULT_QUADRANT_SEGMENTS; + } +} + +// public static +double +BufferParameters::bufferDistanceError(int quadSegs) +{ + double alpha = M_PI / 2.0 / quadSegs; + return 1 - cos(alpha / 2.0); +} + +} // namespace geos.operation.buffer +} // namespace geos.operation +} // namespace geos + diff -Nru geos-3.1.0/source/operation/buffer/BufferSubgraph.cpp geos-3.2.2/source/operation/buffer/BufferSubgraph.cpp --- geos-3.1.0/source/operation/buffer/BufferSubgraph.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/BufferSubgraph.cpp 2009-06-08 11:07:05.000000000 +0100 @@ -1,11 +1,11 @@ /********************************************************************** - * $Id: BufferSubgraph.cpp 1986 2007-06-08 15:27:42Z mloskot $ + * $Id: BufferSubgraph.cpp 2559 2009-06-08 10:07:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * - * Copyright (C) 2001-2002 Vivid Solutions Inc. * Copyright (C) 2005 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/buffer/BufferSubgraph.java rev. 1.17 + * Last port: operation/buffer/BufferSubgraph.java rev. 1.21 (JTS-1.10) * **********************************************************************/ @@ -49,7 +49,11 @@ namespace buffer { // geos.operation.buffer // Argument is unused -BufferSubgraph::BufferSubgraph(CGAlgorithms* /*cga*/): +BufferSubgraph::BufferSubgraph() + : + finder(), + dirEdgeList(), + nodes(), rightMostCoord(NULL), env(NULL) { @@ -171,11 +175,12 @@ } // MD - testing Result: breaks algorithm //if (startEdge==null) return; - //assert(startEdge!=NULL); - if (startEdge==NULL) + + // only compute string append if assertion would fail + if (startEdge == NULL) { throw util::TopologyException( - "unable to find edge to compute depths", + "unable to find edge to compute depths at", n->getCoordinate()); } diff -Nru geos-3.1.0/source/operation/buffer/Makefile.am geos-3.2.2/source/operation/buffer/Makefile.am --- geos-3.1.0/source/operation/buffer/Makefile.am 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/Makefile.am 2009-04-10 21:22:27.000000000 +0100 @@ -6,7 +6,10 @@ libopbuffer_la_SOURCES = \ BufferBuilder.cpp \ + BufferInputLineSimplifier.cpp \ + BufferInputLineSimplifier.h \ BufferOp.cpp \ + BufferParameters.cpp \ BufferSubgraph.cpp \ OffsetCurveBuilder.cpp \ OffsetCurveSetBuilder.cpp \ diff -Nru geos-3.1.0/source/operation/buffer/Makefile.in geos-3.2.2/source/operation/buffer/Makefile.in --- geos-3.1.0/source/operation/buffer/Makefile.in 2009-03-11 19:13:59.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libopbuffer_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,48 +53,82 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libopbuffer_la_DEPENDENCIES = -am_libopbuffer_la_OBJECTS = BufferBuilder.lo BufferOp.lo \ +am_libopbuffer_la_OBJECTS = BufferBuilder.lo \ + BufferInputLineSimplifier.lo BufferOp.lo BufferParameters.lo \ BufferSubgraph.lo OffsetCurveBuilder.lo \ OffsetCurveSetBuilder.lo RightmostEdgeFinder.lo \ SubgraphDepthLocater.lo libopbuffer_la_OBJECTS = $(am_libopbuffer_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libopbuffer_la_SOURCES) DIST_SOURCES = $(libopbuffer_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -121,21 +156,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -144,20 +175,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -178,6 +217,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -189,19 +229,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -213,42 +247,58 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libopbuffer.la INCLUDES = -I$(top_srcdir)/source/headers libopbuffer_la_SOURCES = \ BufferBuilder.cpp \ + BufferInputLineSimplifier.cpp \ + BufferInputLineSimplifier.h \ BufferOp.cpp \ + BufferParameters.cpp \ BufferSubgraph.cpp \ OffsetCurveBuilder.cpp \ OffsetCurveSetBuilder.cpp \ @@ -266,14 +316,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/buffer/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/buffer/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/buffer/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/buffer/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -291,6 +341,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -301,7 +352,7 @@ rm -f "$${dir}/so_locations"; \ done libopbuffer.la: $(libopbuffer_la_OBJECTS) $(libopbuffer_la_DEPENDENCIES) - $(CXXLINK) $(libopbuffer_la_LDFLAGS) $(libopbuffer_la_OBJECTS) $(libopbuffer_la_LIBADD) $(LIBS) + $(CXXLINK) $(libopbuffer_la_OBJECTS) $(libopbuffer_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -310,7 +361,9 @@ -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BufferBuilder.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BufferInputLineSimplifier.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BufferOp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BufferParameters.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BufferSubgraph.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OffsetCurveBuilder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OffsetCurveSetBuilder.Plo@am__quote@ @@ -318,22 +371,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SubgraphDepthLocater.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -344,10 +397,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -372,15 +421,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -407,16 +455,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -424,14 +472,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -443,81 +491,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -547,6 +615,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -560,7 +629,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -568,18 +637,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -600,23 +689,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/buffer/OffsetCurveBuilder.cpp geos-3.2.2/source/operation/buffer/OffsetCurveBuilder.cpp --- geos-3.1.0/source/operation/buffer/OffsetCurveBuilder.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/OffsetCurveBuilder.cpp 2009-12-03 19:02:17.000000000 +0000 @@ -1,11 +1,12 @@ /********************************************************************** - * $Id: OffsetCurveBuilder.cpp 1959 2007-01-09 17:34:00Z strk $ + * $Id: OffsetCurveBuilder.cpp 2763 2009-12-03 19:02:17Z mloskot $ * * GEOS-Geometry Engine Open Source * http://geos.refractions.net * - * Copyright (C) 2001-2002 Vivid Solutions Inc. + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2005 Refractions Research Inc. + * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published @@ -14,7 +15,7 @@ * ********************************************************************** * - * Last port: operation/buffer/OffsetCurveBuilder.java rev. 1.9 + * Last port: operation/buffer/OffsetCurveBuilder.java rev. 1.30 (JTS-1.10) * **********************************************************************/ @@ -23,20 +24,29 @@ #include #include +#include #include #include +#include #include #include #include #include #include +#include +#include +#include #include "OffsetCurveVertexList.h" +#include "BufferInputLineSimplifier.h" #ifndef GEOS_DEBUG #define GEOS_DEBUG 0 #endif +// Define this to skip the input simplification step (for testing) +//#define SKIP_INPUT_SIMPLIFICATION + using namespace std; using namespace geos::geomgraph; using namespace geos::algorithm; @@ -47,20 +57,24 @@ namespace buffer { // geos.operation.buffer /*private data*/ -const double OffsetCurveBuilder::MIN_CURVE_VERTEX_FACTOR = 1.0E-6; +const double OffsetCurveBuilder::CURVE_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-6; const double OffsetCurveBuilder::PI = 3.14159265358979; const double OffsetCurveBuilder::MAX_CLOSING_SEG_LEN = 3.0; +const double OffsetCurveBuilder::OFFSET_SEGMENT_SEPARATION_FACTOR = 1.0E-3; +const double OffsetCurveBuilder::INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR = 1.0E-3; +const double OffsetCurveBuilder::SIMPLIFY_FACTOR = 100.0; /*public*/ OffsetCurveBuilder::OffsetCurveBuilder(const PrecisionModel *newPrecisionModel, - int quadrantSegments) + const BufferParameters& nBufParams) : li(), maxCurveSegmentError(0.0), vertexList(new OffsetCurveVertexList()), distance(0.0), precisionModel(newPrecisionModel), - endCapStyle(BufferOp::CAP_ROUND), + bufParams(nBufParams), + closingSegFactor(1), s0(), s1(), s2(), @@ -69,10 +83,23 @@ offset0(), offset1(), side(0), + endCapIndex(0), vertexLists() { - int limitedQuadSegs=quadrantSegments<1 ? 1 : quadrantSegments; - filletAngleQuantum=PI / 2.0 / limitedQuadSegs; + // compute intersections in full precision, to provide accuracy + // the points are rounded as they are inserted into the curve line + filletAngleQuantum = PI / 2.0 / bufParams.getQuadrantSegments(); + + /** + * Non-round joins cause issues with short closing segments, + * so don't use them. In any case, non-round joins + * only really make sense for relatively small buffer distances. + */ + if (bufParams.getQuadrantSegments() >= 8 + && bufParams.getJoinStyle() == BufferParameters::JOIN_ROUND) + { + closingSegFactor = MAX_CLOSING_SEG_FRACTION; + } } /*public*/ @@ -93,85 +120,194 @@ init(distance); - if (inputPts->getSize() < 2) { - switch (endCapStyle) { - case BufferOp::CAP_ROUND: + if (inputPts->getSize() <= 1) { + switch (bufParams.getEndCapStyle()) { + case BufferParameters::CAP_ROUND: addCircle(inputPts->getAt(0), distance); break; - case BufferOp::CAP_SQUARE: + case BufferParameters::CAP_SQUARE: addSquare(inputPts->getAt(0), distance); break; - // default is for buffer to be empty (e.g. for a butt line cap); + default: + // default is for buffer to be empty + // (e.g. for a butt line cap); + break; } } else { computeLineBufferCurve(*inputPts); } + + // NOTE: we take ownership of lineCoord here ... CoordinateSequence *lineCoord=vertexList->getCoordinates(); + + // ... and we give it away here lineList.push_back(lineCoord); } /*public*/ void +OffsetCurveBuilder::getSingleSidedLineCurve(const CoordinateSequence* inputPts, + double distance, vector& lineList, bool leftSide, + bool rightSide) +{ + // A zero or negative width buffer of a line/point is empty. + if ( distance <= 0.0 ) return ; + + init( distance ) ; + + if ( inputPts->getSize() < 2 ) + { + // No cap, so just return. + return ; + } + else + { + computeLineBufferCurve( *inputPts ) ; + } + + // NOTE: we take ownership of lineCoord here ... + std::auto_ptr lineCoord (vertexList->getCoordinates()); + + // [strk] Oct 1, 2009 + // Left side: index [n-1] to [endCapIndex] + // Right side: index [endCapIndex+1] to [n-2] + // Where n is the last index (size-1). + int n = lineCoord->size() - 1 ; + + // Add the left side curve to the line list. + if ( leftSide ) + { + CoordinateArraySequence* coordSeq = new CoordinateArraySequence() ; + //coordSeq->add( ( *lineCoord )[n-2] ) ; + coordSeq->add( ( *lineCoord )[n-1] ) ; + for ( int i = 0 ; i <= endCapIndex ; ++i ) + { + coordSeq->add( ( *lineCoord )[i] ) ; + } + lineList.push_back( coordSeq ) ; + } + + // Add the right side curve to the line list. + if ( rightSide ) + { + CoordinateArraySequence* coordSeq = new CoordinateArraySequence() ; + for ( int i = endCapIndex+1 ; i <= n-2 ; ++i ) + { + coordSeq->add( ( *lineCoord )[i] ) ; + } + + lineList.push_back( coordSeq ) ; + } +} + +/*public*/ +void OffsetCurveBuilder::getRingCurve(const CoordinateSequence *inputPts, int side, double distance, vector& lineList) { init(distance); - if (inputPts->getSize()<= 2) + if (inputPts->getSize() <= 2) { getLineCurve(inputPts, distance, lineList); return; } - // optimize creating ring for for zero distance - if (distance==0.0) { + + // optimize creating ring for zero distance + if (distance == 0.0) { vertexLists.push_back(vertexList); vertexList = new OffsetCurveVertexList(); // is this needed ? lineList.push_back(inputPts->clone()); return; } + computeRingBufferCurve(*inputPts, side); - lineList.push_back(vertexList->getCoordinates()); // this will be vertexList + + // this will be vertexList + // NOTE: getCoordinates() take ownership of the CoordinateSequence + lineList.push_back(vertexList->getCoordinates()); } /*private*/ void OffsetCurveBuilder::init(double newDistance) { - distance=newDistance; - maxCurveSegmentError=distance*(1-cos(filletAngleQuantum/2.0)); + distance = newDistance; + maxCurveSegmentError = distance * (1 - cos(filletAngleQuantum/2.0)); + // Point list needs to be reset // but if a previous point list exists // we'd better back it up for final deletion vertexLists.push_back(vertexList); vertexList=new OffsetCurveVertexList(); vertexList->setPrecisionModel(precisionModel); + /** - * Choose the min vertex separation as a small fraction of the offset distance. + * Choose the min vertex separation as a small fraction of + * the offset distance. */ - vertexList->setMinimumVertexDistance(distance * MIN_CURVE_VERTEX_FACTOR); + vertexList->setMinimumVertexDistance( + distance * CURVE_VERTEX_SNAP_DISTANCE_FACTOR); +} + +/* private */ +double +OffsetCurveBuilder::simplifyTolerance(double bufDistance) +{ + return bufDistance / SIMPLIFY_FACTOR; } /*private*/ void OffsetCurveBuilder::computeLineBufferCurve(const CoordinateSequence& inputPts) { - int n=inputPts.size()-1; - // compute points for left side of line - initSideSegments(inputPts[0], inputPts[1], Position::LEFT); - for (int i=2;i<= n;i++) { - addNextSegment(inputPts[i], true); + double distTol = simplifyTolerance(distance); + + //--------- compute points for left side of line +#ifndef SKIP_INPUT_SIMPLIFICATION + // Simplify the appropriate side of the line before generating + std::auto_ptr simp1_ = + BufferInputLineSimplifier::simplify(inputPts, distTol); + const CoordinateSequence& simp1 = *simp1_; +#else + // MD - used for testing only (to eliminate simplification) + const CoordinateSequence& simp1 = inputPts; +#endif + + + int n1 = simp1.size() - 1; + initSideSegments(simp1[0], simp1[1], Position::LEFT); + for (int i = 2; i <= n1; ++i) { + addNextSegment(simp1[i], true); } addLastSegment(); // add line cap for end of line - addLineEndCap(inputPts[n-1], inputPts[n]); - // compute points for right side of line - initSideSegments(inputPts[n], inputPts[n-1], Position::LEFT); - for (int i=n-2; i>=0; i--) { - addNextSegment(inputPts[i], true); + addLineEndCap(simp1[n1-1], simp1[n1]); + + // Record the index of the end of line cap. + endCapIndex = vertexList->size() - 2 ; + + + //---------- compute points for right side of line +#ifndef SKIP_INPUT_SIMPLIFICATION + // Simplify the appropriate side of the line before generating + std::auto_ptr simp2_ = + BufferInputLineSimplifier::simplify(inputPts, -distTol); + const CoordinateSequence& simp2 = *simp2_; +#else + // MD - used for testing only (to eliminate simplification) + const CoordinateSequence& simp2 = inputPts; +#endif + + int n2 = simp2.size() - 1; + initSideSegments(simp2[n2], simp2[n2-1], Position::LEFT); + for (int i = n2-2; i >= 0; --i) { + addNextSegment(simp2[i], true); } addLastSegment(); // add line cap for start of line - addLineEndCap(inputPts[1], inputPts[0]); + addLineEndCap(simp2[1], simp2[0]); + vertexList->closeRing(); } @@ -180,18 +316,32 @@ OffsetCurveBuilder::computeRingBufferCurve(const CoordinateSequence& inputPts, int side) { - int n=inputPts.size()-1; - initSideSegments(inputPts[n-1], inputPts[0], side); - for (int i=1; i<=n; i++) { - bool addStartPoint=i != 1; - addNextSegment(inputPts[i], addStartPoint); + +#ifndef SKIP_INPUT_SIMPLIFICATION + double distTol = simplifyTolerance(distance); + // ensure that correct side is simplified + if (side == Position::RIGHT) + distTol = -distTol; + std::auto_ptr simp_ = + BufferInputLineSimplifier::simplify(inputPts, distTol); + const CoordinateSequence& simp = *simp_; +#else + const CoordinateSequence& simp = inputPts; +#endif + + int n = simp.size()-1; + initSideSegments(simp[n-1], simp[0], side); + for (int i = 1; i <= n; i++) { + bool addStartPoint = i != 1; + addNextSegment(simp[i], addStartPoint); } vertexList->closeRing(); } /*private*/ void -OffsetCurveBuilder::initSideSegments(const Coordinate &nS1, const Coordinate &nS2, int nSide) +OffsetCurveBuilder::initSideSegments(const Coordinate &nS1, + const Coordinate &nS2, int nSide) { s1=nS1; s2=nS2; @@ -204,7 +354,8 @@ void OffsetCurveBuilder::addNextSegment(const Coordinate &p, bool addStartPoint) { - // s0-s1-s2 are the coordinates of the previous segment and the current one + // s0-s1-s2 are the coordinates of the previous segment + // and the current one s0=s1; s1=s2; s2=p; @@ -215,72 +366,28 @@ // do nothing if points are equal if (s1==s2) return; + int orientation=CGAlgorithms::computeOrientation(s0, s1, s2); - bool outsideTurn =(orientation==CGAlgorithms::CLOCKWISE - && side==Position::LEFT) - ||(orientation==CGAlgorithms::COUNTERCLOCKWISE - && side==Position::RIGHT); - if (orientation==0) - { // lines are collinear - li.computeIntersection(s0,s1,s1,s2); - int numInt=li.getIntersectionNum(); + bool outsideTurn = + (orientation==CGAlgorithms::CLOCKWISE + && side==Position::LEFT) + || + (orientation==CGAlgorithms::COUNTERCLOCKWISE + && side==Position::RIGHT); - /** - * if numInt is<2, the lines are parallel and in the same direction. - * In this case the point can be ignored, since the offset lines will also be - * parallel. - */ - if (numInt>= 2) { - /** - * segments are collinear but reversing. Have to add an "end-cap" fillet - * all the way around to other direction - * This case should ONLY happen for LineStrings, so the orientation is always CW. - * Polygons can never have two consecutive segments which are parallel but - * reversed, because that would be a self intersection. - */ - addFillet(s1, offset0.p1, offset1.p0, CGAlgorithms::CLOCKWISE, distance); - } + if (orientation==0) + { + // lines are collinear + addCollinear(addStartPoint); } else if (outsideTurn) { - // add a fillet to connect the endpoints of the offset segments - if (addStartPoint) vertexList->addPt(offset0.p1); - // TESTING-comment out to produce beveled joins - addFillet(s1, offset0.p1, offset1.p0, orientation, distance); - vertexList->addPt(offset1.p0); + addOutsideTurn(orientation, addStartPoint); } else - { // inside turn - - // add intersection point of offset segments (if any) - li.computeIntersection( offset0.p0, offset0.p1, offset1.p0, offset1.p1); - if (li.hasIntersection()) { - vertexList->addPt(li.getIntersection(0)); - } else { - /** - * If no intersection, it means the angle is so small and/or the offset so large - * that the offsets segments don't intersect. - * In this case we must add a offset joining curve to make sure the buffer line - * is continuous and tracks the buffer correctly around the corner. - * Note that the joining curve won't appear in the final buffer. - * - * The intersection test above is vulnerable to robustness errors; - * i.e. it may be that the offsets should intersect very close to their - * endpoints, but don't due to rounding. To handle this situation - * appropriately, we use the following test: - * If the offset points are very close, don't add a joining curve - * but simply use one of the offset points - */ - if (offset0.p1.distance(offset1.p0)addPt(offset0.p1); - } else { - // add endpoint of this segment offset - vertexList->addPt(offset0.p1); - // MD-add in centre point of corner, to make sure offset closer lines have correct topology - vertexList->addPt(s1); - vertexList->addPt(offset1.p0); - } - } + { + // inside turn + addInsideTurn(orientation, addStartPoint); } } @@ -300,7 +407,8 @@ double dx = seg.p1.x - seg.p0.x; double dy = seg.p1.y - seg.p0.y; double len = sqrt(dx * dx + dy * dy); - // u is the vector that is the length of the offset, in the direction of the segment + // u is the vector that is the length of the offset, + // in the direction of the segment double ux = sideSign * distance * dx / len; double uy = sideSign * distance * dy / len; offset.p0.x = seg.p0.x - uy; @@ -311,37 +419,45 @@ /*private*/ void -OffsetCurveBuilder::addLineEndCap(const Coordinate &p0,const Coordinate &p1) +OffsetCurveBuilder::addLineEndCap(const Coordinate &p0, const Coordinate &p1) { LineSegment seg(p0, p1); + LineSegment offsetL; computeOffsetSegment(seg, Position::LEFT, distance, offsetL); LineSegment offsetR; computeOffsetSegment(seg, Position::RIGHT, distance, offsetR); + double dx=p1.x-p0.x; double dy=p1.y-p0.y; double angle=atan2(dy, dx); - switch (endCapStyle) { - case BufferOp::CAP_ROUND: + + switch (bufParams.getEndCapStyle()) { + case BufferParameters::CAP_ROUND: // add offset seg points with a fillet between them vertexList->addPt(offsetL.p1); - addFillet(p1, angle+PI/2.0, angle-PI/2.0, CGAlgorithms::CLOCKWISE, distance); + addFillet(p1, angle+PI/2.0, angle-PI/2.0, + CGAlgorithms::CLOCKWISE, distance); vertexList->addPt(offsetR.p1); break; - case BufferOp::CAP_BUTT: + case BufferParameters::CAP_FLAT: // only offset segment points are added vertexList->addPt(offsetL.p1); vertexList->addPt(offsetR.p1); break; - case BufferOp::CAP_SQUARE: - // add a square defined by extensions of the offset segment endpoints + case BufferParameters::CAP_SQUARE: + // add a square defined by extensions of the offset + // segment endpoints Coordinate squareCapSideOffset; squareCapSideOffset.x=fabs(distance)*cos(angle); squareCapSideOffset.y=fabs(distance)*sin(angle); - Coordinate squareCapLOffset(offsetL.p1.x+squareCapSideOffset.x, - offsetL.p1.y+squareCapSideOffset.y); - Coordinate squareCapROffset(offsetR.p1.x+squareCapSideOffset.x, - offsetR.p1.y+squareCapSideOffset.y); + + Coordinate squareCapLOffset( + offsetL.p1.x+squareCapSideOffset.x, + offsetL.p1.y+squareCapSideOffset.y); + Coordinate squareCapROffset( + offsetR.p1.x+squareCapSideOffset.x, + offsetR.p1.y+squareCapSideOffset.y); vertexList->addPt(squareCapLOffset); vertexList->addPt(squareCapROffset); break; @@ -351,43 +467,52 @@ /*private*/ void OffsetCurveBuilder::addFillet(const Coordinate &p, const Coordinate &p0, - const Coordinate &p1, int direction, double distance) + const Coordinate &p1, int direction, double radius) { - double dx0=p0.x-p.x; - double dy0=p0.y-p.y; - double startAngle=atan2(dy0, dx0); - double dx1=p1.x-p.x; - double dy1=p1.y-p.y; - double endAngle=atan2(dy1, dx1); - if (direction==CGAlgorithms::CLOCKWISE) { - if (startAngle<= endAngle) startAngle += 2.0*PI; - } else { // direction==COUNTERCLOCKWISE - if (startAngle>=endAngle) startAngle-=2.0*PI; + double dx0 = p0.x - p.x; + double dy0 = p0.y - p.y; + double startAngle = atan2(dy0, dx0); + double dx1 = p1.x - p.x; + double dy1 = p1.y - p.y; + double endAngle = atan2(dy1, dx1); + + if (direction == CGAlgorithms::CLOCKWISE) { + if (startAngle <= endAngle) startAngle += 2.0 * PI; } + else { // direction==COUNTERCLOCKWISE + if (startAngle >= endAngle) startAngle -= 2.0 * PI; + } + vertexList->addPt(p0); - addFillet(p, startAngle, endAngle, direction, distance); + addFillet(p, startAngle, endAngle, direction, radius); vertexList->addPt(p1); } /*private*/ void OffsetCurveBuilder::addFillet(const Coordinate &p, double startAngle, - double endAngle, int direction, double distance) + double endAngle, int direction, double radius) { - int directionFactor=direction==CGAlgorithms::CLOCKWISE ? -1 : 1; - double totalAngle=fabs(startAngle-endAngle); - int nSegs=(int) (totalAngle / filletAngleQuantum+0.5); - if (nSegs<1) return; // no segments because angle is less than increment-nothing to do! + int directionFactor = direction == CGAlgorithms::CLOCKWISE ? -1 : 1; + + double totalAngle = fabs(startAngle - endAngle); + int nSegs = (int) (totalAngle / filletAngleQuantum + 0.5); + + // no segments because angle is less than increment-nothing to do! + if (nSegs<1) return; + double initAngle, currAngleInc; + // choose angle increment so that each segment has equal length - initAngle=0.0; - currAngleInc=totalAngle / nSegs; - double currAngle=initAngle; + initAngle = 0.0; + currAngleInc = totalAngle / nSegs; + + double currAngle = initAngle; Coordinate pt; - while (currAngleaddPt(pt); currAngle += currAngleInc; } @@ -399,8 +524,7 @@ OffsetCurveBuilder::addCircle(const Coordinate &p, double distance) { // add start point - Coordinate pt(p); - pt.x+=distance; + Coordinate pt(p.x + distance, p.y); vertexList->addPt(pt); addFillet(p, 0.0, 2.0*PI, -1, distance); } @@ -417,6 +541,287 @@ vertexList->addPt(Coordinate(p.x+distance, p.y+distance)); } +/* private */ +void +OffsetCurveBuilder::addCollinear(bool addStartPoint) +{ + /** + * This test could probably be done more efficiently, + * but the situation of exact collinearity should be fairly rare. + */ + + li.computeIntersection(s0,s1,s1,s2); + int numInt=li.getIntersectionNum(); + + /** + * if numInt is<2, the lines are parallel and in the same direction. + * In this case the point can be ignored, since the offset lines + * will also be parallel. + */ + if (numInt>= 2) + { + /** + * Segments are collinear but reversing. + * Add an "end-cap" fillet + * all the way around to other direction + * + * This case should ONLY happen for LineStrings, + * so the orientation is always CW (Polygons can never + * have two consecutive segments which are parallel but + * reversed, because that would be a self intersection). + */ + if ( bufParams.getJoinStyle() == BufferParameters::JOIN_BEVEL + || bufParams.getJoinStyle() == BufferParameters::JOIN_MITRE) + { + if (addStartPoint) vertexList->addPt(offset0.p1); + vertexList->addPt(offset1.p0); + } + else + { + addFillet(s1, offset0.p1, offset1.p0, + CGAlgorithms::CLOCKWISE, distance); + } + } +} + +/* private */ +void +OffsetCurveBuilder::addOutsideTurn(int orientation, bool addStartPoint) +{ + /** + * Heuristic: If offset endpoints are very close together, + * just use one of them as the corner vertex. + * This avoids problems with computing mitre corners in the case + * where the two segments are almost parallel + * (which is hard to compute a robust intersection for). + */ + + if (offset0.p1.distance(offset1.p0) < + distance*OFFSET_SEGMENT_SEPARATION_FACTOR) + { + vertexList->addPt(offset0.p1); + return; + } + + if (bufParams.getJoinStyle() == BufferParameters::JOIN_MITRE) + { + addMitreJoin(s1, offset0, offset1, distance); + } + else if (bufParams.getJoinStyle() == BufferParameters::JOIN_BEVEL) + { + addBevelJoin(offset0, offset1); + } + else + { + // add a circular fillet connecting the endpoints + // of the offset segments + if (addStartPoint) vertexList->addPt(offset0.p1); + + // TESTING - comment out to produce beveled joins + addFillet(s1, offset0.p1, offset1.p0, orientation, distance); + vertexList->addPt(offset1.p0); + } +} + +/* private */ +void +OffsetCurveBuilder::addInsideTurn(int orientation, bool addStartPoint) +{ + ::geos::ignore_unused_variable_warning(orientation); + ::geos::ignore_unused_variable_warning(addStartPoint); + + // add intersection point of offset segments (if any) + li.computeIntersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1); + if (li.hasIntersection()) + { + vertexList->addPt(li.getIntersection(0)); + return; + } + + // If no intersection is detected, it means the angle is so small + // and/or the offset so large that the offsets segments don't + // intersect. In this case we must add a "closing segment" to make + // sure the buffer curve is continuous, + // fairly smooth (e.g. no sharp reversals in direction) + // and tracks the buffer correctly around the corner. + // The curve connects the endpoints of the segment offsets to points + // which lie toward the centre point of the corner. + // The joining curve will not appear in the final buffer outline, + // since it is completely internal to the buffer polygon. + // + // In complex buffer cases the closing segment may cut across many + // other segments in the generated offset curve. + // In order to improve the performance of the noding, the closing + // segment should be kept as short as possible. + // (But not too short, since that would defeat it's purpose). + // This is the purpose of the closingSegFactor heuristic value. + + /** + * The intersection test above is vulnerable to robustness errors; + * i.e. it may be that the offsets should intersect very close to + * their endpoints, but aren't reported as such due to rounding. + * To handle this situation appropriately, we use the following test: + * If the offset points are very close, don't add closing segments + * but simply use one of the offset points + */ + + if (offset0.p1.distance(offset1.p0) < + distance * INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) + { + vertexList->addPt(offset0.p1); + } + else + { + // add endpoint of this segment offset + vertexList->addPt(offset0.p1); + + // Add "closing segment" of required length. + if ( closingSegFactor > 0 ) + { + Coordinate mid0( + (closingSegFactor*offset0.p1.x + s1.x)/(closingSegFactor + 1), + (closingSegFactor*offset0.p1.y + s1.y)/(closingSegFactor + 1) + ); + vertexList->addPt(mid0); + + Coordinate mid1( + (closingSegFactor*offset1.p0.x + s1.x)/(closingSegFactor + 1), + (closingSegFactor*offset1.p0.y + s1.y)/(closingSegFactor + 1) + ); + vertexList->addPt(mid1); + } + else + { + // This branch is not expected to be used + // except for testing purposes. + // It is equivalent to the JTS 1.9 logic for + // closing segments (which results in very poor + // performance for large buffer distances) + vertexList->addPt(s1); + } + + // add start point of next segment offset + vertexList->addPt(offset1.p0); + } +} + +/* private */ +void +OffsetCurveBuilder::addMitreJoin(const geom::Coordinate& p, + const geom::LineSegment& offset0, + const geom::LineSegment& offset1, + double distance) +{ + bool isMitreWithinLimit = true; + Coordinate intPt; + + /** + * This computation is unstable if the offset segments + * are nearly collinear. + * Howver, this situation should have been eliminated earlier + * by the check for whether the offset segment endpoints are + * almost coincident + */ + try + { + HCoordinate::intersection(offset0.p0, offset0.p1, + offset1.p0, offset1.p1, + intPt); + + double mitreRatio = distance <= 0.0 ? 1.0 + : intPt.distance(p) / fabs(distance); + + if (mitreRatio > bufParams.getMitreLimit()) + isMitreWithinLimit = false; + } + catch (const NotRepresentableException& e) + { + ::geos::ignore_unused_variable_warning(e); + + intPt = Coordinate(0,0); + isMitreWithinLimit = false; + } + + if (isMitreWithinLimit) + { + vertexList->addPt(intPt); + } + else + { + addLimitedMitreJoin(offset0, offset1, distance, + bufParams.getMitreLimit()); + //addBevelJoin(offset0, offset1); + } +} + +/* private */ +void +OffsetCurveBuilder::addLimitedMitreJoin( + const geom::LineSegment& offset0, + const geom::LineSegment& offset1, + double distance, double mitreLimit) +{ + ::geos::ignore_unused_variable_warning(offset0); + ::geos::ignore_unused_variable_warning(offset1); + + const Coordinate& basePt = seg0.p1; + + double ang0 = Angle::angle(basePt, seg0.p0); + //double ang1 = Angle::angle(basePt, seg1.p1); // unused in JTS, bug ? + + // oriented angle between segments + double angDiff = Angle::angleBetweenOriented(seg0.p0, basePt, seg1.p1); + // half of the interior angle + double angDiffHalf = angDiff / 2; + + // angle for bisector of the interior angle between the segments + double midAng = Angle::normalize(ang0 + angDiffHalf); + // rotating this by PI gives the bisector of the reflex angle + double mitreMidAng = Angle::normalize(midAng + PI); + + // the miterLimit determines the distance to the mitre bevel + double mitreDist = mitreLimit * distance; + // the bevel delta is the difference between the buffer distance + // and half of the length of the bevel segment + double bevelDelta = mitreDist * fabs(sin(angDiffHalf)); + double bevelHalfLen = distance - bevelDelta; + + // compute the midpoint of the bevel segment + double bevelMidX = basePt.x + mitreDist * cos(mitreMidAng); + double bevelMidY = basePt.y + mitreDist * sin(mitreMidAng); + Coordinate bevelMidPt(bevelMidX, bevelMidY); + + // compute the mitre midline segment from the corner point to + // the bevel segment midpoint + LineSegment mitreMidLine(basePt, bevelMidPt); + + // finally the bevel segment endpoints are computed as offsets from + // the mitre midline + Coordinate bevelEndLeft; + mitreMidLine.pointAlongOffset(1.0, bevelHalfLen, bevelEndLeft); + Coordinate bevelEndRight; + mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen, bevelEndRight); + + if (side == Position::LEFT) { + vertexList->addPt(bevelEndLeft); + vertexList->addPt(bevelEndRight); + } + else { + vertexList->addPt(bevelEndRight); + vertexList->addPt(bevelEndLeft); + } + +} + +/* private */ +void +OffsetCurveBuilder::addBevelJoin( const geom::LineSegment& offset0, + const geom::LineSegment& offset1) +{ + vertexList->addPt(offset0.p1); + vertexList->addPt(offset1.p0); +} + } // namespace geos.operation.buffer } // namespace geos.operation } // namespace geos diff -Nru geos-3.1.0/source/operation/buffer/OffsetCurveSetBuilder.cpp geos-3.2.2/source/operation/buffer/OffsetCurveSetBuilder.cpp --- geos-3.1.0/source/operation/buffer/OffsetCurveSetBuilder.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/OffsetCurveSetBuilder.cpp 2009-10-05 19:40:11.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: OffsetCurveSetBuilder.cpp 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: OffsetCurveSetBuilder.cpp 2655 2009-10-05 18:40:11Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/buffer/OffsetCurveSetBuilder.java rev. 1.7 (JTS-1.7) + * Last port: operation/buffer/OffsetCurveSetBuilder.java rev. 1.11 (JTS-1.10) * **********************************************************************/ @@ -35,7 +35,7 @@ #include #include #include -#include +#include #include #include @@ -68,11 +68,11 @@ OffsetCurveSetBuilder::~OffsetCurveSetBuilder() { - //delete cga; for (size_t i=0, n=curveList.size(); igetCoordinates(); - delete curveList[i]; + SegmentString* ss = curveList[i]; + delete ss->getCoordinates(); + delete ss; } for (size_t i=0, n=newLabels.size(); isize() < 3) + { + delete shellCoord; + return; + } + addPolygonRing( shellCoord, offsetDistance, diff -Nru geos-3.1.0/source/operation/buffer/OffsetCurveVertexList.h geos-3.2.2/source/operation/buffer/OffsetCurveVertexList.h --- geos-3.1.0/source/operation/buffer/OffsetCurveVertexList.h 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/OffsetCurveVertexList.h 2009-09-27 21:43:03.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: OffsetCurveVertexList.h 2231 2009-01-05 23:42:08Z swongu $ + * $Id: OffsetCurveVertexList.h 2628 2009-09-27 20:43:03Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,7 +13,7 @@ * ********************************************************************** * - * Last port: operation/buffer/OffsetCurveVertexList.java rev. 1.1 + * Last port: operation/buffer/OffsetCurveVertexList.java rev. 1.2 (JTS-1.10) * **********************************************************************/ @@ -54,7 +54,6 @@ private: geom::CoordinateSequence* ptList; - bool ptListConsumed; const geom::PrecisionModel* precisionModel; @@ -87,10 +86,11 @@ public: + friend std::ostream& operator<< (std::ostream& os, const OffsetCurveVertexList& node); + OffsetCurveVertexList() : ptList(new geom::CoordinateArraySequence()), - ptListConsumed(false), precisionModel(NULL), minimumVertexDistance (0.0) { @@ -98,7 +98,6 @@ ~OffsetCurveVertexList() { - if (!ptListConsumed) delete ptList; } @@ -127,10 +126,11 @@ // (JTS uses a vector for ptList, not a CoordinateSequence, // we should do the same) ptList->add(bufPt, true); - //ptList.push_back(bufPt); } - // check that points are a ring - add the startpoint again if they are not + /// Check that points are a ring + // + /// add the startpoint again if they are not void closeRing() { if (ptList->size() < 1) return; @@ -141,23 +141,39 @@ ptList->add(startPt, true); } + /// Get coordinates by taking ownership of them + // + /// After this call, the coordinates reference in + /// this object are dropped. Calling twice will + /// segfault... + /// + /// FIXME: refactor memory management of this + /// geom::CoordinateSequence* getCoordinates() { closeRing(); - ptListConsumed = true; - return ptList; + geom::CoordinateSequence* ret = ptList; + ptList = 0; + return ret; } - // Added getCoordinatesRO(), which returns the coordinates without - // passing ownership to the caller. - const geom::CoordinateSequence* getCoordinatesRO() - { - closeRing(); - return ptList; - } + inline int size() const { return ptList ? ptList->size() : 0 ; } }; +std::ostream& operator<< (std::ostream& os, const OffsetCurveVertexList& lst) +{ + if ( lst.ptList ) + { + os << *(lst.ptList); + } + else + { + os << "empty (consumed?)"; + } + return os; +} + } // namespace geos.operation.buffer } // namespace geos.operation } // namespace geos diff -Nru geos-3.1.0/source/operation/buffer/RightmostEdgeFinder.cpp geos-3.2.2/source/operation/buffer/RightmostEdgeFinder.cpp --- geos-3.1.0/source/operation/buffer/RightmostEdgeFinder.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/RightmostEdgeFinder.cpp 2009-06-08 11:07:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RightmostEdgeFinder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RightmostEdgeFinder.cpp 2559 2009-06-08 10:07:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/buffer/RightmostEdgeFinder.java rev. 1.13 (JTS-1.7) + * Last port: operation/buffer/RightmostEdgeFinder.java rev. 1.14 (JTS-1.10) * **********************************************************************/ @@ -202,7 +202,7 @@ // of a non-horizontal segment // MD 19 Sep 03 - NO! we can test all vertices, // since the rightmost must have a non-horiz segment adjacent to it - if (minCoord==Coordinate::getNull() || + if (minCoord.isNull() || coord->getAt(i).x > minCoord.x ) { minDe = de; diff -Nru geos-3.1.0/source/operation/buffer/SubgraphDepthLocater.cpp geos-3.2.2/source/operation/buffer/SubgraphDepthLocater.cpp --- geos-3.1.0/source/operation/buffer/SubgraphDepthLocater.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/buffer/SubgraphDepthLocater.cpp 2009-06-08 11:07:05.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SubgraphDepthLocater.cpp 1974 2007-02-21 10:14:20Z strk $ + * $Id: SubgraphDepthLocater.cpp 2559 2009-06-08 10:07:05Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/buffer/SubgraphDepthLocater.java rev. 1.5 (JTS-1.7) + * Last port: operation/buffer/SubgraphDepthLocater.java rev. 1.7 (JTS-1.10) * **********************************************************************/ @@ -55,7 +55,7 @@ private: - geom::LineSegment& upwardSeg; + geom::LineSegment upwardSeg; /* * Compare two collinear segments for left-most ordering. @@ -80,7 +80,8 @@ int leftDepth; - DepthSegment(geom::LineSegment &seg, int depth) + /// @param seg will be copied to private space + DepthSegment(const geom::LineSegment &seg, int depth) : upwardSeg(seg), leftDepth(depth) diff -Nru geos-3.1.0/source/operation/distance/ConnectedElementLocationFilter.cpp geos-3.2.2/source/operation/distance/ConnectedElementLocationFilter.cpp --- geos-3.1.0/source/operation/distance/ConnectedElementLocationFilter.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/distance/ConnectedElementLocationFilter.cpp 2009-06-06 01:55:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConnectedElementLocationFilter.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConnectedElementLocationFilter.cpp 2553 2009-06-06 00:55:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/distance/ConnectedElementLocationFilter.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/distance/ConnectedElementPointFilter.cpp geos-3.2.2/source/operation/distance/ConnectedElementPointFilter.cpp --- geos-3.1.0/source/operation/distance/ConnectedElementPointFilter.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/distance/ConnectedElementPointFilter.cpp 2009-06-06 01:55:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConnectedElementPointFilter.cpp 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: ConnectedElementPointFilter.cpp 2553 2009-06-06 00:55:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/distance/ConnectedElementPointFilter.java rev. 1.7 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/distance/DistanceOp.cpp geos-3.2.2/source/operation/distance/DistanceOp.cpp --- geos-3.1.0/source/operation/distance/DistanceOp.cpp 2009-03-11 19:13:00.000000000 +0000 +++ geos-3.2.2/source/operation/distance/DistanceOp.cpp 2009-12-01 16:16:18.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: DistanceOp.cpp 2276 2009-03-11 12:51:20Z mloskot $ + * $Id: DistanceOp.cpp 2758 2009-12-01 16:16:18Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,13 +14,13 @@ * ********************************************************************** * + * Last port: operation/distance/DistanceOp.java rev 1.21 (JTS-1.10) + * **********************************************************************/ #include #include #include -//#include -//#include #include #include #include @@ -36,6 +36,11 @@ #include #include +#include + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif using namespace std; using namespace geos::geom; @@ -48,7 +53,7 @@ using namespace geom; //using namespace geom::util; -/*public static*/ +/*public static (deprecated)*/ double DistanceOp::distance(const Geometry *g0, const Geometry *g1) { @@ -57,20 +62,58 @@ } /*public static*/ +double +DistanceOp::distance(const Geometry& g0, const Geometry& g1) +{ + DistanceOp distOp(g0,g1); + return distOp.distance(); +} + +/*public static deprecated*/ CoordinateSequence* -DistanceOp::closestPoints(Geometry *g0,Geometry *g1) +DistanceOp::closestPoints(const Geometry *g0, const Geometry *g1) { DistanceOp distOp(g0,g1); - return distOp.closestPoints(); + return distOp.nearestPoints(); +} + +/*public static*/ +CoordinateSequence* +DistanceOp::nearestPoints(const Geometry *g0, const Geometry *g1) +{ + DistanceOp distOp(g0,g1); + return distOp.nearestPoints(); } DistanceOp::DistanceOp(const Geometry *g0, const Geometry *g1): - geom(2) + geom(2), + terminateDistance(0.0), + minDistanceLocation(0), + minDistance(DoubleMax) +{ + geom[0] = g0; + geom[1] = g1; +} + +DistanceOp::DistanceOp(const Geometry& g0, const Geometry& g1): + geom(2), + terminateDistance(0.0), + minDistanceLocation(0), + minDistance(DoubleMax) +{ + geom[0] = &g0; + geom[1] = &g1; +} + +DistanceOp::DistanceOp(const Geometry& g0, const Geometry& g1, double tdist) + : + geom(2), + terminateDistance(tdist), + minDistanceLocation(0), + minDistance(DoubleMax) { - geom[0]=g0; - geom[1]=g1; - minDistance=DoubleInfinity; - minDistanceLocation=NULL; + geom[0] = &g0; + geom[1] = &g1; } DistanceOp::~DistanceOp() @@ -99,96 +142,132 @@ return minDistance; } - -/** -* Report the coordinates of the closest points in the input geometries. -* The points are presented in the same order as the input Geometries. -* -* @return a pair of Coordinate s of the closest points -*/ +/* public */ CoordinateSequence* DistanceOp::closestPoints() { - assert(0 != minDistanceLocation); - std::vector& locs = *minDistanceLocation; + return nearestPoints(); +} + + +/* public */ +CoordinateSequence* +DistanceOp::nearestPoints() +{ + // lazily creates minDistanceLocation + computeMinDistance(); + + assert(0 != minDistanceLocation); + std::vector& locs = *minDistanceLocation; + + // Empty input geometries result in this behaviour + if ( locs[0] == 0 || locs[1] == 0 ) + { + // either both or none are set.. + assert(locs[0] == 0 && locs[1] == 0); + + return 0; + } - computeMinDistance(); + GeometryLocation* loc0 = locs[0]; + GeometryLocation* loc1 = locs[1]; + const Coordinate& c0 = loc0->getCoordinate(); + const Coordinate& c1 = loc1->getCoordinate(); - // FIXME: This code (refactored to make the bug visible) causes - // crash reported in Ticket #236 - // NOTE: In order to reproduce, uncomment test case test<17> - // in tests/unit/operation/distance/DistanceOpTest.cpp - GeometryLocation* loc0 = locs[0]; - GeometryLocation* loc1 = locs[1]; - // Assertion fails, so... - assert(0 != loc0 && 0 != loc1); - // ...accesss violation is thrown. - Coordinate& c0 = loc0->getCoordinate(); - Coordinate& c1 = loc1->getCoordinate(); - - CoordinateSequence* closestPts = new CoordinateArraySequence(); - closestPts->add(c0); - closestPts->add(c1); + CoordinateSequence* nearestPts = new CoordinateArraySequence(); + nearestPts->add(c0); + nearestPts->add(c1); - return closestPts; + return nearestPts; } -/** -* Report the locations of the closest points in the input geometries. -* The locations are presented in the same order as the input Geometries. -* -* @return a pair of {@link GeometryLocation}s for the closest points -*/ -vector* DistanceOp::closestLocations(){ +/*private, unused!*/ +vector* DistanceOp::nearestLocations(){ computeMinDistance(); return minDistanceLocation; } -void DistanceOp::updateMinDistance(double dist) { - if (dist& locGeom, bool flip) +{ + assert(minDistanceLocation); -void DistanceOp::updateMinDistance(vector *locGeom, bool flip){ // if not set then don't update - if ((*locGeom)[0]==NULL) return; + if (locGeom[0]==NULL) + { +#if GEOS_DEBUG +std::cerr << "updateMinDistance called with loc[0] == null and loc[1] == " << locGeom[1] << std::endl; +#endif + assert(locGeom[1] == NULL); + return; + } + delete (*minDistanceLocation)[0]; delete (*minDistanceLocation)[1]; if (flip) { - (*minDistanceLocation)[0]=(*locGeom)[1]; - (*minDistanceLocation)[1]=(*locGeom)[0]; + (*minDistanceLocation)[0]=locGeom[1]; + (*minDistanceLocation)[1]=locGeom[0]; } else { - (*minDistanceLocation)[0]=(*locGeom)[0]; - (*minDistanceLocation)[1]=(*locGeom)[1]; + (*minDistanceLocation)[0]=locGeom[0]; + (*minDistanceLocation)[1]=locGeom[1]; } } -void DistanceOp::computeMinDistance() { - if (minDistanceLocation!=NULL) return; - minDistanceLocation = new vector(2); - computeContainmentDistance(); - if (minDistance<=0.0) return; - computeLineDistance(); +/*private*/ +void +DistanceOp::computeMinDistance() +{ + // only compute once! + if (minDistanceLocation) return; + +#if GEOS_DEBUG + std::cerr << "---Start: " << geom[0]->toString() << " - " << geom[1]->toString() << std::endl; +#endif + + minDistanceLocation = new vector(2); + + computeContainmentDistance(); + + if (minDistance <= terminateDistance) + { + return; + } + + computeFacetDistance(); + +#if GEOS_DEBUG + std::cerr << "---End " << std::endl; +#endif } +/*private*/ void DistanceOp::computeContainmentDistance() { using geom::util::PolygonExtracter; - Polygon::ConstVect polys0; Polygon::ConstVect polys1; - - PolygonExtracter::getPolygons(*(geom[0]), polys0); PolygonExtracter::getPolygons(*(geom[1]), polys1); - + + +#if GEOS_DEBUG + std::cerr << "PolygonExtracter found " << polys1.size() << " polygons in geometry 2" << std::endl; +#endif + + // NOTE: + // Expected to fill minDistanceLocation items + // if minDistance <= terminateDistance vector *locPtPoly = new vector(2); - // test if either geometry is wholely inside the other - if (polys1.size()>0) { - vector *insideLocs0 = ConnectedElementLocationFilter::getLocations(geom[0]); + // test if either geometry has a vertex inside the other + if ( ! polys1.empty() ) + { + vector *insideLocs0 = + ConnectedElementLocationFilter::getLocations(geom[0]); computeInside(insideLocs0, polys1, locPtPoly); - if (minDistance <= 0.0) { + if (minDistance <= terminateDistance) { + assert( (*locPtPoly)[0] ); + assert( (*locPtPoly)[1] ); (*minDistanceLocation)[0] = (*locPtPoly)[0]; (*minDistanceLocation)[1] = (*locPtPoly)[1]; delete locPtPoly; @@ -208,11 +287,23 @@ delete (*insideLocs0)[i]; delete insideLocs0; } - if (polys0.size()>0) { + + Polygon::ConstVect polys0; + PolygonExtracter::getPolygons(*(geom[0]), polys0); + +#if GEOS_DEBUG + std::cerr << "PolygonExtracter found " << polys0.size() << " polygons in geometry 1" << std::endl; +#endif + + + if ( ! polys0.empty() ) + { vector *insideLocs1 = ConnectedElementLocationFilter::getLocations(geom[1]); computeInside(insideLocs1, polys0, locPtPoly); - if (minDistance <= 0.0) { + if (minDistance <= terminateDistance) { // flip locations, since we are testing geom 1 VS geom 0 + assert( (*locPtPoly)[0] ); + assert( (*locPtPoly)[1] ); (*minDistanceLocation)[0] = (*locPtPoly)[1]; (*minDistanceLocation)[1] = (*locPtPoly)[0]; delete locPtPoly; @@ -232,7 +323,13 @@ delete (*insideLocs1)[i]; delete insideLocs1; } + delete locPtPoly; + + // If minDistance <= terminateDistance we must have + // set minDistanceLocations to some non-null item + assert( minDistance > terminateDistance || + ( (*minDistanceLocation)[0] && (*minDistanceLocation)[1] ) ); } @@ -248,7 +345,7 @@ for (size_t j=0, nj=polys.size(); j *locPtPoly) { const Coordinate &pt=ptLoc->getCoordinate(); + + // if pt is not in exterior, distance to geom is 0 if (Location::EXTERIOR!=ptLocator.locate(pt, static_cast(poly))) { minDistance = 0.0; @@ -272,7 +371,7 @@ /*private*/ void -DistanceOp::computeLineDistance() +DistanceOp::computeFacetDistance() { using geom::util::LinearComponentExtracter; using geom::util::PointExtracter; @@ -289,38 +388,65 @@ LinearComponentExtracter::getLines(*(geom[0]), lines0); LinearComponentExtracter::getLines(*(geom[1]), lines1); +#if GEOS_DEBUG + std::cerr << "LinearComponentExtracter found " + << lines0.size() << " lines in geometry 1 and " + << lines1.size() << " lines in geometry 2 " + << std::endl; +#endif + Point::ConstVect pts0; Point::ConstVect pts1; PointExtracter::getPoints(*(geom[0]), pts0); PointExtracter::getPoints(*(geom[1]), pts1); - // bail whenever minDistance goes to zero, since it can't get any less +#if GEOS_DEBUG + std::cerr << "PointExtracter found " + << pts0.size() << " points in geometry 1 and " + << pts1.size() << " points in geometry 2 " + << std::endl; +#endif + + // exit whenever minDistance goes LE than terminateDistance computeMinDistanceLines(lines0, lines1, locGeom); - updateMinDistance(&locGeom, false); - if (minDistance <= 0.0) { + updateMinDistance(locGeom, false); + if (minDistance <= terminateDistance) { +#if GEOS_DEBUG + std::cerr << "Early termination after line-line distance" << std::endl; +#endif return; }; locGeom[0]=NULL; locGeom[1]=NULL; computeMinDistanceLinesPoints(lines0, pts1, locGeom); - updateMinDistance(&locGeom, false); - if (minDistance <= 0.0) { + updateMinDistance(locGeom, false); + if (minDistance <= terminateDistance) { +#if GEOS_DEBUG + std::cerr << "Early termination after lines0-points1 distance" << std::endl; +#endif return; }; locGeom[0]=NULL; locGeom[1]=NULL; computeMinDistanceLinesPoints(lines1, pts0, locGeom); - updateMinDistance(&locGeom, true); - if (minDistance <= 0.0){ + updateMinDistance(locGeom, true); + if (minDistance <= terminateDistance){ +#if GEOS_DEBUG + std::cerr << "Early termination after lines1-points0 distance" << std::endl; +#endif return; }; locGeom[0]=NULL; locGeom[1]=NULL; computeMinDistancePoints(pts0, pts1, locGeom); - updateMinDistance(&locGeom, false); + updateMinDistance(locGeom, false); + +#if GEOS_DEBUG + std::cerr << "termination after pts-pts distance" << std::endl; +#endif } /*private*/ @@ -336,7 +462,7 @@ for (size_t j=0, nj=lines1.size(); j& locGeom) { - for (size_t i=0, ni=points0.size(); igetCoordinate()->distance(*(pt1->getCoordinate())); - if (dist < minDistance) { + for (size_t i=0, ni=points0.size(); igetCoordinate()->distance(*(pt1->getCoordinate())); + +#if GEOS_DEBUG + std::cerr << "Distance " + << pt0->toString() << " - " + << pt1->toString() << ": " + << dist << ", minDistance: " << minDistance + << std::endl; +#endif + + if (dist < minDistance) + { minDistance = dist; // this is wrong - need to determine closest points on both segments!!! + delete locGeom[0]; locGeom[0] = new GeometryLocation(pt0, 0, *(pt0->getCoordinate())); + delete locGeom[1]; locGeom[1] = new GeometryLocation(pt1, 0, *(pt1->getCoordinate())); } - if (minDistance<=0.0) return; - if ( i& locGeom) { - for (size_t i=0;i diff -Nru geos-3.1.0/source/operation/distance/Makefile.in geos-3.2.2/source/operation/distance/Makefile.in --- geos-3.1.0/source/operation/distance/Makefile.in 2009-03-11 19:13:59.000000000 +0000 +++ geos-3.2.2/source/operation/distance/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libopdistance_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,39 +53,71 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libopdistance_la_DEPENDENCIES = am_libopdistance_la_OBJECTS = ConnectedElementLocationFilter.lo \ ConnectedElementPointFilter.lo DistanceOp.lo \ GeometryLocation.lo libopdistance_la_OBJECTS = $(am_libopdistance_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libopdistance_la_SOURCES) DIST_SOURCES = $(libopdistance_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -112,21 +145,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -135,20 +164,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -169,6 +206,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -180,19 +218,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -204,36 +236,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libopdistance.la INCLUDES = -I$(top_srcdir)/source/headers @@ -252,14 +297,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/distance/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/distance/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/distance/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/distance/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -277,6 +322,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -287,7 +333,7 @@ rm -f "$${dir}/so_locations"; \ done libopdistance.la: $(libopdistance_la_OBJECTS) $(libopdistance_la_DEPENDENCIES) - $(CXXLINK) $(libopdistance_la_LDFLAGS) $(libopdistance_la_OBJECTS) $(libopdistance_la_LIBADD) $(LIBS) + $(CXXLINK) $(libopdistance_la_OBJECTS) $(libopdistance_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -301,22 +347,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeometryLocation.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -327,10 +373,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -355,15 +397,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -390,16 +431,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -407,14 +448,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -426,81 +467,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -530,6 +591,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -543,7 +605,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -551,18 +613,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -583,23 +665,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/GeometryGraphOperation.cpp geos-3.2.2/source/operation/GeometryGraphOperation.cpp --- geos-3.1.0/source/operation/GeometryGraphOperation.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/GeometryGraphOperation.cpp 2009-06-05 18:50:34.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometryGraphOperation.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometryGraphOperation.cpp 2549 2009-06-05 17:50:34Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,12 +14,13 @@ * ********************************************************************** * - * Last port: operation/GeometryGraphOperation.java rev. 1.14 (JTS-1.7) + * Last port: operation/GeometryGraphOperation.java rev. 1.18 (JTS-1.10) * **********************************************************************/ #include #include +#include #include #include #include @@ -52,8 +53,32 @@ else setComputationPrecision(pm1); - arg[0]=new GeometryGraph(0, g0); - arg[1]=new GeometryGraph(1, g1); + arg[0]=new GeometryGraph(0, g0, + algorithm::BoundaryNodeRule::OGC_SFS_BOUNDARY_RULE); + arg[1]=new GeometryGraph(1, g1, + algorithm::BoundaryNodeRule::OGC_SFS_BOUNDARY_RULE); +} + +GeometryGraphOperation::GeometryGraphOperation(const Geometry *g0, + const Geometry *g1, + const algorithm::BoundaryNodeRule& boundaryNodeRule) + : + arg(2) +{ + const PrecisionModel* pm0 = g0->getPrecisionModel(); + assert(pm0); + + const PrecisionModel* pm1 = g1->getPrecisionModel(); + assert(pm1); + + // use the most precise model for the result + if (pm0->compareTo(pm1) >= 0) + setComputationPrecision(pm0); + else + setComputationPrecision(pm1); + + arg[0]=new GeometryGraph(0, g0, boundaryNodeRule); + arg[1]=new GeometryGraph(1, g1, boundaryNodeRule); } diff -Nru geos-3.1.0/source/operation/IsSimpleOp.cpp geos-3.2.2/source/operation/IsSimpleOp.cpp --- geos-3.1.0/source/operation/IsSimpleOp.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/IsSimpleOp.cpp 2009-05-05 00:43:26.000000000 +0100 @@ -1,9 +1,10 @@ /********************************************************************** - * $Id: IsSimpleOp.cpp 1996 2007-06-11 07:43:46Z mloskot $ + * $Id: IsSimpleOp.cpp 2466 2009-05-04 23:43:26Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * + * Copyright (C) 2009 Sandro Santilli * Copyright (C) 2001-2002 Vivid Solutions Inc. * Copyright (C) 2005 Refractions Research Inc. * @@ -14,10 +15,13 @@ * ********************************************************************** * + * Last port: operation/IsSimpleOp.java rev. 1.22 (JTS-1.10) + * **********************************************************************/ #include -#include +//#include +#include #include #include #include @@ -41,36 +45,120 @@ namespace geos { namespace operation { // geos.operation +// This is supposedly a private of IsSimpleOp... +class EndpointInfo +{ +public: + + Coordinate pt; + + bool isClosed; + + int degree; + + EndpointInfo(const geom::Coordinate& newPt); + + const Coordinate& getCoordinate() const { return pt; } + + void addEndpoint(bool newIsClosed) + { + degree++; + isClosed |= newIsClosed; + } +}; + +EndpointInfo::EndpointInfo(const Coordinate& newPt) +{ + pt=newPt; + isClosed=false; + degree=0; +} + +// ----------------------------------------------------- + + + +/*public*/ IsSimpleOp::IsSimpleOp() + : + isClosedEndpointsInInterior(true), + geom(0), + nonSimpleLocation() {} +/*public*/ +IsSimpleOp::IsSimpleOp(const Geometry& g) + : + isClosedEndpointsInInterior(true), + geom(&g), + nonSimpleLocation() +{} + +/*public*/ +IsSimpleOp::IsSimpleOp(const Geometry& g, + const BoundaryNodeRule& boundaryNodeRule) + : + isClosedEndpointsInInterior( ! boundaryNodeRule.isInBoundary(2) ), + geom(&g), + nonSimpleLocation() +{} + +/*public*/ +bool +IsSimpleOp::isSimple() +{ + nonSimpleLocation.reset(); + + if ( dynamic_cast(geom) ) + return isSimpleLinearGeometry(geom); + + if ( dynamic_cast(geom) ) + return isSimpleLinearGeometry(geom); + + const MultiPoint* mp = dynamic_cast(geom); + if ( mp ) return isSimpleMultiPoint(*mp); + + // all other geometry types are simple by definition + return true; +} + + +/*public*/ bool IsSimpleOp::isSimple(const LineString *geom) { return isSimpleLinearGeometry(geom); } +/*public*/ bool IsSimpleOp::isSimple(const MultiLineString *geom) { return isSimpleLinearGeometry(geom); } -/** - * A MultiPoint is simple iff it has no repeated points - */ +/*public*/ bool IsSimpleOp::isSimple(const MultiPoint *mp) { - if (mp->isEmpty()) return true; + return isSimpleMultiPoint(*mp); +} + +/*private*/ +bool +IsSimpleOp::isSimpleMultiPoint(const MultiPoint& mp) +{ + if (mp.isEmpty()) return true; set points; - for (std::size_t i=0, n=mp->getNumGeometries(); i(mp->getGeometryN(i))); - const Point *pt=static_cast(mp->getGeometryN(i)); + assert(dynamic_cast(mp.getGeometryN(i))); + const Point *pt=static_cast(mp.getGeometryN(i)); const Coordinate *p=pt->getCoordinate(); - if (points.find(p) != points.end()) { + if (points.find(p) != points.end()) + { + nonSimpleLocation.reset(new Coordinate(*p)); return false; } points.insert(p); @@ -84,32 +172,29 @@ if (geom->isEmpty()) return true; GeometryGraph graph(0,geom); LineIntersector li; - SegmentIntersector *si=graph.computeSelfNodes(&li,true); + std::auto_ptr si (graph.computeSelfNodes(&li,true)); + // if no self-intersection, must be simple - if (!si->hasIntersection()) { - delete si; - return true; - } - if (si->hasProperIntersection()) { - delete si; - return false; - } - if (hasNonEndpointIntersection(graph)) { - delete si; + if (!si->hasIntersection()) return true; + + if (si->hasProperIntersection()) + { + nonSimpleLocation.reset( + new Coordinate(si->getProperIntersectionPoint()) + ); return false; } - if (hasClosedEndpointIntersection(graph)) { - delete si; - return false; + + if (hasNonEndpointIntersection(graph)) return false; + + if ( isClosedEndpointsInInterior ) { + if (hasClosedEndpointIntersection(graph)) return false; } - delete si; + return true; } -/** - * For all edges, check if there are any intersections which are NOT at an endpoint. - * The Geometry is not simple if there are intersections not at endpoints. - */ +/*private*/ bool IsSimpleOp::hasNonEndpointIntersection(GeometryGraph &graph) { @@ -123,18 +208,18 @@ { EdgeIntersection *ei=*eiIt; if (!ei->isEndPoint(maxSegmentIndex)) + { + nonSimpleLocation.reset( + new Coordinate(ei->getCoordinate()) + ); return true; + } } } return false; } -/** - * Test that no edge intersection is the - * endpoint of a closed line. To check this we compute the - * degree of each endpoint. The degree of endpoints of closed lines - * must be exactly 2. - */ +/*private*/ bool IsSimpleOp::hasClosedEndpointIntersection(GeometryGraph &graph) { @@ -154,6 +239,11 @@ for (; it!=endPoints.end(); ++it) { EndpointInfo *eiInfo=it->second; if (eiInfo->isClosed && eiInfo->degree!=2) { + + nonSimpleLocation.reset( + new Coordinate( eiInfo->getCoordinate() ) + ); + it=endPoints.begin(); for (; it!=endPoints.end(); ++it) { EndpointInfo *ep=it->second; @@ -171,9 +261,7 @@ return false; } -/** -* Add an endpoint to the map, creating an entry for it if none exists -*/ +/*private*/ void IsSimpleOp::addEndpoint( map&endPoints, @@ -193,106 +281,6 @@ eiInfo->addEndpoint(isClosed); } -EndpointInfo::EndpointInfo(const Coordinate& newPt) -{ - pt=newPt; - isClosed=false; - degree=0; -} - -void -EndpointInfo::addEndpoint(bool newIsClosed) -{ - degree++; - isClosed|=newIsClosed; -} - } // namespace geos::operation } // namespace geos -/********************************************************************** - * $Log$ - * Revision 1.23 2006/03/21 21:42:54 strk - * planargraph.h header split, planargraph:: classes renamed to match JTS symbols - * - * Revision 1.22 2006/03/09 16:46:49 strk - * geos::geom namespace definition, first pass at headers split - * - * Revision 1.21 2006/02/19 19:46:49 strk - * Packages <-> namespaces mapping for most GEOS internal code (uncomplete, but working). Dir-level libs for index/ subdirs. - * - * Revision 1.20 2006/01/08 15:24:40 strk - * Changed container-related typedef to class-scoped STL-like typedefs. - * Fixed const correctness of EdgeIntersectionList::begin() and ::end() consts; - * defined M_PI when undef as suggested by Charlie Savage. - * Removed include from GeometricShapeFactory.cpp. - * - * Revision 1.19 2005/11/21 16:03:20 strk - * - * Coordinate interface change: - * Removed setCoordinate call, use assignment operator - * instead. Provided a compile-time switch to - * make copy ctor and assignment operators non-inline - * to allow for more accurate profiling. - * - * Coordinate copies removal: - * NodeFactory::createNode() takes now a Coordinate reference - * rather then real value. This brings coordinate copies - * in the testLeaksBig.xml test from 654818 to 645991 - * (tested in 2.1 branch). In the head branch Coordinate - * copies are 222198. - * Removed useless coordinate copies in ConvexHull - * operations - * - * STL containers heap allocations reduction: - * Converted many containers element from - * pointers to real objects. - * Made some use of .reserve() or size - * initialization when final container size is known - * in advance. - * - * Stateless classes allocations reduction: - * Provided ::instance() function for - * NodeFactories, to avoid allocating - * more then one (they are all - * stateless). - * - * HCoordinate improvements: - * Changed HCoordinate constructor by HCoordinates - * take reference rather then real objects. - * Changed HCoordinate::intersection to avoid - * a new allocation but rather return into a provided - * storage. LineIntersector changed to reflect - * the above change. - * - * Revision 1.18 2005/11/16 15:49:54 strk - * Reduced gratuitous heap allocations. - * - * Revision 1.17 2005/11/07 12:31:24 strk - * Changed EdgeIntersectionList to use a set<> rathern then a vector<>, and - * to avoid dynamic allocation of initial header. - * Inlined short SweepLineEvent methods. - * - * Revision 1.16 2005/06/24 11:09:43 strk - * Dropped RobustLineIntersector, made LineIntersector a concrete class. - * Added LineIntersector::hasIntersection(Coordinate&,Coordinate&,Coordinate&) - * to avoid computing intersection point (Z) when it's not necessary. - * - * Revision 1.15 2005/02/05 05:44:47 strk - * Changed geomgraph nodeMap to use Coordinate pointers as keys, reduces - * lots of other Coordinate copies. - * - * Revision 1.14 2004/12/08 13:54:43 strk - * gcc warnings checked and fixed, general cleanups. - * - * Revision 1.13 2004/07/02 13:28:27 strk - * Fixed all #include lines to reflect headers layout change. - * Added client application build tips in README. - * - * Revision 1.12 2003/11/07 01:23:42 pramsey - * Add standard CVS headers licence notices and copyrights to all cpp and h - * files. - * - * - **********************************************************************/ - diff -Nru geos-3.1.0/source/operation/linemerge/EdgeString.cpp geos-3.2.2/source/operation/linemerge/EdgeString.cpp --- geos-3.1.0/source/operation/linemerge/EdgeString.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/linemerge/EdgeString.cpp 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeString.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeString.cpp 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/EdgeString.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/linemerge/LineMergeDirectedEdge.cpp geos-3.2.2/source/operation/linemerge/LineMergeDirectedEdge.cpp --- geos-3.1.0/source/operation/linemerge/LineMergeDirectedEdge.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/linemerge/LineMergeDirectedEdge.cpp 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMergeDirectedEdge.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineMergeDirectedEdge.cpp 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMergeDirectedEdge.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/linemerge/LineMergeEdge.cpp geos-3.2.2/source/operation/linemerge/LineMergeEdge.cpp --- geos-3.1.0/source/operation/linemerge/LineMergeEdge.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/linemerge/LineMergeEdge.cpp 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMergeEdge.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineMergeEdge.cpp 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMergeEdge.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/linemerge/LineMergeGraph.cpp geos-3.2.2/source/operation/linemerge/LineMergeGraph.cpp --- geos-3.1.0/source/operation/linemerge/LineMergeGraph.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/linemerge/LineMergeGraph.cpp 2009-06-08 16:28:27.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMergeGraph.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineMergeGraph.cpp 2562 2009-06-08 15:28:27Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMergeGraph.java rev. 1.5 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/linemerge/LineMerger.cpp geos-3.2.2/source/operation/linemerge/LineMerger.cpp --- geos-3.1.0/source/operation/linemerge/LineMerger.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/linemerge/LineMerger.cpp 2009-11-20 19:58:33.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineMerger.cpp 2231 2009-01-05 23:42:08Z swongu $ + * $Id: LineMerger.cpp 2733 2009-11-20 19:58:33Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/linemerge/LineMerger.java rev. 1.7 (JTS-1.10) + * **********************************************************************/ #include @@ -20,6 +24,7 @@ #include #include #include +//#include #include #include @@ -98,6 +103,16 @@ { if (mergedLineStrings!=NULL) return; + // reset marks (this allows incremental processing) + GraphComponent::setMarkedMap(graph.nodeIterator(), graph.nodeEnd(), + false); + GraphComponent::setMarked(graph.edgeIterator(), graph.edgeEnd(), + false); + + for (size_t i=0, n=edgeStrings.size(); i *nodes=graph.getNodes(); - for (size_t i=0; isize(); ++i) { - Node *node=(*nodes)[i]; + typedef std::vector Nodes; + + Nodes nodes; + graph.getNodes(nodes); + for (Nodes::size_type i=0, in=nodes.size(); i *nodes=graph.getNodes(); - size_t size=nodes->size(); - for (size_t i=0; i Nodes; + + Nodes nodes; + graph.getNodes(nodes); + for (Nodes::size_type i=0, in=nodes.size(); i(geom)) ) + if ( 0 == (mls=dynamic_cast(geom)) ) { return true; } diff -Nru geos-3.1.0/source/operation/linemerge/Makefile.in geos-3.2.2/source/operation/linemerge/Makefile.in --- geos-3.1.0/source/operation/linemerge/Makefile.in 2009-03-11 19:13:59.000000000 +0000 +++ geos-3.2.2/source/operation/linemerge/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(liboplinemerge_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,39 +53,71 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liboplinemerge_la_DEPENDENCIES = am_liboplinemerge_la_OBJECTS = EdgeString.lo LineMergeDirectedEdge.lo \ LineMergeEdge.lo LineMergeGraph.lo LineMerger.lo \ LineSequencer.lo liboplinemerge_la_OBJECTS = $(am_liboplinemerge_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(liboplinemerge_la_SOURCES) DIST_SOURCES = $(liboplinemerge_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -112,21 +145,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -135,20 +164,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -169,6 +206,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -180,19 +218,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -204,36 +236,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = liboplinemerge.la INCLUDES = -I$(top_srcdir)/source/headers @@ -254,14 +299,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/linemerge/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/linemerge/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/linemerge/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/linemerge/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -279,6 +324,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -289,7 +335,7 @@ rm -f "$${dir}/so_locations"; \ done liboplinemerge.la: $(liboplinemerge_la_OBJECTS) $(liboplinemerge_la_DEPENDENCIES) - $(CXXLINK) $(liboplinemerge_la_LDFLAGS) $(liboplinemerge_la_OBJECTS) $(liboplinemerge_la_LIBADD) $(LIBS) + $(CXXLINK) $(liboplinemerge_la_OBJECTS) $(liboplinemerge_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -305,22 +351,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LineSequencer.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -331,10 +377,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -359,15 +401,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -394,16 +435,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -411,14 +452,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -430,81 +471,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -534,6 +595,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -547,7 +609,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -555,18 +617,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -587,23 +669,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/Makefile.in geos-3.2.2/source/operation/Makefile.in --- geos-3.1.0/source/operation/Makefile.in 2009-03-11 19:13:58.000000000 +0000 +++ geos-3.2.2/source/operation/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(liboperation_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,6 +53,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liboperation_la_DEPENDENCIES = buffer/libopbuffer.la \ distance/libopdistance.la linemerge/liboplinemerge.la \ @@ -60,33 +62,64 @@ union/libopunion.la valid/libopvalid.la am_liboperation_la_OBJECTS = GeometryGraphOperation.lo IsSimpleOp.lo liboperation_la_OBJECTS = $(am_liboperation_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(liboperation_la_SOURCES) DIST_SOURCES = $(liboperation_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -114,21 +147,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -137,20 +166,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -171,6 +208,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -182,19 +220,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -206,36 +238,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ buffer \ distance \ @@ -272,14 +317,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -297,6 +342,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -307,7 +353,7 @@ rm -f "$${dir}/so_locations"; \ done liboperation.la: $(liboperation_la_OBJECTS) $(liboperation_la_DEPENDENCIES) - $(CXXLINK) $(liboperation_la_LDFLAGS) $(liboperation_la_OBJECTS) $(liboperation_la_LIBADD) $(LIBS) + $(CXXLINK) $(liboperation_la_OBJECTS) $(liboperation_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -319,22 +365,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IsSimpleOp.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -345,10 +391,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -373,15 +415,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -408,16 +449,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -425,14 +466,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -444,81 +485,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -548,6 +609,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -561,7 +623,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -569,18 +631,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -601,23 +683,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/overlay/EdgeSetNoder.cpp geos-3.2.2/source/operation/overlay/EdgeSetNoder.cpp --- geos-3.1.0/source/operation/overlay/EdgeSetNoder.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/EdgeSetNoder.cpp 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeSetNoder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeSetNoder.cpp 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: operation/overlay/EdgeSetNoder.java rev. 1.12 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/overlay/ElevationMatrixCell.cpp geos-3.2.2/source/operation/overlay/ElevationMatrixCell.cpp --- geos-3.1.0/source/operation/overlay/ElevationMatrixCell.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/ElevationMatrixCell.cpp 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ElevationMatrixCell.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ElevationMatrixCell.cpp 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: original (by strk) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/overlay/ElevationMatrix.cpp geos-3.2.2/source/operation/overlay/ElevationMatrix.cpp --- geos-3.1.0/source/operation/overlay/ElevationMatrix.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/ElevationMatrix.cpp 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ElevationMatrix.cpp 1997 2007-08-22 23:45:12Z mloskot $ + * $Id: ElevationMatrix.cpp 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: original (by strk) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/overlay/FuzzyPointLocator.cpp geos-3.2.2/source/operation/overlay/FuzzyPointLocator.cpp --- geos-3.1.0/source/operation/overlay/FuzzyPointLocator.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/FuzzyPointLocator.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,156 +0,0 @@ -/********************************************************************** - * $Id: FuzzyPointLocator.cpp 2127 2008-05-20 21:25:21Z mloskot $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/validate/FuzzyPointLocator.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#include -#include -#include // for Point upcast -#include -#include // for Location::Value enum -#include - -#include -#include -#include -#include -#include // for auto_ptr - -#ifndef GEOS_DEBUG -#define GEOS_DEBUG 0 -#endif - -#define COMPUTE_Z 1 -#define USE_ELEVATION_MATRIX 1 -#define USE_INPUT_AVGZ 0 - -using namespace std; -using namespace geos::geom; -using namespace geos::algorithm; - -namespace geos { -namespace operation { // geos.operation -namespace overlay { // geos.operation.overlay - -FuzzyPointLocator::FuzzyPointLocator(const geom::Geometry& geom, - double nTolerance) - : - g(geom), - tolerance(nTolerance), - ptLocator(), - linework(extractLineWork(g)) -{ -} - -/*private*/ -std::auto_ptr -FuzzyPointLocator::extractLineWork(const geom::Geometry& geom) -{ - UNREFERENCED_PARAMETER(geom); - - vector* lineGeoms = new vector(); - try { // geoms array will leak if an exception is thrown - - for (size_t i=0, n=g.getNumGeometries(); igetDimension() == 2) { - lineGeom = gComp->getBoundary(); - lineGeoms->push_back(lineGeom); - } - } - return std::auto_ptr(g.getFactory()->buildGeometry(lineGeoms)); - - } catch (...) { // avoid leaks - for (size_t i=0, n=lineGeoms->size(); i -FuzzyPointLocator::getLineWork(const geom::Geometry& geom) -{ - UNREFERENCED_PARAMETER(geom); - - vector* lineGeoms = new vector(); - try { // geoms array will leak if an exception is thrown - - for (size_t i=0, n=g.getNumGeometries(); igetDimension() == 2) { - lineGeom = gComp->getBoundary(); - } - else { - lineGeom = gComp->clone(); - } - lineGeoms->push_back(lineGeom); - } - return std::auto_ptr(g.getFactory()->buildGeometry(lineGeoms)); - - } catch (...) { // avoid leaks - for (size_t i=0, n=lineGeoms->size(); i point(g.getFactory()->createPoint(pt)); - - double dist = linework->distance(point.get()); - - // if point is close to boundary, it is considered - // to be on the boundary - if (dist < tolerance) - return Location::BOUNDARY; - - // now we know point must be clearly inside or outside geometry, - // so return actual location value - - // (the static_cast is needed because PointLocator doesn't cleanly - // return a Location::Value - it should !!) - return static_cast(ptLocator.locate(pt, &g)); -} - -} // namespace geos.operation.overlay -} // namespace geos.operation -} // namespace geos - -/********************************************************************** - * $Log$ - **********************************************************************/ - diff -Nru geos-3.1.0/source/operation/overlay/LineBuilder.cpp geos-3.2.2/source/operation/overlay/LineBuilder.cpp --- geos-3.1.0/source/operation/overlay/LineBuilder.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/LineBuilder.cpp 2009-06-08 17:26:36.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: LineBuilder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: LineBuilder.cpp 2565 2009-06-08 16:26:36Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: operation/overlay/LineBuilder.java rev. 1.15 (JTS-1.10) + * **********************************************************************/ #include @@ -147,36 +151,39 @@ } } -/* - * Collect edges from Area inputs which should be in the result but - * which have not been included in a result area. - * This happens ONLY: - * - during an intersection when the boundaries of two - * areas touch in a line segment - * - OR as a result of a dimensional collapse. - */ +/*private*/ void LineBuilder::collectBoundaryTouchEdge(DirectedEdge *de, OverlayOp::OpCode opCode, vector *edges) { - Label *label=de->getLabel(); - // this smells like a bit of a hack, but it seems to work... - if (!de->isLineEdge() - && !de->isInteriorAreaEdge() // added to handle dimensional collapses - && !de->getEdge()->isInResult() - && !de->isVisited() - && OverlayOp::isResultOfOp(label, opCode) - && opCode==OverlayOp::opINTERSECTION) + if (de->isLineEdge()) return; // only interested in area edges + if (de->isVisited()) return; // already processed + + // added to handle dimensional collapses + if (de->isInteriorAreaEdge()) return; + + // if the edge linework is already included, don't include it again + if (de->getEdge()->isInResult()) return; + + // sanity check for labelling of result edgerings + assert( ! ( de->isInResult() || de->getSym()->isInResult() ) + || + ! de->getEdge()->isInResult() ); + + + // include the linework if it's in the result of the operation + Label *label = de->getLabel(); + if ( OverlayOp::isResultOfOp(label, opCode) + && opCode == OverlayOp::opINTERSECTION ) { - edges->push_back(de->getEdge()); - de->setVisitedEdge(true); + edges->push_back(de->getEdge()); + de->setVisitedEdge(true); } } void LineBuilder::buildLines(OverlayOp::OpCode /* opCode */) { - // need to simplify lines? for(size_t i=0, s=lineEdgesList.size(); i/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -446,81 +546,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -550,6 +670,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -563,7 +684,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -571,18 +692,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -603,23 +744,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/overlay/MaximalEdgeRing.cpp geos-3.2.2/source/operation/overlay/MaximalEdgeRing.cpp --- geos-3.1.0/source/operation/overlay/MaximalEdgeRing.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/MaximalEdgeRing.cpp 2009-11-19 21:06:16.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MaximalEdgeRing.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MaximalEdgeRing.cpp 2731 2009-11-19 21:06:16Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/overlay/MaximalEdgeRing.java rev. 1.13 + * Last port: operation/overlay/MaximalEdgeRing.java rev. 1.15 (JTS-1.10) * **********************************************************************/ @@ -49,6 +49,7 @@ // CGAlgorithms obsoleted MaximalEdgeRing::MaximalEdgeRing(DirectedEdge *start, const GeometryFactory *geometryFactory) + // throw(const TopologyException &) : EdgeRing(start, geometryFactory) { @@ -123,6 +124,20 @@ } while(de!=startDe); } +/*public*/ +void +MaximalEdgeRing::buildMinimalRings(vector& minEdgeRings) +{ + DirectedEdge *de=startDe; + do { + if(de->getMinEdgeRing()==NULL) { + MinimalEdgeRing *minEr=new MinimalEdgeRing(de, geometryFactory); + minEdgeRings.push_back(minEr); + } + de=de->getNext(); + } while(de!=startDe); +} + } // namespace geos.operation.overlay } // namespace geos.operation } // namespace geos diff -Nru geos-3.1.0/source/operation/overlay/MinimalEdgeRing.cpp geos-3.2.2/source/operation/overlay/MinimalEdgeRing.cpp --- geos-3.1.0/source/operation/overlay/MinimalEdgeRing.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/MinimalEdgeRing.cpp 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: MinimalEdgeRing.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: MinimalEdgeRing.cpp 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/overlay/MinimalEdgeRing.java rev. 1.13 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/overlay/OffsetPointGenerator.cpp geos-3.2.2/source/operation/overlay/OffsetPointGenerator.cpp --- geos-3.1.0/source/operation/overlay/OffsetPointGenerator.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/OffsetPointGenerator.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,112 +0,0 @@ -/********************************************************************** - * $Id: OffsetPointGenerator.cpp 1941 2006-12-13 10:55:55Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/validate/OffsetPointGenerator.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include // for auto_ptr -#include -#include // std::for_each - -#ifndef GEOS_DEBUG -#define GEOS_DEBUG 0 -#endif - -using namespace std; -using namespace geos::geom; -using namespace geos::algorithm; - -namespace geos { -namespace operation { // geos.operation -namespace overlay { // geos.operation.overlay - -/*public*/ -OffsetPointGenerator::OffsetPointGenerator(const geom::Geometry& geom, - double offset) - : - g(geom), - offsetDistance(offset) -{ -} - -/*public*/ -std::auto_ptr< std::vector > -OffsetPointGenerator::getPoints() -{ - assert (offsetPts.get() == NULL); - offsetPts.reset(new vector()); - - vector lines; - geos::geom::util::LinearComponentExtracter::getLines(g, lines); - for_each(lines.begin(), lines.end(), - bind1st(mem_fun(&OffsetPointGenerator::extractPoints), this)); - - return offsetPts; -} - -/*private*/ -void -OffsetPointGenerator::extractPoints(const LineString* line) -{ - const CoordinateSequence& pts = *(line->getCoordinatesRO()); - assert(pts.size() > 1 ); - - for (size_t i=0, n=pts.size()-1; ipush_back(offsetLeft); - offsetPts->push_back(offsetRight); -} - -} // namespace geos.operation.overlay -} // namespace geos.operation -} // namespace geos - diff -Nru geos-3.1.0/source/operation/overlay/OverlayNodeFactory.cpp geos-3.2.2/source/operation/overlay/OverlayNodeFactory.cpp --- geos-3.1.0/source/operation/overlay/OverlayNodeFactory.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/OverlayNodeFactory.cpp 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: OverlayNodeFactory.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: OverlayNodeFactory.cpp 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/overlay/OverlayNodeFactory.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/overlay/OverlayOp.cpp geos-3.2.2/source/operation/overlay/OverlayOp.cpp --- geos-3.1.0/source/operation/overlay/OverlayOp.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/OverlayOp.cpp 2009-12-03 19:02:17.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: OverlayOp.cpp 2220 2008-11-11 17:32:38Z pramsey $ + * $Id: OverlayOp.cpp 2763 2009-12-03 19:02:17Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,12 +14,14 @@ * *********************************************************************** * - * Last port: operation/overlay/OverlayOp.java rev. 1.23 + * Last port: operation/overlay/OverlayOp.java rev. 1.31 (JTS-1.10) + * + * NOTE: Use of EdgeNodingValidator is not strictly the same * **********************************************************************/ #include -#include +#include #include #include #include @@ -680,14 +682,28 @@ //Debug.println(edgeList); #ifdef ENABLE_EDGE_NODING_VALIDATOR // { - if ( resultPrecisionModel->isFloating() ) + /** + * Check that the noding completed correctly. + * + * This test is slow, but necessary in order to catch + * robustness failure situations. + * If an exception is thrown because of a noding failure, + * then snapping will be performed, which will hopefully avoid + * the problem. + * In the future hopefully a faster check can be developed. + * + */ + if ( resultPrecisionModel->isFloating() ) // NOTE: this is not in JTS { - // Will throw TopologyException if noding is found to be invalid - EdgeNodingValidator nv(edgeList.getEdges()); - try { - nv.checkValid(); - } catch (const util::TopologyException& ex) { + try + { + // Will throw TopologyException if noding is + // found to be invalid + EdgeNodingValidator::checkValid(edgeList.getEdges()); + } + catch (const util::TopologyException& ex) + { #ifdef GEOS_DEBUG_VALIDATION // { cout << "EdgeNodingValidator found noding invalid: " << ex.what() << endl; #endif // } @@ -895,6 +911,11 @@ "A point on first geom boundary isn't covered " "by either result or second geom"); } + +private: + // Declare type as noncopyable + PointCoveredByAny(const PointCoveredByAny& other); + PointCoveredByAny& operator=(const PointCoveredByAny& rhs); }; void @@ -955,14 +976,14 @@ // Add your tests here #else - UNREFERENCED_PARAMETER(opCode); + ::geos::ignore_unused_variable_warning(opCode); #endif #ifdef ENABLE_OVERLAY_RESULT_VALIDATOR // This only work for FLOATING precision if ( resultPrecisionModel->isFloating() ) { - OverlayResultValidator validator( *(arg[0]->getGeometry()), + validate::OverlayResultValidator validator( *(arg[0]->getGeometry()), *(arg[1]->getGeometry()), *(resultGeom)); bool isvalid = validator.isValid(opCode); if ( ! isvalid ) diff -Nru geos-3.1.0/source/operation/overlay/OverlayResultValidator.cpp geos-3.2.2/source/operation/overlay/OverlayResultValidator.cpp --- geos-3.1.0/source/operation/overlay/OverlayResultValidator.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/OverlayResultValidator.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,242 +0,0 @@ -/********************************************************************** - * $Id: OverlayResultValidator.cpp 1941 2006-12-13 10:55:55Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/validate/OverlayResultValidator.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include // for auto_ptr -#include - -#ifndef GEOS_DEBUG -#define GEOS_DEBUG 0 -#endif - -#if GEOS_DEBUG -#include // for setprecision -#endif - -#define COMPUTE_Z 1 -#define USE_ELEVATION_MATRIX 1 -#define USE_INPUT_AVGZ 0 - -using namespace std; -using namespace geos::geom; -using namespace geos::geomgraph; -using namespace geos::algorithm; - -namespace geos { -namespace operation { // geos.operation -namespace overlay { // geos.operation.overlay - -double OverlayResultValidator::_TOLERANCE = 0.000001; - -namespace { // anonymous namespace - -bool -isArea(const Geometry& g) -{ - GeometryTypeId type = g.getGeometryTypeId(); - if ( type == GEOS_POLYGON ) return true; - if ( type == GEOS_MULTIPOLYGON ) return true; -#if GEOS_DEBUG - cerr << "OverlayResultValidator: one of the geoms being checked is not a POLYGON or MULTIPOLYGON, blindly returning a positive answer (is valid)" << endl; -#endif - return false; -} - -auto_ptr -toMultiPoint(vector& coords) -{ - const GeometryFactory& gf = *(GeometryFactory::getDefaultInstance()); - const CoordinateSequenceFactory& csf = - *(gf.getCoordinateSequenceFactory()); - - auto_ptr< vector > nc ( new vector(coords) ); - auto_ptr cs(csf.create(nc.release())); - - auto_ptr mp ( gf.createMultiPoint(*cs) ); - - return mp; -} - -} // anonymous namespace - - -/* static public */ -bool -OverlayResultValidator::isValid(const Geometry& geom0, const Geometry& geom1, - OverlayOp::OpCode opCode, - const Geometry& result) -{ - OverlayResultValidator validator(geom0, geom1, result); - return validator.isValid(opCode); -} - -/*public*/ -OverlayResultValidator::OverlayResultValidator( - const Geometry& geom0, - const Geometry& geom1, - const Geometry& result) - : - g0(geom0), - g1(geom1), - gres(result), - fpl0(g0, _TOLERANCE), - fpl1(g1, _TOLERANCE), - fplres(gres, _TOLERANCE), - invalidLocation() -{ -} - -/*public*/ -bool -OverlayResultValidator::isValid(OverlayOp::OpCode overlayOp) -{ - // The check only works for areal geoms -#if 0 // now that FuzzyPointLocator extracts polygonal geoms, - // there should be no problem here - if ( ! isArea(g0) ) return true; - if ( ! isArea(g1) ) return true; - if ( ! isArea(gres) ) return true; -#endif - - addTestPts(g0); - addTestPts(g1); - addTestPts(gres); - - if (! testValid(overlayOp) ) - { -#if GEOS_DEBUG - cerr << "OverlayResultValidator:" << endl - << "Points:" << *toMultiPoint(testCoords) << endl - << "Geom0: " << g0 << endl - << "Geom1: " << g1 << endl - << "Reslt: " << gres << endl - << "Locat: " << getInvalidLocation() - << endl; -#endif - return false; - } - - - return true; -} - -/*private*/ -void -OverlayResultValidator::addTestPts(const Geometry& g) -{ - OffsetPointGenerator ptGen(g, 5 * _TOLERANCE); - auto_ptr< vector > pts = ptGen.getPoints(); - testCoords.insert(testCoords.end(), pts->begin(), pts->end()); -} - -/*private*/ -void -OverlayResultValidator::addVertices(const Geometry& g) -{ - // TODO: optimize this by not copying coordinates - // and pre-allocating memory - auto_ptr cs ( g.getCoordinates() ); - const vector* coords = cs->toVector(); - testCoords.insert(testCoords.end(), coords->begin(), coords->end()); -} - -/*private*/ -bool -OverlayResultValidator::testValid(OverlayOp::OpCode overlayOp) -{ - for (size_t i=0, n=testCoords.size(); i location(3); - - location[0] = fpl0.getLocation(pt); - location[1] = fpl1.getLocation(pt); - location[2] = fplres.getLocation(pt); - -#if GEOS_DEBUG - cerr << setprecision(10) << "Point " << pt << endl - << "Loc0: " << location[0] << endl - << "Loc1: " << location[1] << endl - << "Locr: " << location[2] << endl; -#endif - - /* - * If any location is on the Boundary, can't deduce anything, - * so just return true - */ - if ( find(location.begin(), location.end(), Location::BOUNDARY) != location.end() ) - { -#if GEOS_DEBUG - cerr << "OverlayResultValidator: testpoint " << pt << " is on the boundary, blindly returning a positive answer (is valid)" << endl; -#endif - return true; - } - - return isValidResult(overlayOp, location); -} - -/* private */ -bool -OverlayResultValidator::isValidResult(OverlayOp::OpCode overlayOp, - std::vector& location) -{ - bool expectedInterior = OverlayOp::isResultOfOp(location[0], - location[1], overlayOp); - - bool resultInInterior = (location[2] == Location::INTERIOR); - - bool isValid = ! (expectedInterior ^ resultInInterior); - - return isValid; -} - - - -} // namespace geos.operation.overlay -} // namespace geos.operation -} // namespace geos - -/********************************************************************** - * $Log$ - **********************************************************************/ - diff -Nru geos-3.1.0/source/operation/overlay/PointBuilder.cpp geos-3.2.2/source/operation/overlay/PointBuilder.cpp --- geos-3.1.0/source/operation/overlay/PointBuilder.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/PointBuilder.cpp 2009-06-08 17:09:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PointBuilder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PointBuilder.cpp 2564 2009-06-08 16:09:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + *********************************************************************** + * + * Last port: operation/overlay/PointBuilder.java rev. 1.16 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/overlay/PolygonBuilder.cpp geos-3.2.2/source/operation/overlay/PolygonBuilder.cpp --- geos-3.1.0/source/operation/overlay/PolygonBuilder.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/overlay/PolygonBuilder.cpp 2009-12-03 19:02:17.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonBuilder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonBuilder.cpp 2763 2009-12-03 19:02:17Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/overlay/PolygonBuilder.java rev. 1.18 (JTS-1.7) + * Last port: operation/overlay/PolygonBuilder.java rev. 1.20 (JTS-1.10) * **********************************************************************/ @@ -30,6 +30,8 @@ #include #include #include +#include +#include #include #include @@ -119,35 +121,13 @@ des->linkResultDirectedEdges(); } -#if GEOS_DEBUG > 1 - cerr << "CREATE TABLE diredges (g geometry);" << endl; - for (size_t i=0, n=dirEdges->size(); igetEdge(); - const CoordinateSequence* pts = e->getCoordinates(); - cerr << "INSERT INTO diredges VALUES ('LINESTRING" - << pts->toString() << "');" << endl; - } -#endif vector* maxEdgeRings=buildMaximalEdgeRings(dirEdges); -#if GEOS_DEBUG > 1 - cerr << "CREATE TABLE maxedgerings (g geometry);" << endl; - for (size_t i=0, n=maxEdgeRings->size(); itoPolygon(geometryFactory); - cerr << "INSERT INTO maxedgerings VALUES ('" - << poly->toString() << "');" << endl; - delete poly; - } -#endif - vector freeHoleList; - vector *edgeRings= - buildMinimalEdgeRings(maxEdgeRings,&shellList,&freeHoleList); + vector *edgeRings; + edgeRings= buildMinimalEdgeRings(maxEdgeRings,&shellList,&freeHoleList); sortShellsAndHoles(edgeRings,&shellList,&freeHoleList); + placeFreeHoles(shellList, freeHoleList); delete maxEdgeRings; delete edgeRings; @@ -166,6 +146,7 @@ /*private*/ vector * PolygonBuilder::buildMaximalEdgeRings(const vector *dirEdges) + // throw(const TopologyException &) { #if GEOS_DEBUG cerr<<"PolygonBuilder::buildMaximalEdgeRings got "<size()<<" dirEdges"<isInResult() << endl << " isArea:" << de->getLabel()->isArea() << endl; #endif - if (de->isInResult() && de->getLabel()->isArea()) { + if (de->isInResult() && de->getLabel()->isArea()) + { // if this edge has not yet been processed - if (de->getEdgeRing()==NULL) { - MaximalEdgeRing *er=new MaximalEdgeRing(de,geometryFactory); + if (de->getEdgeRing() == NULL) + { + MaximalEdgeRing *er; + try + { // MaximalEdgeRing constructor may throw + er=new MaximalEdgeRing(de,geometryFactory); + } + catch (util::GEOSException& e) + { // cleanup if that happens (see stmlf-cases-20061020.xml) + for(size_t i=0, n=maxEdgeRings->size(); ipush_back(er); er->setInResult(); //System.out.println("max node degree=" + er.getMaxDegree()); diff -Nru geos-3.1.0/source/operation/overlay/snap/GeometrySnapper.cpp geos-3.2.2/source/operation/overlay/snap/GeometrySnapper.cpp --- geos-3.1.0/source/operation/overlay/snap/GeometrySnapper.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/overlay/snap/GeometrySnapper.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,191 @@ +/********************************************************************** + * $Id: GeometrySnapper.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/GeometrySnapper.java rev 1.8 (JTS-1.10) + * + **********************************************************************/ + +#include +#include +#include // inherit. of SnapTransformer +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +//using namespace std; +using namespace geos::geom; + +namespace geos { +namespace operation { // geos.operation +namespace overlay { // geos.operation.overlay +namespace snap { // geos.operation.overlay.snap + +const double GeometrySnapper::snapPrecisionFactor = 10e-10; + +class SnapTransformer: public geos::geom::util::GeometryTransformer { + +private: + + double snapTol; + + const Coordinate::ConstVect& snapPts; + + CoordinateSequence::AutoPtr snapLine( + const CoordinateSequence* srcPts) + { + using std::auto_ptr; + + assert(srcPts); + assert(srcPts->toVector()); + LineStringSnapper snapper(*(srcPts->toVector()), snapTol); + auto_ptr newPts = snapper.snapTo(snapPts); + + const CoordinateSequenceFactory* cfact = factory->getCoordinateSequenceFactory(); + return auto_ptr(cfact->create(newPts.release())); + } + +public: + + SnapTransformer(double nSnapTol, + const Coordinate::ConstVect& nSnapPts) + : + snapTol(nSnapTol), + snapPts(nSnapPts) + { + } + + CoordinateSequence::AutoPtr transformCoordinates( + const CoordinateSequence* coords, + const Geometry* parent) + { + ::geos::ignore_unused_variable_warning(parent); + return snapLine(coords); + } + + +}; + +/*private*/ +std::auto_ptr +GeometrySnapper::extractTargetCoordinates(const Geometry& g) +{ + std::auto_ptr snapPts(new Coordinate::ConstVect()); + util::UniqueCoordinateArrayFilter filter(*snapPts); + g.apply_ro(&filter); + // integrity check + assert( snapPts->size() <= g.getNumPoints() ); + return snapPts; +} + +/*public*/ +std::auto_ptr +GeometrySnapper::snapTo(const geom::Geometry& g, double snapTolerance) +{ + + using std::auto_ptr; + using geom::util::GeometryTransformer; + + // Get snap points + auto_ptr snapPts=extractTargetCoordinates(g); + + // Apply a SnapTransformer to source geometry + // (we need a pointer for dynamic polymorphism) + auto_ptr snapTrans(new SnapTransformer(snapTolerance, *snapPts)); + return snapTrans->transform(&srcGeom); +} + +/*public static*/ +double +GeometrySnapper::computeSizeBasedSnapTolerance(const geom::Geometry& g) +{ + const Envelope* env = g.getEnvelopeInternal(); + double minDimension = std::min(env->getHeight(), env->getWidth()); + double snapTol = minDimension * snapPrecisionFactor; + return snapTol; +} + +/*public static*/ +double +GeometrySnapper::computeOverlaySnapTolerance(const geom::Geometry& g) +{ + double snapTolerance = computeSizeBasedSnapTolerance(g); + + /** + * Overlay is carried out in the precision model + * of the two inputs. + * If this precision model is of type FIXED, then the snap tolerance + * must reflect the precision grid size. + * Specifically, the snap tolerance should be at least + * the distance from a corner of a precision grid cell + * to the centre point of the cell. + */ + assert(g.getPrecisionModel()); + const PrecisionModel& pm = *(g.getPrecisionModel()); + if (pm.getType() == PrecisionModel::FIXED) + { + double fixedSnapTol = (1 / pm.getScale()) * 2 / 1.415; + if ( fixedSnapTol > snapTolerance ) + snapTolerance = fixedSnapTol; + } + return snapTolerance; +} + +/*public static*/ +double +GeometrySnapper::computeOverlaySnapTolerance(const geom::Geometry& g1, + const geom::Geometry& g2) +{ + return std::min(computeOverlaySnapTolerance(g1), computeOverlaySnapTolerance(g2)); +} + +/* public static */ +void +GeometrySnapper::snap(const geom::Geometry& g0, + const geom::Geometry& g1, + double snapTolerance, + GeometrySnapper::GeomPtrPair& snapGeom) +{ + GeometrySnapper snapper0(g0); + snapGeom.first = snapper0.snapTo(g1, snapTolerance); + + GeometrySnapper snapper1(g1); + + /** + * Snap the second geometry to the snapped first geometry + * (this strategy minimizes the number of possible different + * points in the result) + */ + snapGeom.second = snapper1.snapTo(*snapGeom.first, snapTolerance); + +// cout << *snapGeom.first << endl; +// cout << *snapGeom.second << endl; + +} + + +} // namespace geos.operation.snap +} // namespace geos.operation.overlay +} // namespace geos.operation +} // namespace geos + diff -Nru geos-3.1.0/source/operation/overlay/snap/LineStringSnapper.cpp geos-3.2.2/source/operation/overlay/snap/LineStringSnapper.cpp --- geos-3.1.0/source/operation/overlay/snap/LineStringSnapper.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/overlay/snap/LineStringSnapper.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,266 @@ +/********************************************************************** + * $Id: LineStringSnapper.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/lineStringSnapper.java rev 1.5 (JTS-1.10) + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif + +#if GEOS_DEBUG +#include +using std::cerr; +using std::endl; +#endif + +//using namespace std; +using namespace geos::geom; + +namespace geos { +namespace operation { // geos.operation +namespace overlay { // geos.operation.overlay +namespace snap { // geos.operation.overlay.snap + +/*public*/ +std::auto_ptr +LineStringSnapper::snapTo(const geom::Coordinate::ConstVect& snapPts) +{ + geom::CoordinateList coordList(srcPts); + + snapVertices(coordList, snapPts); + snapSegments(coordList, snapPts); + + return coordList.toCoordinateArray(); +} + +/*private*/ +void +LineStringSnapper::snapVertices(geom::CoordinateList& srcCoords, + const geom::Coordinate::ConstVect& snapPts) +{ + using geom::CoordinateList; + + geom::Coordinate::ConstVect::const_iterator not_found = snapPts.end(); + + // try snapping vertices + // assume src list has a closing point (is a ring) + CoordinateList::iterator it = srcCoords.begin(); + CoordinateList::iterator end = srcCoords.end(); + CoordinateList::iterator last = end; --last; + for ( ; it != end; ++it ) + { + Coordinate& srcPt = *it; + +#if GEOS_DEBUG +cerr << "Checking for a snap for source coordinate " << srcPt << endl; +#endif + + geom::Coordinate::ConstVect::const_iterator found = findSnapForVertex(srcPt, snapPts); + if ( found == not_found ) + { // no snaps found (or no need to snap) +#if GEOS_DEBUG +cerr << "No snap found" << endl; +#endif + continue; + } + + assert(*found); + const Coordinate& snapPt = *(*found); + +#if GEOS_DEBUG +cerr << "Found snap point " << snapPt << endl; +#endif + + // update src with snap pt + *it = snapPt; + +#if GEOS_DEBUG +cerr << "Source point became " << srcPt << endl; +#endif + + // keep final closing point in synch (rings only) + if (it == srcCoords.begin() && isClosed) + { + *last = snapPt; + } + } +} + +/*private*/ +Coordinate::ConstVect::const_iterator +LineStringSnapper::findSnapForVertex(const Coordinate& pt, + const Coordinate::ConstVect& snapPts) +{ + + // TODO: use std::find_if + Coordinate::ConstVect::const_iterator end=snapPts.end(); + for ( Coordinate::ConstVect::const_iterator + it=snapPts.begin(); + it != end; + ++it) + { + assert(*it); + const Coordinate& snapPt = *(*it); + +#if GEOS_DEBUG +cerr << " misuring distance between snap point " << snapPt << " and source point " << pt << endl; +#endif + + // shouldn't we look for *all* segments to be snapped rather then a single one? + if ( snapPt.equals2D(pt) ) + { +#if GEOS_DEBUG +cerr << " points are equal, returning not-found " << endl; +#endif + return end; + //continue; + } + + double dist = snapPt.distance(pt); + if ( dist < snapTolerance ) + { +#if GEOS_DEBUG +cerr << " points are within distance (" << dist << ") returning iterator to snap point" << endl; +#endif + return it; + } + } + +#if GEOS_DEBUG +cerr << " No snap point within distance, returning not-found" << endl; +#endif + + return end; +} + + +/*private*/ +void +LineStringSnapper::snapSegments(geom::CoordinateList& srcCoords, + const geom::Coordinate::ConstVect& snapPts) +{ + +#if GEOS_DEBUG +cerr << " Snapping segment from: " << srcCoords << endl; +#endif + + for ( Coordinate::ConstVect::const_iterator + it=snapPts.begin(), end=snapPts.end(); + it != end; + ++it) + { + assert(*it); + const Coordinate& snapPt = *(*it); + +#if GEOS_DEBUG +cerr << "Checking for a segment to snap to snapPt " << snapPt << endl; +#endif + + // shouldn't we look for *all* segments to be snapped + // rather then a single one? + CoordinateList::iterator too_far = srcCoords.end(); --too_far; + CoordinateList::iterator segpos = + findSegmentToSnap(snapPt, srcCoords.begin(), too_far); + if ( segpos == too_far) + { +#if GEOS_DEBUG +cerr << " No segment to snap" << endl; +#endif + continue; + } +#if GEOS_DEBUG +cerr << " Segment to be snapped found, inserting point" << endl; +#endif + // insert must happen one-past first point (before next point) + ++segpos; + srcCoords.insert(segpos, snapPt); + } + +#if GEOS_DEBUG +cerr << " After segment snapping, srcCoors are: " << srcCoords << endl; +#endif + +} + +/*private*/ +CoordinateList::iterator +LineStringSnapper::findSegmentToSnap( + const Coordinate& snapPt, + CoordinateList::iterator from, + CoordinateList::iterator too_far) +{ + LineSegment seg; + double minDist = snapTolerance+1; // make sure the first closer then + // snapTolerance is accepted + CoordinateList::iterator match=too_far; + + // TODO: use std::find_if + for ( ; from != too_far; ++from) + { + seg.p0 = *from; + CoordinateList::iterator to = from; + ++to; + seg.p1 = *to; + +#if GEOS_DEBUG +cerr << " Checking segment " << seg << " for snapping against point " << snapPt << endl; +#endif + + if ( seg.p0.equals2D(snapPt) || seg.p1.equals2D(snapPt) ) + { + +#if GEOS_DEBUG +cerr << " One of segment endpoints equal snap point, returning too_far" << endl; +#endif + // If the snap pt is already in the src list, + // don't snap + return too_far; + } + + double dist = seg.distance(snapPt); +#if GEOS_DEBUG +cerr << " dist=" << dist << " minDist=" << minDist << " snapTolerance=" << snapTolerance << endl; +#endif + if ( dist < minDist && dist < snapTolerance ) + { +#if GEOS_DEBUG +cerr << " Segment/snapPt distance within tolerance and closer then previous match (" << dist << ") " << endl; +#endif + match = from; + minDist = dist; + } + } + + return match; +} + +} // namespace geos.operation.snap +} // namespace geos.operation.overlay +} // namespace geos.operation +} // namespace geos + diff -Nru geos-3.1.0/source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp geos-3.2.2/source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp --- geos-3.1.0/source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/overlay/snap/SnapIfNeededOverlayOp.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,83 @@ +/********************************************************************** + * $Id: SnapIfNeededOverlayOp.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/SnapIfNeededOverlayOp.java rev 1.1 + * (JTS-1.10) + * + **********************************************************************/ + +#include +#include +#include +#include // for use in auto_ptr +#include + +#include +#include // for numeric_limits +#include // for auto_ptr + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif + +using namespace std; +using namespace geos::geom; + +namespace geos { +namespace operation { // geos.operation +namespace overlay { // geos.operation.overlay +namespace snap { // geos.operation.overlay.snap + +/* public */ +auto_ptr +SnapIfNeededOverlayOp::getResultGeometry(OverlayOp::OpCode opCode) +{ + auto_ptr result; + + bool isSuccess = false; + + try { + result.reset( OverlayOp::overlayOp(&geom0, &geom1, opCode) ); + bool isValid = true; + + // not needed if noding validation is used + // bool isValid = OverlayResultValidator::isValid( + // geom0, geom1, OverlayOp::INTERSECTION, + // result); + + if (isValid) isSuccess = true; + + } + catch (std::exception& ex) { + ::geos::ignore_unused_variable_warning(ex); +#if GEOS_DEBUG + std::cerr << "Overlay op threw " << ex.what() << ". Will try snapping now" << std::endl; +#endif + } + + if (! isSuccess) { + // this may still throw an exception - just let it go if it does + result = SnapOverlayOp::overlayOp(geom0, geom1, opCode); + } + + return result; +} + + +} // namespace geos.operation.snap +} // namespace geos.operation.overlay +} // namespace geos.operation +} // namespace geos + diff -Nru geos-3.1.0/source/operation/overlay/snap/SnapOverlayOp.cpp geos-3.2.2/source/operation/overlay/snap/SnapOverlayOp.cpp --- geos-3.1.0/source/operation/overlay/snap/SnapOverlayOp.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/overlay/snap/SnapOverlayOp.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,111 @@ +/********************************************************************** + * $Id: SnapOverlayOp.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/snap/SnapOverlayOp.java rev 1.4 (JTS-1.10) + * + **********************************************************************/ + +#include +#include +#include +#include + +#include +#include // for numeric_limits +#include // for auto_ptr + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif + +using namespace std; +using namespace geos::geom; + +namespace geos { +namespace operation { // geos.operation +namespace overlay { // geos.operation.overlay +namespace snap { // geos.operation.overlay.snap + +/* private */ +void +SnapOverlayOp::computeSnapTolerance() +{ + snapTolerance = GeometrySnapper::computeOverlaySnapTolerance(geom0, + geom1); + + // cout << "Snap tol = " << snapTolerance << endl; +} + +/* public */ +auto_ptr +SnapOverlayOp::getResultGeometry(OverlayOp::OpCode opCode) +{ + GeomPtrPair prepGeom; + snap(prepGeom); + GeomPtr result ( OverlayOp::overlayOp(prepGeom.first.get(), + prepGeom.second.get(), opCode) ); + prepareResult(*result); + return result; +} + +/* private */ +void +SnapOverlayOp::snap(SnapOverlayOp::GeomPtrPair& snapGeom) +{ + GeomPtrPair remGeom; + removeCommonBits(geom0, geom1, remGeom); + + GeometrySnapper::snap(*remGeom.first, *remGeom.second, + snapTolerance, snapGeom); + + // MD - may want to do this at some point, but it adds cycles +// checkValid(snapGeom[0]); +// checkValid(snapGeom[1]); + + /* + System.out.println("Snapped geoms: "); + System.out.println(snapGeom[0]); + System.out.println(snapGeom[1]); + */ + +} + +/* private */ +void +SnapOverlayOp::removeCommonBits(const geom::Geometry& geom0, + const geom::Geometry& geom1, + SnapOverlayOp::GeomPtrPair& remGeom) +{ + cbr.reset(new precision::CommonBitsRemover()); + cbr->add(&geom0); + cbr->add(&geom1); + + remGeom.first.reset( cbr->removeCommonBits(geom0.clone()) ); + remGeom.second.reset( cbr->removeCommonBits(geom1.clone()) ); +} + +/*private*/ +void +SnapOverlayOp::prepareResult(geom::Geometry& geom) +{ + cbr->addCommonBits(&geom); +} + + +} // namespace geos.operation.snap +} // namespace geos.operation.overlay +} // namespace geos.operation +} // namespace geos + diff -Nru geos-3.1.0/source/operation/overlay/validate/FuzzyPointLocator.cpp geos-3.2.2/source/operation/overlay/validate/FuzzyPointLocator.cpp --- geos-3.1.0/source/operation/overlay/validate/FuzzyPointLocator.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/overlay/validate/FuzzyPointLocator.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -0,0 +1,157 @@ +/********************************************************************** + * $Id: FuzzyPointLocator.cpp 2757 2009-12-01 15:39:41Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/validate/FuzzyPointLocator.java rev. 1.1 (JTS-1.10) + * + **********************************************************************/ + +#include +#include +#include // for Point upcast +#include +#include // for Location::Value enum +#include + +#include +#include +#include +#include +#include // for auto_ptr + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif + +#define COMPUTE_Z 1 +#define USE_ELEVATION_MATRIX 1 +#define USE_INPUT_AVGZ 0 + +using namespace std; +using namespace geos::geom; +using namespace geos::algorithm; + +namespace geos { +namespace operation { // geos.operation +namespace overlay { // geos.operation.overlay +namespace validate { // geos.operation.overlay.validate + +FuzzyPointLocator::FuzzyPointLocator(const geom::Geometry& geom, + double nTolerance) + : + g(geom), + tolerance(nTolerance), + ptLocator(), + linework(extractLineWork(g)) +{ +} + +/*private*/ +std::auto_ptr +FuzzyPointLocator::extractLineWork(const geom::Geometry& geom) +{ + ::geos::ignore_unused_variable_warning(geom); + + vector* lineGeoms = new vector(); + try { // geoms array will leak if an exception is thrown + + for (size_t i=0, n=g.getNumGeometries(); igetDimension() == 2) { + lineGeom = gComp->getBoundary(); + lineGeoms->push_back(lineGeom); + } + } + return std::auto_ptr(g.getFactory()->buildGeometry(lineGeoms)); + + } catch (...) { // avoid leaks + for (size_t i=0, n=lineGeoms->size(); i +FuzzyPointLocator::getLineWork(const geom::Geometry& geom) +{ + ::geos::ignore_unused_variable_warning(geom); + + vector* lineGeoms = new vector(); + try { // geoms array will leak if an exception is thrown + + for (size_t i=0, n=g.getNumGeometries(); igetDimension() == 2) { + lineGeom = gComp->getBoundary(); + } + else { + lineGeom = gComp->clone(); + } + lineGeoms->push_back(lineGeom); + } + return std::auto_ptr(g.getFactory()->buildGeometry(lineGeoms)); + + } catch (...) { // avoid leaks + for (size_t i=0, n=lineGeoms->size(); i point(g.getFactory()->createPoint(pt)); + + double dist = linework->distance(point.get()); + + // if point is close to boundary, it is considered + // to be on the boundary + if (dist < tolerance) + return Location::BOUNDARY; + + // now we know point must be clearly inside or outside geometry, + // so return actual location value + + // (the static_cast is needed because PointLocator doesn't cleanly + // return a Location::Value - it should !!) + return static_cast(ptLocator.locate(pt, &g)); +} + +} // namespace geos.operation.overlay.validate +} // namespace geos.operation.overlay +} // namespace geos.operation +} // namespace geos + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/operation/overlay/validate/OffsetPointGenerator.cpp geos-3.2.2/source/operation/overlay/validate/OffsetPointGenerator.cpp --- geos-3.1.0/source/operation/overlay/validate/OffsetPointGenerator.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/overlay/validate/OffsetPointGenerator.cpp 2009-06-08 17:46:33.000000000 +0100 @@ -0,0 +1,113 @@ +/********************************************************************** + * $Id: OffsetPointGenerator.cpp 2566 2009-06-08 16:46:33Z strk $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/validate/OffsetPointGenerator.java rev. 1.1 (JTS-1.10) + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include // for auto_ptr +#include +#include // std::for_each + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif + +using namespace std; +using namespace geos::geom; +using namespace geos::algorithm; + +namespace geos { +namespace operation { // geos.operation +namespace overlay { // geos.operation.overlay +namespace validate { // geos.operation.overlay.validate + +/*public*/ +OffsetPointGenerator::OffsetPointGenerator(const geom::Geometry& geom, + double offset) + : + g(geom), + offsetDistance(offset) +{ +} + +/*public*/ +std::auto_ptr< std::vector > +OffsetPointGenerator::getPoints() +{ + assert (offsetPts.get() == NULL); + offsetPts.reset(new vector()); + + vector lines; + geos::geom::util::LinearComponentExtracter::getLines(g, lines); + for_each(lines.begin(), lines.end(), + bind1st(mem_fun(&OffsetPointGenerator::extractPoints), this)); + + return offsetPts; +} + +/*private*/ +void +OffsetPointGenerator::extractPoints(const LineString* line) +{ + const CoordinateSequence& pts = *(line->getCoordinatesRO()); + assert(pts.size() > 1 ); + + for (size_t i=0, n=pts.size()-1; ipush_back(offsetLeft); + offsetPts->push_back(offsetRight); +} + +} // namespace geos.operation.overlay.validate +} // namespace geos.operation.overlay +} // namespace geos.operation +} // namespace geos + diff -Nru geos-3.1.0/source/operation/overlay/validate/OverlayResultValidator.cpp geos-3.2.2/source/operation/overlay/validate/OverlayResultValidator.cpp --- geos-3.1.0/source/operation/overlay/validate/OverlayResultValidator.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/overlay/validate/OverlayResultValidator.cpp 2009-06-08 17:46:33.000000000 +0100 @@ -0,0 +1,254 @@ +/********************************************************************** + * $Id: OverlayResultValidator.cpp 2566 2009-06-08 16:46:33Z strk $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2006 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + *********************************************************************** + * + * Last port: operation/overlay/validate/OverlayResultValidator.java rev. 1.4 (JTS-1.10) + * + **********************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include // for auto_ptr +#include // for std::min etc. + +#ifndef GEOS_DEBUG +#define GEOS_DEBUG 0 +#endif + +#if GEOS_DEBUG +#include // for setprecision +#endif + +#define COMPUTE_Z 1 +#define USE_ELEVATION_MATRIX 1 +#define USE_INPUT_AVGZ 0 + +using namespace std; +using namespace geos::geom; +using namespace geos::geomgraph; +using namespace geos::algorithm; + +namespace geos { +namespace operation { // geos.operation +namespace overlay { // geos.operation.overlay +namespace validate { // geos.operation.overlay.validate + +namespace { // anonymous namespace + +bool +isArea(const Geometry& g) +{ + GeometryTypeId type = g.getGeometryTypeId(); + if ( type == GEOS_POLYGON ) return true; + if ( type == GEOS_MULTIPOLYGON ) return true; +#if GEOS_DEBUG + cerr << "OverlayResultValidator: one of the geoms being checked is not a POLYGON or MULTIPOLYGON, blindly returning a positive answer (is valid)" << endl; +#endif + return false; +} + +auto_ptr +toMultiPoint(vector& coords) +{ + const GeometryFactory& gf = *(GeometryFactory::getDefaultInstance()); + const CoordinateSequenceFactory& csf = + *(gf.getCoordinateSequenceFactory()); + + auto_ptr< vector > nc ( new vector(coords) ); + auto_ptr cs(csf.create(nc.release())); + + auto_ptr mp ( gf.createMultiPoint(*cs) ); + + return mp; +} + +} // anonymous namespace + + +/* static public */ +bool +OverlayResultValidator::isValid(const Geometry& geom0, const Geometry& geom1, + OverlayOp::OpCode opCode, + const Geometry& result) +{ + OverlayResultValidator validator(geom0, geom1, result); + return validator.isValid(opCode); +} + +/*public*/ +OverlayResultValidator::OverlayResultValidator( + const Geometry& geom0, + const Geometry& geom1, + const Geometry& result) + : + boundaryDistanceTolerance( + computeBoundaryDistanceTolerance(geom0, geom1) + ), + g0(geom0), + g1(geom1), + gres(result), + fpl0(g0, boundaryDistanceTolerance), + fpl1(g1, boundaryDistanceTolerance), + fplres(gres, boundaryDistanceTolerance), + invalidLocation() +{ +} + +/*public*/ +bool +OverlayResultValidator::isValid(OverlayOp::OpCode overlayOp) +{ + // The check only works for areal geoms +#if 0 // now that FuzzyPointLocator extracts polygonal geoms, + // there should be no problem here + if ( ! isArea(g0) ) return true; + if ( ! isArea(g1) ) return true; + if ( ! isArea(gres) ) return true; +#endif + + addTestPts(g0); + addTestPts(g1); + addTestPts(gres); + + if (! testValid(overlayOp) ) + { +#if GEOS_DEBUG + cerr << "OverlayResultValidator:" << endl + << "Points:" << *toMultiPoint(testCoords) << endl + << "Geom0: " << g0 << endl + << "Geom1: " << g1 << endl + << "Reslt: " << gres << endl + << "Locat: " << getInvalidLocation() + << endl; +#endif + return false; + } + + + return true; +} + +/*private*/ +void +OverlayResultValidator::addTestPts(const Geometry& g) +{ + OffsetPointGenerator ptGen(g, 5 * boundaryDistanceTolerance); + auto_ptr< vector > pts = ptGen.getPoints(); + testCoords.insert(testCoords.end(), pts->begin(), pts->end()); +} + +/*private*/ +void +OverlayResultValidator::addVertices(const Geometry& g) +{ + // TODO: optimize this by not copying coordinates + // and pre-allocating memory + auto_ptr cs ( g.getCoordinates() ); + const vector* coords = cs->toVector(); + testCoords.insert(testCoords.end(), coords->begin(), coords->end()); +} + +/*private*/ +bool +OverlayResultValidator::testValid(OverlayOp::OpCode overlayOp) +{ + for (size_t i=0, n=testCoords.size(); i location(3); + + location[0] = fpl0.getLocation(pt); + location[1] = fpl1.getLocation(pt); + location[2] = fplres.getLocation(pt); + +#if GEOS_DEBUG + cerr << setprecision(10) << "Point " << pt << endl + << "Loc0: " << location[0] << endl + << "Loc1: " << location[1] << endl + << "Locr: " << location[2] << endl; +#endif + + /* + * If any location is on the Boundary, can't deduce anything, + * so just return true + */ + if ( find(location.begin(), location.end(), Location::BOUNDARY) != location.end() ) + { +#if GEOS_DEBUG + cerr << "OverlayResultValidator: testpoint " << pt << " is on the boundary, blindly returning a positive answer (is valid)" << endl; +#endif + return true; + } + + return isValidResult(overlayOp, location); +} + +/* private */ +bool +OverlayResultValidator::isValidResult(OverlayOp::OpCode overlayOp, + std::vector& location) +{ + bool expectedInterior = OverlayOp::isResultOfOp(location[0], + location[1], overlayOp); + + bool resultInInterior = (location[2] == Location::INTERIOR); + + bool isValid = ! (expectedInterior ^ resultInInterior); + + return isValid; +} + +/*private static*/ +double +OverlayResultValidator::computeBoundaryDistanceTolerance( + const geom::Geometry& g0, const geom::Geometry& g1) +{ + using geos::operation::overlay::snap::GeometrySnapper; + + return std::min(GeometrySnapper::computeSizeBasedSnapTolerance(g0), + GeometrySnapper::computeSizeBasedSnapTolerance(g1)); +} + +} // namespace geos.operation.overlay.validate +} // namespace geos.operation.overlay +} // namespace geos.operation +} // namespace geos + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/operation/polygonize/EdgeRing.cpp geos-3.2.2/source/operation/polygonize/EdgeRing.cpp --- geos-3.1.0/source/operation/polygonize/EdgeRing.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/polygonize/EdgeRing.cpp 2009-06-08 17:58:42.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeRing.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeRing.cpp 2567 2009-06-08 16:58:42Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/polygonize/EdgeRing.java rev. 1.6 + * Last port: operation/polygonize/EdgeRing.java rev. 1.8 (JTS-1.10) * **********************************************************************/ @@ -87,30 +87,30 @@ /*public static*/ const Coordinate& EdgeRing::ptNotInList(const CoordinateSequence *testPts, - const CoordinateSequence *pts) + const CoordinateSequence *pts) { - unsigned int npts=testPts->getSize(); - for (unsigned int i=0; igetAt(i); - if (isInList(testPt, pts)) - return testPt; - } - return Coordinate::getNull(); + const std::size_t npts = testPts->getSize(); + for (std::size_t i = 0; i < npts; ++i) + { + const Coordinate& testPt = testPts->getAt(i); + if (isInList(testPt, pts)) + return testPt; + } + return Coordinate::getNull(); } /*public static*/ bool EdgeRing::isInList(const Coordinate& pt, - const CoordinateSequence *pts) + const CoordinateSequence *pts) { - unsigned int npts=pts->getSize(); - for (unsigned int i=0; igetAt(i)) - return false; - } - return true; + const std::size_t npts = pts->getSize(); + for (std::size_t i = 0; i < npts; ++i) + { + if (pt == pts->getAt(i)) + return false; + } + return true; } /*public*/ @@ -236,19 +236,23 @@ /*private*/ void EdgeRing::addEdge(const CoordinateSequence *coords, bool isForward, - CoordinateSequence *coordList) + CoordinateSequence *coordList) { - unsigned int npts=coords->getSize(); - if (isForward) { - for (unsigned int i=0; iadd(coords->getAt(i), false); - } - } else { - for (unsigned int i=npts; i>0; --i) { - coordList->add(coords->getAt(i-1), false); - } - } + const std::size_t npts=coords->getSize(); + if (isForward) + { + for (std::size_t i = 0; i < npts; ++i) + { + coordList->add(coords->getAt(i), false); + } + } + else + { + for (std::size_t i = npts; i > 0; --i) + { + coordList->add(coords->getAt(i-1), false); + } + } } } // namespace geos.operation.polygonize diff -Nru geos-3.1.0/source/operation/polygonize/Makefile.in geos-3.2.2/source/operation/polygonize/Makefile.in --- geos-3.1.0/source/operation/polygonize/Makefile.in 2009-03-11 19:14:00.000000000 +0000 +++ geos-3.2.2/source/operation/polygonize/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(liboppolygonize_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,39 +53,71 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liboppolygonize_la_DEPENDENCIES = am_liboppolygonize_la_OBJECTS = PolygonizeDirectedEdge.lo \ PolygonizeEdge.lo PolygonizeGraph.lo Polygonizer.lo \ EdgeRing.lo liboppolygonize_la_OBJECTS = $(am_liboppolygonize_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(liboppolygonize_la_SOURCES) DIST_SOURCES = $(liboppolygonize_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -112,21 +145,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -135,20 +164,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -169,6 +206,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -180,19 +218,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -204,36 +236,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = liboppolygonize.la INCLUDES = -I$(top_srcdir)/source/headers @@ -253,14 +298,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/polygonize/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/polygonize/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/polygonize/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/polygonize/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -278,6 +323,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -288,7 +334,7 @@ rm -f "$${dir}/so_locations"; \ done liboppolygonize.la: $(liboppolygonize_la_OBJECTS) $(liboppolygonize_la_DEPENDENCIES) - $(CXXLINK) $(liboppolygonize_la_LDFLAGS) $(liboppolygonize_la_OBJECTS) $(liboppolygonize_la_LIBADD) $(LIBS) + $(CXXLINK) $(liboppolygonize_la_OBJECTS) $(liboppolygonize_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -303,22 +349,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Polygonizer.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -329,10 +375,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -357,15 +399,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -392,16 +433,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -409,14 +450,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -428,81 +469,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -532,6 +593,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -545,7 +607,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -553,18 +615,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -585,23 +667,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/polygonize/PolygonizeDirectedEdge.cpp geos-3.2.2/source/operation/polygonize/PolygonizeDirectedEdge.cpp --- geos-3.1.0/source/operation/polygonize/PolygonizeDirectedEdge.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/polygonize/PolygonizeDirectedEdge.cpp 2009-06-08 17:58:42.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonizeDirectedEdge.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonizeDirectedEdge.cpp 2567 2009-06-08 16:58:42Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/PolygonizeDirectedEdge.java rev. 1.4 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/polygonize/PolygonizeEdge.cpp geos-3.2.2/source/operation/polygonize/PolygonizeEdge.cpp --- geos-3.1.0/source/operation/polygonize/PolygonizeEdge.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/polygonize/PolygonizeEdge.cpp 2009-06-08 17:58:42.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonizeEdge.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonizeEdge.cpp 2567 2009-06-08 16:58:42Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/PolygonizeEdge.java rev. 1.3 (JTS-1.10) + * **********************************************************************/ diff -Nru geos-3.1.0/source/operation/polygonize/PolygonizeGraph.cpp geos-3.2.2/source/operation/polygonize/PolygonizeGraph.cpp --- geos-3.1.0/source/operation/polygonize/PolygonizeGraph.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/polygonize/PolygonizeGraph.cpp 2009-11-20 19:58:33.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: PolygonizeGraph.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: PolygonizeGraph.cpp 2733 2009-11-20 19:58:33Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/PolygonizeGraph.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #include @@ -31,6 +35,9 @@ using namespace geos::planargraph; using namespace geos::geom; +// Define the following to add assertions on downcasts +//#define GEOS_CAST_PARANOIA 1 + namespace geos { namespace operation { // geos.operation namespace polygonize { // geos.operation.polygonize @@ -155,78 +162,63 @@ void PolygonizeGraph::computeNextCWEdges() { - std::vector *pns=getNodes(); + typedef std::vector Nodes; + Nodes pns; getNodes(pns); // set the next pointers for the edges around each node - for(int i=0;i<(int)pns->size();i++) { - Node *node=(*pns)[i]; + for(Nodes::size_type i=0, in=pns.size(); i *ringEdges) +PolygonizeGraph::convertMaximalToMinimalEdgeRings( + std::vector &ringEdges) { - for(int i=0;i<(int)ringEdges->size();i++) + typedef std::vector IntersectionNodes; + typedef std::vector RingEdges; + + IntersectionNodes intNodes; + for(RingEdges::size_type i=0, in=ringEdges.size(); + igetLabel(); - std::vector *intNodes=findIntersectionNodes(de, label); - if (intNodes==NULL) continue; - - // flip the next pointers on the intersection nodes to - // create minimal edge rings - //std::vector *pns=getNodes(); + findIntersectionNodes(de, label, intNodes); // set the next pointers for the edges around each node - for(int j=0;j<(int)intNodes->size();j++) { - Node *node=(*intNodes)[j]; + for(IntersectionNodes::size_type j=0, jn=intNodes.size(); + jNULL
if no intersection nodes were found. - * Ownership of returned object goes to caller. - */ -std::vector* -PolygonizeGraph::findIntersectionNodes(PolygonizeDirectedEdge *startDE, long label) +/* private static */ +void +PolygonizeGraph::findIntersectionNodes(PolygonizeDirectedEdge *startDE, + long label, std::vector& intNodes) { PolygonizeDirectedEdge *de=startDE; - std::vector *intNodes=NULL; do { Node *node=de->getFromNode(); if (getDegree(node, label) > 1) { - if (intNodes==NULL) - intNodes=new std::vector(); - intNodes->push_back(node); + intNodes.push_back(node); } de=de->getNext(); assert(de!=NULL); // found NULL DE in ring assert(de==startDE || !de->isInRing()); // found DE already in ring } while (de!=startDE); - return intNodes; } -/** - * Computes the EdgeRings formed by the edges in this graph. - * @return a list of the EdgeRing found by the polygonization process. - */ -std::vector* -PolygonizeGraph::getEdgeRings() +/* public */ +void +PolygonizeGraph::getEdgeRings(std::vector& edgeRingList) { // maybe could optimize this, since most of these pointers should // be set correctly already @@ -235,78 +227,103 @@ // clear labels of all edges in graph label(dirEdges, -1); - std::vector *maximalRings=findLabeledEdgeRings(dirEdges); + std::vector maximalRings; + findLabeledEdgeRings(dirEdges, maximalRings); convertMaximalToMinimalEdgeRings(maximalRings); - delete maximalRings; + maximalRings.clear(); // not needed anymore // find all edgerings - std::vector *edgeRingList=new std::vector(); for(unsigned int i=0; iisMarked()) continue; if (de->isInRing()) continue; EdgeRing *er=findEdgeRing(de); - edgeRingList->push_back(er); + edgeRingList.push_back(er); } - return edgeRingList; } -/** -* -* @param dirEdges a List of the DirectedEdges in the graph -* @return a List of DirectedEdges, one for each edge ring found -*/ -std::vector* -PolygonizeGraph::findLabeledEdgeRings(std::vector &dirEdges) +/* static private */ +void +PolygonizeGraph::findLabeledEdgeRings(std::vector &dirEdges, + std::vector &edgeRingStarts) { - std::vector *edgeRingStarts=new std::vector(); + typedef std::vector Edges; + + Edges edges; + // label the edge rings formed long currLabel=1; - for(unsigned int i=0; i(dirEdges[i])); +#endif + PolygonizeDirectedEdge *de = + static_cast(dirEdges[i]); + if (de->isMarked()) continue; if (de->getLabel() >= 0) continue; - edgeRingStarts->push_back(de); - std::vector *edges=findDirEdgesInRing(de); - label(*edges, currLabel); - delete edges; + edgeRingStarts.push_back(de); + + findDirEdgesInRing(de, edges); + label(edges, currLabel); + edges.clear(); + ++currLabel; } - return edgeRingStarts; } -/* - * Finds and removes all cut edges from the graph. - * @return a list of the LineString forming the removed cut edges - */ -std::vector * -PolygonizeGraph::deleteCutEdges() +/* public */ +void +PolygonizeGraph::deleteCutEdges(std::vector &cutLines) { computeNextCWEdges(); + typedef std::vector DirEdges; + // label the current set of edgerings - delete findLabeledEdgeRings(dirEdges); + DirEdges junk; + findLabeledEdgeRings(dirEdges, junk); + junk.clear(); // not needed anymore /* * Cut Edges are edges where both dirEdges have the same label. * Delete them, and record them */ - std::vector *cutLines=new std::vector(); - for(unsigned int i=0; i(de_)); +#endif + PolygonizeDirectedEdge *de = + static_cast(de_); + if (de->isMarked()) continue; - PolygonizeDirectedEdge *sym=(PolygonizeDirectedEdge*) de->getSym(); - if (de->getLabel()==sym->getLabel()) { + + DirectedEdge *sym_ = de->getSym(); +#ifdef GEOS_CAST_PARANOIA + assert(dynamic_cast(sym_)); +#endif + PolygonizeDirectedEdge *sym = + static_cast(sym_); + + if (de->getLabel()==sym->getLabel()) + { de->setMarked(true); sym->setMarked(true); + // save the line as a cut edge - PolygonizeEdge *e=(PolygonizeEdge*) de->getEdge(); - cutLines->push_back(e->getLine()); + Edge *e_ = de->getEdge(); +#ifdef GEOS_CAST_PARANOIA + assert(dynamic_cast(e_)); +#endif + PolygonizeEdge *e = static_cast(e_); + + cutLines.push_back(e->getLine()); } } - return cutLines; } void @@ -392,26 +409,18 @@ } } -/* - * Traverse a ring of DirectedEdges, accumulating them into a list. - * This assumes that all dangling directed edges have been removed - * from the graph, so that there is always a next dirEdge. - * - * @param startDE the DirectedEdge to start traversing at - * @return a List of DirectedEdges that form a ring - */ -std::vector* -PolygonizeGraph::findDirEdgesInRing(PolygonizeDirectedEdge *startDE) +/* static private */ +void +PolygonizeGraph::findDirEdgesInRing(PolygonizeDirectedEdge *startDE, + std::vector& edges) { PolygonizeDirectedEdge *de=startDE; - std::vector *edges=new std::vector(); do { - edges->push_back(de); + edges.push_back(de); de=de->getNext(); assert(de != NULL); // found NULL DE in ring assert(de==startDE || !de->isInRing()); // found DE already in ring } while (de != startDE); - return edges; } EdgeRing * @@ -431,21 +440,11 @@ return er; } -/** - * Marks all edges from the graph which are "dangles". - * Dangles are which are incident on a node with degree 1. - * This process is recursive, since removing a dangling edge - * may result in another edge becoming a dangle. - * In order to handle large recursion depths efficiently, - * an explicit recursion stack is used - * - * @return a List containing the LineStrings that formed dangles - */ -std::vector* -PolygonizeGraph::deleteDangles() +/* public */ +void +PolygonizeGraph::deleteDangles(std::vector& dangleLines) { std::vector *nodesToRemove=findNodesOfDegree(1); - std::vector *dangleLines=new std::vector(); std::vector nodeStack; for(int i=0;i<(int)nodesToRemove->size();i++) { nodeStack.push_back((*nodesToRemove)[i]); @@ -466,14 +465,13 @@ sym->setMarked(true); // save the line as a dangle PolygonizeEdge *e=(PolygonizeEdge*) de->getEdge(); - dangleLines->push_back(e->getLine()); + dangleLines.push_back(e->getLine()); Node *toNode=de->getToNode(); // add the toNode to the list to be processed, if it is now a dangle if (getDegreeNonDeleted(toNode)==1) nodeStack.push_back(toNode); } } - return dangleLines; } } // namespace geos.operation.polygonize diff -Nru geos-3.1.0/source/operation/polygonize/Polygonizer.cpp geos-3.2.2/source/operation/polygonize/Polygonizer.cpp --- geos-3.1.0/source/operation/polygonize/Polygonizer.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/polygonize/Polygonizer.cpp 2009-11-19 20:29:01.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: Polygonizer.cpp 1997 2007-08-22 23:45:12Z mloskot $ + * $Id: Polygonizer.cpp 2730 2009-11-19 20:29:01Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/polygonize/Polygonizer.java rev. 1.6 (JTS-1.10) + * **********************************************************************/ #include @@ -227,16 +231,21 @@ polyList=new vector(); - if (graph==NULL) // No valid geometries added - { - return; - } + // if no geometries were supplied it's possible graph could be null + if (graph==NULL) return; - dangles=graph->deleteDangles(); - cutEdges=graph->deleteCutEdges(); - vector *edgeRingList=graph->getEdgeRings(); + // TODO: drop this heap allocation + dangles = new std::vector(); + graph->deleteDangles(*dangles); + + // TODO: drop this heap allocation + cutEdges = new std::vector(); + graph->deleteCutEdges(*cutEdges); + + vector edgeRingList; + graph->getEdgeRings(edgeRingList); #if GEOS_DEBUG - cerr<<"Polygonizer::polygonize(): "<size()<<" edgeRings in graph"< *validEdgeRingList=new vector(); invalidRingLines=new vector(); @@ -245,7 +254,6 @@ cerr<<" "<size()<<" valid"<size()<<" invalid"< *edgeRingList, vector *validEdgeRingList, vector *invalidRingList) -{ - for (unsigned int i=0, n=edgeRingList->size(); i& edgeRingList, + vector *validEdgeRingList, + vector *invalidRingList) +{ + typedef vector EdgeRingList; + + for (EdgeRingList::size_type i=0, n=edgeRingList.size(); iisValid()) validEdgeRingList->push_back(er); else diff -Nru geos-3.1.0/source/operation/predicate/Makefile.in geos-3.2.2/source/operation/predicate/Makefile.in --- geos-3.1.0/source/operation/predicate/Makefile.in 2009-03-11 19:14:01.000000000 +0000 +++ geos-3.2.2/source/operation/predicate/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -17,17 +18,12 @@ #prefix=@prefix@ #top_srcdir=@top_srcdir@ -SOURCES = $(liboppredicate_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -47,6 +43,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -55,22 +56,25 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liboppredicate_la_DEPENDENCIES = am_liboppredicate_la_OBJECTS = RectangleIntersects.lo \ RectangleContains.lo SegmentIntersectionTester.lo liboppredicate_la_OBJECTS = $(am_liboppredicate_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(liboppredicate_la_SOURCES) DIST_SOURCES = $(liboppredicate_la_SOURCES) ETAGS = etags @@ -78,8 +82,6 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -107,21 +109,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -130,20 +128,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -164,6 +170,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -175,19 +182,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -199,36 +200,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ noinst_LTLIBRARIES = liboppredicate.la INCLUDES = -I$(top_srcdir)/source/headers liboppredicate_la_SOURCES = \ @@ -245,14 +259,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/predicate/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/predicate/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/predicate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/predicate/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -270,6 +284,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -280,7 +295,7 @@ rm -f "$${dir}/so_locations"; \ done liboppredicate.la: $(liboppredicate_la_OBJECTS) $(liboppredicate_la_DEPENDENCIES) - $(CXXLINK) $(liboppredicate_la_LDFLAGS) $(liboppredicate_la_OBJECTS) $(liboppredicate_la_LIBADD) $(LIBS) + $(CXXLINK) $(liboppredicate_la_OBJECTS) $(liboppredicate_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -293,22 +308,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentIntersectionTester.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -319,82 +334,85 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -422,6 +440,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -435,7 +454,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -443,18 +462,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -475,19 +514,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .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 install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ 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 + pdf pdf-am ps ps-am tags uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/predicate/RectangleContains.cpp geos-3.2.2/source/operation/predicate/RectangleContains.cpp --- geos-3.1.0/source/operation/predicate/RectangleContains.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/predicate/RectangleContains.cpp 2009-06-08 18:12:04.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RectangleContains.cpp 2113 2008-01-29 17:49:18Z benjubb $ + * $Id: RectangleContains.cpp 2569 2009-06-08 17:12:04Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,7 +13,7 @@ * ********************************************************************** * - * Last port: operation/predicate/RectangleContains.java rev 1.1 (JTS-1.7) + * Last port: operation/predicate/RectangleContains.java rev 1.5 (JTS-1.10) * **********************************************************************/ @@ -77,13 +77,16 @@ bool RectangleContains::isPointContainedInBoundary(const Coordinate& pt) { - // we already know that the point is contained in the - // rectangle envelope - return - pt.x == rectEnv.getMinX() || pt.x == rectEnv.getMaxX() || - pt.y == rectEnv.getMinY() || pt.y == rectEnv.getMaxY(); - - return true; + /** + * contains = false iff the point is properly contained + * in the rectangle. + * + * This code assumes that the point lies in the rectangle envelope + */ + return pt.x == rectEnv.getMinX() + || pt.x == rectEnv.getMaxX() + || pt.y == rectEnv.getMinY() + || pt.y == rectEnv.getMaxY(); } /*private*/ diff -Nru geos-3.1.0/source/operation/predicate/RectangleIntersects.cpp geos-3.2.2/source/operation/predicate/RectangleIntersects.cpp --- geos-3.1.0/source/operation/predicate/RectangleIntersects.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/predicate/RectangleIntersects.cpp 2009-12-03 19:02:17.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RectangleIntersects.cpp 2066 2007-12-21 20:42:34Z benjubb $ + * $Id: RectangleIntersects.cpp 2763 2009-12-03 19:02:17Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,7 +13,7 @@ * ********************************************************************** * - * Last port: operation/predicate/RectangleIntersects.java rev 1.3 (JTS-1.7) + * Last port: operation/predicate/RectangleIntersects.java rev 1.4 (JTS-1.10) * **********************************************************************/ @@ -51,6 +51,10 @@ const geom::Envelope &rectEnv; bool intersectsVar; + // Declare type as noncopyable + EnvelopeIntersectsVisitor(const EnvelopeIntersectsVisitor& other); + EnvelopeIntersectsVisitor& operator=(const EnvelopeIntersectsVisitor& rhs); + protected: /** @@ -130,6 +134,10 @@ bool containsPointVar; const geom::CoordinateSequence &rectSeq; + // Declare type as noncopyable + ContainsPointVisitor(const ContainsPointVisitor& other); + ContainsPointVisitor& operator=(const ContainsPointVisitor& rhs); + protected: void visit(const geom::Geometry &geom) @@ -138,7 +146,7 @@ const geom::Polygon *poly; - if ( !(poly=dynamic_cast(&geom)) ) { + if ( 0 == (poly=dynamic_cast(&geom)) ) { return; } @@ -212,6 +220,10 @@ } } + // Declare type as noncopyable + LineIntersectsVisitor(const LineIntersectsVisitor& other); + LineIntersectsVisitor& operator=(const LineIntersectsVisitor& rhs); + protected: void visit(const geom::Geometry &geom) diff -Nru geos-3.1.0/source/operation/predicate/SegmentIntersectionTester.cpp geos-3.2.2/source/operation/predicate/SegmentIntersectionTester.cpp --- geos-3.1.0/source/operation/predicate/SegmentIntersectionTester.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/predicate/SegmentIntersectionTester.cpp 2009-06-08 18:15:46.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SegmentIntersectionTester.cpp 2189 2008-09-16 21:09:14Z mloskot $ + * $Id: SegmentIntersectionTester.cpp 2570 2009-06-08 17:15:46Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,8 +13,7 @@ * ********************************************************************** * - * Last port: operation/predicate/SegmentIntersectionTester.java rev. 1.6 - * (JTS-1.7) + * Last port: operation/predicate/SegmentIntersectionTester.java rev. 1.3 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/operation/relate/EdgeEndBuilder.cpp geos-3.2.2/source/operation/relate/EdgeEndBuilder.cpp --- geos-3.1.0/source/operation/relate/EdgeEndBuilder.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/EdgeEndBuilder.cpp 2009-06-05 11:23:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndBuilder.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEndBuilder.cpp 2543 2009-06-05 10:23:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,6 +14,8 @@ * ********************************************************************** * + * Last port: operation/relate/EdgeEndBuilder.java rev. 1.12 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/relate/EdgeEndBundle.cpp geos-3.2.2/source/operation/relate/EdgeEndBundle.cpp --- geos-3.1.0/source/operation/relate/EdgeEndBundle.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/EdgeEndBundle.cpp 2009-06-05 14:41:50.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndBundle.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEndBundle.cpp 2547 2009-06-05 13:41:50Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/EdgeEndBundle.java rev. 1.17 (JTS-1.10) + * **********************************************************************/ #include @@ -71,7 +75,9 @@ * edges in this EdgeStubBundle. It essentially merges * the ON and side labels for each edge. These labels must be compatible */ -void EdgeEndBundle::computeLabel() { +void EdgeEndBundle::computeLabel( + const algorithm::BoundaryNodeRule& boundaryNodeRule) +{ // create the label. If any of the edges belong to areas, // the label must be an area label bool isArea=false; @@ -91,34 +97,16 @@ } // compute the On label, and the side labels if present for(int i=0;i<2;i++) { - computeLabelOn(i); + computeLabelOn(i, boundaryNodeRule); if (isArea) computeLabelSides(i); } } -/** -* Compute the overall ON location for the list of EdgeStubs. -* (This is essentially equivalent to computing the self-overlay of a single Geometry) -* edgeStubs can be either on the boundary (eg Polygon edge) -* OR in the interior (e.g. segment of a LineString) -* of their parent Geometry. -* In addition, GeometryCollections use the mod-2 rule to determine -* whether a segment is on the boundary or not. -* Finally, in GeometryCollections it can still occur that an edge is both -* on the boundary and in the interior (e.g. a LineString segment lying on -* top of a Polygon edge.) In this case as usual the Boundary is given precendence. -*
-* These observations result in the following rules for computing the ON location: -*
    -*
  • if there are an odd number of Bdy edges, the attribute is Bdy -*
  • if there are an even number >= 2 of Bdy edges, the attribute is Int -*
  • if there are any Int edges, the attribute is Int -*
  • otherwise, the attribute is NULL. -*
-*/ -void EdgeEndBundle::computeLabelOn(int geomIndex) { +void +EdgeEndBundle::computeLabelOn(int geomIndex, const algorithm::BoundaryNodeRule& boundaryNodeRule) +{ // compute the ON location value int boundaryCount=0; bool foundInterior=false; @@ -132,7 +120,8 @@ int loc=Location::UNDEF; if (foundInterior) loc=Location::INTERIOR; if (boundaryCount>0) { - loc=GeometryGraph::determineBoundary(boundaryCount); + loc = GeometryGraph::determineBoundary(boundaryNodeRule, + boundaryCount); } label->setLocation(geomIndex,loc); } diff -Nru geos-3.1.0/source/operation/relate/EdgeEndBundleStar.cpp geos-3.2.2/source/operation/relate/EdgeEndBundleStar.cpp --- geos-3.1.0/source/operation/relate/EdgeEndBundleStar.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/EdgeEndBundleStar.cpp 2009-06-05 11:23:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EdgeEndBundleStar.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EdgeEndBundleStar.cpp 2543 2009-06-05 10:23:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/EdgeEndBundleStar.java rev. 1.13 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/relate/Makefile.in geos-3.2.2/source/operation/relate/Makefile.in --- geos-3.1.0/source/operation/relate/Makefile.in 2009-03-11 19:14:01.000000000 +0000 +++ geos-3.2.2/source/operation/relate/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(liboprelate_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,39 +53,71 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) liboprelate_la_DEPENDENCIES = am_liboprelate_la_OBJECTS = EdgeEndBuilder.lo EdgeEndBundle.lo \ EdgeEndBundleStar.lo RelateComputer.lo RelateNode.lo \ RelateNodeFactory.lo RelateNodeGraph.lo RelateOp.lo liboprelate_la_OBJECTS = $(am_liboprelate_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(liboprelate_la_SOURCES) DIST_SOURCES = $(liboprelate_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -112,21 +145,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -135,20 +164,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -169,6 +206,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -180,19 +218,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -204,36 +236,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = liboprelate.la INCLUDES = -I$(top_srcdir)/source/headers @@ -256,14 +301,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/relate/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/relate/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/relate/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/relate/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -281,6 +326,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -291,7 +337,7 @@ rm -f "$${dir}/so_locations"; \ done liboprelate.la: $(liboprelate_la_OBJECTS) $(liboprelate_la_DEPENDENCIES) - $(CXXLINK) $(liboprelate_la_LDFLAGS) $(liboprelate_la_OBJECTS) $(liboprelate_la_LIBADD) $(LIBS) + $(CXXLINK) $(liboprelate_la_OBJECTS) $(liboprelate_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -309,22 +355,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RelateOp.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -335,10 +381,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -363,15 +405,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -398,16 +439,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -415,14 +456,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -434,81 +475,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -538,6 +599,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -551,7 +613,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -559,18 +621,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -591,23 +673,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/relate/RelateComputer.cpp geos-3.2.2/source/operation/relate/RelateComputer.cpp --- geos-3.1.0/source/operation/relate/RelateComputer.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/RelateComputer.cpp 2009-06-05 11:23:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateComputer.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateComputer.cpp 2543 2009-06-05 10:23:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateComputer.java rev. 1.24 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/relate/RelateNode.cpp geos-3.2.2/source/operation/relate/RelateNode.cpp --- geos-3.1.0/source/operation/relate/RelateNode.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/RelateNode.cpp 2009-06-05 11:23:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateNode.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateNode.cpp 2543 2009-06-05 10:23:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateNode.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/relate/RelateNodeFactory.cpp geos-3.2.2/source/operation/relate/RelateNodeFactory.cpp --- geos-3.1.0/source/operation/relate/RelateNodeFactory.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/RelateNodeFactory.cpp 2009-06-05 11:23:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateNodeFactory.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateNodeFactory.cpp 2543 2009-06-05 10:23:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateNodeFactory.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/relate/RelateNodeGraph.cpp geos-3.2.2/source/operation/relate/RelateNodeGraph.cpp --- geos-3.1.0/source/operation/relate/RelateNodeGraph.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/RelateNodeGraph.cpp 2009-06-05 11:23:23.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateNodeGraph.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateNodeGraph.cpp 2543 2009-06-05 10:23:23Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateNodeGraph.java rev. 1.11 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/relate/RelateOp.cpp geos-3.2.2/source/operation/relate/RelateOp.cpp --- geos-3.1.0/source/operation/relate/RelateOp.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/relate/RelateOp.cpp 2009-06-05 18:50:34.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RelateOp.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RelateOp.cpp 2549 2009-06-05 17:50:34Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/relate/RelateOp.java rev. 1.19 (JTS-1.10) + * **********************************************************************/ @@ -39,12 +43,28 @@ return relOp.getIntersectionMatrix(); } +IntersectionMatrix* +RelateOp::relate(const Geometry *a, const Geometry *b, + const algorithm::BoundaryNodeRule& boundaryNodeRule) +{ + RelateOp relOp(a, b, boundaryNodeRule); + return relOp.getIntersectionMatrix(); +} + RelateOp::RelateOp(const Geometry *g0, const Geometry *g1): GeometryGraphOperation(g0, g1), relateComp(&arg) { } +RelateOp::RelateOp(const Geometry *g0, const Geometry *g1, + const algorithm::BoundaryNodeRule& boundaryNodeRule) + : + GeometryGraphOperation(g0, g1, boundaryNodeRule), + relateComp(&arg) +{ +} + RelateOp::~RelateOp() { } diff -Nru geos-3.1.0/source/operation/union/CascadedPolygonUnion.cpp geos-3.2.2/source/operation/union/CascadedPolygonUnion.cpp --- geos-3.1.0/source/operation/union/CascadedPolygonUnion.cpp 2009-03-10 16:17:57.000000000 +0000 +++ geos-3.2.2/source/operation/union/CascadedPolygonUnion.cpp 2009-06-08 22:53:35.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CascadedPolygonUnion.cpp 2253 2009-01-23 23:58:18Z mloskot $ + * $Id: CascadedPolygonUnion.cpp 2571 2009-06-08 21:53:35Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/union/CascadedPolygonUnion.java rev 1.10 (JTS-1.10) + * **********************************************************************/ #include @@ -20,6 +24,11 @@ #include #include #include +// std +#include +#include +#include +#include namespace geos { namespace operation { // geos.operation diff -Nru geos-3.1.0/source/operation/union/Makefile.in geos-3.2.2/source/operation/union/Makefile.in --- geos-3.1.0/source/operation/union/Makefile.in 2009-03-11 19:14:01.000000000 +0000 +++ geos-3.2.2/source/operation/union/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libopunion_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,37 +53,69 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libopunion_la_DEPENDENCIES = am_libopunion_la_OBJECTS = CascadedPolygonUnion.lo libopunion_la_OBJECTS = $(am_libopunion_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libopunion_la_SOURCES) DIST_SOURCES = $(libopunion_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -110,21 +143,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -133,20 +162,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -167,6 +204,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -178,19 +216,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -202,36 +234,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libopunion.la INCLUDES = -I$(top_srcdir)/source/headers @@ -247,14 +292,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/union/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/operation/union/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/operation/union/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/operation/union/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -272,6 +317,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -282,7 +328,7 @@ rm -f "$${dir}/so_locations"; \ done libopunion.la: $(libopunion_la_OBJECTS) $(libopunion_la_DEPENDENCIES) - $(CXXLINK) $(libopunion_la_LDFLAGS) $(libopunion_la_OBJECTS) $(libopunion_la_LIBADD) $(LIBS) + $(CXXLINK) $(libopunion_la_OBJECTS) $(libopunion_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -293,22 +339,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CascadedPolygonUnion.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -319,10 +365,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -347,15 +389,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -382,16 +423,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -399,14 +440,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -418,81 +459,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -522,6 +583,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -535,7 +597,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -543,18 +605,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -575,23 +657,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/valid/ConnectedInteriorTester.cpp geos-3.2.2/source/operation/valid/ConnectedInteriorTester.cpp --- geos-3.1.0/source/operation/valid/ConnectedInteriorTester.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/ConnectedInteriorTester.cpp 2009-11-19 21:06:16.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConnectedInteriorTester.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConnectedInteriorTester.cpp 2731 2009-11-19 21:06:16Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/valid/ConnectedInteriorTester.java rev. 1.14 + * Last port: operation/valid/ConnectedInteriorTester.java rev. 1.15 (JTS-1.10) * ********************************************************************** * @@ -53,6 +53,8 @@ #define GEOS_DEBUG 0 #endif +//#define GEOS_CAST_PARANOIA 1 + #if GEOS_DEBUG #include #endif @@ -114,12 +116,11 @@ setInteriorEdgesInResult(graph); graph.linkResultDirectedEdges(); - // Someone has to delete the returned vector and its contents - std::vector* edgeRings=buildEdgeRings(graph.getEdgeEnds()); - assert(edgeRings); + std::vector edgeRings; + buildEdgeRings(graph.getEdgeEnds(), edgeRings); #if GEOS_DEBUG - cerr << "buildEdgeRings constructed " << edgeRings->size() << " edgeRings." << endl; + cerr << "buildEdgeRings constructed " << edgeRings.size() << " edgeRings." << endl; #endif /* @@ -132,7 +133,7 @@ visitShellInteriors(geomGraph.getGeometry(), graph); #if GEOS_DEBUG - cerr << "after visitShellInteriors edgeRings are " << edgeRings->size() << " edgeRings." << endl; + cerr << "after visitShellInteriors edgeRings are " << edgeRings.size() << " edgeRings." << endl; #endif /* @@ -142,16 +143,15 @@ * this means that one or more holes must have split the interior of the * polygon into at least two pieces. The polygon is thus invalid. */ - bool res=!hasUnvisitedShellEdge(edgeRings); + bool res=!hasUnvisitedShellEdge(&edgeRings); - assert(edgeRings); #if GEOS_DEBUG - cerr << "releasing " << edgeRings->size() << " edgeRings." << endl; + cerr << "releasing " << edgeRings.size() << " edgeRings." << endl; #endif // Release memory allocated by buildEdgeRings - for(size_t i=0, n=edgeRings->size(); i* -ConnectedInteriorTester::buildEdgeRings(std::vector *dirEdges) +void +ConnectedInteriorTester::buildEdgeRings(std::vector *dirEdges, + std::vector& minEdgeRings) { #if GEOS_DEBUG cerr << __FUNCTION__ << " got " << dirEdges->size() << " EdgeEnd vector" << endl; #endif - std::vector minEdgeRings; - for(size_t i=0, n=dirEdges->size(); i EdgeEnds; + + //std::vector minEdgeRings; + for(EdgeEnds::size_type i=0, n=dirEdges->size(); i((*dirEdges)[i])); +#endif DirectedEdge *de=static_cast((*dirEdges)[i]); #if GEOS_DEBUG @@ -212,10 +218,8 @@ // if this edge has not yet been processed if(de->isInResult() && de->getEdgeRing()==NULL) { - //EdgeRing *er=new MaximalEdgeRing(de,geometryFactory); - //edgeRings->push_back(er); - - MaximalEdgeRing* er=new MaximalEdgeRing(de, geometryFactory); + MaximalEdgeRing* er = new MaximalEdgeRing(de, + geometryFactory); // We track MaximalEdgeRings allocations // using the private maximalEdgeRings vector maximalEdgeRings.push_back(er); @@ -224,9 +228,11 @@ er->buildMinimalRings(minEdgeRings); } } +/* std::vector *edgeRings=new std::vector(); edgeRings->assign(minEdgeRings.begin(), minEdgeRings.end()); return edgeRings; +*/ } /** diff -Nru geos-3.1.0/source/operation/valid/ConsistentAreaTester.cpp geos-3.2.2/source/operation/valid/ConsistentAreaTester.cpp --- geos-3.1.0/source/operation/valid/ConsistentAreaTester.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/ConsistentAreaTester.cpp 2009-06-05 14:41:50.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: ConsistentAreaTester.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: ConsistentAreaTester.cpp 2547 2009-06-05 13:41:50Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/ConsistentAreaTester.java rev. 1.14 (JTS-1.10) + * **********************************************************************/ #include @@ -79,11 +83,13 @@ bool ConsistentAreaTester::isNodeEdgeAreaLabelsConsistent() { + assert(geomGraph); + map& nMap=nodeGraph.getNodeMap(); map::iterator nodeIt; for(nodeIt=nMap.begin();nodeIt!=nMap.end();nodeIt++) { relate::RelateNode *node=static_cast(nodeIt->second); - if (!node->getEdges()->isAreaLabelsConsistent()) { + if (!node->getEdges()->isAreaLabelsConsistent(*geomGraph)) { invalidPoint=node->getCoordinate(); return false; } diff -Nru geos-3.1.0/source/operation/valid/IndexedNestedRingTester.cpp geos-3.2.2/source/operation/valid/IndexedNestedRingTester.cpp --- geos-3.1.0/source/operation/valid/IndexedNestedRingTester.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/valid/IndexedNestedRingTester.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,109 @@ +/********************************************************************** + * $Id: IndexedNestedRingTester.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: operation/valid/IndexedNestedRingTester.java rev. 1.1 (JTS-1.10) + * + **********************************************************************/ + +#include "IndexedNestedRingTester.h" + +#include // for use +#include // for use +#include // for use (findPtNotNode) +#include // for use + +// Forward declarations +namespace geos { + namespace geom { + class CoordinateSequence; + class Envelope; + } +} + +namespace geos { +namespace operation { // geos.operation +namespace valid { // geos.operation.valid + +bool +IndexedNestedRingTester::isNonNested() +{ + buildIndex(); + + for (size_t i=0, n=rings.size(); igetCoordinatesRO(); + std::vector results; + index->query(innerRing->getEnvelopeInternal(), results); + for (size_t j=0, jn=results.size(); j(results[j]); + const geom::CoordinateSequence *searchRingPts=searchRing->getCoordinatesRO(); + + if (innerRing==searchRing) + continue; + + if (!innerRing->getEnvelopeInternal()->intersects( + searchRing->getEnvelopeInternal())) + { + continue; + } + + const geom::Coordinate *innerRingPt = + IsValidOp::findPtNotNode(innerRingPts, + searchRing, + graph); + + // Unable to find a ring point not a node of + // the search ring + assert(innerRingPt!=NULL); + + bool isInside = algorithm::CGAlgorithms::isPointInRing( + *innerRingPt, searchRingPts); + + if (isInside) { + nestedPt = innerRingPt; + return false; + } + + } + } + + return true; +} + +IndexedNestedRingTester::~IndexedNestedRingTester() +{ + delete index; + //delete totalEnv; +} + +void +IndexedNestedRingTester::buildIndex() +{ + delete index; + + index = new index::strtree::STRtree(); + for (size_t i=0, n=rings.size(); igetEnvelopeInternal(); + index->insert(env, (void*)ring); + } +} + +} // namespace geos.operation.valid +} // namespace geos.operation +} // namespace geos diff -Nru geos-3.1.0/source/operation/valid/IndexedNestedRingTester.h geos-3.2.2/source/operation/valid/IndexedNestedRingTester.h --- geos-3.1.0/source/operation/valid/IndexedNestedRingTester.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/source/operation/valid/IndexedNestedRingTester.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,113 @@ +/********************************************************************** + * $Id: IndexedNestedRingTester.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: operation/valid/IndexedNestedRingTester.java rev. 1.1 (JTS-1.10) + * + **********************************************************************/ + +#ifndef GEOS_OP_VALID_OFFSETCURVEVERTEXLIST_H +#define GEOS_OP_VALID_OFFSETCURVEVERTEXLIST_H + +#include // for composition + +// Forward declarations +namespace geos { + namespace geom { + //class Envelope; + class Coordinate; + class LinearRing; + } + namespace index { + class SpatialIndex; + } + namespace geomgraph { + class GeometryGraph; + } +} + +namespace geos { +namespace operation { // geos.operation +namespace valid { // geos.operation.valid + +/** \brief + * Tests whether any of a set of {@link LinearRing}s are + * nested inside another ring in the set, using a spatial + * index to speed up the comparisons. + * + */ +class IndexedNestedRingTester +{ +public: + // @param newGraph : ownership retained by caller + IndexedNestedRingTester(geomgraph::GeometryGraph* newGraph) + : + graph(newGraph), + //totalEnv(0), + index(0), + nestedPt(0) + { + } + + ~IndexedNestedRingTester(); + + /* + * Be aware that the returned Coordinate (if != NULL) + * will point to storage owned by one of the LinearRing + * previously added. If you destroy them, this + * will point to an invalid memory address. + */ + const geom::Coordinate* getNestedPoint() const + { + return nestedPt; + } + + /// @param ring : ownership retained by caller + void add(const geom::LinearRing* ring) + { + rings.push_back(ring); + } + + bool isNonNested(); + +private: + + /// Externally owned + geomgraph::GeometryGraph* graph; + + /// Ownership of this vector elements are externally owned + std::vector rings; + + // CHECK: Owned by (seems unused)? + //geom::Envelope* totalEnv; + + // Owned by us (use auto_ptr ?) + geos::index::SpatialIndex* index; // 'index' in JTS + + // Externally owned, if not null + const geom::Coordinate *nestedPt; + + void buildIndex(); +}; + +} // namespace geos.operation.valid +} // namespace geos.operation +} // namespace geos + +#endif // GEOS_OP_VALID_OFFSETCURVEVERTEXLIST_H + +/********************************************************************** + * $Log$ + **********************************************************************/ + diff -Nru geos-3.1.0/source/operation/valid/IsValidOp.cpp geos-3.2.2/source/operation/valid/IsValidOp.cpp --- geos-3.1.0/source/operation/valid/IsValidOp.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/IsValidOp.cpp 2010-03-18 18:26:02.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: IsValidOp.cpp 2210 2008-10-23 17:33:16Z warmerdam $ + * $Id: IsValidOp.cpp 2942 2010-03-18 18:26:02Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,13 +14,15 @@ * ********************************************************************** * - * Last port: operation/valid/IsValidOp.java rev. 1.39 (JTS-1.7) + * Last port: operation/valid/IsValidOp.java rev. 1.41 (JTS-1.10) * **********************************************************************/ +#include "IndexedNestedRingTester.h" + #include #include -#include +#include #include #include #include @@ -80,7 +82,7 @@ bool IsValidOp::isValid() { - checkValid(parentGeometry); + checkValid(); return validErr==NULL; } @@ -103,17 +105,22 @@ TopologyValidationError * IsValidOp::getValidationError() { - checkValid(parentGeometry); + checkValid(); return validErr; } void -IsValidOp::checkValid(const Geometry *g) +IsValidOp::checkValid() { if (isChecked) return; + checkValid(parentGeometry); + isChecked=true; +} +void +IsValidOp::checkValid(const Geometry *g) +{ assert( validErr == NULL ); - validErr=NULL; // empty geometries are always valid! if (g->isEmpty()) return; @@ -125,10 +132,9 @@ else if (typeid(*g)==typeid(LineString)) checkValid((LineString*)g); else if (typeid(*g)==typeid(Polygon)) checkValid((Polygon*)g); else if (typeid(*g)==typeid(MultiPolygon)) checkValid((MultiPolygon*)g); - else if ((gc=dynamic_cast(g))) + else if (0 != (gc=dynamic_cast(g))) checkValid(gc); else throw util::UnsupportedOperationException(); - isChecked=true; } /* @@ -401,7 +407,8 @@ { //SimpleNestedRingTester nestedTester(graph); //SweeplineNestedRingTester nestedTester(graph); - QuadtreeNestedRingTester nestedTester(graph); + //QuadtreeNestedRingTester nestedTester(graph); + IndexedNestedRingTester nestedTester(graph); int nholes=p->getNumInteriorRing(); for(int i=0; i/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -440,81 +493,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -544,6 +617,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -557,7 +631,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -565,18 +639,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -597,23 +691,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/operation/valid/QuadtreeNestedRingTester.cpp geos-3.2.2/source/operation/valid/QuadtreeNestedRingTester.cpp --- geos-3.1.0/source/operation/valid/QuadtreeNestedRingTester.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/QuadtreeNestedRingTester.cpp 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: QuadtreeNestedRingTester.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: QuadtreeNestedRingTester.cpp 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/valid/QuadtreeNestedRingTester.java rev. 1.11 + * Last port: operation/valid/QuadtreeNestedRingTester.java rev. 1.12 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/operation/valid/RepeatedPointTester.cpp geos-3.2.2/source/operation/valid/RepeatedPointTester.cpp --- geos-3.1.0/source/operation/valid/RepeatedPointTester.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/RepeatedPointTester.cpp 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: RepeatedPointTester.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: RepeatedPointTester.cpp 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,6 +13,8 @@ * ********************************************************************** * + * Last port: operation/valid/RepeatedPointTester.java rev. 1.8 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/valid/SimpleNestedRingTester.cpp geos-3.2.2/source/operation/valid/SimpleNestedRingTester.cpp --- geos-3.1.0/source/operation/valid/SimpleNestedRingTester.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/SimpleNestedRingTester.cpp 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleNestedRingTester.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleNestedRingTester.cpp 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/SimpleNestedRingTester.java rev. 1.14 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/valid/SweeplineNestedRingTester.cpp geos-3.2.2/source/operation/valid/SweeplineNestedRingTester.cpp --- geos-3.1.0/source/operation/valid/SweeplineNestedRingTester.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/SweeplineNestedRingTester.cpp 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SweeplineNestedRingTester.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SweeplineNestedRingTester.cpp 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -12,6 +12,10 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: operation/valid/SweeplineNestedRingTester.java rev. 1.12 (JTS-1.10) + * **********************************************************************/ #include diff -Nru geos-3.1.0/source/operation/valid/TopologyValidationError.cpp geos-3.2.2/source/operation/valid/TopologyValidationError.cpp --- geos-3.1.0/source/operation/valid/TopologyValidationError.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/operation/valid/TopologyValidationError.cpp 2009-06-08 23:10:55.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TopologyValidationError.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: TopologyValidationError.cpp 2572 2009-06-08 22:10:55Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -14,7 +14,7 @@ * ********************************************************************** * - * Last port: operation/valid/TopologyValidationError.java rev. 1.14 (JTS-1.7) + * Last port: operation/valid/TopologyValidationError.java rev. 1.16 (JTS-1.10) * **********************************************************************/ diff -Nru geos-3.1.0/source/planargraph/Makefile.in geos-3.2.2/source/planargraph/Makefile.in --- geos-3.1.0/source/planargraph/Makefile.in 2009-03-11 19:14:02.000000000 +0000 +++ geos-3.2.2/source/planargraph/Makefile.in 2010-04-18 16:08:13.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libplanargraph_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,39 +53,71 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libplanargraph_la_DEPENDENCIES = am_libplanargraph_la_OBJECTS = DirectedEdge.lo DirectedEdgeStar.lo \ Edge.lo Node.lo NodeMap.lo PlanarGraph.lo Subgraph.lo \ ConnectedSubgraphFinder.lo libplanargraph_la_OBJECTS = $(am_libplanargraph_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libplanargraph_la_SOURCES) DIST_SOURCES = $(libplanargraph_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -112,21 +145,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -135,20 +164,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -169,6 +206,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -180,19 +218,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -204,36 +236,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libplanargraph.la INCLUDES = -I$(top_srcdir)/source/headers @@ -256,14 +301,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/planargraph/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/planargraph/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/planargraph/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/planargraph/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -281,6 +326,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -291,7 +337,7 @@ rm -f "$${dir}/so_locations"; \ done libplanargraph.la: $(libplanargraph_la_OBJECTS) $(libplanargraph_la_DEPENDENCIES) - $(CXXLINK) $(libplanargraph_la_LDFLAGS) $(libplanargraph_la_OBJECTS) $(libplanargraph_la_LIBADD) $(LIBS) + $(CXXLINK) $(libplanargraph_la_OBJECTS) $(libplanargraph_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -309,32 +355,32 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Subgraph.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< ConnectedSubgraphFinder.lo: algorithm/ConnectedSubgraphFinder.cpp -@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConnectedSubgraphFinder.lo -MD -MP -MF "$(DEPDIR)/ConnectedSubgraphFinder.Tpo" -c -o ConnectedSubgraphFinder.lo `test -f 'algorithm/ConnectedSubgraphFinder.cpp' || echo '$(srcdir)/'`algorithm/ConnectedSubgraphFinder.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ConnectedSubgraphFinder.Tpo" "$(DEPDIR)/ConnectedSubgraphFinder.Plo"; else rm -f "$(DEPDIR)/ConnectedSubgraphFinder.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConnectedSubgraphFinder.lo -MD -MP -MF $(DEPDIR)/ConnectedSubgraphFinder.Tpo -c -o ConnectedSubgraphFinder.lo `test -f 'algorithm/ConnectedSubgraphFinder.cpp' || echo '$(srcdir)/'`algorithm/ConnectedSubgraphFinder.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ConnectedSubgraphFinder.Tpo $(DEPDIR)/ConnectedSubgraphFinder.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/ConnectedSubgraphFinder.cpp' object='ConnectedSubgraphFinder.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ConnectedSubgraphFinder.lo `test -f 'algorithm/ConnectedSubgraphFinder.cpp' || echo '$(srcdir)/'`algorithm/ConnectedSubgraphFinder.cpp +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ConnectedSubgraphFinder.lo `test -f 'algorithm/ConnectedSubgraphFinder.cpp' || echo '$(srcdir)/'`algorithm/ConnectedSubgraphFinder.cpp mostlyclean-libtool: -rm -f *.lo @@ -342,10 +388,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -370,15 +412,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -405,16 +446,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -422,14 +463,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -441,81 +482,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -545,6 +606,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -558,7 +620,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -566,18 +628,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -598,23 +680,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/planargraph/NodeMap.cpp geos-3.2.2/source/planargraph/NodeMap.cpp --- geos-3.1.0/source/planargraph/NodeMap.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/planargraph/NodeMap.cpp 2009-11-20 19:58:33.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: NodeMap.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: NodeMap.cpp 2733 2009-11-20 19:58:33Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -64,16 +64,15 @@ return n; } -vector* -NodeMap::getNodes() -{ - vector *values=new vector(); - NodeMap::container::iterator it=nodeMap.begin(); - while(it!=nodeMap.end()) { - values->push_back(it->second); +/* public */ +void +NodeMap::getNodes(vector& values) +{ + NodeMap::container::iterator it=nodeMap.begin(), itE=nodeMap.end(); + while (it != itE) { + values.push_back(it->second); ++it; } - return values; } /** diff -Nru geos-3.1.0/source/precision/CommonBitsRemover.cpp geos-3.2.2/source/precision/CommonBitsRemover.cpp --- geos-3.1.0/source/precision/CommonBitsRemover.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/precision/CommonBitsRemover.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: CommonBitsRemover.cpp 2127 2008-05-20 21:25:21Z mloskot $ + * $Id: CommonBitsRemover.cpp 2757 2009-12-01 15:39:41Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -52,7 +52,7 @@ void filter_ro(const geom::Coordinate *coord) //Not used { - UNREFERENCED_PARAMETER(coord); + ::geos::ignore_unused_variable_warning(coord); assert(0); }; @@ -73,7 +73,7 @@ void filter_rw(geom::Coordinate *coord) const { // CommonCoordinateFilter is a read-only filter - UNREFERENCED_PARAMETER(coord); + ::geos::ignore_unused_variable_warning(coord); assert(0); } diff -Nru geos-3.1.0/source/precision/EnhancedPrecisionOp.cpp geos-3.2.2/source/precision/EnhancedPrecisionOp.cpp --- geos-3.1.0/source/precision/EnhancedPrecisionOp.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/precision/EnhancedPrecisionOp.cpp 2009-11-30 17:29:48.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: EnhancedPrecisionOp.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: EnhancedPrecisionOp.cpp 2755 2009-11-30 17:29:48Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -82,6 +82,8 @@ #if GEOS_DEBUG std::cerr << "Reduced operation exception: " << ex2.what() << std::endl; +#else + (void)ex2; #endif throw originalEx; } diff -Nru geos-3.1.0/source/precision/GeometrySnapper.cpp geos-3.2.2/source/precision/GeometrySnapper.cpp --- geos-3.1.0/source/precision/GeometrySnapper.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/precision/GeometrySnapper.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,170 +0,0 @@ -/********************************************************************** - * $Id: GeometrySnapper.cpp 2127 2008-05-20 21:25:21Z mloskot $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/snap/GeometrySnapper.java rev. 1.6 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#include -#include -#include // inherit. of SnapTransformer -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -//using namespace std; -using namespace geos::geom; - -namespace geos { -namespace precision { // geos.precision - -const double GeometrySnapper::snapPrecisionFactor = 10e-10; - -class SnapTransformer: public geos::geom::util::GeometryTransformer { - -private: - - double snapTol; - - const Coordinate::ConstVect& snapPts; - - CoordinateSequence::AutoPtr snapLine( - const CoordinateSequence* srcPts) - { - using std::auto_ptr; - - assert(srcPts); - assert(srcPts->toVector()); - LineStringSnapper snapper(*(srcPts->toVector()), snapTol); - auto_ptr newPts = snapper.snapTo(snapPts); - - const CoordinateSequenceFactory* cfact = factory->getCoordinateSequenceFactory(); - return auto_ptr(cfact->create(newPts.release())); - } - -public: - - SnapTransformer(double nSnapTol, - const Coordinate::ConstVect& nSnapPts) - : - snapTol(nSnapTol), - snapPts(nSnapPts) - { - } - - CoordinateSequence::AutoPtr transformCoordinates( - const CoordinateSequence* coords, - const Geometry* parent) - { - UNREFERENCED_PARAMETER(parent); - return snapLine(coords); - } - - -}; - -/*private*/ -std::auto_ptr -GeometrySnapper::extractTargetCoordinates(const Geometry& g) -{ - std::auto_ptr snapPts(new Coordinate::ConstVect()); - util::UniqueCoordinateArrayFilter filter(*snapPts); - g.apply_ro(&filter); - // integrity check - assert( snapPts->size() <= g.getNumPoints() ); - return snapPts; -} - -/*public*/ -std::auto_ptr -GeometrySnapper::snapTo(const geom::Geometry& g, double snapTolerance) -{ - - using std::auto_ptr; - using geom::util::GeometryTransformer; - - // Get snap points - auto_ptr snapPts=extractTargetCoordinates(g); - - // Apply a SnapTransformer to source geometry - // (we need a pointer for dynamic polymorphism) - auto_ptr snapTrans(new SnapTransformer(snapTolerance, *snapPts)); - return snapTrans->transform(&srcGeom); -} - -/*public static*/ -double -GeometrySnapper::computeSizeBasedSnapTolerance(const geom::Geometry& g) -{ - const Envelope* env = g.getEnvelopeInternal(); - double minDimension = std::min(env->getHeight(), env->getWidth()); - double snapTol = minDimension * snapPrecisionFactor; - return snapTol; -} - -/*public static*/ -double -GeometrySnapper::computeOverlaySnapTolerance(const geom::Geometry& g) -{ - double snapTolerance = computeSizeBasedSnapTolerance(g); - - /* - * Overlay is carried out in most precise precision model of inputs. - * If this precision model is fixed, then the snap tolerance - * must reflect the grid size. - * Precisely, the snap tolerance should be at least - * the distance from a corner of a precision grid cell - * to the centre point of the cell. - */ - assert(g.getPrecisionModel()); - const PrecisionModel& pm = *(g.getPrecisionModel()); - if (pm.getType() == PrecisionModel::FIXED) - { - double fixedSnapTol = (1 / pm.getScale()) * 2 / 1.415; - if ( fixedSnapTol > snapTolerance ) - snapTolerance = fixedSnapTol; - } - return snapTolerance; -} - -/*public static*/ -double -GeometrySnapper::computeOverlaySnapTolerance(const geom::Geometry& g1, - const geom::Geometry& g2) -{ - return std::min(computeOverlaySnapTolerance(g1), computeOverlaySnapTolerance(g2)); -} - - -} // namespace geos.precision -} // namespace geos - -/********************************************************************** - * $Log$ - * Revision 1.1 2006/07/21 17:09:14 strk - * Added new precision::LineStringSnapper class + test - * and precision::GeometrySnapper (w/out test) - * - **********************************************************************/ - diff -Nru geos-3.1.0/source/precision/LineStringSnapper.cpp geos-3.2.2/source/precision/LineStringSnapper.cpp --- geos-3.1.0/source/precision/LineStringSnapper.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/precision/LineStringSnapper.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,273 +0,0 @@ -/********************************************************************** - * $Id: LineStringSnapper.cpp 1940 2006-12-13 10:51:18Z strk $ - * - * GEOS - Geometry Engine Open Source - * http://geos.refractions.net - * - * Copyright (C) 2006 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - *********************************************************************** - * - * Last port: operation/overlay/snap/lineStringSnapper.java rev. 1.1 - * (we should move in GEOS too, probably) - * - **********************************************************************/ - -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifndef GEOS_DEBUG -#define GEOS_DEBUG 0 -#endif - -#if GEOS_DEBUG -#include -using std::cerr; -using std::endl; -#endif - -//using namespace std; -using namespace geos::geom; - -namespace geos { -namespace precision { // geos.precision - -/*public*/ -std::auto_ptr -LineStringSnapper::snapTo(const geom::Coordinate::ConstVect& snapPts) -{ - geom::CoordinateList coordList(srcPts); - - snapVertices(coordList, snapPts); - snapSegments(coordList, snapPts); - - return coordList.toCoordinateArray(); -} - -/*private*/ -void -LineStringSnapper::snapVertices(geom::CoordinateList& srcCoords, - const geom::Coordinate::ConstVect& snapPts) -{ - using geom::CoordinateList; - - geom::Coordinate::ConstVect::const_iterator not_found = snapPts.end(); - - // try snapping vertices - // assume src list has a closing point (is a ring) - CoordinateList::iterator it = srcCoords.begin(); - CoordinateList::iterator end = srcCoords.end(); - CoordinateList::iterator last = end; --last; - for ( ; it != end; ++it ) - { - Coordinate& srcPt = *it; - -#if GEOS_DEBUG -cerr << "Checking for a snap for source coordinate " << srcPt << endl; -#endif - - geom::Coordinate::ConstVect::const_iterator found = findSnapForVertex(srcPt, snapPts); - if ( found == not_found ) - { // no snaps found (or no need to snap) -#if GEOS_DEBUG -cerr << "No snap found" << endl; -#endif - continue; - } - - assert(*found); - const Coordinate& snapPt = *(*found); - -#if GEOS_DEBUG -cerr << "Found snap point " << snapPt << endl; -#endif - - // update src with snap pt - *it = snapPt; - -#if GEOS_DEBUG -cerr << "Source point became " << srcPt << endl; -#endif - - // keep final closing point in synch (rings only) - if (it == srcCoords.begin() && isClosed) - { - *last = snapPt; - } - } -} - -/*private*/ -Coordinate::ConstVect::const_iterator -LineStringSnapper::findSnapForVertex(const Coordinate& pt, - const Coordinate::ConstVect& snapPts) -{ - - // TODO: use std::find_if - Coordinate::ConstVect::const_iterator end=snapPts.end(); - for ( Coordinate::ConstVect::const_iterator - it=snapPts.begin(); - it != end; - ++it) - { - assert(*it); - const Coordinate& snapPt = *(*it); - -#if GEOS_DEBUG -cerr << " misuring distance between snap point " << snapPt << " and source point " << pt << endl; -#endif - - // shouldn't we look for *all* segments to be snapped rather then a single one? - if ( snapPt.equals2D(pt) ) - { -#if GEOS_DEBUG -cerr << " points are equal, returning not-found " << endl; -#endif - return end; - //continue; - } - - double dist = snapPt.distance(pt); - if ( dist < snapTolerance ) - { -#if GEOS_DEBUG -cerr << " points are within distance (" << dist << ") returning iterator to snap point" << endl; -#endif - return it; - } - } - -#if GEOS_DEBUG -cerr << " No snap point within distance, returning not-found" << endl; -#endif - - return end; -} - - -/*private*/ -void -LineStringSnapper::snapSegments(geom::CoordinateList& srcCoords, - const geom::Coordinate::ConstVect& snapPts) -{ - -#if GEOS_DEBUG -cerr << " Snapping segment from: " << srcCoords << endl; -#endif - - for ( Coordinate::ConstVect::const_iterator - it=snapPts.begin(), end=snapPts.end(); - it != end; - ++it) - { - assert(*it); - const Coordinate& snapPt = *(*it); - -#if GEOS_DEBUG -cerr << "Checking for a segment to snap to snapPt " << snapPt << endl; -#endif - - // shouldn't we look for *all* segments to be snapped - // rather then a single one? - CoordinateList::iterator too_far = srcCoords.end(); --too_far; - CoordinateList::iterator segpos = - findSegmentToSnap(snapPt, srcCoords.begin(), too_far); - if ( segpos == too_far) - { -#if GEOS_DEBUG -cerr << " No segment to snap" << endl; -#endif - continue; - } -#if GEOS_DEBUG -cerr << " Segment to be snapped found, inserting point" << endl; -#endif - // insert must happen one-past first point (before next point) - ++segpos; - srcCoords.insert(segpos, snapPt); - } - -#if GEOS_DEBUG -cerr << " After segment snapping, srcCoors are: " << srcCoords << endl; -#endif - -} - -/*private*/ -CoordinateList::iterator -LineStringSnapper::findSegmentToSnap( - const Coordinate& snapPt, - CoordinateList::iterator from, - CoordinateList::iterator too_far) -{ - LineSegment seg; - double minDist = snapTolerance+1; // make sure the first closer then - // snapTolerance is accepted - CoordinateList::iterator match=too_far; - - // TODO: use std::find_if - for ( ; from != too_far; ++from) - { - seg.p0 = *from; - CoordinateList::iterator to = from; - ++to; - seg.p1 = *to; - -#if GEOS_DEBUG -cerr << " Checking segment " << seg << " for snapping against point " << snapPt << endl; -#endif - - if ( seg.p0.equals2D(snapPt) || seg.p1.equals2D(snapPt) ) - { - -#if GEOS_DEBUG -cerr << " One of segment endpoints equal snap point, returning too_far" << endl; -#endif - // If the snap pt is already in the src list, - // don't snap - return too_far; - } - - double dist = seg.distance(snapPt); -#if GEOS_DEBUG -cerr << " dist=" << dist << " minDist=" << minDist << " snapTolerance=" << snapTolerance << endl; -#endif - if ( dist < minDist && dist < snapTolerance ) - { -#if GEOS_DEBUG -cerr << " Segment/snapPt distance within tolerance and closer then previous match (" << dist << ") " << endl; -#endif - match = from; - minDist = dist; - } - } - - return match; -} - -} // namespace geos.precision -} // namespace geos - -/********************************************************************** - * $Log$ - * Revision 1.2 2006/07/21 17:59:05 strk - * Fixed preprocessor directive use - * - * Revision 1.1 2006/07/21 17:09:14 strk - * Added new precision::LineStringSnapper class + test - * and precision::GeometrySnapper (w/out test) - * - **********************************************************************/ - diff -Nru geos-3.1.0/source/precision/Makefile.am geos-3.2.2/source/precision/Makefile.am --- geos-3.1.0/source/precision/Makefile.am 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/precision/Makefile.am 2009-05-05 11:14:39.000000000 +0100 @@ -8,8 +8,6 @@ CommonBits.cpp \ CommonBitsOp.cpp \ CommonBitsRemover.cpp \ - GeometrySnapper.cpp \ - LineStringSnapper.cpp \ EnhancedPrecisionOp.cpp \ SimpleGeometryPrecisionReducer.cpp diff -Nru geos-3.1.0/source/precision/Makefile.in geos-3.2.2/source/precision/Makefile.in --- geos-3.1.0/source/precision/Makefile.in 2009-03-11 19:14:02.000000000 +0000 +++ geos-3.2.2/source/precision/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libprecision_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,39 +53,71 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libprecision_la_DEPENDENCIES = am_libprecision_la_OBJECTS = CommonBits.lo CommonBitsOp.lo \ - CommonBitsRemover.lo GeometrySnapper.lo LineStringSnapper.lo \ - EnhancedPrecisionOp.lo SimpleGeometryPrecisionReducer.lo + CommonBitsRemover.lo EnhancedPrecisionOp.lo \ + SimpleGeometryPrecisionReducer.lo libprecision_la_OBJECTS = $(am_libprecision_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libprecision_la_SOURCES) DIST_SOURCES = $(libprecision_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -112,21 +145,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -135,20 +164,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -169,6 +206,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -180,19 +218,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -204,36 +236,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libprecision.la INCLUDES = -I$(top_srcdir)/source/headers @@ -241,8 +286,6 @@ CommonBits.cpp \ CommonBitsOp.cpp \ CommonBitsRemover.cpp \ - GeometrySnapper.cpp \ - LineStringSnapper.cpp \ EnhancedPrecisionOp.cpp \ SimpleGeometryPrecisionReducer.cpp @@ -255,14 +298,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/precision/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/precision/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/precision/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/precision/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -280,6 +323,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -290,7 +334,7 @@ rm -f "$${dir}/so_locations"; \ done libprecision.la: $(libprecision_la_OBJECTS) $(libprecision_la_DEPENDENCIES) - $(CXXLINK) $(libprecision_la_LDFLAGS) $(libprecision_la_OBJECTS) $(libprecision_la_LIBADD) $(LIBS) + $(CXXLINK) $(libprecision_la_OBJECTS) $(libprecision_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -302,27 +346,25 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommonBitsOp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CommonBitsRemover.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EnhancedPrecisionOp.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeometrySnapper.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LineStringSnapper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleGeometryPrecisionReducer.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -333,10 +375,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -361,15 +399,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -396,16 +433,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -413,14 +450,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -432,81 +469,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -536,6 +593,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -549,7 +607,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -557,18 +615,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -589,23 +667,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/precision/SimpleGeometryPrecisionReducer.cpp geos-3.2.2/source/precision/SimpleGeometryPrecisionReducer.cpp --- geos-3.1.0/source/precision/SimpleGeometryPrecisionReducer.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/precision/SimpleGeometryPrecisionReducer.cpp 2009-04-15 11:02:01.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleGeometryPrecisionReducer.cpp 2131 2008-07-15 22:04:51Z mloskot $ + * $Id: SimpleGeometryPrecisionReducer.cpp 2368 2009-04-15 10:02:01Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -39,22 +39,33 @@ namespace geos { namespace precision { // geos.precision -class PrecisionReducerCoordinateOperation: public geom::util::CoordinateOperation { +class PrecisionReducerCoordinateOperation : + public geom::util::CoordinateOperation +{ using CoordinateOperation::edit; private: + SimpleGeometryPrecisionReducer *sgpr; + public: - PrecisionReducerCoordinateOperation(SimpleGeometryPrecisionReducer *newSgpr); - CoordinateSequence* edit(const CoordinateSequence *coordinates, const Geometry *geom); + + PrecisionReducerCoordinateOperation( + SimpleGeometryPrecisionReducer *newSgpr); + + /// Ownership of returned CoordinateSequence to caller + CoordinateSequence* edit(const CoordinateSequence *coordinates, + const Geometry *geom); }; -PrecisionReducerCoordinateOperation::PrecisionReducerCoordinateOperation(SimpleGeometryPrecisionReducer *newSgpr) +PrecisionReducerCoordinateOperation::PrecisionReducerCoordinateOperation( + SimpleGeometryPrecisionReducer *newSgpr) { sgpr=newSgpr; } CoordinateSequence* -PrecisionReducerCoordinateOperation::edit(const CoordinateSequence *cs, const Geometry *geom) +PrecisionReducerCoordinateOperation::edit(const CoordinateSequence *cs, + const Geometry *geom) { if (cs->getSize()==0) return NULL; @@ -70,26 +81,35 @@ (*vc)[i] = coord; } - CoordinateSequence *reducedCoords = geom->getFactory()->getCoordinateSequenceFactory()->create(vc); - - // remove repeated points, to simplify returned geometry as much as possible + // reducedCoords take ownership of 'vc' + CoordinateSequence *reducedCoords = + geom->getFactory()->getCoordinateSequenceFactory()->create(vc); + + // remove repeated points, to simplify returned geometry as + // much as possible. + // CoordinateSequence *noRepeatedCoords=CoordinateSequence::removeRepeatedPoints(reducedCoords); /** - * Check to see if the removal of repeated points - * collapsed the coordinate List to an invalid length - * for the type of the parent geometry. - * It is not necessary to check for Point collapses, since the coordinate list can - * never collapse to less than one point. - * If the length is invalid, return the full-length coordinate array - * first computed, or null if collapses are being removed. - * (This may create an invalid geometry - the client must handle this.) - */ + * Check to see if the removal of repeated points + * collapsed the coordinate List to an invalid length + * for the type of the parent geometry. + * It is not necessary to check for Point collapses, + * since the coordinate list can + * never collapse to less than one point. + * If the length is invalid, return the full-length coordinate array + * first computed, or null if collapses are being removed. + * (This may create an invalid geometry - the client must handle this.) + */ unsigned int minLength = 0; if (typeid(*geom)==typeid(LineString)) minLength = 2; if (typeid(*geom)==typeid(LinearRing)) minLength = 4; CoordinateSequence *collapsedCoords = reducedCoords; - if (sgpr->getRemoveCollapsed()) collapsedCoords=NULL; + if (sgpr->getRemoveCollapsed()) + { + delete reducedCoords; reducedCoords=0; + collapsedCoords=0; + } // return null or orginal length coordinate array if (noRepeatedCoords->getSize()toVector(); assert(inputPts); diff -Nru geos-3.1.0/source/simplify/Makefile.in geos-3.2.2/source/simplify/Makefile.in --- geos-3.1.0/source/simplify/Makefile.in 2009-03-11 19:14:03.000000000 +0000 +++ geos-3.2.2/source/simplify/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libsimplify_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,6 +53,7 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libsimplify_la_DEPENDENCIES = am_libsimplify_la_OBJECTS = DouglasPeuckerLineSimplifier.lo \ @@ -60,33 +62,64 @@ TaggedLineStringSimplifier.lo TaggedLinesSimplifier.lo \ TopologyPreservingSimplifier.lo libsimplify_la_OBJECTS = $(am_libsimplify_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libsimplify_la_SOURCES) DIST_SOURCES = $(libsimplify_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -114,21 +147,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -137,20 +166,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -171,6 +208,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -182,19 +220,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -206,36 +238,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libsimplify.la INCLUDES = -I$(top_srcdir)/source/headers @@ -258,14 +303,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/simplify/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/simplify/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/simplify/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/simplify/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -283,6 +328,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -293,7 +339,7 @@ rm -f "$${dir}/so_locations"; \ done libsimplify.la: $(libsimplify_la_OBJECTS) $(libsimplify_la_DEPENDENCIES) - $(CXXLINK) $(libsimplify_la_LDFLAGS) $(libsimplify_la_OBJECTS) $(libsimplify_la_LIBADD) $(LIBS) + $(CXXLINK) $(libsimplify_la_OBJECTS) $(libsimplify_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -311,22 +357,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TopologyPreservingSimplifier.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -337,10 +383,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -365,15 +407,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -400,16 +441,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -417,14 +458,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -436,81 +477,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -540,6 +601,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -553,7 +615,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -561,18 +623,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -593,23 +675,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/source/simplify/TopologyPreservingSimplifier.cpp geos-3.2.2/source/simplify/TopologyPreservingSimplifier.cpp --- geos-3.1.0/source/simplify/TopologyPreservingSimplifier.cpp 2009-03-10 16:17:56.000000000 +0000 +++ geos-3.2.2/source/simplify/TopologyPreservingSimplifier.cpp 2009-12-03 19:01:10.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: TopologyPreservingSimplifier.cpp 2191 2008-09-22 20:16:52Z mloskot $ + * $Id: TopologyPreservingSimplifier.cpp 2762 2009-12-03 19:01:10Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -208,6 +208,9 @@ LinesMap& linestringMap; + // Declare type as noncopyable + LineStringMapBuilderFilter(const LineStringMapBuilderFilter& other); + LineStringMapBuilderFilter& operator=(const LineStringMapBuilderFilter& rhs); }; /*public*/ diff -Nru geos-3.1.0/source/util/GeometricShapeFactory.cpp geos-3.2.2/source/util/GeometricShapeFactory.cpp --- geos-3.1.0/source/util/GeometricShapeFactory.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/util/GeometricShapeFactory.cpp 2009-06-06 22:14:51.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: GeometricShapeFactory.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: GeometricShapeFactory.cpp 2554 2009-06-06 21:14:51Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -11,6 +11,11 @@ * by the Free Software Foundation. * See the COPYING file for more information. * + ********************************************************************** + * + * Last port: util/GeometricShapeFactory.java rev 1.14 (JTS-1.10+) + * (2009-03-19) + * **********************************************************************/ #include @@ -22,6 +27,7 @@ #include #include +#include #ifndef M_PI #define M_PI 3.14159265358979323846 @@ -33,130 +39,89 @@ namespace geos { namespace util { // geos.util -/* - * Create a shape factory which will create shapes using the given - * GeometryFactory. The given GeometryFactory will need to stay - * alive for the whole instance lifetime (the object will keep - * an external reference to it) - */ -GeometricShapeFactory::GeometricShapeFactory(const GeometryFactory* factory){ - //dim=new Dimensions(); - nPts=100; - geomFact=factory; +GeometricShapeFactory::GeometricShapeFactory(const GeometryFactory* factory) + : + geomFact(factory), + precModel(factory->getPrecisionModel()), + nPts(100) +{ } -GeometricShapeFactory::~GeometricShapeFactory() { +GeometricShapeFactory::~GeometricShapeFactory() +{ //delete dim; } - -/** -* Sets the location of the shape by specifying the base coordinate -* (which in most cases is the -* lower left point of the envelope containing the shape). -* -* @param base the base coordinate of the shape -*/ -void GeometricShapeFactory::setBase(const Coordinate& base) { +void +GeometricShapeFactory::setBase(const Coordinate& base) +{ dim.setBase(base); } -/** -* Sets the location of the shape by specifying the centre of -* the shape's bounding box -* -* @param centre the centre coordinate of the shape -*/ -void GeometricShapeFactory::setCentre(const Coordinate& centre) { + +void +GeometricShapeFactory::setCentre(const Coordinate& centre) +{ dim.setCentre(centre); } -/** -* Sets the total number of points in the created Geometry -*/ -void GeometricShapeFactory::setNumPoints(int nNPts) { +void +GeometricShapeFactory::setNumPoints(int nNPts) +{ nPts=nNPts; } -/** -* Sets the size of the extent of the shape in both x and y directions. -* -* @param size the size of the shape's extent -*/ -void GeometricShapeFactory::setSize(double size) { +void +GeometricShapeFactory::setSize(double size) +{ dim.setSize(size); } -/** -* Sets the width of the shape. -* -* @param width the width of the shape -*/ -void GeometricShapeFactory::setWidth(double width) { +void +GeometricShapeFactory::setWidth(double width) +{ dim.setWidth(width); } -/** -* Sets the height of the shape. -* -* @param height the height of the shape -*/ -void GeometricShapeFactory::setHeight(double height) { +void +GeometricShapeFactory::setHeight(double height) +{ dim.setHeight(height); } -/* - * Creates a rectangular Polygon. - */ -Polygon* GeometricShapeFactory::createRectangle(){ +Polygon* +GeometricShapeFactory::createRectangle() +{ int i; int ipt = 0; int nSide = nPts / 4; if (nSide < 1) nSide = 1; - Envelope *env = dim.getEnvelope(); + std::auto_ptr env ( dim.getEnvelope() ); double XsegLen = env->getWidth() / nSide; double YsegLen = env->getHeight() / nSide; vector *vc = new vector(4*nSide+1); //CoordinateSequence* pts=new CoordinateArraySequence(4*nSide+1); - //double maxx = env->getMinX() + nSide * XsegLen; - //double maxy = env->getMinY() + nSide * XsegLen; - - Coordinate c; for (i = 0; i < nSide; i++) { double x = env->getMinX() + i * XsegLen; double y = env->getMinY(); - //pts->setAt(Coordinate(x, y),ipt++); - c.x = x; c.y = y; - (*vc)[ipt++] = c; + (*vc)[ipt++] = createCoord(x, y); } for (i = 0; i < nSide; i++) { double x = env->getMaxX(); double y = env->getMinY() + i * YsegLen; - //pts->setAt(*(new Coordinate(x, y)),ipt++); - //pts->setAt(Coordinate(x, y),ipt++); - c.x = x; c.y = y; - (*vc)[ipt++] = c; + (*vc)[ipt++] = createCoord(x, y); } for (i = 0; i < nSide; i++) { double x = env->getMaxX() - i * XsegLen; double y = env->getMaxY(); - //pts->setAt(*(new Coordinate(x, y)),ipt++); - //pts->setAt(Coordinate(x, y),ipt++); - c.x = x; c.y = y; - (*vc)[ipt++] = c; + (*vc)[ipt++] = createCoord(x, y); } for (i = 0; i < nSide; i++) { double x = env->getMinX(); double y = env->getMaxY() - i * YsegLen; - //pts->setAt(*(new Coordinate(x, y)),ipt++); - //pts->setAt(Coordinate(x, y),ipt++); - c.x = x; c.y = y; - (*vc)[ipt++] = c; + (*vc)[ipt++] = createCoord(x, y); } - delete env; - //pts->setAt(*(new Coordinate(pts->getAt(0))),ipt++); - //pts->setAt(Coordinate(pts->getAt(0)),ipt++); (*vc)[ipt++] = (*vc)[0]; CoordinateSequence *cs = geomFact->getCoordinateSequenceFactory()->create(vc); LinearRing* ring=geomFact->createLinearRing(cs); @@ -164,28 +129,24 @@ return poly; } -/* - * Creates a circular Polygon. - */ -Polygon* GeometricShapeFactory::createCircle() { - Envelope* env = dim.getEnvelope(); +Polygon* +GeometricShapeFactory::createCircle() +{ + std::auto_ptr env ( dim.getEnvelope() ); double xRadius = env->getWidth() / 2.0; double yRadius = env->getHeight() / 2.0; double centreX = env->getMinX() + xRadius; double centreY = env->getMinY() + yRadius; - delete env; + env.reset(); vector*pts=new vector(nPts+1); int iPt = 0; - Coordinate pt; for (int i = 0; i < nPts; i++) { double ang = i * (2 * 3.14159265358979 / nPts); double x = xRadius * cos(ang) + centreX; double y = yRadius * sin(ang) + centreY; - pt.x = x; - pt.y = y; - (*pts)[iPt++] = pt; + (*pts)[iPt++] = createCoord(x, y); } (*pts)[iPt++] = (*pts)[0]; CoordinateSequence *cs=geomFact->getCoordinateSequenceFactory()->create(pts); @@ -194,42 +155,68 @@ return poly; } -/** -* Creates a elliptical arc, as a LineString. -* -* @return an elliptical arc -*/ -LineString* GeometricShapeFactory::createArc(double startAng,double endAng){ - Envelope* env = dim.getEnvelope(); +LineString* +GeometricShapeFactory::createArc(double startAng, double angExtent) +{ + std::auto_ptr env ( dim.getEnvelope() ); double xRadius = env->getWidth() / 2.0; double yRadius = env->getHeight() / 2.0; double centreX = env->getMinX() + xRadius; double centreY = env->getMinY() + yRadius; - delete env; + env.reset(); - double angSize = (endAng - startAng); - if (angSize <= 0.0 || angSize > 2 * M_PI) //3.14159265358979 - angSize = 2 * M_PI; //3.14159265358979; - double angInc = angSize / nPts; + double angSize = angExtent; + if (angSize <= 0.0 || angSize > 2 * M_PI) + angSize = 2 * M_PI; + double angInc = angSize / ( nPts - 1 ); vector *pts = new vector(nPts); int iPt = 0; - Coordinate pt; for (int i = 0; i < nPts; i++) { double ang = startAng + i * angInc; double x = xRadius * cos(ang) + centreX; double y = yRadius * sin(ang) + centreY; - pt.x = x; - pt.y = y; - geomFact->getPrecisionModel()->makePrecise(&pt); - (*pts)[iPt++] = pt; + (*pts)[iPt++] = createCoord(x, y); } CoordinateSequence *cs = geomFact->getCoordinateSequenceFactory()->create(pts); LineString* line = geomFact->createLineString(cs); return line; } +Polygon* +GeometricShapeFactory::createArcPolygon(double startAng, double angExtent) +{ + std::auto_ptr env ( dim.getEnvelope() ); + double xRadius = env->getWidth() / 2.0; + double yRadius = env->getHeight() / 2.0; + + double centreX = env->getMinX() + xRadius; + double centreY = env->getMinY() + yRadius; + env.reset(); + + double angSize = angExtent; + if (angSize <= 0.0 || angSize > 2 * M_PI) + angSize = 2 * M_PI; + double angInc = angSize / ( nPts - 1 ); + + vector *pts = new vector(nPts + 2); + int iPt = 0; + (*pts)[iPt++] = createCoord(centreX, centreY); + for (int i = 0; i < nPts; i++) { + double ang = startAng + i * angInc; + double x = xRadius * cos(ang) + centreX; + double y = yRadius * sin(ang) + centreY; + (*pts)[iPt++] = createCoord(x, y); + } + (*pts)[iPt++] = createCoord(centreX, centreY); + + CoordinateSequence *cs = geomFact->getCoordinateSequenceFactory()->create(pts); + LinearRing* ring = geomFact->createLinearRing(cs); + Polygon* geom = geomFact->createPolygon(ring, 0); + return geom; +} + GeometricShapeFactory::Dimensions::Dimensions() : base(Coordinate::getNull()), @@ -237,36 +224,57 @@ { } -void GeometricShapeFactory::Dimensions::setBase(const Coordinate& newBase) { +void +GeometricShapeFactory::Dimensions::setBase(const Coordinate& newBase) +{ base=newBase; } -void GeometricShapeFactory::Dimensions::setCentre(const Coordinate& newCentre) { +void +GeometricShapeFactory::Dimensions::setCentre(const Coordinate& newCentre) +{ centre=newCentre; } -void GeometricShapeFactory::Dimensions::setSize(double size){ +void +GeometricShapeFactory::Dimensions::setSize(double size) +{ height = size; width = size; } -void GeometricShapeFactory::Dimensions::setWidth(double nWidth) { +void +GeometricShapeFactory::Dimensions::setWidth(double nWidth) +{ width=nWidth; } -void GeometricShapeFactory::Dimensions::setHeight(double nHeight) { + +void GeometricShapeFactory::Dimensions::setHeight(double nHeight) +{ height=nHeight; } -Envelope* GeometricShapeFactory::Dimensions::getEnvelope() { - if (base!=Coordinate::getNull()) { +Envelope* +GeometricShapeFactory::Dimensions::getEnvelope() +{ + if (!base.isNull()) { return new Envelope(base.x, base.x + width, base.y, base.y + height); } - if (centre!=Coordinate::getNull()) { + if (!centre.isNull()) { return new Envelope(centre.x - width/2, centre.x + width/2,centre.y - height/2, centre.y + height/2); } return new Envelope(0, width, 0, height); } +/*protected*/ +Coordinate +GeometricShapeFactory::createCoord(double x, double y) const +{ + Coordinate ret(x, y); + precModel->makePrecise(&ret); + return ret; +} + } // namespace geos.util } // namespace geos diff -Nru geos-3.1.0/source/util/Makefile.am geos-3.2.2/source/util/Makefile.am --- geos-3.1.0/source/util/Makefile.am 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/source/util/Makefile.am 2009-11-26 21:34:40.000000000 +0000 @@ -4,13 +4,6 @@ INCLUDES = -I$(top_srcdir)/source/headers -## full inlined -# UnsupportedOperationException.cpp -# IllegalArgumentException.cpp -# AssertionFailedException.cpp -# GEOSException.cpp -# UniqueCoordinateArrayFilter.cpp - libutil_la_SOURCES = \ Assert.cpp \ GeometricShapeFactory.cpp \ diff -Nru geos-3.1.0/source/util/Makefile.in geos-3.2.2/source/util/Makefile.in --- geos-3.1.0/source/util/Makefile.in 2009-03-11 19:14:03.000000000 +0000 +++ geos-3.2.2/source/util/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(libutil_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,38 +53,70 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = LTLIBRARIES = $(noinst_LTLIBRARIES) libutil_la_DEPENDENCIES = am_libutil_la_OBJECTS = Assert.lo GeometricShapeFactory.lo math.lo \ Profiler.lo libutil_la_OBJECTS = $(am_libutil_la_OBJECTS) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(libutil_la_SOURCES) DIST_SOURCES = $(libutil_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -111,21 +144,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -134,20 +163,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -168,6 +205,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -179,19 +217,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -203,45 +235,52 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = noinst_LTLIBRARIES = libutil.la INCLUDES = -I$(top_srcdir)/source/headers - -# UnsupportedOperationException.cpp -# IllegalArgumentException.cpp -# AssertionFailedException.cpp -# GEOSException.cpp -# UniqueCoordinateArrayFilter.cpp libutil_la_SOURCES = \ Assert.cpp \ GeometricShapeFactory.cpp \ @@ -257,14 +296,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/util/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu source/util/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu source/util/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu source/util/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -282,6 +321,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) @@ -292,7 +332,7 @@ rm -f "$${dir}/so_locations"; \ done libutil.la: $(libutil_la_OBJECTS) $(libutil_la_DEPENDENCIES) - $(CXXLINK) $(libutil_la_LDFLAGS) $(libutil_la_OBJECTS) $(libutil_la_LIBADD) $(LIBS) + $(CXXLINK) $(libutil_la_OBJECTS) $(libutil_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -306,22 +346,22 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Plo@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -332,10 +372,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -360,15 +396,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -395,16 +430,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -412,14 +447,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -431,81 +466,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -535,6 +590,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -548,7 +604,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -556,18 +612,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -588,23 +664,26 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-noinstLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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 installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/swig/geos.i geos-3.2.2/swig/geos.i --- geos-3.1.0/swig/geos.i 2009-03-11 19:14:38.000000000 +0000 +++ geos-3.2.2/swig/geos.i 2010-04-18 16:08:29.000000000 +0100 @@ -28,17 +28,17 @@ to reuse the originals but we can't without exposing the whole c api. */ #define GEOS_VERSION_MAJOR 3 -#define GEOS_VERSION_MINOR 1 -#define GEOS_VERSION_PATCH 0 -#define GEOS_VERSION "3.1.0" -#define GEOS_JTS_PORT "1.7.1" +#define GEOS_VERSION_MINOR 2 +#define GEOS_VERSION_PATCH 2 +#define GEOS_VERSION "3.2.2" +#define GEOS_JTS_PORT "1.10.0" #define GEOS_CAPI_VERSION_MAJOR 1 -#define GEOS_CAPI_VERSION_MINOR 5 -#define GEOS_CAPI_VERSION_PATCH 0 +#define GEOS_CAPI_VERSION_MINOR 6 +#define GEOS_CAPI_VERSION_PATCH 2 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR) -#define GEOS_CAPI_VERSION "3.1.0-CAPI-1.5.0" +#define GEOS_CAPI_VERSION "3.2.2-CAPI-1.6.2" /* Supported geometry types */ enum GEOSGeomTypes { @@ -950,6 +950,126 @@ %clear GeosCoordinateSequence *s; +// === Prepared Geometry === + +%{ +typedef void GeosPreparedGeometry; +%} + +%rename (Prepared) GeosPreparedGeometry; +class GeosPreparedGeometry +{ +public: +%extend +{ + GeosPreparedGeometry(const GeosGeometry *source) + { + const GEOSPreparedGeometry *prep = GEOSPrepare((const GEOSGeometry *)source); + if(prep == NULL) + throw std::runtime_error(message); + return (GeosPreparedGeometry *) prep; + } + + ~GeosPreparedGeometry() + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + return GEOSPreparedGeom_destroy(prep); + } + + bool contains (const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedContains(prep, otherGeom)); + } + + bool containsProperly(const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedContainsProperly(prep, otherGeom)); + } + + bool covers (const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedCovers(prep, otherGeom)); + } + + bool intersects (const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedIntersects(prep, otherGeom)); + } +} +}; + +// === STRtree === + +%{ +typedef void GeosSTRtree; +/* GeosIndexItem typedef'd here so it can be %typemap(typecheck)'d + as a native object by each language specially */ +typedef void *GeosIndexItem; +typedef GEOSQueryCallback GeosQueryCallback; +%} + +%rename (STRtree) GeosSTRtree; +class GeosSTRtree +{ +public: +%extend +{ + %typemap(default) int nodeCapacity { + $1 = 10; + }; + GeosSTRtree(int nodeCapacity) + { + GEOSSTRtree *tree = GEOSSTRtree_create(nodeCapacity); + if(tree == NULL) + throw std::runtime_error(message); + return (GeosSTRtree *) tree; + } + + ~GeosSTRtree() + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + return GEOSSTRtree_destroy(tree); + } + + void insert (const GeosGeometry* g, GeosIndexItem item) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + const GEOSGeometry *geom = (const GEOSGeometry *) g; + GEOSSTRtree_insert(tree, geom, item); + } + + void remove (const GeosGeometry* g, GeosIndexItem item) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + const GEOSGeometry *geom = (const GEOSGeometry *) g; + GEOSSTRtree_remove(tree, geom, item); + } + + void query (const GeosGeometry* g, GeosQueryCallback callback, + GeosIndexItem accumulator) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + const GEOSGeometry *geom = (const GEOSGeometry *) g; + GEOSSTRtree_query(tree, geom, callback, accumulator); + } + + void iterate (GeosQueryCallback callback, GeosIndexItem accumulator) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + GEOSSTRtree_iterate(tree, callback, accumulator); + } +} +}; + + // === Input/Output === /* This typemap allows the scripting language to pass in buffers diff -Nru geos-3.1.0/swig/geos.i.in geos-3.2.2/swig/geos.i.in --- geos-3.1.0/swig/geos.i.in 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/swig/geos.i.in 2009-07-15 19:56:30.000000000 +0100 @@ -950,6 +950,126 @@ %clear GeosCoordinateSequence *s; +// === Prepared Geometry === + +%{ +typedef void GeosPreparedGeometry; +%} + +%rename (Prepared) GeosPreparedGeometry; +class GeosPreparedGeometry +{ +public: +%extend +{ + GeosPreparedGeometry(const GeosGeometry *source) + { + const GEOSPreparedGeometry *prep = GEOSPrepare((const GEOSGeometry *)source); + if(prep == NULL) + throw std::runtime_error(message); + return (GeosPreparedGeometry *) prep; + } + + ~GeosPreparedGeometry() + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + return GEOSPreparedGeom_destroy(prep); + } + + bool contains (const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedContains(prep, otherGeom)); + } + + bool containsProperly(const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedContainsProperly(prep, otherGeom)); + } + + bool covers (const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedCovers(prep, otherGeom)); + } + + bool intersects (const GeosGeometry* other) + { + GEOSPreparedGeometry *prep = (GEOSPreparedGeometry *) self; + GEOSGeom otherGeom = (GEOSGeom) other; + return checkBoolResult(GEOSPreparedIntersects(prep, otherGeom)); + } +} +}; + +// === STRtree === + +%{ +typedef void GeosSTRtree; +/* GeosIndexItem typedef'd here so it can be %typemap(typecheck)'d + as a native object by each language specially */ +typedef void *GeosIndexItem; +typedef GEOSQueryCallback GeosQueryCallback; +%} + +%rename (STRtree) GeosSTRtree; +class GeosSTRtree +{ +public: +%extend +{ + %typemap(default) int nodeCapacity { + $1 = 10; + }; + GeosSTRtree(int nodeCapacity) + { + GEOSSTRtree *tree = GEOSSTRtree_create(nodeCapacity); + if(tree == NULL) + throw std::runtime_error(message); + return (GeosSTRtree *) tree; + } + + ~GeosSTRtree() + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + return GEOSSTRtree_destroy(tree); + } + + void insert (const GeosGeometry* g, GeosIndexItem item) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + const GEOSGeometry *geom = (const GEOSGeometry *) g; + GEOSSTRtree_insert(tree, geom, item); + } + + void remove (const GeosGeometry* g, GeosIndexItem item) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + const GEOSGeometry *geom = (const GEOSGeometry *) g; + GEOSSTRtree_remove(tree, geom, item); + } + + void query (const GeosGeometry* g, GeosQueryCallback callback, + GeosIndexItem accumulator) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + const GEOSGeometry *geom = (const GEOSGeometry *) g; + GEOSSTRtree_query(tree, geom, callback, accumulator); + } + + void iterate (GeosQueryCallback callback, GeosIndexItem accumulator) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + GEOSSTRtree_iterate(tree, callback, accumulator); + } +} +}; + + // === Input/Output === /* This typemap allows the scripting language to pass in buffers diff -Nru geos-3.1.0/swig/Makefile.in geos-3.2.2/swig/Makefile.in --- geos-3.1.0/swig/Makefile.in 2009-03-11 19:14:03.000000000 +0000 +++ geos-3.2.2/swig/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -42,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -50,22 +53,52 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = geos.i +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = python ruby DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -93,21 +126,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -116,20 +145,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -150,6 +187,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -161,19 +199,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -185,36 +217,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ @ENABLE_PYTHON_TRUE@MAYBEPYTHON = python @ENABLE_RUBY_TRUE@MAYBERUBY = ruby SUBDIRS = $(MAYBEPYTHON) $(MAYBERUBY) @@ -228,14 +273,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu swig/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu swig/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -253,6 +298,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): geos.i: $(top_builddir)/config.status $(srcdir)/geos.i.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ @@ -262,10 +308,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -290,15 +332,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -325,16 +366,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -342,14 +383,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -361,81 +402,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -465,6 +526,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -475,8 +537,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -484,18 +545,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -514,22 +595,25 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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 \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-info-am + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/swig/python/Makefile.in geos-3.2.2/swig/python/Makefile.in --- geos-3.1.0/swig/python/Makefile.in 2009-03-11 19:14:04.000000000 +0000 +++ geos-3.2.2/swig/python/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -15,17 +16,12 @@ @SET_MAKE@ -SOURCES = $(_geos_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -46,6 +42,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -54,15 +55,30 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgpyexecdir)" \ "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(pythondir)" -pkgpyexecLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(pkgpyexec_LTLIBRARIES) am__DEPENDENCIES_1 = @ENABLE_PYTHON_TRUE@_geos_la_DEPENDENCIES = \ @@ -71,39 +87,71 @@ am___geos_la_SOURCES_DIST = geos_wrap.cxx @ENABLE_PYTHON_TRUE@am__geos_la_OBJECTS = _geos_la-geos_wrap.lo _geos_la_OBJECTS = $(am__geos_la_OBJECTS) +_geos_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(_geos_la_LDFLAGS) $(LDFLAGS) -o $@ @ENABLE_PYTHON_TRUE@am__geos_la_rpath = -rpath $(pkgpyexecdir) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(_geos_la_SOURCES) DIST_SOURCES = $(am___geos_la_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive am__pkgpython_PYTHON_DIST = geos.py -pkgpythonPYTHON_INSTALL = $(INSTALL_DATA) py_compile = $(top_srcdir)/py-compile -pythonDATA_INSTALL = $(INSTALL_DATA) DATA = $(python_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -131,21 +179,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -154,20 +198,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -188,6 +240,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -199,19 +252,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -223,36 +270,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ tests @@ -281,14 +341,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/python/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu swig/python/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/python/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu swig/python/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -306,23 +366,28 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): install-pkgpyexecLTLIBRARIES: $(pkgpyexec_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(pkgpyexecdir)" || $(mkdir_p) "$(DESTDIR)$(pkgpyexecdir)" - @list='$(pkgpyexec_LTLIBRARIES)'; for p in $$list; do \ + test -z "$(pkgpyexecdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpyexecdir)" + @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \ + list2=; for p in $$list; do \ if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=install $(pkgpyexecLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \ - $(LIBTOOL) --mode=install $(pkgpyexecLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(pkgpyexecdir)/$$f"; \ + list2="$$list2 $$p"; \ else :; fi; \ - done + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgpyexecdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgpyexecdir)"; \ + } uninstall-pkgpyexecLTLIBRARIES: @$(NORMAL_UNINSTALL) - @set -x; list='$(pkgpyexec_LTLIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$p'"; \ - $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$p"; \ + @list='$(pkgpyexec_LTLIBRARIES)'; test -n "$(pkgpyexecdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgpyexecdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgpyexecdir)/$$f"; \ done clean-pkgpyexecLTLIBRARIES: @@ -334,7 +399,7 @@ rm -f "$${dir}/so_locations"; \ done _geos.la: $(_geos_la_OBJECTS) $(_geos_la_DEPENDENCIES) - $(CXXLINK) $(am__geos_la_rpath) $(_geos_la_LDFLAGS) $(_geos_la_OBJECTS) $(_geos_la_LIBADD) $(LIBS) + $(_geos_la_LINK) $(am__geos_la_rpath) $(_geos_la_OBJECTS) $(_geos_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -345,54 +410,55 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_geos_la-geos_wrap.Plo@am__quote@ .cxx.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cxx.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< _geos_la-geos_wrap.lo: geos_wrap.cxx -@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _geos_la-geos_wrap.lo -MD -MP -MF "$(DEPDIR)/_geos_la-geos_wrap.Tpo" -c -o _geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/_geos_la-geos_wrap.Tpo" "$(DEPDIR)/_geos_la-geos_wrap.Plo"; else rm -f "$(DEPDIR)/_geos_la-geos_wrap.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _geos_la-geos_wrap.lo -MD -MP -MF $(DEPDIR)/_geos_la-geos_wrap.Tpo -c -o _geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/_geos_la-geos_wrap.Tpo $(DEPDIR)/_geos_la-geos_wrap.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geos_wrap.cxx' object='_geos_la-geos_wrap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: install-pkgpythonPYTHON: $(pkgpython_PYTHON) @$(NORMAL_INSTALL) - test -z "$(pkgpythondir)" || $(mkdir_p) "$(DESTDIR)$(pkgpythondir)" - @list='$(pkgpython_PYTHON)'; dlist=''; for p in $$list; do\ + test -z "$(pkgpythondir)" || $(MKDIR_P) "$(DESTDIR)$(pkgpythondir)" + @list='$(pkgpython_PYTHON)'; dlist=; list2=; test -n "$(pkgpythondir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ if test -f $$b$$p; then \ - f=$(am__strip_dir) \ + $(am__strip_dir) \ dlist="$$dlist $$f"; \ - echo " $(pkgpythonPYTHON_INSTALL) '$$b$$p' '$(DESTDIR)$(pkgpythondir)/$$f'"; \ - $(pkgpythonPYTHON_INSTALL) "$$b$$p" "$(DESTDIR)$(pkgpythondir)/$$f"; \ + list2="$$list2 $$b$$p"; \ else :; fi; \ done; \ + for file in $$list2; do echo $$file; done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgpythondir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgpythondir)" || exit $$?; \ + done || exit $$?; \ if test -n "$$dlist"; then \ if test -z "$(DESTDIR)"; then \ PYTHON=$(PYTHON) $(py_compile) --basedir "$(pkgpythondir)" $$dlist; \ @@ -403,29 +469,37 @@ uninstall-pkgpythonPYTHON: @$(NORMAL_UNINSTALL) - @list='$(pkgpython_PYTHON)'; dlist=''; for p in $$list; do\ - f=$(am__strip_dir) \ - rm -f "$(DESTDIR)$(pkgpythondir)/$$f"; \ - rm -f "$(DESTDIR)$(pkgpythondir)/$${f}c"; \ - rm -f "$(DESTDIR)$(pkgpythondir)/$${f}o"; \ - done + @list='$(pkgpython_PYTHON)'; test -n "$(pkgpythondir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + filesc=`echo "$$files" | sed 's|$$|c|'`; \ + fileso=`echo "$$files" | sed 's|$$|o|'`; \ + echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$files || exit $$?; \ + echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$filesc ")"; \ + cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$filesc || exit $$?; \ + echo " ( cd '$(DESTDIR)$(pkgpythondir)' && rm -f" $$fileso ")"; \ + cd "$(DESTDIR)$(pkgpythondir)" && rm -f $$fileso install-pythonDATA: $(python_DATA) @$(NORMAL_INSTALL) - test -z "$(pythondir)" || $(mkdir_p) "$(DESTDIR)$(pythondir)" - @list='$(python_DATA)'; for p in $$list; do \ + test -z "$(pythondir)" || $(MKDIR_P) "$(DESTDIR)$(pythondir)" + @list='$(python_DATA)'; test -n "$(pythondir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(pythonDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pythondir)/$$f'"; \ - $(pythonDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pythondir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pythondir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pythondir)" || exit $$?; \ done uninstall-pythonDATA: @$(NORMAL_UNINSTALL) - @list='$(python_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(pythondir)/$$f'"; \ - rm -f "$(DESTDIR)$(pythondir)/$$f"; \ - done + @list='$(python_DATA)'; test -n "$(pythondir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(pythondir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(pythondir)" && rm -f $$files # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. @@ -451,15 +525,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -486,16 +559,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -503,14 +576,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -522,81 +595,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -608,7 +701,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(pkgpythondir)" "$(DESTDIR)$(pythondir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive @@ -631,6 +724,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -646,7 +740,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -654,18 +748,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-pkgpythonPYTHON install-pythonDATA +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: install-pkgpyexecLTLIBRARIES +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -686,27 +800,30 @@ ps-am: -uninstall-am: uninstall-info-am uninstall-pkgpyexecLTLIBRARIES \ - uninstall-pkgpythonPYTHON uninstall-pythonDATA +uninstall-am: uninstall-pkgpyexecLTLIBRARIES uninstall-pkgpythonPYTHON \ + uninstall-pythonDATA -uninstall-info: uninstall-info-recursive - -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-pkgpyexecLTLIBRARIES \ - clean-recursive ctags ctags-recursive distclean \ +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + ctags-recursive install install-am install-strip \ + tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + clean-pkgpyexecLTLIBRARIES ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ - distclean-recursive 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-pkgpyexecLTLIBRARIES \ - install-pkgpythonPYTHON install-pythonDATA install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic \ - maintainer-clean-recursive mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ - pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-info-am uninstall-pkgpyexecLTLIBRARIES \ - uninstall-pkgpythonPYTHON uninstall-pythonDATA + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-pkgpyexecLTLIBRARIES \ + install-pkgpythonPYTHON install-ps install-ps-am \ + install-pythonDATA install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-recursive uninstall uninstall-am \ + uninstall-pkgpyexecLTLIBRARIES uninstall-pkgpythonPYTHON \ + uninstall-pythonDATA @ENABLE_PYTHON_TRUE@@ENABLE_SWIG_TRUE@geos_wrap.cxx: ../geos.i python.i @@ -718,6 +835,7 @@ @ENABLE_PYTHON_TRUE@test: @ENABLE_PYTHON_TRUE@ $(PYTHON) tests/runtests.py -v + # 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 -Nru geos-3.1.0/swig/python/tests/Makefile.in geos-3.2.2/swig/python/tests/Makefile.in --- geos-3.1.0/swig/python/tests/Makefile.in 2009-03-11 19:14:04.000000000 +0000 +++ geos-3.2.2/swig/python/tests/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,13 +52,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -83,21 +85,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -106,20 +104,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -140,6 +146,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -151,19 +158,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -175,36 +176,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ PYTHON_TESTS = \ example.py \ test_geometry.py \ @@ -218,14 +232,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/python/tests/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu swig/python/tests/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/python/tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu swig/python/tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -243,16 +257,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -261,29 +272,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -311,6 +325,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -321,7 +336,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -329,18 +344,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -359,21 +394,25 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am test: $(PYTHON) runtests.py + # 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 -Nru geos-3.1.0/swig/ruby/Makefile.in geos-3.2.2/swig/ruby/Makefile.in --- geos-3.1.0/swig/ruby/Makefile.in 2009-03-11 19:14:05.000000000 +0000 +++ geos-3.2.2/swig/ruby/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(geos_la_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -44,6 +40,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -52,48 +53,97 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(rubyextensiondirdir)" -rubyextensiondirLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(rubyextensiondir_LTLIBRARIES) @ENABLE_RUBY_TRUE@geos_la_DEPENDENCIES = \ @ENABLE_RUBY_TRUE@ $(top_builddir)/capi/libgeos_c.la am__geos_la_SOURCES_DIST = geos_wrap.cxx @ENABLE_RUBY_TRUE@am_geos_la_OBJECTS = geos_la-geos_wrap.lo geos_la_OBJECTS = $(am_geos_la_OBJECTS) +geos_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(geos_la_LDFLAGS) $(LDFLAGS) -o $@ @ENABLE_RUBY_TRUE@am_geos_la_rpath = -rpath $(rubyextensiondirdir) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(geos_la_SOURCES) DIST_SOURCES = $(am__geos_la_SOURCES_DIST) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = test DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -121,21 +171,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -144,20 +190,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -178,6 +232,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -189,19 +244,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -213,36 +262,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ EXTRA_DIST = \ ruby.i @@ -277,14 +339,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/ruby/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu swig/ruby/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/ruby/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu swig/ruby/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -302,23 +364,28 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): install-rubyextensiondirLTLIBRARIES: $(rubyextensiondir_LTLIBRARIES) @$(NORMAL_INSTALL) - test -z "$(rubyextensiondirdir)" || $(mkdir_p) "$(DESTDIR)$(rubyextensiondirdir)" - @list='$(rubyextensiondir_LTLIBRARIES)'; for p in $$list; do \ + test -z "$(rubyextensiondirdir)" || $(MKDIR_P) "$(DESTDIR)$(rubyextensiondirdir)" + @list='$(rubyextensiondir_LTLIBRARIES)'; test -n "$(rubyextensiondirdir)" || list=; \ + list2=; for p in $$list; do \ if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=install $(rubyextensiondirLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(rubyextensiondirdir)/$$f'"; \ - $(LIBTOOL) --mode=install $(rubyextensiondirLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(rubyextensiondirdir)/$$f"; \ + list2="$$list2 $$p"; \ else :; fi; \ - done + done; \ + test -z "$$list2" || { \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(rubyextensiondirdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(rubyextensiondirdir)"; \ + } uninstall-rubyextensiondirLTLIBRARIES: @$(NORMAL_UNINSTALL) - @set -x; list='$(rubyextensiondir_LTLIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(rubyextensiondirdir)/$$p'"; \ - $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(rubyextensiondirdir)/$$p"; \ + @list='$(rubyextensiondir_LTLIBRARIES)'; test -n "$(rubyextensiondirdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(rubyextensiondirdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(rubyextensiondirdir)/$$f"; \ done clean-rubyextensiondirLTLIBRARIES: @@ -330,7 +397,7 @@ rm -f "$${dir}/so_locations"; \ done geos.la: $(geos_la_OBJECTS) $(geos_la_DEPENDENCIES) - $(CXXLINK) $(am_geos_la_rpath) $(geos_la_LDFLAGS) $(geos_la_OBJECTS) $(geos_la_LIBADD) $(LIBS) + $(geos_la_LINK) $(am_geos_la_rpath) $(geos_la_OBJECTS) $(geos_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -341,32 +408,32 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geos_la-geos_wrap.Plo@am__quote@ .cxx.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cxx.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cxx.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< geos_la-geos_wrap.lo: geos_wrap.cxx -@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT geos_la-geos_wrap.lo -MD -MP -MF "$(DEPDIR)/geos_la-geos_wrap.Tpo" -c -o geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/geos_la-geos_wrap.Tpo" "$(DEPDIR)/geos_la-geos_wrap.Plo"; else rm -f "$(DEPDIR)/geos_la-geos_wrap.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT geos_la-geos_wrap.lo -MD -MP -MF $(DEPDIR)/geos_la-geos_wrap.Tpo -c -o geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/geos_la-geos_wrap.Tpo $(DEPDIR)/geos_la-geos_wrap.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geos_wrap.cxx' object='geos_la-geos_wrap.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geos_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o geos_la-geos_wrap.lo `test -f 'geos_wrap.cxx' || echo '$(srcdir)/'`geos_wrap.cxx mostlyclean-libtool: -rm -f *.lo @@ -374,10 +441,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -402,15 +465,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -437,16 +499,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -454,14 +516,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -473,81 +535,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -559,7 +641,7 @@ installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(rubyextensiondirdir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive @@ -582,6 +664,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -597,7 +680,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-recursive @@ -605,18 +688,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: install-rubyextensiondirLTLIBRARIES +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -637,25 +740,27 @@ ps-am: -uninstall-am: uninstall-info-am uninstall-rubyextensiondirLTLIBRARIES +uninstall-am: uninstall-rubyextensiondirLTLIBRARIES -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ + ctags-recursive install install-am install-strip \ + tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ clean-rubyextensiondirLTLIBRARIES ctags ctags-recursive \ distclean distclean-compile distclean-generic \ - distclean-libtool distclean-recursive 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-rubyextensiondirLTLIBRARIES install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-rubyextensiondirLTLIBRARIES \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ - tags tags-recursive uninstall uninstall-am uninstall-info-am \ - uninstall-rubyextensiondirLTLIBRARIES + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am uninstall-rubyextensiondirLTLIBRARIES @ENABLE_RUBY_TRUE@@ENABLE_SWIG_TRUE@geos_wrap.cxx: ../geos.i ruby.i @@ -664,6 +769,7 @@ @ENABLE_RUBY_TRUE@@ENABLE_SWIG_FALSE@geos_wrap.cxx: ../geos.i ruby.i @ENABLE_RUBY_TRUE@@ENABLE_SWIG_FALSE@ @echo "SWIG is disabled, can't build geos_wrap.cxx" @ENABLE_RUBY_TRUE@@ENABLE_SWIG_FALSE@ false + # 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 -Nru geos-3.1.0/swig/ruby/ruby.i geos-3.2.2/swig/ruby/ruby.i --- geos-3.1.0/swig/ruby/ruby.i 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/swig/ruby/ruby.i 2009-07-15 19:56:30.000000000 +0100 @@ -104,3 +104,73 @@ free((void*) $1); } } + +// GeosPreparedGeometry +// Use predicates to make the ruby code nicer - so disjoint? +%rename("contains_properly?") GeosPreparedGeometry::containsProperly; +%predicate GeosPreparedGeometry::contains; +%predicate GeosPreparedGeometry::intersects; +%predicate GeosPreparedGeometry::covers; + +// GeosSTRtree + +%rename("each") GeosSTRtree::iterate; + +%typemap(in) GeosIndexItem +{ + $1 = (GeosIndexItem) $input; +} + +/* accumulator will be blissfully unused because + * Ruby supports closures, more or less */ +%typemap(in,numinputs=0) (GeosIndexItem accumulator) +{ + $1 = (GeosIndexItem) Qnil; +} + +/* typecheck GeosIndexItem and make sure it's really a VALUE */ +%typemap(typecheck) GeosIndexItem +{ + $1 = (TYPE($input) & T_MASK) ? 1 : 0; +} + +/* always call the provided block as the query callback */ +%typemap(in,numinputs=0) GeosQueryCallback +{ + $1 = GeosSTRtree_query_callback; +} + +%typemap(typecheck) GeosQueryCallback +{ + /* SWIG throws a warning if we don't do this */ + $1 = 1; +} + +%{ + /* this callback yields the data item to the block */ + static void GeosSTRtree_query_callback (void *data, void *nothing) { + if (rb_block_given_p()) { + rb_yield((VALUE) data); + } + } +%} + +/* assuming that GeosIndexItems are all VALUEs (since this gets tested + * on typemap(in)), mark them during the mark phase of GC to hang on to them */ +%{ + static void GeosSTRtree_mark_item (void *data, void *nothing) + { + if ((VALUE) data != Qnil) { + rb_gc_mark((VALUE)data); + } + } + + static void mark_GeosSTRtree(void *self) + { + GEOSSTRtree *tree = (GEOSSTRtree *) self; + GEOSSTRtree_iterate(tree, GeosSTRtree_mark_item, NULL); + } +%} + +%markfunc GeosSTRtree "mark_GeosSTRtree"; + diff -Nru geos-3.1.0/swig/ruby/test/Makefile.in geos-3.2.2/swig/ruby/test/Makefile.in --- geos-3.1.0/swig/ruby/test/Makefile.in 2009-03-11 19:14:05.000000000 +0000 +++ geos-3.2.2/swig/ruby/test/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -15,15 +16,12 @@ @SET_MAKE@ #geos_tests.rb runs the full Ruby geos test suite -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -43,6 +41,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,13 +54,12 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -85,21 +87,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -108,20 +106,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -142,6 +148,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -153,19 +160,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -177,36 +178,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ RUBY_TESTS = \ example.rb \ geos_tests.rb \ @@ -230,14 +244,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/ruby/test/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu swig/ruby/test/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu swig/ruby/test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu swig/ruby/test/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -255,16 +269,13 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -273,29 +284,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -323,6 +337,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -333,7 +348,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -341,18 +356,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -371,21 +406,25 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool 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 \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ - uninstall-info-am + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am test: $(RUBY) geos_tests.rb + # 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 -Nru geos-3.1.0/tests/bigtest/bug234.cpp geos-3.2.2/tests/bigtest/bug234.cpp --- geos-3.1.0/tests/bigtest/bug234.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/bigtest/bug234.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,49 @@ +#include + +#include "geos/geom/GeometryFactory.h" +#include "geos/geom/Geometry.h" +#include "geos/geom/Coordinate.h" +#include "geos/geom/CoordinateArraySequence.h" +#include "geos/geom/LinearRing.h" +#include "geos/geom/Polygon.h" +#include "geos/geom/MultiPolygon.h" + +using namespace geos::geom; +using namespace std; + +int main() { + GeometryFactory factory; + + vector< Geometry * > *polys1 = new vector(); + vector< Geometry * > *polys2 = new vector(); + vector< Geometry * > *holes1 = new vector(); + + CoordinateArraySequence coords1; + coords1.add(Coordinate(1, 1)); + coords1.add(Coordinate(1, 5)); + coords1.add(Coordinate(5, 5)); + coords1.add(Coordinate(5, 1)); + coords1.add(Coordinate(1, 1)); + holes1->push_back( factory.createLinearRing() ); + polys1->push_back( factory.createPolygon(factory.createLinearRing(coords1), holes1) ); + + CoordinateArraySequence coords2; + coords2.add(Coordinate(3, 3)); + coords2.add(Coordinate(3, 4)); + coords2.add(Coordinate(4, 4)); + coords2.add(Coordinate(4, 3)); + coords2.add(Coordinate(3, 3)); + polys2->push_back( factory.createPolygon(factory.createLinearRing(coords2), new vector) ); + + MultiPolygon *mpoly1 = factory.createMultiPolygon(polys1); + MultiPolygon *mpoly2 = factory.createMultiPolygon(polys2); + + cout << " Mpoly1: " << mpoly1->toString() << endl; + cout << " Mpoly2: " << mpoly2->toString() << endl; + Geometry *intersection = mpoly1->intersection(mpoly2); + cout << "Intersection: " << intersection->toString() << endl; + + delete mpoly1; + delete mpoly2; + delete intersection; +} diff -Nru geos-3.1.0/tests/bigtest/Makefile.am geos-3.2.2/tests/bigtest/Makefile.am --- geos-3.1.0/tests/bigtest/Makefile.am 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/bigtest/Makefile.am 2009-05-07 16:57:28.000000000 +0100 @@ -2,7 +2,8 @@ top_srcdir=@top_srcdir@ top_builddir=@top_builddir@ -noinst_PROGRAMS = TestSweepLineSpeed +check_PROGRAMS = bug234 +check_PROGRAMS += TestSweepLineSpeed LIBS = $(top_builddir)/source/libgeos.la # -lmpatrol -lbfd -lintl -liberty -limagehlp @@ -10,6 +11,9 @@ TestSweepLineSpeed_SOURCES = TestSweepLineSpeed.cpp GeometryTestFactory.cpp bigtest.h TestSweepLineSpeed_LDADD = $(LIBS) +bug234_SOURCES = bug234.cpp +bug234_LDADD = $(LIBS) + INCLUDES = -I$(top_srcdir)/source/headers INCLUDES += -I$(top_srcdir)/source/io/markup diff -Nru geos-3.1.0/tests/bigtest/Makefile.in geos-3.2.2/tests/bigtest/Makefile.in --- geos-3.1.0/tests/bigtest/Makefile.in 2009-03-11 19:14:06.000000000 +0000 +++ geos-3.2.2/tests/bigtest/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,16 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ - -SOURCES = $(TestSweepLineSpeed_SOURCES) - -srcdir = @srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -37,12 +34,17 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -noinst_PROGRAMS = TestSweepLineSpeed$(EXEEXT) +check_PROGRAMS = bug234$(EXEEXT) TestSweepLineSpeed$(EXEEXT) subdir = tests/bigtest -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,42 +53,43 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = -PROGRAMS = $(noinst_PROGRAMS) +CONFIG_CLEAN_VPATH_FILES = am_TestSweepLineSpeed_OBJECTS = TestSweepLineSpeed.$(OBJEXT) \ GeometryTestFactory.$(OBJEXT) TestSweepLineSpeed_OBJECTS = $(am_TestSweepLineSpeed_OBJECTS) -am__DEPENDENCIES_1 = $(top_builddir)/source/libgeos.la -TestSweepLineSpeed_DEPENDENCIES = $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +TestSweepLineSpeed_DEPENDENCIES = $(LIBS) +am_bug234_OBJECTS = bug234.$(OBJEXT) +bug234_OBJECTS = $(am_bug234_OBJECTS) +bug234_DEPENDENCIES = $(LIBS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(TestSweepLineSpeed_SOURCES) -DIST_SOURCES = $(TestSweepLineSpeed_SOURCES) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(TestSweepLineSpeed_SOURCES) $(bug234_SOURCES) +DIST_SOURCES = $(TestSweepLineSpeed_SOURCES) $(bug234_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -top_srcdir = @top_srcdir@ -top_builddir = @top_builddir@ ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -114,21 +117,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -137,20 +136,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = $(top_builddir)/source/libgeos.la LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -171,6 +178,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -182,19 +190,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -206,39 +208,54 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ # -lmpatrol -lbfd -lintl -liberty -limagehlp TestSweepLineSpeed_SOURCES = TestSweepLineSpeed.cpp GeometryTestFactory.cpp bigtest.h TestSweepLineSpeed_LDADD = $(LIBS) +bug234_SOURCES = bug234.cpp +bug234_LDADD = $(LIBS) INCLUDES = -I$(top_srcdir)/source/headers \ -I$(top_srcdir)/source/io/markup all: all-am @@ -249,14 +266,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/bigtest/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/bigtest/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/bigtest/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/bigtest/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -274,16 +291,22 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list TestSweepLineSpeed$(EXEEXT): $(TestSweepLineSpeed_OBJECTS) $(TestSweepLineSpeed_DEPENDENCIES) @rm -f TestSweepLineSpeed$(EXEEXT) - $(CXXLINK) $(TestSweepLineSpeed_LDFLAGS) $(TestSweepLineSpeed_OBJECTS) $(TestSweepLineSpeed_LDADD) $(LIBS) + $(CXXLINK) $(TestSweepLineSpeed_OBJECTS) $(TestSweepLineSpeed_LDADD) $(LIBS) +bug234$(EXEEXT): $(bug234_OBJECTS) $(bug234_DEPENDENCIES) + @rm -f bug234$(EXEEXT) + $(CXXLINK) $(bug234_OBJECTS) $(bug234_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -293,24 +316,25 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeometryTestFactory.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TestSweepLineSpeed.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bug234.Po@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< @@ -321,88 +345,92 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am -all-am: Makefile $(PROGRAMS) +all-am: Makefile installdirs: install: install-am install-exec: install-exec-am @@ -424,20 +452,21 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-noinstPROGRAMS \ +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -445,18 +474,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -477,22 +526,27 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS 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 +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool 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-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am 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 #EXTRA_DIST = GeometryTestFactory.cpp + # 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 -Nru geos-3.1.0/tests/bigtest/README geos-3.2.2/tests/bigtest/README --- geos-3.1.0/tests/bigtest/README 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/bigtest/README 2009-05-07 16:57:28.000000000 +0100 @@ -0,0 +1,5 @@ +This directory is a mess, should be renamed to reflect that :) + +Now seriously, there's no automated test in this directory, but +random tests intended for manual runs. They get built by 'make check' +but not executed. diff -Nru geos-3.1.0/tests/geostest/brokengrammar geos-3.2.2/tests/geostest/brokengrammar --- geos-3.1.0/tests/geostest/brokengrammar 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/geostest/brokengrammar 2009-12-06 00:47:21.000000000 +0000 @@ -0,0 +1 @@ +MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)),((78 45,65 34,100 54,78 45),(4 65, 54 23, 544 346, 2 1, 4 65))) diff -Nru geos-3.1.0/tests/geostest/geostest.c geos-3.2.2/tests/geostest/geostest.c --- geos-3.1.0/tests/geostest/geostest.c 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/geostest/geostest.c 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,389 @@ +/************************************************************************ + * + * $Id: geostest.c 2809 2009-12-06 01:05:24Z mloskot $ + * + * Test for C-Wrapper of GEOS library + * + * Copyright (C) 2005 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + * Author: Sandro Santilli + * + ***********************************************************************/ + +#define _GNU_SOURCE + +#include +#include +#include + +#include "geos_c.h" + +#define MAXWKTLEN 1047551 + +void +usage(char *me) +{ + fprintf(stderr, "Usage: %s \n", me); + exit(1); +} + +void +notice(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "NOTICE: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); +} + +void +log_and_exit(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "ERROR: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); + exit(1); +} + +GEOSGeometry* +fineGrainedReconstructionTest(const GEOSGeometry* g1) +{ + GEOSCoordSequence* cs; + GEOSGeometry* g2; + GEOSGeometry* shell; + const GEOSGeometry* gtmp; + GEOSGeometry**geoms; + unsigned int ngeoms, i; + int type; + + /* Geometry reconstruction from CoordSeq */ + type = GEOSGeomTypeId(g1); + switch ( type ) + { + case GEOS_POINT: + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); + g2 = GEOSGeom_createPoint(cs); + return g2; + break; + case GEOS_LINESTRING: + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); + g2 = GEOSGeom_createLineString(cs); + return g2; + break; + case GEOS_LINEARRING: + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); + g2 = GEOSGeom_createLinearRing(cs); + return g2; + break; + case GEOS_POLYGON: + gtmp = GEOSGetExteriorRing(g1); + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(gtmp)); + shell = GEOSGeom_createLinearRing(cs); + ngeoms = GEOSGetNumInteriorRings(g1); + geoms = malloc(ngeoms*sizeof(GEOSGeometry*)); + for (i=0; i>4], hex[bytes[i]&0x0F]); + } +} + +int +do_all(char *inputfile) +{ + GEOSGeometry* g1; + GEOSGeometry* g2; + GEOSGeometry* g3; + GEOSGeometry* g4; + const GEOSGeometry **gg; + unsigned int npoints, ndims; + static char wkt[MAXWKTLEN]; + FILE *input; + char *ptr; + unsigned char* uptr; + size_t size; + double dist, area; + + input = fopen(inputfile, "r"); + if ( ! input ) { perror("fopen"); exit(1); } + + size = fread(wkt, 1, MAXWKTLEN-1, input); + fclose(input); + if ( ! size ) { perror("fread"); exit(1); } + if ( size == MAXWKTLEN-1 ) { perror("WKT input too big!"); exit(1); } + wkt[size] = '\0'; /* ensure it is null terminated */ + + /* WKT input */ + g1 = GEOSGeomFromWKT(wkt); + + /* WKT output */ + ptr = GEOSGeomToWKT(g1); + printf("Input (WKT): %s\n", ptr); + free(ptr); + + /* WKB output */ + uptr = GEOSGeomToWKB_buf(g1, &size); + printf("Input (WKB): "); printHEX(stdout, uptr, size); putchar('\n'); + + /* WKB input */ + g2 = GEOSGeomFromWKB_buf(uptr, size); free(uptr); + if ( ! GEOSEquals(g1, g2) ) log_and_exit("Round WKB conversion failed"); + GEOSGeom_destroy(g2); + + /* Size and dimension */ + npoints = GEOSGetNumCoordinates(g1); + ndims = GEOSGeom_getDimensions(g1); + printf("Geometry coordinates: %dx%d\n", npoints, ndims); + + /* Geometry fine-grained deconstruction/reconstruction test */ + g2 = fineGrainedReconstructionTest(g1); + if ( ! GEOSEquals(g1, g2) ) + { + log_and_exit("Reconstruction test failed\n"); + } + GEOSGeom_destroy(g2); + + /* Unary predicates */ + if ( GEOSisEmpty(g1) ) printf("isEmpty\n"); + if ( GEOSisValid(g1) ) printf("isValid\n"); + if ( GEOSisSimple(g1) ) printf("isSimple\n"); + if ( GEOSisRing(g1) ) printf("isRing\n"); + + /* Convex Hull */ + g2 = GEOSConvexHull(g1); + if ( ! g2 ) + { + log_and_exit("GEOSConvexHull() raised an exception"); + } + ptr = GEOSGeomToWKT(g2); + printf("ConvexHull: %s\n", ptr); + free(ptr); + + /* Buffer */ + GEOSGeom_destroy(g1); + g1 = GEOSBuffer(g2, 100, 30); + if ( ! g1 ) + { + log_and_exit("GEOSBuffer() raised an exception"); + } + ptr = GEOSGeomToWKT(g1); + printf("Buffer: %s\n", ptr); + free(ptr); + + + /* Intersection */ + g3 = GEOSIntersection(g1, g2); + if ( ! GEOSEquals(g3, g2) ) + { + GEOSGeom_destroy(g1); + GEOSGeom_destroy(g2); + GEOSGeom_destroy(g3); + log_and_exit("Intersection(g, Buffer(g)) didn't return g"); + } + ptr = GEOSGeomToWKT(g3); + printf("Intersection: %s\n", ptr); + GEOSGeom_destroy(g3); + free(ptr); + + /* Difference */ + g3 = GEOSDifference(g1, g2); + ptr = GEOSGeomToWKT(g3); + printf("Difference: %s\n", ptr); + GEOSGeom_destroy(g3); + free(ptr); + + /* SymDifference */ + g3 = GEOSSymDifference(g1, g2); + ptr = GEOSGeomToWKT(g3); + printf("SymDifference: %s\n", ptr); + free(ptr); + + /* Boundary */ + g4 = GEOSBoundary(g3); + ptr = GEOSGeomToWKT(g4); + printf("Boundary: %s\n", ptr); + GEOSGeom_destroy(g3); + GEOSGeom_destroy(g4); + free(ptr); + + /* Union */ + g3 = GEOSUnion(g1, g2); + if ( ! GEOSEquals(g3, g1) ) + { + GEOSGeom_destroy(g1); + GEOSGeom_destroy(g2); + GEOSGeom_destroy(g3); + log_and_exit("Union(g, Buffer(g)) didn't return Buffer(g)"); + } + ptr = GEOSGeomToWKT(g3); + printf("Union: %s\n", ptr); + free(ptr); + + /* PointOnSurcace */ + g4 = GEOSPointOnSurface(g3); + ptr = GEOSGeomToWKT(g4); + printf("PointOnSurface: %s\n", ptr); + GEOSGeom_destroy(g3); + GEOSGeom_destroy(g4); + free(ptr); + + /* Centroid */ + g3 = GEOSGetCentroid(g2); + ptr = GEOSGeomToWKT(g3); + printf("Centroid: %s\n", ptr); + GEOSGeom_destroy(g3); + free(ptr); + + /* Relate (and RelatePattern )*/ + ptr = GEOSRelate(g1, g2); + if ( ! GEOSRelatePattern(g1, g2, ptr) ) + { + GEOSGeom_destroy(g1); + GEOSGeom_destroy(g2); + free(ptr); + log_and_exit("! RelatePattern(g1, g2, Relate(g1, g2))"); + } + printf("Relate: %s\n", ptr); + free(ptr); + + /* Polygonize */ + gg = (const GEOSGeometry**)malloc(2*sizeof(GEOSGeometry*)); + gg[0] = g1; + gg[1] = g2; + g3 = GEOSPolygonize(gg, 2); + free(gg); + if ( ! g3 ) + { + log_and_exit("Exception running GEOSPolygonize"); + } + ptr = GEOSGeomToWKT(g3); + GEOSGeom_destroy(g3); + printf("Polygonize: %s\n", ptr); + free(ptr); + + /* LineMerge */ + g3 = GEOSLineMerge(g1); + if ( ! g3 ) + { + log_and_exit("Exception running GEOSLineMerge"); + } + ptr = GEOSGeomToWKT(g3); + printf("LineMerge: %s\n", ptr); + free(ptr); + GEOSGeom_destroy(g3); + + /* Binary predicates */ + if ( GEOSIntersects(g1, g2) ) printf("Intersect\n"); + if ( GEOSDisjoint(g1, g2) ) printf("Disjoint\n"); + if ( GEOSTouches(g1, g2) ) printf("Touches\n"); + if ( GEOSCrosses(g1, g2) ) printf("Crosses\n"); + if ( GEOSWithin(g1, g2) ) printf("Within\n"); + if ( GEOSContains(g1, g2) ) printf("Contains\n"); + if ( GEOSOverlaps(g1, g2) ) printf("Overlaps\n"); + + /* Distance */ + if ( GEOSDistance(g1, g2, &dist) ) printf("Distance: %g\n", dist); + + /* Hausdorff Distance */ + if ( GEOSHausdorffDistance(g1, g2, &dist) ) printf("HausdorffDistance: %g\n", dist); + + /* Hausdorff Distance with densification */ + if ( GEOSHausdorffDistanceDensify(g1, g2, 0.001, &dist) ) printf("HausdorffDistanceDensify: %g\n", dist); + + /* Area */ + if ( GEOSArea(g1, &area) ) printf("Area 1: %g\n", area); + if ( GEOSArea(g2, &area) ) printf("Area 2: %g\n", area); + + GEOSGeom_destroy(g2); + + /* Simplify */ + g3 = GEOSSimplify(g1, 0.5); + ptr = GEOSGeomToWKT(g3); + printf("Simplify: %s\n", ptr); + free(ptr); + GEOSGeom_destroy(g3); + + /* Topology Preserve Simplify */ + g3 = GEOSTopologyPreserveSimplify(g1, 0.5); + ptr = GEOSGeomToWKT(g3); + printf("Simplify: %s\n", ptr); + free(ptr); + GEOSGeom_destroy(g3); + + GEOSGeom_destroy(g1); + + return 0; +} + +int +main(int argc, char **argv) +{ + int i, n=1; + + initGEOS(notice, log_and_exit); + printf("GEOS version %s\n", GEOSversion()); + + if ( argc < 2 ) usage(argv[0]); + if ( argc > 2 ) n=atoi(argv[2]); + if ( ! n ) n=1; + + for (i=0; i ${runner} +#!/bin/sh +./geostest ${srcdir}/test.wkt > test.out +ret=\$? + +if test "\$ret" -ne "0"; then + echo "geostest exited with non-zero status (\$ret)" +fi + +# It's enough that it doesn't segfault for now... +# computing a diff doesn't currently work as geostest +# was not initially made taking arch differences into +# account +diff ${srcdir}/test.expected test.out >&2 + +exit \$ret + +EOF + +chmod +x ${runner} +echo "Runner: ${runner} created" diff -Nru geos-3.1.0/tests/geostest/test.wkt geos-3.2.2/tests/geostest/test.wkt --- geos-3.1.0/tests/geostest/test.wkt 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/geostest/test.wkt 2009-12-06 00:47:21.000000000 +0000 @@ -0,0 +1 @@ +MULTIPOLYGON(((362062.200000003 231744,362076 231749.799999997,362122.299999997 231753.5,362187 231767.900000006,362242 231776,362296.200000003 231786.700000003,362517 231821.5,362651.799999997 231844.799999997,362772.700000003 231871.799999997,362805.099999994 231874.299999997,362847.200000003 231876,362912.799999997 231888.900000006,363005.900000006 231903,363169.200000003 231929.299999997,363247.900000006 231934,363333.900000006 231950,363516.099999994 231985.5,363630.299999997 232004.700000003,363694.700000003 232012,363754 232021.099999994,363833.400000006 232029.799999997,363913.599999994 232048.5,363940.599999994 232052,364014.799999997 232060.299999997,364044.700000003 232065.799999997,364082.700000003 232074.099999994,364165.299999997 232083.799999997,364208.599999994 232097.099999994,364279.799999997 232104,364316.700000003 232112.799999997,364331.200000003 232113.599999994,364391.200000003 232127.599999994,364483.799999997 232140,364606.799999997 232159.599999994,364662.799999997 232170.599999994,364712.900000006 232182.700000003,364823.799999997 232201.5,364904.900000006 232211,364967.200000003 232221.099999994,365061.299999997 232240.5,365191.099999994 232255.900000006,365262.900000006 232262.299999997,365391.700000003 232283.599999994,365525.299999997 232308.900000006,365598.400000006 232326.599999994,365727.099999994 232341.599999994,365803 232352.299999997,365935.400000006 232377.599999994,366011.5 232384.799999997,366056.099999994 232391.200000003,366128.700000003 232407.400000006,366295.599999994 232442.700000003,366445.200000003 232457.200000003,366624.799999997 232486.299999997,366663.200000003 232490.200000003,366707.200000003 232502.400000006,366807.099999994 232522.700000003,366862.900000006 232529.799999997,366971.099999994 232543.5,367088.099999994 232563.099999994,367185.299999997 232575.400000006,367222.200000003 232582.400000006,367331.799999997 232597,367530.299999997 232629.799999997,367683.599999994 232660.700000003,367772.599999994 232675.799999997,367939 232693.099999994,367995.599999994 232701,368055.099999994 232702.599999994,368135 232714.299999997,368220.799999997 232735.400000006,368312.599999994 232753.400000006,368380.799999997 232770.799999997,368447.299999997 232777.599999994,368512.099999994 232792.099999994,368544 232795.599999994,368601.799999997 232805.099999994,368660.799999997 232813.099999994,368707.299999997 232826.400000006,368782.5 232836.099999994,368832.599999994 232847.799999997,368906.599999994 232860.5,368992.5 232873.099999994,369089.099999994 232892,369260.5 232916.700000003,369318.700000003 232931.200000003,369445.599999994 232945.599999994,369508.700000003 232950.099999994,369574.200000003 232960.5,369616.099999994 232967.799999997,369656.200000003 232978.200000003,369717.700000003 233002,369777.700000003 233016.099999994,369875.400000006 233024,370035 233046.900000006,370117.099999994 233056,370200.099999994 233077.599999994,370233.599999994 233079.099999994,370496.900000006 233123.299999997,370539.400000006 233127,370601.700000003 233135,370655.299999997 233146.599999994,370855.099999994 233178.799999997,370932.700000003 233182.099999994,371060.099999994 233205,371120.700000003 233223,371178.599999994 233233,371201.799999997 233229.200000003,371245.299999997 233232.5,371289.900000006 233243.700000003,371425.799999997 233259,371487.5 233276.400000006,371552.299999997 233291.900000006,371638.099999994 233306.400000006,371715.099999994 233318.599999994,371821.200000003 233332.400000006,371918.299999997 233350.799999997,371988.099999994 233360.200000003,372040.700000003 233366.299999997,372158.599999994 233382.299999997,372175.5 233379.599999994,372201.099999994 233382.599999994,372351.299999997 233410.099999994,372419 233417.5,372500.799999997 233432.200000003,372538.700000003 233434.099999994,372559.299999997 233439.200000003,372715.799999997 233463.599999994,372780.900000006 233472.099999994,372809.599999994 233479.599999994,372842.900000006 233484,372895.900000006 233498.099999994,372959.799999997 233506.099999994,372967.799999997 233500.5,372986.099999994 233503.700000003,373016.200000003 233511.599999994,373076.5 233519.700000003,373115.5 233524.5,373133.900000006 233529.700000003,373218.799999997 233538.900000006,373322.599999994 233555.200000003,373403.900000006 233574.799999997,373503.5 233590.099999994,373539.599999994 233594.099999994,373567.700000003 233595.099999994,373612.900000006 233595.299999997,373629.5 233598,373642.200000003 233597.900000006,373633.799999997 233582.099999994,373623.799999997 233570.200000003,373584.099999994 233479.200000003,373562.900000006 233422.099999994,373549.099999994 233399,373506.799999997 233325.799999997,373487.299999997 233294.200000003,373460.200000003 233259.799999997,373442.099999994 233240.099999994,373426.700000003 233220,373405.400000006 233187.299999997,373383.099999994 233164.799999997,373333.599999994 233096.700000003,373325.5 233078.5,373298.299999997 233028.599999994,373269.299999997 232982.599999994,373220.099999994 232893.200000003,373190.799999997 232853.700000003,373145.400000006 232784.700000003,373100.900000006 232712,373090.400000006 232680.299999997,373077.599999994 232660.099999994,373046.400000006 232597.299999997,373028.900000006 232538.200000003,373012.400000006 232520,373002.5 232506.299999997,372997.299999997 232499.900000006,372979.900000006 232471.799999997,372966.5 232452.400000006,372963.099999994 232436.099999994,372925.200000003 232361.5,372900 232326.400000006,372885.700000003 232295.200000003,372849.700000003 232245,372803.299999997 232173.799999997,372764.900000006 232096.200000003,372735.200000003 232063.299999997,372710.900000006 232032.200000003,372692.5 232004.700000003,372691.900000006 231988.700000003,372680 231952,372658.599999994 231917,372655.599999994 231898,372629.799999997 231847.099999994,372609.799999997 231810.599999994,372589.299999997 231778,372571 231743.400000006,372549.400000006 231706.700000003,372536.900000006 231677.099999994,372497.900000006 231600.400000006,372476.799999997 231562.900000006,372467.599999994 231529.099999994,372455 231502.400000006,372444.299999997 231467.700000003,372431 231419.5,372394.5 231364.299999997,372379 231339.5,372355 231312.599999994,372344.099999994 231286.299999997,372307.799999997 231214,372292.099999994 231194.900000006,372274.5 231145.299999997,372260.099999994 231120.599999994,372226.299999997 231083.299999997,372194.299999997 231041.400000006,372136.400000006 230959.099999994,372112.799999997 230922.5,372065.599999994 230841.599999994,372054 230818.299999997,372031.700000003 230784.299999997,372014.700000003 230735.599999994,371990.400000006 230694.200000003,371950.799999997 230628.400000006,371931.700000003 230578.900000006,371890.900000006 230511.299999997,371874.900000006 230494.5,371861.400000006 230513.700000003,371858 230493.400000006,371846.099999994 230455.099999994,371828.099999994 230407.5,371813.299999997 230374.799999997,371787.799999997 230316.5,371751.299999997 230262.700000003,371731.5 230213.700000003,371699.200000003 230171.799999997,371679.299999997 230125.200000003,371656.599999994 230095.599999994,371621.400000006 230055.400000006,371584.299999997 229987.700000003,371550.099999994 229912.5,371526.900000006 229867.400000006,371504.799999997 229838.799999997,371485.599999994 229801.799999997,371475.5 229778,371461.400000006 229752.200000003,371440.700000003 229706.799999997,371400.799999997 229629.099999994,371372.400000006 229581.599999994,371349.400000006 229546.599999994,371312.299999997 229480.400000006,371296.200000003 229454.299999997,371274.900000006 229432.099999994,371253.099999994 229396.099999994,371224.5 229358.099999994,371185.5 229294,371153.299999997 229239.700000003,371066.400000006 229032.700000003,371027.5 228966.900000006,371004.799999997 228913,370991 228890.200000003,370938.099999994 228790.400000006,370919.299999997 228762.799999997,370884.299999997 228707.400000006,370840 228630.900000006,370797.200000003 228558.299999997,370722.5 228398.900000006,370677.200000003 228323.299999997,370655.5 228268.299999997,370635 228228.799999997,370577.799999997 228117.599999994,370556.900000006 228088.400000006,370533.599999994 228047.900000006,370511.299999997 228025.299999997,370485.200000003 227994.799999997,370435.799999997 227946.299999997,370399.799999997 227881.099999994,370342.599999994 227793.200000003,370316.400000006 227755.299999997,370239.599999994 227614.799999997,370195 227565.200000003,370123.299999997 227431.200000003,370067 227353.900000006,370025.5 227277.700000003,369958.5 227171.5,369938.799999997 227130.5,369892.799999997 227050.5,369876.799999997 227022.799999997,369837.799999997 226970.5,369820.799999997 226933,369782.400000006 226859.799999997,369762.099999994 226819.200000003,369739.099999994 226782.200000003,369713.099999994 226749.200000003,369686.5 226704.700000003,369642.400000006 226620.099999994,369596.200000003 226546.099999994,369578.5 226510.5,369541.400000006 226455.200000003,369519 226397.200000003,369476.799999997 226327.099999994,369435.599999994 226235.599999994,369404.900000006 226135.299999997,369367.400000006 226063.099999994,369353.799999997 226024,369316.900000006 225937.799999997,369292.900000006 225899.799999997,369258.799999997 225837.5,369226.099999994 225790.599999994,369191.900000006 225739.900000006,369169.700000003 225702.799999997,369136.799999997 225661.900000006,369115.5 225641.799999997,368998.099999994 225443.299999997,368960.200000003 225358.599999994,368890.799999997 225224.599999994,368812.799999997 225025.900000006,368771.700000003 224939.299999997,368741.900000006 224859.900000006,368701.400000006 224765.900000006,368679.099999994 224703.400000006,368637.099999994 224627.299999997,368616.700000003 224565.799999997,368592.799999997 224525.299999997,368547.5 224416.799999997,368528 224383.799999997,368468.599999994 224270,368457.200000003 224234.200000003,368445.099999994 224206,368404.400000006 224140.400000006,368387 224066.900000006,368348.799999997 223972.200000003,368324.599999994 223901.299999997,368299.099999994 223849.299999997,368281.099999994 223819.200000003,368249.700000003 223748.400000006,368221.799999997 223704,368187.099999994 223625.799999997,368163.599999994 223575.799999997,368139.799999997 223508.400000006,368111.099999994 223455.5,368083.900000006 223370.599999994,368056 223315.700000003,368028.700000003 223248.799999997,368011 223201.700000003,367981.799999997 223133.900000006,367963.400000006 223102.799999997,367932.099999994 223056.400000006,367903.299999997 222978.599999994,367852.099999994 222807.400000006,367820.599999994 222727.099999994,367790.099999994 222635.400000006,367757.799999997 222557.599999994,367742.400000006 222516,367708.200000003 222426.299999997,367660.200000003 222299.900000006,367625.799999997 222225.599999994,367591.700000003 222159.400000006,367561.299999997 222093.5,367502.200000003 221924.400000006,367472.900000006 221842.599999994,367458.5 221819.400000006,367427.700000003 221735.700000003,367385 221624.099999994,367360.5 221574.200000003,367326 221490,367290.299999997 221393.299999997,367271.200000003 221339.700000003,367244.099999994 221268.799999997,367237.299999997 221245.900000006,367214 221194,367200.400000006 221137.900000006,367162.299999997 221044.700000003,367147.099999994 220987.099999994,367117.799999997 220919.299999997,367102.799999997 220894.099999994,367073.599999994 220814.799999997,367023.400000006 220673,366980.099999994 220598.299999997,366962.099999994 220558.799999997,366905.799999997 220454.400000006,366882.400000006 220416.900000006,366857 220370.5,366824.400000006 220272.799999997,366787.599999994 220128.700000003,366743.900000006 220049.200000003,366730.5 220013,366694.799999997 219922.400000006,366668.299999997 219845.400000006,366642.299999997 219788.5,366621 219728.5,366602 219663.5,366578.299999997 219606.599999994,366570.700000003 219575.700000003,366551.599999994 219513.200000003,366507.5 219429.599999994,366492 219386,366458.400000006 219301.200000003,366426.700000003 219211,366392.900000006 219139.200000003,366373.099999994 219087.200000003,366316.599999994 218974.400000006,366294.799999997 218940.799999997,366260.799999997 218889.5,366214.299999997 218764.099999994,366187.599999994 218662.400000006,366165 218615.799999997,366128.799999997 218519.200000003,366086.900000006 218417.599999994,366068.799999997 218378,366035 218307.200000003,366012.200000003 218231.799999997,365984.700000003 218153.400000006,365950.200000003 218060.799999997,365922.099999994 218017.799999997,365903.400000006 217982.200000003,365835.200000003 217851.099999994,365798.5 217801.900000006,365728.400000006 217660.299999997,365673.200000003 217559,365657.5 217511.400000006,365636.900000006 217461.900000006,365589.299999997 217352.400000006,365560.700000003 217312,365525.200000003 217245.299999997,365480.900000006 217133.200000003,365442.5 217056.599999994,365405.900000006 216955.5,365379.200000003 216908,365341.200000003 216825.799999997,365319.200000003 216784.299999997,365303.299999997 216741.599999994,365259.299999997 216668,365243.200000003 216626.400000006,365206.900000006 216581.099999994,365172.5 216521.799999997,365148.700000003 216481.799999997,365127.200000003 216438.799999997,365081.299999997 216365.200000003,365054.5 216305.299999997,365045.099999994 216300,365042.400000006 216280.599999994,365035 216259.299999997,365022.900000006 216243.5,365011.799999997 216224.200000003,364987.599999994 216190.200000003,364980.900000006 216167.299999997,364958.299999997 216136.799999997,364941.799999997 216095.700000003,364917.799999997 216058.200000003,364883.299999997 216007.799999997,364861.200000003 215961.299999997,364850.299999997 215946,364833.799999997 215915.900000006,364803.700000003 215856,364770 215806.200000003,364714.700000003 215744.799999997,364702.599999994 215717,364679.599999994 215672.900000006,364650.799999997 215618,364631.799999997 215591.5,364601.099999994 215554.5,364583.799999997 215510.900000006,364568.599999994 215482.200000003,364521.5 215423.099999994,364479.200000003 215387,364413.200000003 215308.200000003,364385.200000003 215279.200000003,364366.200000003 215262.599999994,364336.400000006 215230.099999994,364285 215148.700000003,364246.299999997 215118.299999997,364224.599999994 215094.299999997,364190.099999994 215058.900000006,364165.099999994 215030.400000006,364125.799999997 214999.599999994,364103.599999994 214973,364053.599999994 214926,364011.799999997 214890.700000003,363965.5 214853.5,363920.700000003 214801.900000006,363876.5 214769.700000003,363806.299999997 214703.5,363766.700000003 214674.200000003,363747.799999997 214657,363681.700000003 214592.299999997,363620.5 214559.799999997,363580.299999997 214535.5,363530.599999994 214496.400000006,363510.299999997 214495.700000003,363474.900000006 214488.799999997,363430.5 214476.5,363381.099999994 214465.299999997,363316.5 214466.400000006,363252.599999994 214461.400000006,363156.700000003 214466.400000006,363090.799999997 214484.299999997,363077.5 214493.5,363067.099999994 214497.200000003,363040 214500.200000003,362914.599999994 214528.5,362870.200000003 214553.099999994,362846.299999997 214560.599999994,362828.400000006 214561.900000006,362827 214572.799999997,362814 214577.5,362776.5 214595.599999994,362765.400000006 214599.200000003,362667.900000006 214651.599999994,362630.299999997 214667.700000003,362576.099999994 214694,362543.299999997 214725.400000006,362511.900000006 214750.900000006,362478 214757.400000006,362379.299999997 214796.799999997,362260.299999997 214866.5,362127.099999994 214946.799999997,362023.900000006 215017.299999997,361984.099999994 215042.400000006,361890.5 215113.700000003,361777.599999994 215181.799999997,361710.099999994 215233.799999997,361692.400000006 215248.400000006,361671.700000003 215256.700000003,361597.900000006 215286.900000006,361502.5 215343.700000003,361472 215357.200000003,361423.700000003 215382.799999997,361259.200000003 215487.700000003,361226.599999994 215505.700000003,361191.599999994 215527.700000003,361118.700000003 215568.299999997,360996.099999994 215603.5,360963.900000006 215608.5,360927.799999997 215621.5,360842.799999997 215661.900000006,360789.599999994 215691,360754.099999994 215720.099999994,360727.200000003 215747.400000006,360701.799999997 215765.799999997,360660.5 215812.900000006,360654.299999997 215825.900000006,360615.299999997 215860.900000006,360579.299999997 215885,360488.200000003 215951.200000003,360455.400000006 215982.099999994,360441.200000003 216003.799999997,360437.700000003 216052.200000003,360418.299999997 216065,360341.099999994 216078.599999994,360322 216078.5,360150.700000003 216078.200000003,359950.599999994 216070.400000006,359871.299999997 216067.200000003,359804.900000006 216063.799999997,359732.799999997 216061.299999997,359707.200000003 216057.299999997,359633.799999997 216055.400000006,359624.400000006 216048.599999994,359625.900000006 216033.599999994,359629 216003.700000003,359644.599999994 215957.599999994,359657.400000006 215924.900000006,359666.5 215890.900000006,359668.400000006 215838.400000006,359654 215798.299999997,359637.700000003 215765.599999994,359599 215719.400000006,359511.299999997 215645.5,359472.400000006 215625.599999994,359428.099999994 215611.400000006,359380.900000006 215602.700000003,359323.5 215606.599999994,359253 215621.700000003,359209.900000006 215664.700000003,359166.5 215718.700000003,359135.799999997 215767.700000003,359093.599999994 215819.700000003,359042.400000006 215891.700000003,359013.299999997 215925.700000003,358938.299999997 215980.099999994,358873.599999994 216000.700000003,358766.200000003 216007.900000006,358736.299999997 216003.799999997,358607.900000006 215998.900000006,358535.5 216001,358492.400000006 215997.200000003,358428 215997.200000003,358369.599999994 215995.700000003,358258.400000006 215994,358108 215982.299999997,357988.299999997 215983.200000003,357948.200000003 215980.900000006,357892 215980.799999997,357883.299999997 215978,357866.400000006 215979.200000003,357825.299999997 215971.400000006,357798.299999997 215947.299999997,357769.299999997 215922.299999997,357739.200000003 215886.5,357707.900000006 215864,357645.799999997 215826.599999994,357580.599999994 215805.700000003,357556.299999997 215796.099999994,357522.700000003 215787.599999994,357488.900000006 215777.299999997,357361.5 215746.299999997,357308.200000003 215729.200000003,357270.599999994 215713.900000006,357247.700000003 215699.799999997,357230.200000003 215689.599999994,357198.400000006 215674.099999994,357158.5 215656.799999997,357139.400000006 215647.599999994,357090.099999994 215625.400000006,357061 215606,357024.799999997 215585,356976.700000003 215540.900000006,356959.799999997 215519.299999997,356924.299999997 215495.900000006,356863.900000006 215441,356847.400000006 215434.299999997,356827.299999997 215423.099999994,356801.400000006 215401.099999994,356769.099999994 215372.200000003,356726.200000003 215341.400000006,356698.599999994 215325.5,356639.700000003 215286,356586.099999994 215239.5,356520 215173.700000003,356487.900000006 215140.299999997,356460.099999994 215110.700000003,356416.200000003 215058.099999994,356396.200000003 215039.5,356363 215005.599999994,356287.200000003 214938.5,356251.5 214906.099999994,356155.799999997 214810.900000006,356106.799999997 214766.799999997,355999.700000003 214667.700000003,355956.299999997 214633,355922 214604.599999994,355896.700000003 214583,355879.599999994 214565,355815.900000006 214515.099999994,355791.400000006 214485.5,355781.200000003 214480.200000003,355783.5 214472.599999994,355756.400000006 214447.200000003,355703.599999994 214373.799999997,355649.799999997 214316.200000003,355633.799999997 214298.5,355606.400000006 214267,355576.400000006 214229.599999994,355565 214217.299999997,355524.700000003 214182,355492.099999994 214141.700000003,355431.700000003 214075.799999997,355412.599999994 214056.700000003,355382.200000003 214028.200000003,355344.599999994 213994.400000006,355296.900000006 213940.799999997,355261.299999997 213908.900000006,355237.5 213876.400000006,355212.599999994 213844.299999997,355182.299999997 213811.400000006,355151.299999997 213757,355117.900000006 213724.200000003,355114.599999994 213715.799999997,355102.599999994 213703,355084.900000006 213673.799999997,355062.200000003 213654.799999997,355051.599999994 213640,355001.700000003 213589.900000006,355002.5 213576.900000006,354978.799999997 213553.400000006,354926.599999994 213487.900000006,354892.599999994 213432,354877.400000006 213414.299999997,354800.900000006 213315.200000003,354747.799999997 213259.299999997,354662.799999997 213136.400000006,354613.200000003 213069.299999997,354552.299999997 212996.5,354491.900000006 212928.099999994,354444.700000003 212858.599999994,354436.599999994 212851.200000003,354404.299999997 212798.900000006,354393.299999997 212790.099999994,354374.900000006 212772,354260.099999994 212618.099999994,354242 212583.5,354214.5 212556,354161.799999997 212490.599999994,354133.099999994 212448.599999994,354112.5 212416.5,354096.700000003 212404.299999997,354078.599999994 212384.599999994,354063.299999997 212363.5,354057.200000003 212342.099999994,354032.799999997 212313.5,354029.799999997 212300.599999994,353984.799999997 212246.5,353954.700000003 212221.5,353943.5 212207.200000003,353925.799999997 212184.5,353923.299999997 212167.200000003,353906.299999997 212149.900000006,353895.299999997 212132.700000003,353885.799999997 212113.799999997,353872.700000003 212104.599999994,353840.400000006 212061.799999997,353825.599999994 212045,353810.900000006 212021.299999997,353715.599999994 211903.700000003,353694.400000006 211872.099999994,353665.099999994 211831.599999994,353618.5 211776.900000006,353575.299999997 211713.799999997,353539.599999994 211678,353527.099999994 211661.200000003,353469.599999994 211595.799999997,353462 211575,353432.099999994 211538.099999994,353408.700000003 211500,353380.599999994 211457.5,353357 211426.5,353348.700000003 211410.700000003,353310.299999997 211358.900000006,353277.400000006 211317.5,353251.299999997 211272,353232.700000003 211244.400000006,353221.5 211230.599999994,353201.200000003 211201.5,353131 211097.400000006,353084.299999997 211045.799999997,353078.200000003 211033,353029.700000003 210970.400000006,353015.099999994 210947.200000003,353003.700000003 210934.799999997,352988.299999997 210915.700000003,352967.400000006 210878,352925.799999997 210816.400000006,352893 210747.599999994,352860.400000006 210698.200000003,352823.799999997 210635.5,352781.700000003 210565.900000006,352762.599999994 210546.700000003,352728 210503.400000006,352690.5 210446.5,352674.400000006 210429.900000006,352670 210419.5,352663.799999997 210413.099999994,352635.799999997 210358.200000003,352535.700000003 210213.700000003,352493.900000006 210170.400000006,352470.700000003 210140.900000006,352445.700000003 210099.900000006,352427.5 210066.200000003,352382.299999997 209981.200000003,352368.5 209965.900000006,352359.099999994 209939.599999994,352331.099999994 209892.700000003,352299.299999997 209856.299999997,352258.700000003 209851.400000006,352226.5 209815,352217.5 209803.200000003,352199.700000003 209760.599999994,352153.900000006 209689.5,352140.099999994 209666.299999997,352108.599999994 209619,352087.200000003 209578.400000006,352043.900000006 209503.299999997,352039.900000006 209481.299999997,352033.900000006 209464.5,352016.700000003 209458.799999997,352002.799999997 209447.099999994,351981.200000003 209410.400000006,351965.400000006 209386.700000003,351959.099999994 209368.400000006,351952.700000003 209354.099999994,351949.400000006 209335.700000003,351959.5 209322,351945.200000003 209310.799999997,351931.900000006 209286.599999994,351924.299999997 209269.700000003,351879.799999997 209172.200000003,351872.099999994 209156.299999997,351854.799999997 209130.200000003,351833.799999997 209081.200000003,351814.299999997 209049.5,351807.299999997 209017.200000003,351805.299999997 208997.799999997,351800.099999994 208972.400000006,351788 208948.700000003,351769.799999997 208923.5,351737.599999994 208896.599999994,351719.700000003 208862.5,351668.5 208798,351647.799999997 208777.799999997,351622.799999997 208745.400000006,351593.400000006 208671.5,351565.799999997 208633.099999994,351548.900000006 208607.400000006,351533.599999994 208587.700000003,351507.099999994 208526.700000003,351483.599999994 208493.599999994,351473.200000003 208472.900000006,351444.599999994 208419,351420 208394.5,351395.799999997 208356.400000006,351354.299999997 208306.200000003,351330.700000003 208260.200000003,351323 208236.900000006,351312.099999994 208223.099999994,351284.700000003 208184.700000003,351269.299999997 208153.900000006,351253.900000006 208135.299999997,351246.900000006 208120.400000006,351235.700000003 208102,351220 208066.900000006,351188.200000003 208028.599999994,351158.299999997 207975.099999994,351134.299999997 207936.099999994,351106.900000006 207910.099999994,351083.799999997 207887,351028.200000003 207819.599999994,351017.799999997 207801.799999997,350968.299999997 207727.799999997,350952.599999994 207693.099999994,350914.900000006 207638.299999997,350885.799999997 207584,350836 207520.400000006,350802.299999997 207459,350778.599999994 207427.5,350740.5 207359.900000006,350707.799999997 207312.400000006,350676.400000006 207266.099999994,350658.799999997 207244,350642.900000006 207212.200000003,350621.5 207161.200000003,350612 207144.900000006,350597.299999997 207114.200000003,350573.900000006 207063.799999997,350548.700000003 207024.200000003,350510.599999994 206945.5,350490.700000003 206918.799999997,350470.900000006 206883.799999997,350448.700000003 206833.799999997,350438 206803,350419.299999997 206768.400000006,350396.299999997 206737.400000006,350307.700000003 206541.799999997,350278.299999997 206492.299999997,350264.700000003 206447.599999994,350245.200000003 206420.099999994,350239.200000003 206393.700000003,350225.400000006 206355.099999994,350203.799999997 206318.400000006,350191.799999997 206281.799999997,350170.299999997 206242.700000003,350139.700000003 206161.799999997,350116.200000003 206120.299999997,350101.900000006 206062.200000003,350095.099999994 206017.900000006,350076.299999997 205961.400000006,350067.299999997 205922.099999994,350059 205906.299999997,350034.5 205833.799999997,350002 205734.700000003,349994.700000003 205699.299999997,349981.099999994 205653.599999994,349971.599999994 205630.900000006,349946.5 205574.299999997,349921.200000003 205527.400000006,349880.200000003 205445.299999997,349855.5 205409.299999997,349843.700000003 205381.5,349826.5 205338.400000006,349812.5 205318.700000003,349796.099999994 205294.5,349791.299999997 205267.599999994,349783.400000006 205237.299999997,349785.599999994 205189.5,349787.5 205149.900000006,349793.799999997 205129.400000006,349804.700000003 205105.799999997,349807.200000003 205080.900000006,349789.099999994 205031.299999997,349773.299999997 204995.5,349754.299999997 204967,349734 204914.900000006,349710.799999997 204872.299999997,349694.099999994 204833.200000003,349681 204808.5,349660.299999997 204758.900000006,349639.299999997 204711.5,349627 204694.200000003,349598.400000006 204651.700000003,349558.099999994 204591,349538.700000003 204553.900000006,349515.900000006 204519.400000006,349492.5 204467.299999997,349480.5 204430.099999994,349481.799999997 204403.700000003,349495 204367.599999994,349503.200000003 204334.599999994,349510.599999994 204280,349497.599999994 204248.799999997,349474.799999997 204224.299999997,349446.099999994 204199.799999997,349390.299999997 204161.299999997,349339.700000003 204111.700000003,349275.700000003 204003.200000003,349229.400000006 203905.900000006,349207.900000006 203842.700000003,349184.900000006 203794.400000006,349161.299999997 203725.299999997,349151.400000006 203692.799999997,349129.099999994 203631,349101.799999997 203550.799999997,349078.799999997 203504.099999994,349046.299999997 203443.799999997,349010.700000003 203349.299999997,349006.299999997 203325.700000003,348989 203263.599999994,348975.099999994 203228.700000003,348936.900000006 203132.5,348893.400000006 202993.299999997,348874.900000006 202924.200000003,348827.400000006 202790.299999997,348795.099999994 202738,348778.599999994 202708.799999997,348734 202608.5,348714.799999997 202559.400000006,348681.900000006 202471.400000006,348664.900000006 202410.299999997,348647.799999997 202366.5,348607.599999994 202268.900000006,348603.299999997 202260.200000003,348573.700000003 202189.099999994,348561.799999997 202157.299999997,348554.099999994 202129.700000003,348541.200000003 202100.799999997,348538.700000003 202088.099999994,348533.400000006 202062.5,348529.099999994 202051.700000003,348517.700000003 202010.599999994,348500.099999994 201994.900000006,348493.700000003 201986.599999994,348474.5 201949.299999997,348468.700000003 201906.599999994,348455 201870.299999997,348437.700000003 201827.900000006,348416.799999997 201787,348409.799999997 201770.400000006,348373.400000006 201718.900000006,348369.299999997 201703,348361.5 201684.400000006,348366.799999997 201670.200000003,348357.700000003 201646.599999994,348347.599999994 201624,348337.799999997 201601.299999997,348328.799999997 201591.900000006,348305.400000006 201501,348280.200000003 201448.799999997,348274 201440.400000006,348256.799999997 201412.599999994,348222.400000006 201350.700000003,348209.200000003 201327.900000006,348179.799999997 201279,348154.700000003 201235,348149.900000006 201212.700000003,348140.599999994 201190.700000003,348121.099999994 201148,348111.200000003 201129.5,348103.599999994 201097,348097 201022.5,348083.5 200995.5,348047.599999994 200940.799999997,348027.099999994 200916.400000006,347997.599999994 200894.400000006,347951.799999997 200833.299999997,347933.400000006 200791.700000003,347929.799999997 200765.599999994,347913 200717.599999994,347886.799999997 200685.700000003,347875.200000003 200667.900000006,347838.799999997 200623.299999997,347815.400000006 200583.799999997,347804.799999997 200567.599999994,347798.400000006 200547.900000006,347781.799999997 200509.299999997,347760.700000003 200484.200000003,347732.599999994 200444.299999997,347703.400000006 200392.599999994,347686.099999994 200363.099999994,347665.299999997 200341.700000003,347626.799999997 200296.299999997,347589.200000003 200263.599999994,347531.900000006 200206.700000003,347505 200189.700000003,347455.599999994 200145.299999997,347435.700000003 200129.900000006,347389 200102,347283.900000006 200050,347184.299999997 200008.400000006,347141.099999994 199982.200000003,347094.400000006 199954.5,347081.900000006 199936,347065 199901.5,347060.299999997 199886.900000006,347052 199860.400000006,347041 199814.400000006,347037.400000006 199800.200000003,347039.799999997 199787.700000003,347034.5 199753.400000006,347017.299999997 199708.5,346992.799999997 199693.400000006,346979.799999997 199674.200000003,346976.299999997 199635.5,346957.5 199602.200000003,346928.099999994 199553.299999997,346912.599999994 199523.900000006,346898.799999997 199497.200000003,346891.799999997 199472.099999994,346883.400000006 199455.5,346872.200000003 199416.5,346854.400000006 199384.400000006,346849.200000003 199371.099999994,346831.700000003 199346.200000003,346822.799999997 199319,346804.900000006 199292.400000006,346778.5 199226.299999997,346769.799999997 199211.5,346751.799999997 199158.599999994,346733.700000003 199123,346717.799999997 199091,346701.799999997 199060.700000003,346685.599999994 199036.900000006,346682.700000003 199019.5,346677.900000006 199009.599999994,346672.5 198996.799999997,346657.299999997 198960.5,346640 198874.799999997,346638.200000003 198824.5,346633.5 198808.299999997,346625.200000003 198758.599999994,346619.700000003 198743.900000006,346610.599999994 198709.900000006,346588 198658.200000003,346571.5 198627.200000003,346561 198615.900000006,346546.299999997 198587.799999997,346532.900000006 198544.299999997,346526.799999997 198533.200000003,346524.200000003 198521.5,346509.900000006 198481.900000006,346504.299999997 198448.5,346477 198369.099999994,346472.5 198338.700000003,346472.299999997 198315.400000006,346473.400000006 198277.400000006,346464.400000006 198268.599999994,346444 198217,346428.900000006 198158.700000003,346428.700000003 198125.799999997,346432.200000003 198103.5,346447.400000006 198074.299999997,346443.700000003 198060.700000003,346433.900000006 198028.700000003,346412.299999997 198003.799999997,346399.200000003 197987.799999997,346393.599999994 197971.900000006,346390.200000003 197941.599999994,346396.900000006 197911.799999997,346401.5 197880.200000003,346416.5 197832.200000003,346433.5 197790.700000003,346449.799999997 197751.900000006,346467.700000003 197704.299999997,346480.200000003 197686.299999997,346501.200000003 197682.5,346537.299999997 197670.900000006,346548.700000003 197661.299999997,346557.099999994 197624.700000003,346548.599999994 197600.400000006,346538.5 197586.900000006,346514.5 197571.799999997,346473.299999997 197580.200000003,346442.099999994 197576.200000003,346408.799999997 197557.5,346356.400000006 197535.099999994,346302.900000006 197505.5,346269.799999997 197463.099999994,346250.700000003 197445.299999997,346244.799999997 197431,346229.799999997 197391.099999994,346222.5 197356.200000003,346209.299999997 197330.900000006,346193 197295.700000003,346170.299999997 197240.5,346163.599999994 197206.900000006,346147.299999997 197158.799999997,346132 197126.200000003,346111.700000003 197075.400000006,346099.599999994 197040.599999994,346092.099999994 197005.799999997,346090.700000003 196966.200000003,346079.099999994 196914.5,346060.700000003 196874.299999997,346038.700000003 196845.799999997,346026.5 196800.599999994,346012.900000006 196730.299999997,346005 196697.5,345993 196683.400000006,345968.299999997 196635.5,345943.599999994 196562.799999997,345932.5 196492.799999997,345911.299999997 196413.099999994,345907.099999994 196382.799999997,345903.700000003 196356.299999997,345887.099999994 196300.700000003,345882 196257.799999997,345872.599999994 196226.700000003,345876.799999997 196207.200000003,345898.200000003 196172.200000003,345896.299999997 196162.700000003,345882.700000003 196134,345842.799999997 196099.900000006,345826.5 196087.5,345810.599999994 196071.599999994,345791.900000006 196032.900000006,345789.400000006 196011.5,345799.299999997 195979.400000006,345779.099999994 195887.700000003,345771.799999997 195829.799999997,345756.5 195784.200000003,345756.299999997 195752.700000003,345778.5 195741.099999994,345766.299999997 195722.700000003,345754.599999994 195711.900000006,345731.099999994 195677.5,345732.200000003 195630.599999994,345728.299999997 195611.799999997,345714.299999997 195586.299999997,345675.099999994 195564.700000003,345664.799999997 195557.599999994,345637.200000003 195541.799999997,345605.200000003 195509,345590.299999997 195471,345588.599999994 195416.200000003,345582.900000006 195362.400000006,345575.900000006 195332.099999994,345567.900000006 195285.900000006,345574.599999994 195259.700000003,345582 195228.200000003,345574.099999994 195183.900000006,345564.5 195158.700000003,345558.099999994 195127.099999994,345559.299999997 195056.299999997,345557.400000006 194980,345552.900000006 194913,345553.099999994 194872.299999997,345553 194814.400000006,345554.700000003 194766.799999997,345550.599999994 194687.799999997,345552.299999997 194655.400000006,345550.599999994 194615.799999997,345547.799999997 194573.200000003,345549.200000003 194434.299999997,345548.400000006 194378.099999994,345544.799999997 194326.799999997,345545.599999994 194273.400000006,345543.400000006 194229.5,345542.400000006 194102.400000006,345542.799999997 194045.5,345545.299999997 193957.700000003,345538.200000003 193757.099999994,345532.700000003 193721.5,345532.299999997 193642.200000003,345535 193526.700000003,345532.900000006 193482,345535.299999997 193417.900000006,345532.099999994 193351,345531.400000006 193304.099999994,345525 193187.799999997,345527.599999994 193120.299999997,345541.5 193070.5,345553.799999997 193027.400000006,345555.099999994 192987.5,345553.900000006 192962.299999997,345544.5 192948.299999997,345523.200000003 192916.400000006,345509.799999997 192880.200000003,345484.900000006 192773.900000006,345476.900000006 192725.900000006,345464.799999997 192692.799999997,345451.900000006 192660.400000006,345428.700000003 192543.099999994,345420.900000006 192509.799999997,345402 192438,345388 192381.400000006,345352.299999997 192249,345326.200000003 192158.400000006,345323.599999994 192145.400000006,345307.400000006 192097.5,345287.599999994 192047,345278.200000003 192027.200000003,345268.099999994 192002.200000003,345251.900000006 191950.299999997,345235.900000006 191907.900000006,345220.599999994 191865.299999997,345207.799999997 191833.5,345178.799999997 191738.400000006,345161.400000006 191684.099999994,345144.400000006 191627.599999994,345124.200000003 191550.099999994,345112.700000003 191523,345106.799999997 191499.900000006,345089.200000003 191461.799999997,345078.700000003 191418.599999994,345054.5 191360.900000006,345041.799999997 191312.599999994,345030.5 191287.700000003,345024.099999994 191256.099999994,344975.400000006 191082.799999997,344937 190983.700000003,344909.099999994 190875.799999997,344902.400000006 190841.299999997,344887.299999997 190805.5,344875 190759.900000006,344864 190728.200000003,344825.5 190666.200000003,344794.700000003 190596.5,344763.5 190542.400000006,344741.599999994 190487.200000003,344732.299999997 190443.900000006,344723.700000003 190372.5,344720.900000006 190331.099999994,344715.400000006 190306,344711.5 190288.400000006,344700.099999994 190241.700000003,344691.799999997 190186.400000006,344686.5 190175.299999997,344678 190139.5,344657.700000003 190075.5,344638.299999997 189943.799999997,344615.900000006 189896.099999994,344607.099999994 189865.299999997,344602.299999997 189854.299999997,344588.5 189802.799999997,344583 189777.599999994,344573.799999997 189711.700000003,344548.700000003 189646.400000006,344525.599999994 189563.799999997,344487.400000006 189433.200000003,344461.5 189319.599999994,344457 189292.799999997,344449.700000003 189257.400000006,344442.799999997 189214.5,344431.099999994 189181.900000006,344418.400000006 189132.299999997,344397.299999997 189060,344384.799999997 188995.900000006,344373.599999994 188938.799999997,344365.099999994 188892.700000003,344356.099999994 188869.400000006,344347.299999997 188837.099999994,344332.599999994 188782.5,344311.200000003 188714,344300.299999997 188677.200000003,344276.400000006 188503.099999994,344256.900000006 188448.5,344232.099999994 188387,344209.099999994 188316.799999997,344177.5 188213.299999997,344156.799999997 188165.900000006,344136.700000003 188122.099999994,344109.599999994 188073.900000006,344096.400000006 188038.5,344084.400000006 188010.299999997,344074.099999994 187978,344032 187900,344018.200000003 187865.599999994,344007.799999997 187843.599999994,343976.799999997 187763.299999997,343967.799999997 187737,343950.400000006 187688.099999994,343935.900000006 187627.299999997,343929.900000006 187612.299999997,343929.099999994 187571.799999997,343920.700000003 187561.400000006,343898.099999994 187528.5,343832.200000003 187399.400000006,343803.900000006 187338.5,343759.599999994 187216.200000003,343739.299999997 187174.400000006,343711.200000003 187121.5,343642 186939.299999997,343594.5 186828,343552.400000006 186695.599999994,343494.900000006 186553.900000006,343465.400000006 186459.200000003,343458.299999997 186417.900000006,343430.700000003 186333.5,343426.900000006 186314.799999997,343329.700000003 185976.799999997,343299.799999997 185837.099999994,343287.5 185760.400000006,343279 185682.900000006,343262.5 185542.900000006,343262.299999997 185487.299999997,343257.5 185408.799999997,343226.799999997 185225.099999994,343219.599999994 185150.5,343202.599999994 185068.400000006,343186.200000003 184961.900000006,343187.400000006 184936.900000006,343184 184869.400000006,343185.599999994 184836.5,343185.799999997 184672.700000003,343180.700000003 184543.299999997,343176.900000006 184427.200000003,343170.099999994 184292.900000006,343164.099999994 184241,343167.299999997 184175.599999994,343160.299999997 184119.400000006,343158.5 184074.299999997,343148 184014.400000006,343128.099999994 183934.099999994,343107 183870.599999994,343107.400000006 183861.599999994,343116.900000006 183815.900000006,343125.5 183762,343130 183746.799999997,343143.700000003 183724.599999994,343185.5 183676.099999994,343208.599999994 183661.799999997,343232.799999997 183632.700000003,343257.400000006 183608.200000003,343296.5 183578.900000006,343351.299999997 183551.599999994,343474.299999997 183521.5,343570 183499.599999994,343621.900000006 183474.599999994,343668.900000006 183454,343698.799999997 183446.5,343793.799999997 183417.299999997,343834.200000003 183406.799999997,343910.900000006 183381.599999994,343966 183371.799999997,344065.400000006 183344.799999997,344173.700000003 183312.700000003,344197.299999997 183310.299999997,344344.599999994 183294,344392.099999994 183293.400000006,344478.299999997 183311.299999997,344503.299999997 183318.099999994,344653.700000003 183335.5,344698.700000003 183352.200000003,344753.5 183370.599999994,344795.5 183370.599999994,344803.5 183366.799999997,344815.599999994 183339.900000006,344812 183316.799999997,344792.599999994 183283.900000006,344791.5 183256.200000003,344783 183220.5,344767.5 183183.5,344749.299999997 183147.900000006,344718.700000003 183112.299999997,344675.299999997 183076.099999994,344599 183039,344593.900000006 183032.099999994,344557.900000006 182996.799999997,344550.5 182966.5,344536.700000003 182927.299999997,344517.599999994 182912.900000006,344490.099999994 182909.5,344469.400000006 182900.099999994,344466.099999994 182882.5,344444.400000006 182847.400000006,344419.299999997 182777.200000003,344416.599999994 182764.799999997,344405.200000003 182725.299999997,344387.200000003 182687.700000003,344379.599999994 182646.400000006,344373.599999994 182597.099999994,344369.599999994 182559,344363.799999997 182457,344354.299999997 182330.599999994,344360.700000003 182197.599999994,344380.400000006 182099.5,344402.900000006 182032.099999994,344415.299999997 181985.299999997,344440.799999997 181930.299999997,344472.5 181860.700000003,344499.599999994 181747.200000003,344511.200000003 181704.400000006,344541.700000003 181658.5,344606.299999997 181542.400000006,344634 181478.099999994,344659.599999994 181424.799999997,344665.099999994 181356.400000006,344661.299999997 181338.200000003,344646.5 181307.099999994,344623.599999994 181271.799999997,344552.299999997 181195.5,344518.200000003 181166.400000006,344462.099999994 181110.599999994,344333 180989.700000003,344310.299999997 180971.900000006,344253.200000003 180924.599999994,344215.700000003 180880.799999997,344150.5 180800,344109.799999997 180738.099999994,344077 180695.099999994,344021.900000006 180606,343947.5 180480.400000006,343883.599999994 180357.700000003,343852.700000003 180303.799999997,343817 180222.799999997,343752.799999997 180108.599999994,343673.099999994 179983.400000006,343621.799999997 179912.299999997,343530.900000006 179755.099999994,343472.400000006 179636.799999997,343365.900000006 179396.099999994,343317.200000003 179286.400000006,343297.200000003 179250.400000006,343261.299999997 179174.5,343219.400000006 179096,343185.5 179041,343069.599999994 178832.299999997,342993.5 178689.799999997,342966.799999997 178650.799999997,342936.700000003 178597.099999994,342884.099999994 178494.599999994,342880.099999994 178480.700000003,342856.599999994 178432.200000003,342839.099999994 178394.599999994,342744.900000006 178208.299999997,342689.5 178087.200000003,342662.299999997 178032.299999997,342645.5 178004.599999994,342601.900000006 177926.700000003,342563 177860.700000003,342531.900000006 177794.099999994,342525.700000003 177786.700000003,342491.799999997 177718.799999997,342452 177648,342367.5 177495.599999994,342367.200000003 177481.200000003,342369.599999994 177468.599999994,342358.200000003 177443.400000006,342348.5 177416.5,342326.400000006 177389,342327.099999994 177375.799999997,342289.400000006 177310.700000003,342272 177272.299999997,342227.400000006 177180,342194.900000006 177141.599999994,342145.099999994 177053.400000006,342120.099999994 176999.400000006,342095 176959.200000003,342020.400000006 176812.599999994,341977.200000003 176741.400000006,341905.299999997 176612.799999997,341863.900000006 176551.599999994,341845.299999997 176523.299999997,341816.400000006 176474.799999997,341753 176360.5,341682.299999997 176184,341625.700000003 176077.5,341569.5 175969.599999994,341528.799999997 175906.299999997,341515.200000003 175878.900000006,341479.599999994 175808.599999994,341450.799999997 175744.700000003,341418.400000006 175695.799999997,341357.900000006 175580.5,341345.099999994 175546,341310.900000006 175482,341291.299999997 175440.799999997,341258.700000003 175384.799999997,341230.400000006 175313.599999994,341175.799999997 175210.5,341121 175069.5,341091.099999994 175014.200000003,341072.200000003 174971.5,341020.099999994 174856,340985.400000006 174792,340954.400000006 174727.400000006,340923.200000003 174663.200000003,340909.799999997 174619.200000003,340874.099999994 174533,340853.900000006 174482.700000003,340820.900000006 174430,340797.599999994 174342.400000006,340780.299999997 174291.299999997,340749.099999994 174228.400000006,340720.400000006 174112.400000006,340710.799999997 174051.200000003,340694.5 173954.200000003,340677.400000006 173898.799999997,340670.200000003 173874,340663.700000003 173859.099999994,340645.200000003 173794,340628.299999997 173722.299999997,340611.799999997 173664.400000006,340605.700000003 173631.799999997,340597 173597.5,340606.5 173590.400000006,340606.400000006 173575.5,340601.900000006 173556,340564.200000003 173475.299999997,340548.400000006 173457,340533.599999994 173424.400000006,340523.299999997 173378.099999994,340509.299999997 173342.400000006,340509.299999997 173321.099999994,340496.700000003 173268,340486.400000006 173234.400000006,340473.400000006 173201.900000006,340463.299999997 173163.599999994,340455.700000003 173148.5,340443.299999997 173113.799999997,340433.5 173094.5,340431.900000006 173082.5,340414.099999994 173051.599999994,340401.299999997 173015.599999994,340376.299999997 172960.200000003,340371.599999994 172944.299999997,340353.599999994 172897.700000003,340338.799999997 172868.200000003,340311.299999997 172775.799999997,340292.299999997 172731.099999994,340279.099999994 172705.799999997,340268.299999997 172670.799999997,340259.700000003 172660.200000003,340244.700000003 172633.700000003,340209 172578.400000006,340200.5 172552.700000003,340202.900000006 172543.099999994,340202.799999997 172522.099999994,340202 172512,340188.599999994 172492.700000003,340170.900000006 172457,340151.200000003 172431.099999994,340136.099999994 172392.5,340114.700000003 172352.900000006,340111.700000003 172337.700000003,340086.700000003 172284.799999997,340079.700000003 172254.400000006,340066.700000003 172228.700000003,340056 172198.900000006,340043.799999997 172164.099999994,340024.200000003 172121.400000006,340016.099999994 172099.200000003,339994.200000003 172056.5,339970.799999997 171994.200000003,339959.200000003 171973.700000003,339945.400000006 171945.5,339907.799999997 171869.5,339896.299999997 171843.700000003,339887.099999994 171825.099999994,339879.700000003 171799.599999994,339865.5 171771.900000006,339806.400000006 171651.5,339793.599999994 171618.400000006,339761.299999997 171566.5,339730.799999997 171533.599999994,339698.599999994 171479.599999994,339685.700000003 171447.099999994,339674 171429.099999994,339640.099999994 171368.5,339617.599999994 171338.400000006,339592.299999997 171302.900000006,339534.599999994 171229.299999997,339521.400000006 171200.200000003,339489.5 171141.599999994,339459.400000006 171111.099999994,339453.400000006 171102,339432.700000003 171081.599999994,339391.200000003 171032.700000003,339319.099999994 170968.900000006,339277.799999997 170938.799999997,339232.900000006 170895,339182.400000006 170861.700000003,339153.400000006 170847.299999997,339089.200000003 170807.599999994,339057.700000003 170786,339013.5 170755.099999994,339001.200000003 170740.599999994,338993.200000003 170714.700000003,338981.900000006 170675.799999997,338958.599999994 170622.5,338944 170542.099999994,338920.299999997 170485.200000003,338919.5 170471.299999997,338909.099999994 170452.700000003,338890.299999997 170396.599999994,338866.5 170339.299999997,338852.799999997 170312.099999994,338847.200000003 170289.799999997,338804.799999997 170158.700000003,338799 170130.400000006,338784.799999997 170062.299999997,338772 170030.5,338768.900000006 169997.200000003,338759.099999994 169973.799999997,338751.799999997 169938.5,338744.799999997 169921.200000003,338739.400000006 169896.599999994,338726.900000006 169879.5,338712.799999997 169874.099999994,338696.200000003 169871.299999997,338620.799999997 169859.299999997,338592.099999994 169846.5,338547.799999997 169829.200000003,338529.099999994 169817.799999997,338483.299999997 169794.799999997,338417.299999997 169753.900000006,338342.200000003 169713.599999994,338277.099999994 169665.799999997,338251.700000003 169633.900000006,338236.299999997 169614,338195.200000003 169555.700000003,338169 169526.5,338134.599999994 169477.599999994,338113 169451,338075.799999997 169389,338065.599999994 169359.5,338050.799999997 169319,338014.400000006 169230.099999994,337990.599999994 169173,337976 169122.900000006,337961.200000003 169047,337937.799999997 168968.799999997,337925.599999994 168939.099999994,337888.700000003 168844.099999994,337864.299999997 168752.200000003,337824 168661.299999997,337790.200000003 168602.5,337756.700000003 168562.299999997,337685.799999997 168497.099999994,337651.900000006 168467.700000003,337601.299999997 168427,337485.700000003 168368.599999994,337402.200000003 168344.299999997,337359.299999997 168333.700000003,337272.200000003 168309.099999994,337224.099999994 168291.099999994,337183.099999994 168282.5,337108 168263.599999994,337071.299999997 168254.299999997,337010.900000006 168234.799999997,336931.099999994 168216.700000003,336858.299999997 168206.400000006,336789.200000003 168188,336759.200000003 168176.200000003,336667.799999997 168150.900000006,336620.400000006 168137.599999994,336563.900000006 168124.099999994,336540.599999994 168118.200000003,336525.900000006 168113.299999997,336501.299999997 168107.900000006,336454.799999997 168089.900000006,336398.5 168069.700000003,336371.5 168057.700000003,336297.5 168032.400000006,336251.799999997 168018.700000003,336216.799999997 168011.700000003,336181 168000.799999997,336105.400000006 167973.200000003,336028 167947.200000003,335961.200000003 167931.799999997,335856.799999997 167902.200000003,335758.299999997 167871.5,335715.799999997 167857.200000003,335679.099999994 167844,335630.400000006 167817.900000006,335523.299999997 167758.900000006,335447.200000003 167714.099999994,335410.400000006 167693.299999997,335357 167673.900000006,335326.700000003 167666.400000006,335286.5 167652.299999997,335197 167635.900000006,335177.099999994 167637.900000006,335099.799999997 167643.400000006,335029.200000003 167674.400000006,334948.799999997 167729.299999997,334931.900000006 167746.5,334908.099999994 167762.299999997,334850.400000006 167812.299999997,334807.099999994 167858.299999997,334786.5 167877.700000003,334749.400000006 167906.599999994,334665.200000003 167980.299999997,334610.099999994 168027.5,334562.799999997 168070.799999997,334537.799999997 168091.900000006,334454.900000006 168163.799999997,334330.200000003 168277.900000006,334282.799999997 168314.900000006,334262.599999994 168333.900000006,334187.099999994 168400.400000006,334160.400000006 168415.5,334097.299999997 168452.599999994,334056.799999997 168478.400000006,334026.799999997 168488.400000006,333912.799999997 168559.900000006,333846.5 168597.599999994,333816 168617.5,333784.200000003 168633,333719.799999997 168669.700000003,333691.700000003 168691.599999994,333633.299999997 168727.400000006,333527.099999994 168808.799999997,333454.900000006 168843.299999997,333403 168861.099999994,333350.200000003 168873.599999994,333319.900000006 168877.599999994,333238.799999997 168882.700000003,333169.5 168887.900000006,333131.799999997 168891.900000006,333064.599999994 168892.700000003,333020.299999997 168889.599999994,332911.5 168887.299999997,332827.099999994 168887.799999997,332799.900000006 168887.799999997,332732.700000003 168887.099999994,332629.599999994 168890.900000006,332520.599999994 168881.5,332465.200000003 168870.900000006,332397.900000006 168864.700000003,332342.799999997 168871.599999994,332304 168867.900000006,332200.400000006 168880.5,332189.900000006 168878.900000006,332148.799999997 168879.700000003,332119.5 168873.400000006,332090.299999997 168870.5,332052 168865.299999997,332024.299999997 168867,331937.799999997 168877.200000003,331860 168878.900000006,331823 168876.799999997,331781.099999994 168881.599999994,331749.200000003 168882.599999994,331735.299999997 168885,331714.799999997 168886.099999994,331678.5 168888.099999994,331660.5 168889.200000003,331643.5 168894.5,331605 168896.799999997,331571.299999997 168893.299999997,331524.900000006 168896.099999994,331482.599999994 168899.900000006,331448.799999997 168903.200000003,331436.799999997 168901.900000006,331421.400000006 168904.900000006,331342 168905.799999997,331316.5 168907.900000006,331228.400000006 168903.799999997,331167.799999997 168898.5,331121.299999997 168892,331040.400000006 168882.799999997,330999 168878.900000006,330830 168875,330771.299999997 168882,330727.700000003 168888.5,330713.5 168893.700000003,330672 168919.599999994,330648.5 168937.099999994,330571.299999997 168975.200000003,330519.299999997 169015.700000003,330490.5 169028.099999994,330431.099999994 169046.900000006,330411.900000006 169048.5,330350.099999994 169041,330330.799999997 169030,330271.5 168999.5,330224.5 168961.5,330191.799999997 168932.799999997,330154.099999994 168889.599999994,330127.200000003 168850.799999997,330103 168826.299999997,330086.099999994 168803.299999997,330077.900000006 168787.200000003,330055.200000003 168747.299999997,330021.5 168708,330004.099999994 168680.799999997,329962.799999997 168637.799999997,329943.5 168618.200000003,329921.5 168598.299999997,329886.900000006 168564.099999994,329859.799999997 168542.299999997,329785.299999997 168465.400000006,329735.599999994 168420.700000003,329708.299999997 168401.5,329697.200000003 168383.400000006,329642.700000003 168339.400000006,329617.900000006 168317.099999994,329603.599999994 168304.299999997,329565.799999997 168276.200000003,329533.5 168248.5,329482.299999997 168209.900000006,329404.599999994 168146.700000003,329385.400000006 168122.299999997,329345 168085.599999994,329306.099999994 168048,329292.5 168040.700000003,329291.900000006 168050.599999994,329274.700000003 168071.900000006,329250.599999994 168110.5,329223.400000006 168160.700000003,329211 168182.900000006,329190.299999997 168213.299999997,329170.299999997 168251.799999997,329143.900000006 168286.400000006,329131.900000006 168311,329115.299999997 168341.400000006,329110.299999997 168358,329075.700000003 168412.200000003,329062.400000006 168439.799999997,329034.200000003 168479.400000006,329008.299999997 168513.700000003,328980 168563.5,328946.799999997 168618.400000006,328915.799999997 168657.299999997,328877.799999997 168698.799999997,328831.599999994 168768.299999997,328817.299999997 168792.799999997,328782 168837.5,328741.799999997 168872.200000003,328701.400000006 168923,328674.5 168953.299999997,328641.799999997 168974,328567.400000006 169016.099999994,328534.099999994 169031.900000006,328500 169053.5,328459.799999997 169064.900000006,328408.599999994 169077.799999997,328380.400000006 169088,328340.700000003 169099.599999994,328300.099999994 169106,328246.400000006 169110.599999994,328216.099999994 169112,328133.700000003 169112.299999997,328079 169108.400000006,328011 169096.700000003,327921.400000006 169072.400000006,327862 169053.900000006,327776.900000006 169009.400000006,327720.099999994 168988.200000003,327681 168974,327582.099999994 168920.700000003,327558.400000006 168911.5,327552.700000003 168904.200000003,327531.400000006 168905.400000006,327448.099999994 168876.299999997,327353.799999997 168857.799999997,327281.400000006 168839.200000003,327188.099999994 168826.200000003,327117.599999994 168818.799999997,327006.799999997 168819.200000003,326934.099999994 168838.099999994,326850.299999997 168853.700000003,326800.900000006 168865.799999997,326778 168869.299999997,326730.099999994 168889.299999997,326680.200000003 168914.200000003,326658.599999994 168919.5,326614.599999994 168948.200000003,326607.900000006 168960,326557.099999994 168982.200000003,326536.900000006 168988.299999997,326477 169031.400000006,326402.400000006 169103.099999994,326371 169142.299999997,326339.799999997 169182.400000006,326314.200000003 169225.700000003,326295.099999994 169269.400000006,326278.700000003 169296.799999997,326249.099999994 169353.200000003,326219.400000006 169439.900000006,326181.599999994 169524.799999997,326177.5 169546.299999997,326142.599999994 169657.799999997,326123.099999994 169725.5,326098.400000006 169848.400000006,326087.299999997 169902.700000003,326057.099999994 169968.5,326044.700000003 170012.400000006,326007.799999997 170166,325999.299999997 170205.799999997,326011.5 170276,326027.5 170322.200000003,326061.700000003 170373.299999997,326086 170418.799999997,326110.5 170441.599999994,326149.099999994 170467,326183.900000006 170495.299999997,326211.799999997 170513.799999997,326257.599999994 170540.799999997,326285.799999997 170553.599999994,326364.400000006 170580.799999997,326464.700000003 170610.5,326532.799999997 170637.099999994,326588.900000006 170669.099999994,326626.700000003 170682.799999997,326673.099999994 170717.5,326721.299999997 170755.099999994,326776.400000006 170799.599999994,326852.400000006 170882.700000003,326871.5 170907.799999997,326903.200000003 170952.799999997,326939.599999994 171020.5,326947.400000006 171045.700000003,326969.299999997 171105.200000003,326992.700000003 171156.200000003,327003.5 171169.200000003,327021.200000003 171200.900000006,327050.799999997 171234.900000006,327075.400000006 171275.099999994,327115 171326.400000006,327231.5 171443.5,327268.099999994 171470.5,327322.299999997 171517.599999994,327402.599999994 171573.900000006,327448.5 171606.200000003,327468.099999994 171624.099999994,327524.700000003 171659.900000006,327556 171688.599999994,327592.299999997 171721.5,327611.599999994 171744.700000003,327639.599999994 171775.599999994,327663.400000006 171816.900000006,327681.799999997 171860,327692.5 171925.200000003,327695.799999997 172008.200000003,327690.299999997 172069.200000003,327688 172115.700000003,327680.5 172147.900000006,327678.5 172175.900000006,327661.200000003 172236.5,327639.400000006 172286.5,327611.400000006 172381.900000006,327596.200000003 172449.5,327580.5 172495.099999994,327547.5 172594,327514.700000003 172677.299999997,327495.799999997 172740.700000003,327486.700000003 172804.700000003,327474 172870.299999997,327473.900000006 172932.799999997,327479.799999997 172971.700000003,327476.299999997 172986,327483 173019.5,327490 173035.799999997,327486.5 173054.900000006,327494.099999994 173072.900000006,327512.5 173105.900000006,327541 173137.799999997,327573.299999997 173165.299999997,327594.799999997 173184,327608.200000003 173194.099999994,327649.700000003 173228.799999997,327665.299999997 173255.900000006,327682.200000003 173268.599999994,327708.099999994 173294.700000003,327734.200000003 173327.299999997,327744.099999994 173347,327760.599999994 173369,327765.900000006 173378.900000006,327767.900000006 173388.599999994,327770.5 173407.299999997,327769.799999997 173436.900000006,327745.200000003 173473.700000003,327723.900000006 173499.799999997,327685.900000006 173528,327651.200000003 173545.400000006,327589.599999994 173575.099999994,327553 173596.799999997,327505.599999994 173618.099999994,327444.900000006 173638.700000003,327422.900000006 173644.5,327349 173657.799999997,327298.200000003 173663.400000006,327234 173666.599999994,327197.700000003 173662.700000003,327166 173654.400000006,327140.900000006 173650.099999994,327098.5 173633.799999997,327026.400000006 173603,327001 173591.099999994,326985.900000006 173581.400000006,326930.200000003 173563.599999994,326897.5 173549.799999997,326865.900000006 173534.599999994,326831.299999997 173528.700000003,326817.200000003 173530.299999997,326779.799999997 173534.400000006,326732.299999997 173555.799999997,326706.900000006 173582.599999994,326691.799999997 173635.599999994,326687.200000003 173657.099999994,326687.599999994 173669.700000003,326676.900000006 173692.700000003,326675.599999994 173717.400000006,326667 173734.900000006,326669.400000006 173758.700000003,326666.200000003 173789.400000006,326667.799999997 173807.299999997,326665.5 173851.700000003,326671.799999997 173875.099999994,326674 173893.200000003,326683.799999997 173923.700000003,326680.900000006 173958,326686 173979.099999994,326674.900000006 174019,326666.400000006 174048.799999997,326657.5 174069.299999997,326654.599999994 174103.099999994,326637.400000006 174160.400000006,326612.299999997 174206.799999997,326595.700000003 174236.599999994,326542.799999997 174296.400000006,326513.5 174354.900000006,326492.799999997 174399.400000006,326475.799999997 174499.700000003,326484.299999997 174524.299999997,326486.299999997 174542.200000003,326483.900000006 174578.099999994,326490.900000006 174608.700000003,326499 174619.299999997,326543.299999997 174649.299999997,326557.799999997 174660,326603.700000003 174667.799999997,326623.299999997 174671.700000003,326671.5 174674.700000003,326720 174679.5,326729.400000006 174687.400000006,326750.900000006 174688.799999997,326781.700000003 174684.799999997,326862.400000006 174670.599999994,326886.799999997 174669.5,326908.799999997 174662.099999994,326991.799999997 174653.400000006,327012.799999997 174650.799999997,327046 174651.299999997,327069.299999997 174668.700000003,327083.200000003 174677.700000003,327099.799999997 174696.099999994,327113.799999997 174729.900000006,327124.700000003 174743.599999994,327135.599999994 174790.099999994,327117.299999997 174844.299999997,327085.799999997 174885.700000003,327068.700000003 174916.400000006,327069.700000003 174933.5,327073.299999997 174957.900000006,327079.400000006 174992.099999994,327102.299999997 175038.799999997,327123.400000006 175053.700000003,327136.5 175067,327173.900000006 175104.299999997,327200.200000003 175120.900000006,327229.200000003 175143.900000006,327254.200000003 175160.799999997,327263.099999994 175164.5,327292.299999997 175184.799999997,327353.599999994 175222.5,327368.200000003 175231.299999997,327388.799999997 175242,327458.799999997 175275.299999997,327481 175289.099999994,327505.200000003 175299.700000003,327553.299999997 175328.200000003,327585.700000003 175353.099999994,327605.700000003 175389.099999994,327616.700000003 175422,327647.700000003 175480.900000006,327656.700000003 175505.5,327680.5 175586.200000003,327687.099999994 175611.299999997,327699 175662.200000003,327723.599999994 175729.799999997,327745.099999994 175797,327760.700000003 175833.099999994,327771 175870.599999994,327791.599999994 175941.200000003,327818.299999997 175999.400000006,327827.099999994 176028.700000003,327838 176061,327879.099999994 176123.400000006,327912.799999997 176170,327945.099999994 176215.700000003,327959.900000006 176245.799999997,327983.799999997 176272.200000003,327977.599999994 176288.799999997,327959.099999994 176298.799999997,327927 176326.700000003,327878.400000006 176359.099999994,327787.700000003 176404.900000006,327776.900000006 176415.799999997,327741 176435.599999994,327681 176468.5,327603.299999997 176521.299999997,327576.5 176534.900000006,327535.5 176563.5,327485.599999994 176597.900000006,327427.400000006 176632,327364.799999997 176671.599999994,327325.400000006 176686.700000003,327257.799999997 176724.200000003,327223.700000003 176747.900000006,327196.200000003 176765,327155.799999997 176795.099999994,327106.599999994 176825.700000003,327001.599999994 176881.799999997,326982.099999994 176895.799999997,326945.200000003 176914.299999997,326853.799999997 176970.799999997,326834.799999997 176977.700000003,326772.700000003 177018.299999997,326734.099999994 177043.299999997,326703.700000003 177059.700000003,326622.299999997 177114.400000006,326505.400000006 177189.900000006,326408.299999997 177241.900000006,326363.700000003 177268.700000003,326329.299999997 177283,326233 177341.799999997,326200.299999997 177359.299999997,326108.799999997 177421,326027.799999997 177475.099999994,325995.299999997 177498.400000006,325858.400000006 177579.599999994,325829.299999997 177591.700000003,325740.700000003 177645,325708.799999997 177660.299999997,325616.900000006 177713.5,325489.900000006 177789.799999997,325405.099999994 177835.700000003,325367 177863.299999997,325347.200000003 177874.599999994,325303.599999994 177902.900000006,325207.799999997 177964.799999997,325159.400000006 177994.900000006,325134.200000003 178008.700000003,325106 178021.200000003,325091 178029.400000006,325040 178061.799999997,325031.200000003 178068.799999997,325021.200000003 178075.799999997,325002.5 178089,324985.099999994 178098.799999997,324959.599999994 178117,324947.400000006 178118.900000006,324904.5 178148.5,324866.5 178173.799999997,324849.700000003 178186.900000006,324749.099999994 178246.400000006,324643.299999997 178306.900000006,324595.299999997 178337.799999997,324558.400000006 178369.099999994,324518.799999997 178392.5,324491.700000003 178404.400000006,324437 178438,324403 178468.799999997,324370.200000003 178487,324325.700000003 178511.900000006,324274.599999994 178545.599999994,324225.099999994 178572.900000006,324120.200000003 178635.299999997,324058.200000003 178675.400000006,324017.5 178703,323988.599999994 178717.200000003,323901.900000006 178778.700000003,323864.099999994 178800.5,323768.200000003 178856,323744.700000003 178865.099999994,323722.299999997 178881.400000006,323689.900000006 178905.099999994,323639.5 178938.799999997,323590.799999997 178962.799999997,323551.299999997 178983.900000006,323495.5 179000.400000006,323473.700000003 179018.700000003,323449.700000003 179039,323421.700000003 179060.200000003,323396.5 179066.799999997,323370.5 179057.799999997,323357 179038.200000003,323345.099999994 179021.5,323327.700000003 179010,323307.799999997 179011.799999997,323287.799999997 179024.799999997,323241.700000003 179045,323198.299999997 179058.900000006,323160.700000003 179063.200000003,323139.5 179052.099999994,323119.099999994 179037.099999994,323100.5 179001.799999997,323084.299999997 178972.5,323075.900000006 178949.900000006,323057.799999997 178924.400000006,323028.400000006 178895.099999994,323006.299999997 178884,322976.200000003 178859,322941.599999994 178852,322892 178852.599999994,322835.400000006 178865.400000006,322813.299999997 178863.700000003,322797.599999994 178861.700000003,322774.700000003 178849.900000006,322758 178846.599999994,322723.5 178827,322709.5 178817.200000003,322624 178754.700000003,322596.700000003 178733.799999997,322576.299999997 178721,322565.799999997 178714,322542.200000003 178703.799999997,322497.200000003 178697.299999997,322476.799999997 178699.299999997,322405.5 178714.400000006,322376.700000003 178728.299999997,322332.900000006 178744.200000003,322269.299999997 178770.599999994,322226.299999997 178808.200000003,322186.599999994 178832.799999997,322137.299999997 178844.700000003,322103.5 178846.799999997,322064.599999994 178852.599999994,322049.700000003 178850.599999994,322029.400000006 178846.099999994,322009.599999994 178832.799999997,321958.799999997 178784.900000006,321895.299999997 178717.5,321860.299999997 178682.099999994,321811.5 178634.5,321783.799999997 178608,321754.5 178580.5,321729.799999997 178565.400000006,321689.900000006 178555.799999997,321675.700000003 178550.700000003,321659 178547.5,321621.799999997 178534.099999994,321579.099999994 178521.799999997,321516.599999994 178491.799999997,321475.5 178473.799999997,321436.400000006 178456,321387.599999994 178447.700000003,321360.700000003 178443.400000006,321320.700000003 178436,321290 178431,321230.400000006 178422.700000003,321116.799999997 178402,321093.599999994 178401.099999994,321071 178400.900000006,321048.799999997 178400.099999994,320998.900000006 178401.799999997,320968.200000003 178411.799999997,320903.799999997 178434.400000006,320879.299999997 178448.799999997,320824 178479.299999997,320791.799999997 178495.799999997,320751.599999994 178510.099999994,320717.700000003 178523.700000003,320676.299999997 178521.5,320604.099999994 178531.799999997,320559.599999994 178532.099999994,320508.400000006 178519.400000006,320465.400000006 178509.599999994,320435.200000003 178503.799999997,320368.400000006 178498.799999997,320306.299999997 178488,320235.099999994 178480.700000003,320218.299999997 178474.5,320201.799999997 178468.200000003,320175.400000006 178468.099999994,320157.299999997 178469.700000003,320117.5 178469.5,320103.799999997 178466,320056.299999997 178458.200000003,319968.099999994 178428.599999994,319937.599999994 178413,319901 178387.299999997,319764.799999997 178297.400000006,319694.200000003 178253.299999997,319660.200000003 178235.099999994,319639.5 178228.5,319597.099999994 178211.700000003,319577.099999994 178205.900000006,319542.099999994 178203.700000003,319521.599999994 178206.299999997,319495.900000006 178204.400000006,319467.099999994 178206.700000003,319419.799999997 178215.599999994,319396.700000003 178221.200000003,319316.5 178239.599999994,319227.700000003 178258.799999997,319149.200000003 178282.400000006,319130.099999994 178287.700000003,319028.799999997 178321.599999994,318921.700000003 178348.5,318884 178358.599999994,318780.799999997 178405.799999997,318756.400000006 178411.5,318728.799999997 178424.799999997,318669.599999994 178481.700000003,318632.400000006 178503.200000003,318567.599999994 178553.599999994,318500 178618.200000003,318456 178671.799999997,318435.400000006 178701.5,318413.200000003 178734.5,318361.200000003 178805,318335.599999994 178839.5,318308 178862.900000006,318278.900000006 178879.5,318250.599999994 178891.5,318195.900000006 178930.799999997,318170.599999994 178942.799999997,318056.900000006 178971.5,318007.900000006 178975.799999997,317957.299999997 178971.599999994,317912.700000003 178961.5,317866.5 178955.799999997,317823.599999994 178924.799999997,317736.5 178898.900000006,317684.799999997 178873.5,317656.5 178853.700000003,317617.799999997 178823.400000006,317562.900000006 178785.799999997,317523 178756.299999997,317464.299999997 178727.5,317400.299999997 178681.799999997,317360.099999994 178671.400000006,317294.099999994 178656.299999997,317215.599999994 178617.099999994,317086.200000003 178569.200000003,317021.299999997 178554.700000003,316952.799999997 178536.599999994,316870 178517.900000006,316828.299999997 178512.5,316774.400000006 178507.400000006,316697.299999997 178498.799999997,316569 178481.599999994,316419.799999997 178472.200000003,316295.099999994 178479.799999997,316204.700000003 178485.799999997,316164.299999997 178485.099999994,316101.799999997 178490.400000006,316057.900000006 178491.299999997,315974.400000006 178513.099999994,315921 178524,315852.299999997 178551.099999994,315807.200000003 178566.700000003,315774 178580.200000003,315710.700000003 178599.900000006,315610.799999997 178628.900000006,315575.5 178634.599999994,315480.700000003 178659.099999994,315437.900000006 178661.700000003,315405.799999997 178666.900000006,315351.700000003 178668.299999997,315288.599999994 178657.599999994,315223.299999997 178639.299999997,315192 178624.700000003,315157.099999994 178601.400000006,315095.299999997 178575.400000006,315039.700000003 178533.599999994,315015.599999994 178472.900000006,315003.299999997 178431.200000003,314995.299999997 178409.599999994,314978.200000003 178355.200000003,314959.299999997 178286.700000003,314917.799999997 178184.799999997,314913 178173.900000006,314894.700000003 178157.200000003,314885.099999994 178153.5,314859.400000006 178136.299999997,314832.099999994 178108,314803.400000006 178090.900000006,314768.099999994 178085.5,314770.400000006 178101.200000003,314774.599999994 178114.700000003,314774.400000006 178130.799999997,314774.799999997 178148.299999997,314775.299999997 178173,314763.900000006 178188.099999994,314765.400000006 178206.799999997,314760.599999994 178218.599999994,314763.200000003 178228.299999997,314752.799999997 178242.200000003,314742.599999994 178252.599999994,314693.400000006 178363.099999994,314677.799999997 178402.099999994,314649.599999994 178451.599999994,314603.799999997 178502.400000006,314594.599999994 178521,314581.5 178542.299999997,314570.099999994 178577.900000006,314563.099999994 178610.299999997,314539 178648.900000006,314519.5 178681.599999994,314505.400000006 178726,314498.5 178730.299999997,314491.299999997 178813.599999994,314490.099999994 178854.200000003,314486.5 178903,314478.299999997 178922.700000003,314446.299999997 178960.5,314426.400000006 178976.900000006,314394.099999994 178986.700000003,314376.200000003 178969.799999997,314352.700000003 178961.299999997,314320.400000006 178991.599999994,314312.099999994 179030.799999997,314308.5 179112.700000003,314319.200000003 179153.799999997,314337.700000003 179181.599999994,314351 179194.5,314364 179234.099999994,314362.700000003 179261.099999994,314350.5 179277.700000003,314297.299999997 179321.200000003,314279.900000006 179334.5,314252.799999997 179407.5,314254.299999997 179473.799999997,314260.799999997 179519.799999997,314271.5 179569.599999994,314278.200000003 179592.799999997,314288.799999997 179619.5,314298.799999997 179649.599999994,314318.599999994 179698.599999994,314326.5 179722.900000006,314376.5 179842.599999994,314393.200000003 179910.299999997,314391.900000006 179935.700000003,314426.799999997 180008,314436.900000006 180038.599999994,314442.299999997 180097.599999994,314458.099999994 180171.700000003,314478.900000006 180268.700000003,314502.799999997 180322.099999994,314519 180372.799999997,314527.799999997 180404.299999997,314548.799999997 180449.400000006,314563.799999997 180478.400000006,314580.599999994 180515.299999997,314597.700000003 180550.5,314606.799999997 180583.299999997,314636.400000006 180642.900000006,314694.900000006 180785.299999997,314707.400000006 180815.200000003,314725.900000006 180840.200000003,314759.299999997 180906.700000003,314771.700000003 180925.5,314793.400000006 180988.299999997,314819.099999994 181036.5,314828.5 181055.799999997,314845.400000006 181077.299999997,314868.400000006 181121.799999997,314904.200000003 181168.5,314928.700000003 181218.400000006,314961.400000006 181288.299999997,314983.599999994 181335.099999994,315024.200000003 181381.599999994,315050.5 181406.900000006,315066.700000003 181431.799999997,315096.599999994 181460,315122.299999997 181477.599999994,315149.599999994 181518.599999994,315192.400000006 181554.900000006,315227.099999994 181571.099999994,315264.299999997 181604.599999994,315332.599999994 181660.200000003,315365.299999997 181683.700000003,315394.400000006 181710.599999994,315505 181774.900000006,315550.700000003 181796.599999994,315579.400000006 181812.799999997,315617.099999994 181830.200000003,315649.5 181850.900000006,315661.299999997 181869.599999994,315675.200000003 181884.200000003,315685.200000003 181908.799999997,315714.200000003 181992.599999994,315720.299999997 182027,315723.200000003 182129.099999994,315732.099999994 182231.799999997,315741.400000006 182363.099999994,315747.5 182457.400000006,315763.5 182524.200000003,315784.700000003 182671.5,315788.700000003 182711,315793.299999997 182754,315785.900000006 182806,315767.400000006 182831.599999994,315713.299999997 182843,315703.799999997 182854.200000003,315692.799999997 182878.799999997,315678.799999997 182898.900000006,315665.599999994 182930.299999997,315651.5 182947.5,315641.900000006 182964.099999994,315623.700000003 182992.599999994,315576.099999994 183067.700000003,315556.099999994 183108.900000006,315542.799999997 183137.799999997,315537.900000006 183151.900000006,315502.5 183197.799999997,315500.099999994 183224.5,315505.599999994 183247.700000003,315520.5 183284.400000006,315535 183299.099999994,315544.400000006 183327.700000003,315552.400000006 183358.200000003,315553.799999997 183367.200000003,315550.700000003 183394.200000003,315562.900000006 183418.099999994,315591.200000003 183439.200000003,315611.299999997 183468.599999994,315620 183487.200000003,315631.400000006 183502,315642.200000003 183528.200000003,315665.700000003 183573.799999997,315673.200000003 183604.299999997,315671.700000003 183648.799999997,315670.900000006 183691.900000006,315640.299999997 183741.099999994,315640.700000003 183756.5,315644.299999997 183769.400000006,315641.299999997 183828.900000006,315648.5 183866.099999994,315651.900000006 183892.799999997,315668.900000006 183930.5,315678.299999997 183960.299999997,315695.299999997 183993.299999997,315703.599999994 184021.5,315722.5 184061.599999994,315750 184102,315787.799999997 184164.799999997,315821.400000006 184232.200000003,315856.700000003 184295.200000003,315872.700000003 184333.200000003,315893.700000003 184363,315932.099999994 184388.900000006,315958.900000006 184415.400000006,315964.5 184425.299999997,315974.299999997 184435.599999994,316014.400000006 184496.900000006,316055.299999997 184558.299999997,316091.299999997 184620.900000006,316109.799999997 184651.299999997,316147.200000003 184696.900000006,316169.299999997 184734.900000006,316183.700000003 184762.099999994,316206.5 184798.200000003,316218.599999994 184823,316237.599999994 184839.200000003,316252.400000006 184870.200000003,316291.400000006 184932.200000003,316308.400000006 184967.299999997,316333.200000003 185000,316344.200000003 185035.599999994,316362.200000003 185069,316373.799999997 185114,316391.5 185159.900000006,316423.799999997 185235.200000003,316447.900000006 185284,316459.299999997 185298.5,316467.5 185316.099999994,316469.299999997 185327.599999994,316500.900000006 185379.599999994,316523.799999997 185431.900000006,316531.200000003 185453.299999997,316556.900000006 185489.799999997,316575.599999994 185514.200000003,316596.799999997 185545.400000006,316617.200000003 185584.900000006,316620.299999997 185595.200000003,316636.599999994 185620.5,316647.599999994 185653.599999994,316662.299999997 185685.5,316666.400000006 185720.400000006,316684.299999997 185798.900000006,316703.299999997 185851,316715.200000003 185894.299999997,316714.099999994 185906.799999997,316724.099999994 185918.799999997,316751.700000003 185922.400000006,316762.799999997 185927.099999994,316757.799999997 185952.700000003,316738.099999994 185976.900000006,316724.799999997 185992.700000003,316725.700000003 186009.299999997,316734.599999994 186024.900000006,316748.099999994 186056.200000003,316752.200000003 186074.299999997,316744.200000003 186101.599999994,316756.599999994 186130.599999994,316768.099999994 186153.400000006,316782.5 186164.099999994,316797.400000006 186204.599999994,316804.099999994 186214.400000006,316821.299999997 186233.299999997,316855.599999994 186293.5,316873.5 186307.900000006,316911.400000006 186368.099999994,316940.599999994 186424.099999994,316946.599999994 186434.799999997,316961.700000003 186510.599999994,316965 186520.700000003,316979.299999997 186539,316990.599999994 186584.700000003,316994.200000003 186597.700000003,317018.400000006 186638.900000006,317038.700000003 186669.299999997,317070.599999994 186694.299999997,317085.900000006 186722.900000006,317090.400000006 186730.799999997,317089.900000006 186742.299999997,317097.799999997 186764.900000006,317121.5 186810.200000003,317140.299999997 186835.200000003,317160.299999997 186880,317168.5 186905.5,317211.900000006 186991.099999994,317257.900000006 187073.5,317297.700000003 187156,317308.700000003 187177.599999994,317342.200000003 187247.400000006,317351.200000003 187269.299999997,317388.299999997 187349.400000006,317406.700000003 187390.599999994,317474.099999994 187525.799999997,317552.799999997 187692.400000006,317577.200000003 187735.599999994,317621.700000003 187821.5,317694.400000006 187969.400000006,317716.5 188024,317743.900000006 188078.799999997,317781.599999994 188157.799999997,317816 188218.299999997,317863 188324.200000003,317921.099999994 188427.200000003,317971.099999994 188527.799999997,318036.400000006 188645.5,318060.299999997 188697.799999997,318114.5 188796,318127 188812.799999997,318128.599999994 188825.900000006,318159.299999997 188891.799999997,318180.099999994 188930.900000006,318194.200000003 189015.799999997,318211 189076.599999994,318223.299999997 189131.599999994,318239.599999994 189158.200000003,318251.299999997 189190.799999997,318268.200000003 189250.900000006,318290.099999994 189295.900000006,318314.099999994 189331.5,318326 189359.299999997,318331.599999994 189392.400000006,318331.200000003 189414.5,318321.700000003 189446.099999994,318324.400000006 189466.700000003,318348 189514.299999997,318350.900000006 189527.900000006,318347 189560.5,318353.5 189573.799999997,318368.700000003 189581.299999997,318387.299999997 189573.700000003,318412.599999994 189557.400000006,318434.900000006 189556.299999997,318453.099999994 189569.299999997,318486.700000003 189593.700000003,318527.200000003 189625.700000003,318593.799999997 189695.799999997,318624.799999997 189735,318671.599999994 189751.299999997,318712.5 189761,318740.799999997 189776.299999997,318828.400000006 189866.599999994,318846.299999997 189891.900000006,318891.400000006 189930.900000006,318971.599999994 190014.200000003,319012.299999997 190057,319067.5 190111,319094 190146,319121.900000006 190176.099999994,319181.900000006 190242.700000003,319255.200000003 190328.799999997,319268.900000006 190345.099999994,319277.200000003 190348.5,319283.5 190355.400000006,319308.299999997 190373.900000006,319339.599999994 190389.5,319402.200000003 190440.599999994,319459.799999997 190492,319490.5 190530.299999997,319526.700000003 190551.099999994,319546.900000006 190565.5,319601.099999994 190627.799999997,319628.799999997 190653.900000006,319651.200000003 190677.200000003,319665.200000003 190695.700000003,319689.599999994 190724.5,319694.700000003 190733.099999994,319727.299999997 190769,319734 190781,319734.799999997 190805.599999994,319746.900000006 190823.400000006,319765.900000006 190839.5,319777.5 190853.900000006,319788.700000003 190865.099999994,319798.200000003 190883.799999997,319827 190936.400000006,319856 190970.900000006,319880.200000003 191020.099999994,319891.5 191043.700000003,319894.799999997 191077.5,319898.299999997 191100.400000006,319897.599999994 191117.900000006,319905.599999994 191151,319916.200000003 191229.099999994,319916.200000003 191269.299999997,319912.700000003 191276.799999997,319908 191289.599999994,319909.400000006 191307.5,319907.700000003 191320.700000003,319910.900000006 191351.700000003,319914.700000003 191372.799999997,319913.200000003 191394.599999994,319907.900000006 191410.799999997,319913.299999997 191490,319912.599999994 191539.5,319908.200000003 191606.599999994,319907.599999994 191656.099999994,319909 191675.700000003,319904.799999997 191698.099999994,319906 191724.599999994,319907.5 191780.5,319905.599999994 191807,319908.799999997 191826.400000006,319898.700000003 191901.900000006,319899.400000006 191945,319898.700000003 191975.299999997,319903.400000006 192040.599999994,319902.200000003 192087.900000006,319903.5 192124.099999994,319902.200000003 192172.700000003,319905.799999997 192210.400000006,319899 192276.799999997,319904.200000003 192321.900000006,319901.200000003 192370.799999997,319903.400000006 192412,319897.599999994 192444.299999997,319900 192480.299999997,319899.700000003 192501.599999994,319896 192536.799999997,319889.5 192562.400000006,319889.900000006 192590.599999994,319889.599999994 192631.700000003,319892.5 192696.700000003,319893.799999997 192735.5,319895.599999994 192757.400000006,319895.299999997 192774.5,319892.099999994 192782.299999997,319889.5 192819.400000006,319894.5 192881.599999994,319894.700000003 192939,319893.299999997 193003.799999997,319892 193070,319903.200000003 193084,319922.5 193096.200000003,319931.299999997 193115.200000003,319927.200000003 193125.299999997,319913.200000003 193139.799999997,319914.900000006 193153.700000003,319888.799999997 193172.799999997,319889.400000006 193193.200000003,319900.099999994 193208.799999997,319913.700000003 193226.299999997,319913.400000006 193244.5,319902.200000003 193280.599999994,319901.900000006 193307.799999997,319917.400000006 193351.700000003,319931.299999997 193374.700000003,319943.5 193381.5,319980.400000006 193390.400000006,320002.200000003 193401.599999994,320026 193394.400000006,320038.099999994 193393.700000003,320075.299999997 193419.900000006,320092.099999994 193436,320088.799999997 193466.700000003,320107 193486.700000003,320128.400000006 193504.799999997,320146.5 193530.299999997,320146.599999994 193550.599999994,320156.200000003 193565.5,320188.799999997 193587.700000003,320206.900000006 193612.900000006,320218.400000006 193647.099999994,320233.299999997 193687.799999997,320237.099999994 193698.900000006,320243.599999994 193709.5,320242.900000006 193737.299999997,320260.099999994 193767.400000006,320281.900000006 193792.099999994,320291 193791.400000006,320302.900000006 193805.200000003,320306.700000003 193823.299999997,320355.099999994 193942.599999994,320382.599999994 194024.700000003,320389.5 194040.5,320392.700000003 194066.799999997,320406.5 194102.700000003,320419.900000006 194160.599999994,320421 194173.799999997,320432.200000003 194205,320438 194236.099999994,320453.700000003 194272.200000003,320506 194383.200000003,320528.5 194416.299999997,320556.299999997 194461,320569.5 194486.700000003,320625.299999997 194552.299999997,320662.5 194590.099999994,320682.200000003 194624.200000003,320686.099999994 194640,320694.299999997 194655,320701.099999994 194691.5,320706.5 194705.700000003,320717.900000006 194754.099999994,320723.799999997 194780.900000006,320741.5 194927.599999994,320757.299999997 194984.5,320766.400000006 195032.700000003,320770.400000006 195060.799999997,320785.599999994 195110.299999997,320798.799999997 195186.700000003,320806.799999997 195217.200000003,320802.700000003 195240.400000006,320809.5 195271.5,320813.200000003 195307.900000006,320824.200000003 195368,320830.900000006 195401.5,320841.700000003 195427.200000003,320867.400000006 195442.299999997,320895.200000003 195444.299999997,320937.900000006 195442.700000003,320962.5 195457,320981.799999997 195481.599999994,320995.900000006 195488.900000006,321024.5 195484.200000003,321061.400000006 195464.400000006,321080.900000006 195462.799999997,321097.5 195468.5,321106.700000003 195476.700000003,321138.900000006 195495.200000003,321161.299999997 195504.299999997,321179.099999994 195510.900000006,321193.400000006 195514.799999997,321206.099999994 195522.799999997,321231.400000006 195533.799999997,321265.900000006 195556.700000003,321273.900000006 195565.700000003,321281.900000006 195561.299999997,321293.099999994 195566.599999994,321306.400000006 195581.099999994,321322 195588.299999997,321363.599999994 195617.099999994,321376.700000003 195632.099999994,321393.299999997 195637.599999994,321428.299999997 195659.799999997,321444.200000003 195667.200000003,321471.700000003 195684.799999997,321485.900000006 195689.799999997,321500.400000006 195700.5,321548.400000006 195725.799999997,321583.900000006 195761.099999994,321622.700000003 195795.900000006,321652.599999994 195814.099999994,321698.599999994 195832.400000006,321718.200000003 195849,321747 195879.599999994,321762.700000003 195901.299999997,321816.799999997 196000.599999994,321832.5 196027.299999997,321842.700000003 196052.599999994,321896.700000003 196145.599999994,321947.400000006 196223.400000006,321956.099999994 196244.700000003,322010.900000006 196333.400000006,322035.900000006 196374.299999997,322045.599999994 196384.5,322105.700000003 196477,322127.700000003 196518.700000003,322170.400000006 196577.099999994,322196.5 196613.900000006,322229.299999997 196671.799999997,322259.900000006 196719.799999997,322351.099999994 196877.299999997,322365.099999994 196908.599999994,322404.400000006 196969.5,322422.599999994 197016.900000006,322509.5 197143.799999997,322586.400000006 197262.900000006,322602 197300,322627.5 197344.200000003,322640.799999997 197359.299999997,322664.799999997 197396.299999997,322706.799999997 197472.400000006,322726.400000006 197504.799999997,322745.5 197531.700000003,322771.5 197580.900000006,322789.200000003 197609.599999994,322807.5 197633.5,322866 197728.900000006,322892.900000006 197783.400000006,322909.599999994 197806.799999997,322970.799999997 197909.900000006,323046.400000006 198039.400000006,323070.700000003 198083.599999994,323137.200000003 198190.599999994,323148.200000003 198213.400000006,323155.200000003 198229.400000006,323160.299999997 198261.099999994,323185.5 198290.400000006,323204.799999997 198336.5,323208.299999997 198366.200000003,323203.400000006 198380.400000006,323176.099999994 198408.599999994,323165.400000006 198440.700000003,323136.299999997 198482.400000006,323128.799999997 198502.099999994,323131 198520.200000003,323144.799999997 198531.799999997,323160.400000006 198544.400000006,323189.700000003 198588,323201.099999994 198614.400000006,323200.900000006 198625.099999994,323206.700000003 198635.799999997,323209.099999994 198656.400000006,323223.299999997 198687.599999994,323243.599999994 198750.900000006,323260.799999997 198796.900000006,323265.700000003 198808.5,323289.5 198850,323299.400000006 198895.5,323308.599999994 198929.700000003,323318.099999994 198971.299999997,323341.099999994 199038.5,323350.900000006 199070.799999997,323389.900000006 199137,323407.900000006 199164.5,323425.5 199187.099999994,323436.200000003 199203.900000006,323448.700000003 199241.099999994,323455.5 199272.200000003,323477.099999994 199288.299999997,323532.900000006 199315.599999994,323578.799999997 199374.5,323607.200000003 199425.700000003,323625.900000006 199483.599999994,323660.400000006 199516.200000003,323680.799999997 199568.5,323712.299999997 199611.400000006,323757.5 199662.599999994,323802.200000003 199706.299999997,323868.900000006 199758.599999994,323903.299999997 199793.5,323912.900000006 199799.700000003,323896.799999997 199808.299999997,323911.200000003 199818.5,323952.599999994 199858.599999994,323979 199874.299999997,324057.599999994 199944.299999997,324108.599999994 199981.799999997,324141 200034.5,324157.099999994 200064.200000003,324177.099999994 200084.5,324199.5 200092.299999997,324265.5 200100.099999994,324302.099999994 200115.799999997,324361.200000003 200151.299999997,324378.799999997 200166.900000006,324413.299999997 200191.099999994,324462.799999997 200228.5,324483.799999997 200242.700000003,324527 200282.200000003,324548.599999994 200295.700000003,324580.599999994 200327.400000006,324608.5 200348.700000003,324644.200000003 200382.299999997,324700.200000003 200421.599999994,324724.099999994 200435,324764.599999994 200469.5,324803 200498.299999997,324844.099999994 200543.299999997,324863.5 200566.200000003,324914.200000003 200614.599999994,324927 200632.099999994,324963.5 200665.599999994,324992.400000006 200699.700000003,325014.200000003 200719.900000006,325016.5 200732.900000006,325017.5 200761.599999994,325007.700000003 200900.5,324997.5 200953.5,324984.700000003 200978.099999994,324975.799999997 201014.5,324944.900000006 201092.200000003,324937.400000006 201132.200000003,324922.299999997 201161.200000003,324891.700000003 201184.799999997,324866.900000006 201223.900000006,324846.099999994 201252.400000006,324826.799999997 201266,324796.400000006 201287.900000006,324782.799999997 201292.299999997,322222.099999994 202654.799999997,322209.700000003 202660.299999997,319207 204261.700000003,309929.299999997 206015.700000003,309878.599999994 206031.900000006,309837.299999997 206038,309786.700000003 206036.299999997,309767.799999997 206032.700000003,309746.400000006 206036,309732.200000003 206031.299999997,309719.700000003 206031.400000006,309692.099999994 206030.799999997,309663.900000006 206036.299999997,309619.299999997 206037.099999994,309561.799999997 206045.400000006,309519.5 206046.5,309491.900000006 206047,309468.900000006 206048.900000006,309445.299999997 206060.200000003,309422.5 206062.599999994,309374.400000006 206071.900000006,309321.900000006 206089.099999994,309234.400000006 206131.400000006,309134 206203.799999997,309086.599999994 206236,309058.099999994 206251.400000006,309026.200000003 206254.900000006,308998.299999997 206278.299999997,308979 206367.900000006,308959.700000003 206406.099999994,308926.599999994 206443.200000003,308875.700000003 206485.400000006,308779.799999997 206569.200000003,308668.599999994 206648.299999997,308625.299999997 206686.799999997,308559.299999997 206757.799999997,308514 206809.299999997,308476.900000006 206842.900000006,308406.5 206901.900000006,308349.5 206937.200000003,308324.400000006 206942.5,308312.099999994 206934.299999997,308290.599999994 206898.099999994,308276.299999997 206891.400000006,308259 206901.599999994,308246.5 206889.400000006,308235.900000006 206890.599999994,308208.599999994 206912.5,308166.5 206981,308152.200000003 207034.200000003,308149.900000006 207064.599999994,308149.200000003 207093.5,308154.5 207134.400000006,308157.400000006 207149.299999997,308170.099999994 207218,308177.799999997 207233.700000003,308175.400000006 207260.299999997,308155.900000006 207287.5,308148.400000006 207304.599999994,308154.200000003 207325.5,308151.700000003 207350,308156.5 207389.799999997,308161.099999994 207404.200000003,308152 207419.299999997,308141.900000006 207453,308141.900000006 207480.299999997,308128.900000006 207523.5,308108.799999997 207574.700000003,308100.299999997 207603.299999997,308101.5 207631.200000003,308099.099999994 207652.099999994,308101.299999997 207681.5,308110.5 207716.900000006,308084.599999994 207728.700000003,308090.599999994 207741.099999994,308093.400000006 207759.5,308085 207784.099999994,308076.099999994 207818.599999994,308074.799999997 207833.200000003,308082.799999997 207876.400000006,308087.799999997 207899.299999997,308071.200000003 207905,308073.099999994 207915.5,308063.299999997 207919.200000003,308052 207920.900000006,308053.200000003 207930.299999997,308050.200000003 207943.299999997,308038.400000006 207972.400000006,308050.200000003 208005.200000003,308048 208023.200000003,308059.700000003 208032.5,308069.5 208055.900000006,308068.900000006 208102.700000003,308054.900000006 208153.799999997,308042.299999997 208168,308044.599999994 208178,308028.700000003 208200.599999994,308024.700000003 208255.599999994,308018.599999994 208283.700000003,308004.700000003 208305.900000006,307981.200000003 208323.200000003,307984.5 208337.599999994,307978.200000003 208358.099999994,307974 208372.200000003,307963.799999997 208420.799999997,307965.900000006 208464.599999994,307965.299999997 208472.5,307954.900000006 208493.299999997,307948.099999994 208521.299999997,307944.599999994 208558.799999997,307940.400000006 208578.299999997,307955.599999994 208664.799999997,307950.200000003 208736.299999997,307948.200000003 208765.700000003,307959.299999997 208821,307968.799999997 208862.200000003,307963 208894.200000003,307961.400000006 208904.299999997,307969.299999997 208938.5,307969 208983.900000006,307981 209034.200000003,307976.599999994 209085.700000003,307971.5 209104.099999994,307960.299999997 209137.799999997,307945.599999994 209178.900000006,307943.099999994 209227.799999997,307923.599999994 209246.099999994,307922.400000006 209272.599999994,307929.400000006 209300.900000006,307925.700000003 209330.900000006,307916.200000003 209341.099999994,307906.599999994 209363.200000003,307909.599999994 209388.599999994,307882.400000006 209437.400000006,307870.099999994 209482,307876.5 209511.799999997,307896.799999997 209538,307909.599999994 209546.799999997,307912.700000003 209555.700000003,307904 209564.299999997,307883.400000006 209604.5,307880.799999997 209646,307894 209681.799999997,307889.700000003 209696.299999997,307872.700000003 209713,307862.700000003 209731.599999994,307856.299999997 209766.200000003,307844.299999997 209789.200000003,307845.900000006 209828.700000003,307842.799999997 209846.700000003,307853.5 209897,307887.799999997 209958.299999997,307923.200000003 210024.599999994,307926.700000003 210050,307925.200000003 210097.400000006,307927 210155.200000003,307928.200000003 210170.299999997,307920 210276.599999994,307913.900000006 210324.099999994,307908.700000003 210337.200000003,307887.700000003 210355.400000006,307868.799999997 210363.200000003,307853.799999997 210373.400000006,307836.599999994 210380.700000003,307823.400000006 210395.400000006,307836.5 210423.099999994,307864.5 210463.5,307875.599999994 210482.900000006,307880.599999994 210504.799999997,307888.400000006 210530.099999994,307886.5 210571,307883.099999994 210589.5,307878.299999997 210627.099999994,307861.400000006 210676.200000003,307858.099999994 210693.200000003,307879.200000003 210733.799999997,307893 210780,307893.599999994 210796,307886.700000003 210827.400000006,307899.5 210857.700000003,307930 210886.599999994,307939.099999994 210897.5,307951.200000003 210897.799999997,307962.799999997 210919.599999994,307975.099999994 210961.299999997,307983.900000006 210977.599999994,307998.400000006 211017.299999997,308001.700000003 211048.700000003,308006.900000006 211062.099999994,308018.400000006 211098.900000006,308038.799999997 211138.400000006,308064.900000006 211169,308079.5 211183.200000003,308101.700000003 211219.799999997,308119.299999997 211242.400000006,308132.099999994 211274.099999994,308143.299999997 211293.5,308140.200000003 211321.900000006,308127 211344.099999994,308114.799999997 211385.200000003,308101.700000003 211417.799999997,308085.099999994 211448,308081.599999994 211461.5,308066.799999997 211479.299999997,308060.799999997 211506.799999997,308054.5 211522.299999997,308040.599999994 211559,308037.299999997 211567.5,308028.5 211587.200000003,308021.099999994 211597.799999997,308018.299999997 211610.799999997,308010.799999997 211628.799999997,308005.099999994 211647.299999997,307992.900000006 211676.599999994,307981.799999997 211700.200000003,307957.900000006 211763,307936.200000003 211813.599999994,307926.799999997 211834.200000003,307918.299999997 211858.400000006,307902.099999994 211872.099999994,307901.599999994 211882.599999994,307895.900000006 211898.099999994,307852.400000006 211942.799999997,307829.200000003 211987.400000006,307827.5 212029.900000006,307806.900000006 212072.099999994,307799.900000006 212093.700000003,307790.599999994 212111.400000006,307775.099999994 212145.5,307763.299999997 212164.099999994,307751.599999994 212190.400000006,307726.799999997 212237.599999994,307703.099999994 212288.799999997,307707.900000006 212312.799999997,307702 212325.400000006,307658.299999997 212380.900000006,307644.599999994 212400.099999994,307620.400000006 212413.900000006,307584.299999997 212426.900000006,307574.799999997 212442.099999994,307569.799999997 212451.700000003,307564.5 212463.700000003,307563.400000006 212473.200000003,307549.200000003 212485.400000006,307498.5 212569.099999994,307486.900000006 212585.599999994,307481.099999994 212620.700000003,307471.099999994 212653.799999997,307445.5 212694.099999994,307429.799999997 212749.299999997,307421.099999994 212814.200000003,307409.599999994 212842.900000006,307406.5 212869.900000006,307398 212906,307390 212918.5,307391.299999997 212956.900000006,307391.900000006 212994.799999997,307376.400000006 213015.599999994,307366.099999994 213044.099999994,307343.400000006 213084.900000006,307302.599999994 213137.5,307280.5 213158.799999997,307244.700000003 213212.299999997,307228.700000003 213238.900000006,307182.5 213304,307161.900000006 213326.799999997,307154.599999994 213364.799999997,307146.099999994 213381.5,307130.799999997 213396.700000003,307118.599999994 213416.799999997,307096.200000003 213430.700000003,307076.200000003 213432,307068.599999994 213439.599999994,307049.400000006 213477.299999997,307031.5 213507.599999994,307019.799999997 213529.700000003,307002.5 213547.400000006,306939.299999997 213650.700000003,306895.900000006 213709.200000003,306879 213749.900000006,306860.799999997 213813.599999994,306844.200000003 213874.200000003,306833.799999997 213897.799999997,306777.900000006 213903.200000003,306750.799999997 214018.400000006,306747.400000006 214036.900000006,306715.700000003 214108.799999997,306705.099999994 214125.400000006,306685.799999997 214166.700000003,306628.599999994 214263.900000006,306604.599999994 214313.200000003,306585.400000006 214347.900000006,306553.900000006 214393.299999997,306501.900000006 214469.400000006,306470.299999997 214512.299999997,306444.5 214548.700000003,306393.099999994 214614.799999997,306306.599999994 214750.5,306228.599999994 214864.5,306122 215018.900000006,306068.200000003 215095.099999994,306000.900000006 215204.299999997,305992.700000003 215223,305969.799999997 215274.200000003,305936.299999997 215330.700000003,305919.900000006 215359.400000006,305881.900000006 215424.400000006,305849.200000003 215493.700000003,305808.599999994 215566.700000003,305796.599999994 215592.299999997,305775.799999997 215628.200000003,305738.700000003 215697.099999994,305627.299999997 215880.900000006,305598.799999997 215935.299999997,305571.700000003 215987.099999994,305534.599999994 216040.700000003,305522.5 216057.299999997,305463.599999994 216155.099999994,305429.700000003 216209,305358.099999994 216318.900000006,305314.900000006 216390,305218.099999994 216534.599999994,305191 216584,305146.5 216663,305100.5 216727.200000003,305068.400000006 216793.900000006,305030 216862.900000006,304980.400000006 216942.599999994,304943.299999997 216992.5,304866.299999997 217124,304846 217160.799999997,304817.200000003 217203.599999994,304769.5 217297.700000003,304749.299999997 217338.5,304723.299999997 217393.299999997,304681.099999994 217467.299999997,304649.799999997 217538.599999994,304590.299999997 217662.799999997,304555 217746.700000003,304495.200000003 217838.5,304409.5 217989,304368.299999997 218042.599999994,304280.799999997 218211.099999994,304251 218276.5,304207 218355.5,304182.400000006 218412.799999997,304162 218462.5,304132.099999994 218530.299999997,304103.599999994 218614.200000003,304054.400000006 218721.799999997,304030.799999997 218797.5,304017.700000003 218842.099999994,303987.200000003 218927.799999997,303956.799999997 219045.099999994,303947.200000003 219105.599999994,303931 219169.299999997,303924.5 219261.200000003,303881.400000006 219431.599999994,303864.099999994 219476.799999997,303856 219533.200000003,303839.299999997 219688.200000003,303824.299999997 219766.200000003,303819.200000003 219807.799999997,303803.200000003 219863.400000006,303782.799999997 220000.5,303757.099999994 220131.599999994,303739.900000006 220203.700000003,303692 220368.099999994,303678.200000003 220431.299999997,303636.400000006 220547.599999994,303617.099999994 220621.299999997,303599.400000006 220689,303574.5 220780.200000003,303555.200000003 220857.400000006,303543.599999994 220910,303497.799999997 221055.400000006,303466.099999994 221140.200000003,303432.200000003 221243.099999994,303407.799999997 221300.400000006,303377.599999994 221436.599999994,303362.799999997 221508.599999994,303342.200000003 221596.799999997,303330.5 221664.900000006,303305.900000006 221775.5,303295.5 221890.900000006,303273.799999997 222024.900000006,303264 222176.400000006,303260.400000006 222250.799999997,303247.5 222320.799999997,303245.799999997 222443.099999994,303247.400000006 222456.5,303248.299999997 222483,307493.099999994 222616.400000006,307496 222606.900000006,308026.200000003 222622.400000006,308050.700000003 222623.5,312441.799999997 221993.700000003,311818.200000003 217599.400000006,317924.599999994 218352.299999997,318638.900000006 218380.299999997,318654 218373.099999994,325105.799999997 218717.700000003,328449.599999994 222082.299999997,329488.799999997 222431.900000006,333400.700000003 223759.799999997,334532.5 223883.799999997,336703.700000003 223376.400000006,337699 222898.200000003,338396.099999994 223092.599999994,338259.900000006 225268.5,338267.700000003 225279.400000006,338279.5 225283.599999994,338295.700000003 225313.299999997,338327.5 225357.599999994,338350.099999994 225389.200000003,338365.599999994 225402.900000006,338375.900000006 225414.700000003,338410 225468.099999994,338458.799999997 225516.200000003,338491.900000006 225553.599999994,338501.900000006 225572.400000006,338520.599999994 225595.5,338541.299999997 225624.099999994,338561.099999994 225663.200000003,338587 225723.599999994,338605.799999997 225770.200000003,338613.700000003 225810.5,338620 225825.400000006,338632.900000006 225931.900000006,338637.900000006 226013.099999994,338643.5 226035.900000006,338652.200000003 226101.599999994,338660.299999997 226133.900000006,338667.5 226148.799999997,338676.400000006 226187.099999994,338683.400000006 226216.299999997,338701.900000006 226259.5,338733.799999997 226316.299999997,338757.799999997 226356.299999997,338796.700000003 226397.599999994,338821.5 226421.599999994,338833.900000006 226438.900000006,338924.200000003 226569.599999994,338939.200000003 226585.400000006,339013.700000003 226672.5,339080.299999997 226723.799999997,339117.900000006 226742.099999994,339142.900000006 226748.799999997,339162 226752.400000006,339186.799999997 226762,339227 226762.900000006,339270.200000003 226751.099999994,339310.900000006 226731.099999994,339358.299999997 226684,339383 226644.599999994,339411.799999997 226599.200000003,339453.200000003 226553.299999997,339504.400000006 226488.099999994,339556.700000003 226440.400000006,339630.799999997 226385.299999997,339674.799999997 226360.599999994,339688.700000003 226357.900000006,339717.400000006 226351,339730.200000003 226344.799999997,339755.5 226347.400000006,339782.099999994 226341.5,339810.700000003 226349.5,339824.599999994 226348.799999997,339865.5 226372.5,339877.599999994 226382.799999997,339894.299999997 226395,339911.5 226415.200000003,339926.200000003 226446.900000006,339935.099999994 226499.700000003,339932.099999994 226535.599999994,339915.799999997 226573.799999997,339874 226631.299999997,339829.299999997 226673.5,339802.299999997 226708.700000003,339738.400000006 226774.099999994,339695.400000006 226836.200000003,339612.799999997 226943.299999997,339587 226980.099999994,339535.900000006 227041.799999997,339499.299999997 227077.700000003,339456.700000003 227151.299999997,339447.200000003 227171.799999997,339438.700000003 227195.900000006,339429.5 227236.400000006,339438.5 227325.599999994,339456.099999994 227395.599999994,339475.099999994 227451.200000003,339496.099999994 227487.799999997,339505.799999997 227513,339559.400000006 227573,339595.099999994 227605.400000006,339663.099999994 227664.200000003,339720.299999997 227700.700000003,339756.799999997 227717,339772.799999997 227721.799999997,339793.099999994 227738,339866.599999994 227760.599999994,339893.099999994 227762.799999997,339932.400000006 227768.200000003,339980.900000006 227781.299999997,339999.799999997 227794,340042.200000003 227807.799999997,340082.400000006 227833.599999994,340098.900000006 227844.200000003,340117.900000006 227872.900000006,340144.900000006 227925.299999997,340170.299999997 227994.700000003,340182.799999997 228047.5,340195.5 228118.5,340200.900000006 228144.400000006,340200.200000003 228156.299999997,340206.900000006 228182.200000003,340209.200000003 228222.5,340222.5 228268.299999997,340236.299999997 228320.799999997,340236.900000006 228335.799999997,340235.5 228359.799999997,340234.5 228382.799999997,340256.900000006 228463.700000003,346105.400000006 229356.200000003,346132.5 229361.299999997,346156.5 229366.900000006,346255.299999997 229377.799999997,346302.299999997 229388.5,346347.200000003 229389.200000003,346376.599999994 229390.299999997,346482.5 229402,346542.299999997 229410.099999994,346737.5 229441.799999997,346783 229445.700000003,346822.299999997 229453.400000006,346873.400000006 229468.599999994,346965.299999997 229481.099999994,347007.599999994 229482.5,347127.5 229501.400000006,347233.200000003 229516.700000003,347282.700000003 229526.900000006,347319.099999994 229531.799999997,347381.5 229548.299999997,347461.900000006 229562.400000006,347551.099999994 229573,347632.599999994 229580.099999994,347725.700000003 229593.700000003,347866.799999997 229608.400000006,347889.5 229613.900000006,347991 229629.299999997,348037 229636.099999994,348078.799999997 229643.299999997,348129.200000003 229647.5,348184.799999997 229653.200000003,348258.599999994 229659,348357.5 229677.799999997,348429 229689.599999994,348475.200000003 229694.400000006,348493.200000003 229693.5,348542.200000003 229700.799999997,348615.900000006 229705.099999994,348707.5 229718,348757.099999994 229722.799999997,348909.900000006 229746.200000003,349000.5 229753.299999997,349113.5 229768.900000006,349212.5 229784.299999997,349276.400000006 229794.700000003,349386.299999997 229819.5,349515.299999997 229845.799999997,349610.599999994 229860.700000003,349692.799999997 229864.299999997,349756.799999997 229870.400000006,349816.299999997 229882.400000006,349865.099999994 229894.599999994,349920.099999994 229906.599999994,350055.599999994 229936.799999997,350098.799999997 229940.700000003,350203.900000006 229959.5,350425.599999994 229997.799999997,350458.599999994 230001.200000003,350483.400000006 230009.299999997,350550.299999997 230016.799999997,350602.299999997 230025.400000006,350649.099999994 230030.099999994,350745.599999994 230047,350769.599999994 230049.599999994,350812 230056.5,350850.099999994 230061.799999997,350899.200000003 230069.5,350935.299999997 230067.900000006,351026.099999994 230082,351084.200000003 230088.900000006,351122.900000006 230091.900000006,351147.900000006 230097,351151.200000003 230031.5,353161.400000006 230412.299999997,353177 230413.599999994,362053.700000003 231736.700000003,362062.200000003 231744))) diff -Nru geos-3.1.0/tests/Makefile.am geos-3.2.2/tests/Makefile.am --- geos-3.1.0/tests/Makefile.am 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/Makefile.am 2009-12-06 00:47:21.000000000 +0000 @@ -1,6 +1,7 @@ SUBDIRS = \ bigtest \ xmltester \ - tut \ - unit - + unit \ + perf \ + geostest \ + thread diff -Nru geos-3.1.0/tests/Makefile.in geos-3.2.2/tests/Makefile.in --- geos-3.1.0/tests/Makefile.in 2009-03-11 19:14:05.000000000 +0000 +++ geos-3.2.2/tests/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -13,15 +14,12 @@ # PARTICULAR PURPOSE. @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -41,6 +39,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -49,22 +52,52 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ - install-exec-recursive install-info-recursive \ - install-recursive installcheck-recursive installdirs-recursive \ - pdf-recursive ps-recursive uninstall-info-recursive \ - uninstall-recursive + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -92,21 +125,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -115,20 +144,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -149,6 +186,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -160,19 +198,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -184,41 +216,56 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ SUBDIRS = \ bigtest \ xmltester \ - tut \ - unit + unit \ + perf \ + geostest \ + thread all: all-recursive @@ -227,14 +274,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -252,6 +299,7 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo @@ -259,10 +307,6 @@ clean-libtool: -rm -rf .libs _libs -distclean-libtool: - -rm -f libtool -uninstall-info-am: - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -287,15 +331,14 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -mostlyclean-recursive clean-recursive distclean-recursive \ -maintainer-clean-recursive: +$(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ @@ -322,16 +365,16 @@ else \ local_target="$$target"; \ fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) @@ -339,14 +382,14 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ @@ -358,81 +401,101 @@ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ - || $(mkdir_p) "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ @@ -462,6 +525,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -472,8 +536,7 @@ distclean: distclean-recursive -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags +distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive @@ -481,18 +544,38 @@ html: html-recursive +html-am: + info: info-recursive info-am: install-data-am: +install-dvi: install-dvi-recursive + +install-dvi-am: + install-exec-am: +install-html: install-html-recursive + +install-html-am: + install-info: install-info-recursive +install-info-am: + install-man: +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-recursive @@ -511,22 +594,25 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: -uninstall-info: uninstall-info-recursive +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive -.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ - clean clean-generic clean-libtool clean-recursive ctags \ - ctags-recursive distclean distclean-generic distclean-libtool \ - distclean-recursive distclean-tags distdir dvi dvi-am html \ +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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 \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic maintainer-clean-recursive \ - mostlyclean mostlyclean-generic mostlyclean-libtool \ - mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-info-am + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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. diff -Nru geos-3.1.0/tests/perf/Makefile.am geos-3.2.2/tests/perf/Makefile.am --- geos-3.1.0/tests/perf/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/perf/Makefile.am 2009-04-20 11:37:28.000000000 +0100 @@ -0,0 +1,3 @@ +SUBDIRS = \ + operation + diff -Nru geos-3.1.0/tests/perf/Makefile.in geos-3.2.2/tests/perf/Makefile.in --- geos-3.1.0/tests/perf/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/perf/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -0,0 +1,614 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = tests/perf +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = \ + operation + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/perf/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/perf/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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 -Nru geos-3.1.0/tests/perf/operation/buffer/IteratedBufferStressTest.cpp geos-3.2.2/tests/perf/operation/buffer/IteratedBufferStressTest.cpp --- geos-3.1.0/tests/perf/operation/buffer/IteratedBufferStressTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/perf/operation/buffer/IteratedBufferStressTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,86 @@ +/********************************************************************** + * $Id: IteratedBufferStressTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: perf/operation/buffer/IteratedBufferStressTest.java rev 1.1 + * + * - Added exit condition when number of vertices is zero + * + **********************************************************************/ + + +#include +#include +#include +#include +#include +#include + +using namespace geos::geom; +using namespace geos::io; +using namespace std; + +typedef auto_ptr GeomPtr; + +GeomPtr doBuffer(const Geometry& g, double dist) +{ + cout << "Buffering with dist = " << dist << endl; + GeomPtr buf ( g.buffer(dist) ); + cout << "Buffer result has " << buf->getNumPoints() << " vertices" << endl; + + //cout << *buf << endl; + + return buf; +} + +// throws Exception +void run(const Geometry* base) +{ + GeomPtr tmp; + + // profile here + geos::util::Profile totalSW("buffer"); + double dist = 1.0; + while (true) { + + totalSW.start(); + + GeomPtr b1 = doBuffer(*base, dist); + GeomPtr b2 = doBuffer(*b1, -dist); + + totalSW.stop(); + cout << "---------------------- " + << totalSW << endl; // totalSW.getTimeString() << endl; + + dist += 1; + base = b2.get(); tmp = b2; + + if ( ! base->getNumPoints() ) break; + } +} + +int +main() +{ + PrecisionModel pm; + GeometryFactory gf(&pm); + WKTReader rdr(&gf); + + string inputWKT = + "POLYGON ((110 320, 190 220, 60 200, 180 120, 120 40, 290 150, 410 40, 410 230, 500 340, 320 310, 260 370, 220 310, 110 320), (220 260, 250 180, 290 220, 360 150, 350 250, 260 280, 220 260))"; + + GeomPtr base ( rdr.read(inputWKT) ); + run(base.get()); +} + diff -Nru geos-3.1.0/tests/perf/operation/buffer/Makefile.am geos-3.2.2/tests/perf/operation/buffer/Makefile.am --- geos-3.1.0/tests/perf/operation/buffer/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/perf/operation/buffer/Makefile.am 2009-04-20 11:37:28.000000000 +0100 @@ -0,0 +1,13 @@ +prefix=@prefix@ +top_srcdir=@top_srcdir@ +top_builddir=@top_builddir@ + +noinst_PROGRAMS = IteratedBufferStressTest + +LIBS = $(top_builddir)/source/libgeos.la + +IteratedBufferStressTest_SOURCES = IteratedBufferStressTest.cpp +IteratedBufferStressTest_LDADD = $(LIBS) + +INCLUDES = -I$(top_srcdir)/source/headers +INCLUDES += -I$(top_srcdir)/source/io/markup diff -Nru geos-3.1.0/tests/perf/operation/buffer/Makefile.in geos-3.2.2/tests/perf/operation/buffer/Makefile.in --- geos-3.1.0/tests/perf/operation/buffer/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/perf/operation/buffer/Makefile.in 2010-04-18 16:08:15.000000000 +0100 @@ -0,0 +1,531 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +noinst_PROGRAMS = IteratedBufferStressTest$(EXEEXT) +subdir = tests/perf/operation/buffer +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_IteratedBufferStressTest_OBJECTS = \ + IteratedBufferStressTest.$(OBJEXT) +IteratedBufferStressTest_OBJECTS = \ + $(am_IteratedBufferStressTest_OBJECTS) +IteratedBufferStressTest_DEPENDENCIES = $(LIBS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(IteratedBufferStressTest_SOURCES) +DIST_SOURCES = $(IteratedBufferStressTest_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = $(top_builddir)/source/libgeos.la +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +IteratedBufferStressTest_SOURCES = IteratedBufferStressTest.cpp +IteratedBufferStressTest_LDADD = $(LIBS) +INCLUDES = -I$(top_srcdir)/source/headers \ + -I$(top_srcdir)/source/io/markup +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/perf/operation/buffer/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/perf/operation/buffer/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +IteratedBufferStressTest$(EXEEXT): $(IteratedBufferStressTest_OBJECTS) $(IteratedBufferStressTest_DEPENDENCIES) + @rm -f IteratedBufferStressTest$(EXEEXT) + $(CXXLINK) $(IteratedBufferStressTest_OBJECTS) $(IteratedBufferStressTest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IteratedBufferStressTest.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 $(PROGRAMS) +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +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: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS 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-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + 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 + + +# 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 -Nru geos-3.1.0/tests/perf/operation/Makefile.am geos-3.2.2/tests/perf/operation/Makefile.am --- geos-3.1.0/tests/perf/operation/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/perf/operation/Makefile.am 2009-04-20 11:37:28.000000000 +0100 @@ -0,0 +1,3 @@ +SUBDIRS = \ + buffer + diff -Nru geos-3.1.0/tests/perf/operation/Makefile.in geos-3.2.2/tests/perf/operation/Makefile.in --- geos-3.1.0/tests/perf/operation/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/perf/operation/Makefile.in 2010-04-18 16:08:14.000000000 +0100 @@ -0,0 +1,614 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = tests/perf/operation +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = \ + buffer + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/perf/operation/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/perf/operation/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean 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-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-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 -Nru geos-3.1.0/tests/thread/badthreadtest.c geos-3.2.2/tests/thread/badthreadtest.c --- geos-3.1.0/tests/thread/badthreadtest.c 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/thread/badthreadtest.c 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,450 @@ +/************************************************************************ + * + * $Id: badthreadtest.c 2809 2009-12-06 01:05:24Z mloskot $ + * + * Test for C-Wrapper of GEOS library + * + * Copyright (C) 2005 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + * Author: Sandro Santilli + * + ***********************************************************************/ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include + +#include "geos_c.h" + +#define MAXWKTLEN 1047551 + +void +usage(char *me) +{ + fprintf(stderr, "Usage: %s \n", me); + exit(1); +} + +void +notice1(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "NOTICE1: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); +} + +void +notice2(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "NOTICE2: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); +} + +void +notice(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "NOTICE: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); +} + +void +log_and_exit(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "ERROR: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); + exit(1); +} + +void +log_and_exit1(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "ERROR1: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); + pthread_exit(NULL); +} + +void +log_and_exit2(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "ERROR2: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); + pthread_exit(NULL); +} + +GEOSGeometry* +fineGrainedReconstructionTest(const GEOSGeometry* g1) +{ + GEOSCoordSequence* cs; + GEOSGeometry* g2; + GEOSGeometry* shell; + const GEOSGeometry* gtmp; + GEOSGeometry**geoms; + unsigned int ngeoms, i; + int type; + + /* Geometry reconstruction from CoordSeq */ + type = GEOSGeomTypeId(g1); + switch ( type ) + { + case GEOS_POINT: + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); + g2 = GEOSGeom_createPoint(cs); + return g2; + break; + case GEOS_LINESTRING: + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); + g2 = GEOSGeom_createLineString(cs); + return g2; + break; + case GEOS_LINEARRING: + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); + g2 = GEOSGeom_createLinearRing(cs); + return g2; + break; + case GEOS_POLYGON: + gtmp = GEOSGetExteriorRing(g1); + cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(gtmp)); + shell = GEOSGeom_createLinearRing(cs); + ngeoms = GEOSGetNumInteriorRings(g1); + geoms = malloc(ngeoms*sizeof(GEOSGeometry*)); + for (i=0; i>4], hex[bytes[i]&0x0F]); + } +} + +int +do_all(char *inputfile) +{ + GEOSGeometry* g1; + GEOSGeometry* g2; + GEOSGeometry* g3; + GEOSGeometry* g4; + const GEOSGeometry **gg; + unsigned int npoints, ndims; + static char wkt[MAXWKTLEN]; + FILE *input; + char *ptr; + unsigned char* uptr; + size_t size; + double dist, area; + + input = fopen(inputfile, "r"); + if ( ! input ) { perror("fopen"); exit(1); } + + size = fread(wkt, 1, MAXWKTLEN-1, input); + fclose(input); + if ( ! size ) { perror("fread"); exit(1); } + if ( size == MAXWKTLEN-1 ) { perror("WKT input too big!"); exit(1); } + wkt[size] = '\0'; /* ensure it is null terminated */ + + /* WKT input */ + g1 = GEOSGeomFromWKT(wkt); + + /* WKT output */ + ptr = GEOSGeomToWKT(g1); + printf("Input (WKT): %s\n", ptr); + free(ptr); + + /* WKB output */ + uptr = GEOSGeomToWKB_buf(g1, &size); + printf("Input (WKB): "); printHEX(stdout, uptr, size); putchar('\n'); + + /* WKB input */ + g2 = GEOSGeomFromWKB_buf(uptr, size); free(uptr); + if ( ! GEOSEquals(g1, g2) ) log_and_exit("Round WKB conversion failed"); + GEOSGeom_destroy(g2); + + /* Size and dimension */ + npoints = GEOSGetNumCoordinates(g1); + ndims = GEOSGeom_getDimensions(g1); + printf("Geometry coordinates: %dx%d\n", npoints, ndims); + + /* Geometry fine-grained deconstruction/reconstruction test */ + g2 = fineGrainedReconstructionTest(g1); + if ( ! GEOSEquals(g1, g2) ) + { + log_and_exit("Reconstruction test failed\n"); + } + GEOSGeom_destroy(g2); + + /* Unary predicates */ + if ( GEOSisEmpty(g1) ) printf("isEmpty\n"); + if ( GEOSisValid(g1) ) printf("isValid\n"); + if ( GEOSisSimple(g1) ) printf("isSimple\n"); + if ( GEOSisRing(g1) ) printf("isRing\n"); + + /* Convex Hull */ + g2 = GEOSConvexHull(g1); + if ( ! g2 ) + { + log_and_exit("GEOSConvexHull() raised an exception"); + } + ptr = GEOSGeomToWKT(g2); + printf("ConvexHull: %s\n", ptr); + free(ptr); + + /* Buffer */ + GEOSGeom_destroy(g1); + g1 = GEOSBuffer(g2, 100, 30); + if ( ! g1 ) + { + log_and_exit("GEOSBuffer() raised an exception"); + } + ptr = GEOSGeomToWKT(g1); + printf("Buffer: %s\n", ptr); + free(ptr); + + + /* Intersection */ + g3 = GEOSIntersection(g1, g2); + if ( ! GEOSEquals(g3, g2) ) + { + GEOSGeom_destroy(g1); + GEOSGeom_destroy(g2); + GEOSGeom_destroy(g3); + log_and_exit("Intersection(g, Buffer(g)) didn't return g"); + } + ptr = GEOSGeomToWKT(g3); + printf("Intersection: %s\n", ptr); + GEOSGeom_destroy(g3); + free(ptr); + + /* Difference */ + g3 = GEOSDifference(g1, g2); + ptr = GEOSGeomToWKT(g3); + printf("Difference: %s\n", ptr); + GEOSGeom_destroy(g3); + free(ptr); + + /* SymDifference */ + g3 = GEOSSymDifference(g1, g2); + ptr = GEOSGeomToWKT(g3); + printf("SymDifference: %s\n", ptr); + free(ptr); + + /* Boundary */ + g4 = GEOSBoundary(g3); + ptr = GEOSGeomToWKT(g4); + printf("Boundary: %s\n", ptr); + GEOSGeom_destroy(g3); + GEOSGeom_destroy(g4); + free(ptr); + + /* Union */ + g3 = GEOSUnion(g1, g2); + if ( ! GEOSEquals(g3, g1) ) + { + GEOSGeom_destroy(g1); + GEOSGeom_destroy(g2); + GEOSGeom_destroy(g3); + log_and_exit("Union(g, Buffer(g)) didn't return Buffer(g)"); + } + ptr = GEOSGeomToWKT(g3); + printf("Union: %s\n", ptr); + free(ptr); + + /* PointOnSurcace */ + g4 = GEOSPointOnSurface(g3); + ptr = GEOSGeomToWKT(g4); + printf("PointOnSurface: %s\n", ptr); + GEOSGeom_destroy(g3); + GEOSGeom_destroy(g4); + free(ptr); + + /* Centroid */ + g3 = GEOSGetCentroid(g2); + ptr = GEOSGeomToWKT(g3); + printf("Centroid: %s\n", ptr); + GEOSGeom_destroy(g3); + free(ptr); + + /* Relate (and RelatePattern )*/ + ptr = GEOSRelate(g1, g2); + if ( ! GEOSRelatePattern(g1, g2, ptr) ) + { + GEOSGeom_destroy(g1); + GEOSGeom_destroy(g2); + free(ptr); + log_and_exit("! RelatePattern(g1, g2, Relate(g1, g2))"); + } + printf("Relate: %s\n", ptr); + free(ptr); + + /* Polygonize */ + gg = (const GEOSGeometry**)malloc(2*sizeof(GEOSGeometry*)); + gg[0] = g1; + gg[1] = g2; + g3 = GEOSPolygonize(gg, 2); + free(gg); + if ( ! g3 ) + { + log_and_exit("Exception running GEOSPolygonize"); + } + ptr = GEOSGeomToWKT(g3); + GEOSGeom_destroy(g3); + printf("Polygonize: %s\n", ptr); + free(ptr); + + /* LineMerge */ + g3 = GEOSLineMerge(g1); + if ( ! g3 ) + { + log_and_exit("Exception running GEOSLineMerge"); + } + ptr = GEOSGeomToWKT(g3); + printf("LineMerge: %s\n", ptr); + free(ptr); + GEOSGeom_destroy(g3); + + /* Binary predicates */ + if ( GEOSIntersects(g1, g2) ) printf("Intersect\n"); + if ( GEOSDisjoint(g1, g2) ) printf("Disjoint\n"); + if ( GEOSTouches(g1, g2) ) printf("Touches\n"); + if ( GEOSCrosses(g1, g2) ) printf("Crosses\n"); + if ( GEOSWithin(g1, g2) ) printf("Within\n"); + if ( GEOSContains(g1, g2) ) printf("Contains\n"); + if ( GEOSOverlaps(g1, g2) ) printf("Overlaps\n"); + + /* Distance */ + if ( GEOSDistance(g1, g2, &dist) ) printf("Distance: %g\n", dist); + + /* Area */ + if ( GEOSArea(g1, &area) ) printf("Area 1: %g\n", area); + if ( GEOSArea(g2, &area) ) printf("Area 2: %g\n", area); + + GEOSGeom_destroy(g2); + + /* Simplify */ + g3 = GEOSSimplify(g1, 0.5); + ptr = GEOSGeomToWKT(g3); + printf("Simplify: %s\n", ptr); + free(ptr); + GEOSGeom_destroy(g3); + + /* Topology Preserve Simplify */ + g3 = GEOSTopologyPreserveSimplify(g1, 0.5); + ptr = GEOSGeomToWKT(g3); + printf("Simplify: %s\n", ptr); + free(ptr); + GEOSGeom_destroy(g3); + + GEOSGeom_destroy(g1); + + return 0; +} + +void *threadfunc1( void *arg ) +{ + initGEOS( notice1, log_and_exit1 ); + printf("GEOS version %s\n", GEOSversion()); + putc('.', stderr); fflush(stderr); + do_all((char*)arg); + putc('+', stderr); fflush(stderr); + finishGEOS(); + + pthread_exit(NULL); +} + +void *threadfunc2( void *arg ) +{ + initGEOS( notice2, log_and_exit2 ); + printf("GEOS version %s\n", GEOSversion()); + putc('.', stderr); fflush(stderr); + do_all((char *)arg); + putc('+', stderr); fflush(stderr); + finishGEOS(); + + pthread_exit(NULL); +} + +int +main(int argc, char **argv) +{ + pthread_t thread1, thread2; + + if ( argc < 2 ) usage(argv[0]); + pthread_create( &thread1, NULL, threadfunc1, argv[1] ); + pthread_create( &thread2, NULL, threadfunc2, argv[1] ); + + pthread_join( thread1, NULL ); + pthread_join( thread2, NULL ); + + return EXIT_SUCCESS; +} + diff -Nru geos-3.1.0/tests/thread/Makefile.am geos-3.2.2/tests/thread/Makefile.am --- geos-3.1.0/tests/thread/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/thread/Makefile.am 2009-12-06 00:47:21.000000000 +0000 @@ -0,0 +1,19 @@ +# $Id$ +# +# tests/thread builds threading test programs +# +INCLUDES = -I$(top_srcdir)/source/headers -I$(top_srcdir)/tests/unit/tut -I$(top_builddir)/capi + +# TODO: Enable if sample input WKT file is provided +#TESTS = threadtest badthreadtest + +check_PROGRAMS = threadtest badthreadtest + + +# The -lstdc++ is needed for --disable-shared to work +threadtest_SOURCES = threadtest.c +threadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread -lstdc++ + +# The -lstdc++ is needed for --disable-shared to work +badthreadtest_SOURCES = badthreadtest.c +badthreadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread -lstdc++ diff -Nru geos-3.1.0/tests/thread/Makefile.in geos-3.2.2/tests/thread/Makefile.in --- geos-3.1.0/tests/thread/Makefile.in 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/thread/Makefile.in 2010-04-18 16:08:15.000000000 +0100 @@ -0,0 +1,546 @@ +# Makefile.in generated by automake 1.11 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +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 = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +check_PROGRAMS = threadtest$(EXEEXT) badthreadtest$(EXEEXT) +subdir = tests/thread +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ + $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ + $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ + $(top_srcdir)/configure.in +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ + $(top_builddir)/source/headers/geos/platform.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am_badthreadtest_OBJECTS = badthreadtest.$(OBJEXT) +badthreadtest_OBJECTS = $(am_badthreadtest_OBJECTS) +badthreadtest_DEPENDENCIES = $(top_builddir)/capi/libgeos_c.la +am_threadtest_OBJECTS = threadtest.$(OBJEXT) +threadtest_OBJECTS = $(am_threadtest_OBJECTS) +threadtest_DEPENDENCIES = $(top_builddir)/capi/libgeos_c.la +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(badthreadtest_SOURCES) $(threadtest_SOURCES) +DIST_SOURCES = $(badthreadtest_SOURCES) $(threadtest_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ +CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ +CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ +CAPI_VERSION = @CAPI_VERSION@ +CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ +CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ +CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTERFACE_AGE = @INTERFACE_AGE@ +INTERFACE_CURRENT = @INTERFACE_CURRENT@ +INTERFACE_REVISION = @INTERFACE_REVISION@ +JTS_PORT = @JTS_PORT@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PYTHON = @PYTHON@ +PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ +PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +RUBY = @RUBY@ +RUBY_BIN_DIR = @RUBY_BIN_DIR@ +RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ +RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ +RUBY_LIB_DIR = @RUBY_LIB_DIR@ +RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ +RUBY_SO_NAME = @RUBY_SO_NAME@ +RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +SWIG = @SWIG@ +SWIG_LIB = @SWIG_LIB@ +SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ +SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ +VERSION = @VERSION@ +VERSION_MAJOR = @VERSION_MAJOR@ +VERSION_MINOR = @VERSION_MINOR@ +VERSION_PATCH = @VERSION_PATCH@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +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@ +lt_ECHO = @lt_ECHO@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# $Id$ +# +# tests/thread builds threading test programs +# +INCLUDES = -I$(top_srcdir)/source/headers -I$(top_srcdir)/tests/unit/tut -I$(top_builddir)/capi + +# The -lstdc++ is needed for --disable-shared to work +threadtest_SOURCES = threadtest.c +threadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread -lstdc++ + +# The -lstdc++ is needed for --disable-shared to work +badthreadtest_SOURCES = badthreadtest.c +badthreadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread -lstdc++ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/thread/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/thread/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: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +badthreadtest$(EXEEXT): $(badthreadtest_OBJECTS) $(badthreadtest_DEPENDENCIES) + @rm -f badthreadtest$(EXEEXT) + $(LINK) $(badthreadtest_OBJECTS) $(badthreadtest_LDADD) $(LIBS) +threadtest$(EXEEXT): $(threadtest_OBJECTS) $(threadtest_DEPENDENCIES) + @rm -f threadtest$(EXEEXT) + $(LINK) $(threadtest_OBJECTS) $(threadtest_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/badthreadtest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadtest.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + 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; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__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)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$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 + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) +check: check-am +all-am: Makefile +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: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +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: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool 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-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am 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 + + +# 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 -Nru geos-3.1.0/tests/thread/threadtest.c geos-3.2.2/tests/thread/threadtest.c --- geos-3.1.0/tests/thread/threadtest.c 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/thread/threadtest.c 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,451 @@ +/************************************************************************ + * + * $Id: threadtest.c 2809 2009-12-06 01:05:24Z mloskot $ + * + * Multithreaded test for C-Wrapper of GEOS library + * + * Copyright (C) 2005 Refractions Research Inc. + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + * Author: Sandro Santilli + * + ***********************************************************************/ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include + +#include "geos_c.h" + +#define MAXWKTLEN 1047551 + +void +usage(char *me) +{ + fprintf(stderr, "Usage: %s \n", me); + exit(1); +} + +void +notice1(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "NOTICE1: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); +} + +void +notice2(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "NOTICE2: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); +} + +void +log_and_exit(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "ERROR: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); + exit(1); +} + +void +log_and_exit1(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "ERROR1: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); + pthread_exit(NULL); +} + +void +log_and_exit2(const char *fmt, ...) { + va_list ap; + + fprintf( stdout, "ERROR2: "); + + va_start (ap, fmt); + vfprintf( stdout, fmt, ap); + va_end(ap); + fprintf( stdout, "\n" ); + pthread_exit(NULL); +} + +GEOSGeometry* +fineGrainedReconstructionTest(const GEOSGeometry* g1, + GEOSContextHandle_t handle) +{ + GEOSCoordSequence* cs; + GEOSGeometry* g2; + GEOSGeometry* shell; + const GEOSGeometry* gtmp; + GEOSGeometry**geoms; + unsigned int ngeoms, i; + int type; + + /* Geometry reconstruction from CoordSeq */ + type = GEOSGeomTypeId_r(handle, g1); + switch ( type ) + { + case GEOS_POINT: + cs = GEOSCoordSeq_clone_r(handle, + GEOSGeom_getCoordSeq_r(handle, g1)); + g2 = GEOSGeom_createPoint_r(handle, cs); + return g2; + break; + case GEOS_LINESTRING: + cs = GEOSCoordSeq_clone_r(handle, + GEOSGeom_getCoordSeq_r(handle, g1)); + g2 = GEOSGeom_createLineString_r(handle, cs); + return g2; + break; + case GEOS_LINEARRING: + cs = GEOSCoordSeq_clone_r(handle, + GEOSGeom_getCoordSeq_r(handle, g1)); + g2 = GEOSGeom_createLinearRing_r(handle, cs); + return g2; + break; + case GEOS_POLYGON: + gtmp = GEOSGetExteriorRing_r(handle, g1); + cs = GEOSCoordSeq_clone_r(handle, + GEOSGeom_getCoordSeq_r(handle, gtmp)); + shell = GEOSGeom_createLinearRing_r(handle, cs); + ngeoms = GEOSGetNumInteriorRings_r(handle, g1); + geoms = malloc(ngeoms*sizeof(GEOSGeometry*)); + for (i=0; i>4], hex[bytes[i]&0x0F]); + } +} + +int +do_all(char *inputfile, GEOSContextHandle_t handle) +{ + GEOSGeometry* g1; + GEOSGeometry* g2; + GEOSGeometry* g3; + GEOSGeometry* g4; + const GEOSGeometry **gg; + unsigned int npoints, ndims; + static char wkt[MAXWKTLEN]; + FILE *input; + char *ptr; + unsigned char* uptr; + size_t size; + double dist, area; + + input = fopen(inputfile, "r"); + if ( ! input ) { perror("fopen"); exit(1); } + + size = fread(wkt, 1, MAXWKTLEN-1, input); + fclose(input); + if ( ! size ) { perror("fread"); exit(1); } + if ( size == MAXWKTLEN-1 ) { perror("WKT input too big!"); exit(1); } + wkt[size] = '\0'; /* ensure it is null terminated */ + + /* WKT input */ + g1 = GEOSGeomFromWKT_r(handle, wkt); + + /* WKT output */ + ptr = GEOSGeomToWKT_r(handle, g1); + printf("Input (WKT): %s\n", ptr); + free(ptr); + + /* WKB output */ + uptr = GEOSGeomToWKB_buf_r(handle, g1, &size); + printf("Input (WKB): "); printHEX(stdout, uptr, size); putchar('\n'); + + /* WKB input */ + g2 = GEOSGeomFromWKB_buf_r(handle, uptr, size); free(uptr); + if ( ! GEOSEquals_r(handle, g1, g2) ) log_and_exit("Round WKB conversion failed"); + GEOSGeom_destroy_r(handle, g2); + + /* Size and dimension */ + npoints = GEOSGetNumCoordinates_r(handle, g1); + ndims = GEOSGeom_getDimensions_r(handle, g1); + printf("Geometry coordinates: %dx%d\n", npoints, ndims); + + /* Geometry fine-grained deconstruction/reconstruction test */ + g2 = fineGrainedReconstructionTest(g1, handle); + if ( ! GEOSEquals_r(handle, g1, g2) ) + { + log_and_exit("Reconstruction test failed\n"); + } + GEOSGeom_destroy_r(handle, g2); + + /* Unary predicates */ + if ( GEOSisEmpty_r(handle, g1) ) printf("isEmpty\n"); + if ( GEOSisValid_r(handle, g1) ) printf("isValid\n"); + if ( GEOSisSimple_r(handle, g1) ) printf("isSimple\n"); + if ( GEOSisRing_r(handle, g1) ) printf("isRing\n"); + + /* Convex Hull */ + g2 = GEOSConvexHull_r(handle, g1); + if ( ! g2 ) + { + log_and_exit("GEOSConvexHull() raised an exception"); + } + ptr = GEOSGeomToWKT_r(handle, g2); + printf("ConvexHull: %s\n", ptr); + free(ptr); + + /* Buffer */ + GEOSGeom_destroy_r(handle, g1); + g1 = GEOSBuffer_r(handle, g2, 100, 30); + if ( ! g1 ) + { + log_and_exit("GEOSBuffer() raised an exception"); + } + ptr = GEOSGeomToWKT_r(handle, g1); + printf("Buffer: %s\n", ptr); + free(ptr); + + + /* Intersection */ + g3 = GEOSIntersection_r(handle, g1, g2); + if ( ! GEOSEquals_r(handle, g3, g2) ) + { + GEOSGeom_destroy_r(handle, g1); + GEOSGeom_destroy_r(handle, g2); + GEOSGeom_destroy_r(handle, g3); + log_and_exit("Intersection(g, Buffer(g)) didn't return g"); + } + ptr = GEOSGeomToWKT_r(handle, g3); + printf("Intersection: %s\n", ptr); + GEOSGeom_destroy_r(handle, g3); + free(ptr); + + /* Difference */ + g3 = GEOSDifference_r(handle, g1, g2); + ptr = GEOSGeomToWKT_r(handle, g3); + printf("Difference: %s\n", ptr); + GEOSGeom_destroy_r(handle, g3); + free(ptr); + + /* SymDifference */ + g3 = GEOSSymDifference_r(handle, g1, g2); + ptr = GEOSGeomToWKT_r(handle, g3); + printf("SymDifference: %s\n", ptr); + free(ptr); + + /* Boundary */ + g4 = GEOSBoundary_r(handle, g3); + ptr = GEOSGeomToWKT_r(handle, g4); + printf("Boundary: %s\n", ptr); + GEOSGeom_destroy_r(handle, g3); + GEOSGeom_destroy_r(handle, g4); + free(ptr); + + /* Union */ + g3 = GEOSUnion_r(handle, g1, g2); + if ( ! GEOSEquals_r(handle, g3, g1) ) + { + GEOSGeom_destroy_r(handle, g1); + GEOSGeom_destroy_r(handle, g2); + GEOSGeom_destroy_r(handle, g3); + log_and_exit("Union(g, Buffer(g)) didn't return Buffer(g)"); + } + ptr = GEOSGeomToWKT_r(handle, g3); + printf("Union: %s\n", ptr); + free(ptr); + + /* PointOnSurcace */ + g4 = GEOSPointOnSurface_r(handle, g3); + ptr = GEOSGeomToWKT_r(handle, g4); + printf("PointOnSurface: %s\n", ptr); + GEOSGeom_destroy_r(handle, g3); + GEOSGeom_destroy_r(handle, g4); + free(ptr); + + /* Centroid */ + g3 = GEOSGetCentroid_r(handle, g2); + ptr = GEOSGeomToWKT_r(handle, g3); + printf("Centroid: %s\n", ptr); + GEOSGeom_destroy_r(handle, g3); + free(ptr); + + /* Relate (and RelatePattern )*/ + ptr = GEOSRelate_r(handle, g1, g2); + if ( ! GEOSRelatePattern_r(handle, g1, g2, ptr) ) + { + GEOSGeom_destroy_r(handle, g1); + GEOSGeom_destroy_r(handle, g2); + free(ptr); + log_and_exit("! RelatePattern(g1, g2, Relate(g1, g2))"); + } + printf("Relate: %s\n", ptr); + free(ptr); + + /* Polygonize */ + gg = (const GEOSGeometry**)malloc(2*sizeof(GEOSGeometry*)); + gg[0] = g1; + gg[1] = g2; + g3 = GEOSPolygonize_r(handle, gg, 2); + free(gg); + if ( ! g3 ) + { + log_and_exit("Exception running GEOSPolygonize"); + } + ptr = GEOSGeomToWKT_r(handle, g3); + GEOSGeom_destroy_r(handle, g3); + printf("Polygonize: %s\n", ptr); + free(ptr); + + /* LineMerge */ + g3 = GEOSLineMerge_r(handle, g1); + if ( ! g3 ) + { + log_and_exit("Exception running GEOSLineMerge"); + } + ptr = GEOSGeomToWKT_r(handle, g3); + printf("LineMerge: %s\n", ptr); + free(ptr); + GEOSGeom_destroy_r(handle, g3); + + /* Binary predicates */ + if ( GEOSIntersects_r(handle, g1, g2) ) printf("Intersect\n"); + if ( GEOSDisjoint_r(handle, g1, g2) ) printf("Disjoint\n"); + if ( GEOSTouches_r(handle, g1, g2) ) printf("Touches\n"); + if ( GEOSCrosses_r(handle, g1, g2) ) printf("Crosses\n"); + if ( GEOSWithin_r(handle, g1, g2) ) printf("Within\n"); + if ( GEOSContains_r(handle, g1, g2) ) printf("Contains\n"); + if ( GEOSOverlaps_r(handle, g1, g2) ) printf("Overlaps\n"); + + /* Distance */ + if ( GEOSDistance_r(handle, g1, g2, &dist) ) printf("Distance: %g\n", dist); + + /* Area */ + if ( GEOSArea_r(handle, g1, &area) ) printf("Area 1: %g\n", area); + if ( GEOSArea_r(handle, g2, &area) ) printf("Area 2: %g\n", area); + + GEOSGeom_destroy_r(handle, g2); + + /* Simplify */ + g3 = GEOSSimplify_r(handle, g1, 0.5); + ptr = GEOSGeomToWKT_r(handle, g3); + printf("Simplify: %s\n", ptr); + free(ptr); + GEOSGeom_destroy_r(handle, g3); + + /* Topology Preserve Simplify */ + g3 = GEOSTopologyPreserveSimplify_r(handle, g1, 0.5); + ptr = GEOSGeomToWKT_r(handle, g3); + printf("Simplify: %s\n", ptr); + free(ptr); + GEOSGeom_destroy_r(handle, g3); + + GEOSGeom_destroy_r(handle, g1); + + return 0; +} + +void *threadfunc1( void *arg ) +{ + GEOSContextHandle_t handle = NULL; + + handle = initGEOS_r( notice1, log_and_exit1 ); + printf("GEOS version %s\n", GEOSversion(handle)); + putc('.', stderr); fflush(stderr); + do_all((char*)arg, handle); + putc('+', stderr); fflush(stderr); + finishGEOS_r(handle); + + pthread_exit(NULL); +} + +void *threadfunc2( void *arg ) +{ + GEOSContextHandle_t handle = NULL; + + handle = initGEOS_r( notice2, log_and_exit2 ); + printf("GEOS version %s\n", GEOSversion(handle)); + putc('.', stderr); fflush(stderr); + do_all((char *)arg, handle); + putc('+', stderr); fflush(stderr); + finishGEOS_r(handle); + + pthread_exit(NULL); +} + +int +main(int argc, char **argv) +{ + pthread_t thread1, thread2; + + if ( argc < 2 ) usage(argv[0]); + pthread_create( &thread1, NULL, threadfunc1, argv[1] ); + pthread_create( &thread2, NULL, threadfunc2, argv[1] ); + pthread_join( thread1, NULL ); + pthread_join( thread2, NULL ); + + return EXIT_SUCCESS; +} + diff -Nru geos-3.1.0/tests/tut/Makefile.am geos-3.2.2/tests/tut/Makefile.am --- geos-3.1.0/tests/tut/Makefile.am 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/tut/Makefile.am 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -EXTRA_DIST = \ - tut.h \ - tut_reporter.h \ - tut_restartable.h diff -Nru geos-3.1.0/tests/tut/Makefile.in geos-3.2.2/tests/tut/Makefile.in --- geos-3.1.0/tests/tut/Makefile.in 2009-03-11 19:14:06.000000000 +0000 +++ geos-3.2.2/tests/tut/Makefile.in 1970-01-01 01:00:00.000000000 +0100 @@ -1,375 +0,0 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 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. - -@SET_MAKE@ -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 = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = tests/tut -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ - $(top_srcdir)/macros/ac_python_devel.m4 \ - $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ - $(top_srcdir)/configure.in -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ - $(top_builddir)/source/headers/geos/platform.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CAPI_INTERFACE_AGE = @CAPI_INTERFACE_AGE@ -CAPI_INTERFACE_CURRENT = @CAPI_INTERFACE_CURRENT@ -CAPI_INTERFACE_REVISION = @CAPI_INTERFACE_REVISION@ -CAPI_VERSION = @CAPI_VERSION@ -CAPI_VERSION_MAJOR = @CAPI_VERSION_MAJOR@ -CAPI_VERSION_MINOR = @CAPI_VERSION_MINOR@ -CAPI_VERSION_PATCH = @CAPI_VERSION_PATCH@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ -EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ -INLINE_FLAGS = @INLINE_FLAGS@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -INTERFACE_AGE = @INTERFACE_AGE@ -INTERFACE_CURRENT = @INTERFACE_CURRENT@ -INTERFACE_REVISION = @INTERFACE_REVISION@ -JTS_PORT = @JTS_PORT@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -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@ -PYTHON = @PYTHON@ -PYTHON_CPPFLAGS = @PYTHON_CPPFLAGS@ -PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ -PYTHON_EXTRA_LIBS = @PYTHON_EXTRA_LIBS@ -PYTHON_LDFLAGS = @PYTHON_LDFLAGS@ -PYTHON_PLATFORM = @PYTHON_PLATFORM@ -PYTHON_PREFIX = @PYTHON_PREFIX@ -PYTHON_SITE_PKG = @PYTHON_SITE_PKG@ -PYTHON_VERSION = @PYTHON_VERSION@ -RANLIB = @RANLIB@ -RUBY = @RUBY@ -RUBY_BIN_DIR = @RUBY_BIN_DIR@ -RUBY_EXTENSION_DIR = @RUBY_EXTENSION_DIR@ -RUBY_INCLUDE_DIR = @RUBY_INCLUDE_DIR@ -RUBY_LIB_DIR = @RUBY_LIB_DIR@ -RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ -RUBY_SO_NAME = @RUBY_SO_NAME@ -RUBY_VERSION = @RUBY_VERSION@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -SWIG = @SWIG@ -SWIG_LIB = @SWIG_LIB@ -SWIG_PYTHON_CPPFLAGS = @SWIG_PYTHON_CPPFLAGS@ -SWIG_PYTHON_OPT = @SWIG_PYTHON_OPT@ -VERSION = @VERSION@ -VERSION_MAJOR = @VERSION_MAJOR@ -VERSION_MINOR = @VERSION_MINOR@ -VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -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@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -datadir = @datadir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pkgpyexecdir = @pkgpyexecdir@ -pkgpythondir = @pkgpythondir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -pyexecdir = @pyexecdir@ -pythondir = @pythondir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -EXTRA_DIST = \ - tut.h \ - tut_reporter.h \ - tut_restartable.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(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 tests/tut/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/tut/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: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -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 -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: - -test -z "$(CONFIG_CLEAN_FILES)" || 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 mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool - -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 -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool 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-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am 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 -Nru geos-3.1.0/tests/tut/tut.h geos-3.2.2/tests/tut/tut.h --- geos-3.1.0/tests/tut/tut.h 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/tut/tut.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,1059 +0,0 @@ -// $Id: tut.h 1820 2006-09-06 16:54:23Z mloskot $ -// -// TUT: C++ Unit Test Framework -// http://tut-framework.sourceforge.net/ -// -// NOTE: This file is included to GEOS source tree and may include some -// changes comparing to the official version of TUT. -// -// The TUT License -// -// Copyright 2002-2006 Vladimir Dyuzhev. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR -// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -#ifndef TUT_H_GUARD -#define TUT_H_GUARD - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(TUT_USE_SEH) -#include -#include -#endif - -/** - * Template Unit Tests Framework for C++. - * http://tut.dozen.ru - * - * @author dozen, tut@dozen.ru - */ -namespace tut -{ - /** - * Exception to be throwed when attempted to execute - * missed test by number. - */ - struct no_such_test : public std::logic_error - { - no_such_test() : std::logic_error("no such test") {} - }; - - /** - * No such test and passed test number is higher than - * any test number in current group. Used in one-by-one - * test running when upper bound is not known. - */ - struct beyond_last_test : public no_such_test - { - beyond_last_test() {} - }; - - /** - * Group not found exception. - */ - struct no_such_group : public std::logic_error - { - no_such_group(const std::string& grp) - : std::logic_error(grp) - {} - }; - - /** - * Internal exception to be throwed when - * no more tests left in group or journal. - */ - struct no_more_tests - { - no_more_tests(){} - }; - - /** - * Internal exception to be throwed when - * test constructor has failed. - */ - struct bad_ctor : public std::logic_error - { - bad_ctor(const std::string& msg) - : std::logic_error(msg) - {} - }; - - /** - * Exception to be throwed when ensure() fails or fail() called. - */ - class failure : public std::logic_error - { - public: - failure(const std::string& msg) - : std::logic_error(msg) - {} - }; - - /** - * Exception to be throwed when test desctructor throwed an exception. - */ - class warning : public std::logic_error - { - public: - warning(const std::string& msg) - : std::logic_error(msg) - {} - }; - - /** - * Exception to be throwed when test is going to send non-failure - * information message. - */ - class information : public std::logic_error - { - public: - information(const std::string& msg) - : std::logic_error(msg) - {} - }; - - /** - * Exception to be throwed when test issued SEH (Win32) - */ - class seh : public std::logic_error - { - public: - seh(const std::string& msg) - : std::logic_error(msg) - {} - }; - - /** - * Return type of runned test/test group. - * - * For test: contains result of test and, possible, message - * for failure or exception. - */ - struct test_result - { - /** - * Test group name. - */ - std::string group; - - /** - * Test number in group. - */ - int test; - - /** - * ok - test finished successfully - * fail - test failed with ensure() or fail() methods - * ex - test throwed an exceptions - * warn - test finished successfully, but test destructor throwed - * term - test forced test application to terminate abnormally - */ - typedef enum { ok, fail, ex, warn, term, ex_ctor, inform } result_type; - result_type result; - - /** - * Exception message for failed test. - */ - std::string message; - std::string exception_typeid; - - /** - * Default constructor. - */ - test_result() - : test(0), result(ok) - {} - - /** - * Constructor. - */ - test_result( const std::string& grp,int pos,result_type res) - : group(grp), test(pos), result(res) - {} - - /** - * Constructor with exception. - */ - test_result( const std::string& grp,int pos, - result_type res, - const std::exception& ex) - : group(grp), test(pos), result(res), - message(ex.what()), exception_typeid(typeid(ex).name()) - {} - - }; - - /** - * Interface. - * Test group operations. - */ - struct group_base - { - virtual ~group_base(){}; - - // execute tests iteratively - virtual void rewind() = 0; - virtual test_result run_next() = 0; - - // execute one test - virtual test_result run_test(int n) = 0; - }; - - /** - * Test runner callback interface. - * Can be implemented by caller to update - * tests results in real-time. User can implement - * any of callback methods, and leave unused - * in default implementation. - */ - struct callback - { - /** - * Virtual destructor is a must for subclassed types. - */ - virtual ~callback(){}; - - /** - * Called when new test run started. - */ - virtual void run_started(){}; - - /** - * Called when a group started - * @param name Name of the group - */ - virtual void group_started(const std::string& /*name*/){}; - - /** - * Called when a test finished. - * @param tr Test results. - */ - virtual void test_completed(const test_result& /*tr*/){}; - - /** - * Called when a group is completed - * @param name Name of the group - */ - virtual void group_completed(const std::string& /*name*/){}; - - /** - * Called when all tests in run completed. - */ - virtual void run_completed(){}; - }; - - /** - * Typedef for runner::list_groups() - */ - typedef std::vector groupnames; - - /** - * Test runner. - */ - class test_runner - { - protected: - typedef std::map groups; - typedef groups::iterator iterator; - typedef groups::const_iterator const_iterator; - groups groups_; - - callback default_callback_; - callback* callback_; - - public: - /** - * Constructor - */ - test_runner() : callback_(&default_callback_) - { - } - - /** - * Stores another group for getting by name. - */ - void register_group(const std::string& name,group_base* gr) - { - if( gr == 0 ) - { - throw std::invalid_argument("group shall be non-null"); - } - - groups::iterator found = groups_.find(name); - if( found != groups_.end() ) - { - std::string msg("attempt to add already existent group "+name); - // this exception terminates application so we use cerr also - std::cerr << msg << std::endl; - throw std::logic_error(msg); - } - - groups_[name] = gr; - } - - /** - * Stores callback object. - */ - void set_callback(callback* cb) - { - callback_ = cb==0? &default_callback_:cb; - } - - /** - * Returns callback object. - */ - callback& get_callback() const - { - return *callback_; - } - - /** - * Returns list of known test groups. - */ - const groupnames list_groups() const - { - groupnames ret; - const_iterator i = groups_.begin(); - const_iterator e = groups_.end(); - while( i != e ) - { - ret.push_back(i->first); - ++i; - } - return ret; - } - - /** - * Runs all tests in all groups. - * @param callback Callback object if exists; null otherwise - */ - void run_tests() const - { - callback_->run_started(); - - const_iterator i = groups_.begin(); - const_iterator e = groups_.end(); - while( i != e ) - { - callback_->group_started(i->first); - try - { - run_all_tests_in_group_(i); - } - catch( const no_more_tests& ) - { - callback_->group_completed(i->first); - } - - ++i; - } - - callback_->run_completed(); - } - - /** - * Runs all tests in specified group. - */ - void run_tests(const std::string& group_name) const - { - callback_->run_started(); - - const_iterator i = groups_.find(group_name); - if( i == groups_.end() ) - { - callback_->run_completed(); - throw no_such_group(group_name); - } - - callback_->group_started(group_name); - try - { - run_all_tests_in_group_(i); - } - catch( const no_more_tests& ) - { - // ok - } - - callback_->group_completed(group_name); - callback_->run_completed(); - } - - /** - * Runs one test in specified group. - */ - test_result run_test(const std::string& group_name,int n) const - { - callback_->run_started(); - - const_iterator i = groups_.find(group_name); - if( i == groups_.end() ) - { - callback_->run_completed(); - throw no_such_group(group_name); - } - - callback_->group_started(group_name); - try - { - test_result tr = i->second->run_test(n); - callback_->test_completed(tr); - callback_->group_completed(group_name); - callback_->run_completed(); - return tr; - } - catch( const beyond_last_test& ) - { - callback_->group_completed(group_name); - callback_->run_completed(); - throw; - } - catch( const no_such_test& ) - { - callback_->group_completed(group_name); - callback_->run_completed(); - throw; - } - } - - private: - void run_all_tests_in_group_(const_iterator i) const - { - i->second->rewind(); - for( ;; ) - { - test_result tr = i->second->run_next(); - callback_->test_completed(tr); - - if( tr.result == test_result::ex_ctor ) - { - throw no_more_tests(); - } - } - } - }; - - /** - * Singleton for test_runner implementation. - * Instance with name runner_singleton shall be implemented - * by user. - */ - class test_runner_singleton - { - public: - static test_runner& get() - { - static test_runner tr; - return tr; - } - }; - extern test_runner_singleton runner; - - /** - * Test object. Contains data test run upon and default test method - * implementation. Inherited from Data to allow tests to - * access test data as members. - */ - template - class test_object : public Data - { - public: - /** - * Default constructor - */ - test_object(){}; - - /** - * The flag is set to true by default (dummy) test. - * Used to detect usused test numbers and avoid unnecessary - * test object creation which may be time-consuming depending - * on operations described in Data::Data() and Data::~Data(). - * TODO: replace with throwing special exception from default test. - */ - bool called_method_was_a_dummy_test_; - - /** - * Default do-nothing test. - */ - template - void test() - { - called_method_was_a_dummy_test_ = true; - } - }; - - namespace - { - /** - * Tests provided condition. - * Throws if false. - */ - void ensure(bool cond) - { - if( !cond ) throw failure(""); - } - - /** - * Tests provided condition. - * Throws if false. - */ - template - void ensure(const T msg,bool cond) - { - if( !cond ) throw failure(msg); - } - - /** - * Tests two objects for being equal. - * Throws if false. - * - * NB: both T and Q must have operator << defined somewhere, or - * client code will not compile at all! - */ - template - void ensure_equals(const char* msg,const Q& actual,const T& expected) - { - if( !(expected == actual) ) - { - std::stringstream ss; - ss << (msg?msg:"") << (msg?": ":"") - << "expected " << expected - << " actual " << actual; - throw failure(ss.str().c_str()); - } - } - - // ensure_equals specialization for double - template <> - void ensure_equals(const char* msg, const double& actual,const double& expected) - { - const double epsilon = std::numeric_limits::epsilon(); - const double diff = actual - expected; - - if ( !((diff <= epsilon) && (diff >= -epsilon )) ) - { - std::stringstream ss; - ss << (msg?msg:"") << (msg?": ":"") - << std::scientific - << std::showpoint - << std::setprecision(16) - << "expected " << expected - << " actual " << actual - << " with precision " << epsilon; - throw failure(ss.str().c_str()); - } - } - - template - void ensure_equals(const Q& actual,const T& expected) - { - ensure_equals<>(0,actual,expected); - } - - /** - * Tests two objects for being equal. - * Throws if false. - * - * NB: both T and Q must have operator << defined somewhere, or - * client code will not compile at all! - */ - template - void ensure_not_equals(const char* msg,const Q& actual,const T& expected) - { - if( !(expected != actual) ) - { - std::stringstream ss; - ss << (msg?msg:"") << (msg?": ":"") - << "expected " << expected - << " actual " << actual; - throw failure(ss.str().c_str()); - } - } - - template - void ensure_not_equals(const Q& actual,const T& expected) - { - ensure_not_equals<>(0,actual,expected); - } - - /** - * Tests two objects for being at most in given distance one from another. - * Borders are excluded. - * Throws if false. - * - * NB: T must have operator << defined somewhere, or - * client code will not compile at all! Also, T shall have - * operators + and -, and be comparable. - */ - template - void ensure_distance(const char* msg,const T& actual, - const T& expected,const T& distance) - { - if( expected-distance >= actual || expected+distance <= actual ) - { - std::stringstream ss; - ss << (msg?msg:"") << (msg?": ":"") - << "expected [" << expected-distance - << ";" << expected+distance - << "] actual " << actual; - throw failure(ss.str().c_str()); - } - } - - template - void ensure_distance(const T& actual,const T& expected,const T& distance) - { - ensure_distance<>(0,actual,expected,distance); - } - - /** - * Non-conditional information message. - */ - void inform(const char* msg="") - { - throw information(msg); - } - - /** - * Non-conditonal warning message. - */ - void warn(const char* msg="") - { - throw warning(msg); - } - - /** - * Unconditionally fails with message. - */ - void fail(const char* msg="") - { - throw failure(msg); - } - } - - /** - * Walks through test tree and stores address of each - * test method in group. Instantiation stops at 0. - */ - template - struct tests_registerer - { - static void reg(Group& group) - { - group.reg(n,&Test::template test); - tests_registerer::reg(group); - } - }; - - template - struct tests_registerer - { - static void reg(Group&){}; - }; - - /** - * Test group; used to recreate test object instance for - * each new test since we have to have reinitialized - * Data base class. - */ - template - class test_group : public group_base - { - const char* name_; - - typedef void (test_object::*testmethod)(); - typedef std::map tests; - typedef typename tests::iterator tests_iterator; - typedef typename tests::const_iterator tests_const_iterator; - typedef typename tests::const_reverse_iterator - tests_const_reverse_iterator; - typedef typename tests::size_type size_type; - - tests tests_; - tests_iterator current_test_; - - /** - * Exception-in-destructor-safe smart-pointer class. - */ - template - class safe_holder - { - T* p_; - bool permit_throw_in_dtor; - - safe_holder(const safe_holder&); - safe_holder& operator = (const safe_holder&); - - public: - safe_holder() : p_(0),permit_throw_in_dtor(false) - { - } - - ~safe_holder() - { - release(); - } - - T* operator -> () const { return p_; }; - T* get() const { return p_; }; - - /** - * Tell ptr it can throw from destructor. Right way is to - * use std::uncaught_exception(), but some compilers lack - * correct implementation of the function. - */ - void permit_throw(){ permit_throw_in_dtor = true; } - - /** - * Specially treats exceptions in test object destructor; - * if test itself failed, exceptions in destructor - * are ignored; if test was successful and destructor failed, - * warning exception throwed. - */ - void release() - { - try - { - if( delete_obj() == false ) - { - throw warning("destructor of test object raised an SEH exception"); - } - } - catch( const std::exception& ex ) - { - if( permit_throw_in_dtor ) - { - std::string msg = "destructor of test object raised exception: "; - msg += ex.what(); - throw warning(msg); - } - } - catch( ... ) - { - if( permit_throw_in_dtor ) - { - throw warning("destructor of test object raised an exception"); - } - } - } - - /** - * Re-init holder to get brand new object. - */ - void reset() - { - release(); - permit_throw_in_dtor = false; - p_ = new T(); - } - - bool delete_obj() - { -#if defined(TUT_USE_SEH) - __try - { -#endif - T* p = p_; - p_ = 0; - delete p; -#if defined(TUT_USE_SEH) - } - __except(handle_seh_(::GetExceptionCode())) - { - if( permit_throw_in_dtor ) - { - return false; - } - } -#endif - return true; - } - }; - - public: - typedef test_object object; - - /** - * Creates and registers test group with specified name. - */ - test_group(const char* name) - : name_(name) - { - // register itself - runner.get().register_group(name_,this); - - // register all tests - tests_registerer::reg(*this); - }; - - /** - * This constructor is used in self-test run only. - */ - test_group(const char* name,test_runner& another_runner) - : name_(name) - { - // register itself - another_runner.register_group(name_,this); - - // register all tests - tests_registerer, - test_group,MaxTestsInGroup>::reg(*this); - }; - - /** - * Registers test method under given number. - */ - void reg(int n,testmethod tm) - { - tests_[n] = tm; - } - - /** - * Reset test position before first test. - */ - void rewind() - { - current_test_ = tests_.begin(); - } - - /** - * Runs next test. - */ - test_result run_next() - { - if( current_test_ == tests_.end() ) - { - throw no_more_tests(); - } - - // find next user-specialized test - safe_holder obj; - while( current_test_ != tests_.end() ) - { - try - { - return run_test_(current_test_++,obj); - } - catch( const no_such_test& ) - { - continue; - } - } - - throw no_more_tests(); - } - - /** - * Runs one test by position. - */ - test_result run_test(int n) - { - // beyond tests is special case to discover upper limit - if( tests_.rbegin() == tests_.rend() ) throw beyond_last_test(); - if( tests_.rbegin()->first < n ) throw beyond_last_test(); - - // withing scope; check if given test exists - tests_iterator ti = tests_.find(n); - if( ti == tests_.end() ) throw no_such_test(); - - safe_holder obj; - return run_test_(ti,obj); - } - - private: - /** - * VC allows only one exception handling type per function, - * so I have to split the method - */ - test_result run_test_(const tests_iterator& ti,safe_holder& obj) - { - try - { - if( run_test_seh_(ti->second,obj) == false ) - throw seh("seh"); - } - catch(const no_such_test&) - { - throw; - } - catch(const warning& ex) - { - // test ok, but destructor failed - test_result tr(name_,ti->first,test_result::warn,ex); - return tr; - } - catch(const failure& ex) - { - // test failed because of ensure() or similar method - test_result tr(name_,ti->first,test_result::fail,ex); - return tr; - } - catch(const information& ex) - { - // test not failed and not succeeded, just wants to inform about something - test_result tr(name_,ti->first,test_result::inform,ex); - return tr; - } - catch(const seh& ex) - { - // test failed with sigsegv, divide by zero, etc - test_result tr(name_,ti->first,test_result::term,ex); - return tr; - } - catch(const bad_ctor& ex) - { - // test failed because test ctor failed; stop the whole group - test_result tr(name_,ti->first,test_result::ex_ctor,ex); - return tr; - } - catch(const std::exception& ex) - { - // test failed with std::exception - test_result tr(name_,ti->first,test_result::ex,ex); - return tr; - } - catch(...) - { - // test failed with unknown exception - test_result tr(name_,ti->first,test_result::ex); - return tr; - } - - // test passed - test_result tr(name_,ti->first,test_result::ok); - return tr; - } - - /** - * Runs one under SEH if platform supports it. - */ - bool run_test_seh_(testmethod tm,safe_holder& obj) - { -#if defined(TUT_USE_SEH) - __try - { -#endif - if( obj.get() == 0 ) - { - reset_holder_(obj); - } - obj->called_method_was_a_dummy_test_ = false; - -#if defined(TUT_USE_SEH) - __try - { -#endif - (obj.get()->*tm)(); -#if defined(TUT_USE_SEH) - } - __except(handle_seh_(::GetExceptionCode())) - { - // throw seh("SEH"); - return false; - } -#endif - - if( obj->called_method_was_a_dummy_test_ ) - { - // do not call obj.release(); reuse object - throw no_such_test(); - } - - obj.permit_throw(); - obj.release(); -#if defined(TUT_USE_SEH) - } - __except(handle_seh_(::GetExceptionCode())) - { - return false; - } -#endif - return true; - } - - void reset_holder_(safe_holder& obj) - { - try - { - obj.reset(); - } - catch(const std::exception& ex) - { - throw bad_ctor(ex.what()); - } - catch(...) - { - throw bad_ctor("test constructor has generated an exception; \ - group execution is terminated"); - } - } - }; - -#if defined(TUT_USE_SEH) - /** - * Decides should we execute handler or ignore SE. - */ - inline int handle_seh_(DWORD excode) - { - switch(excode) - { - case EXCEPTION_ACCESS_VIOLATION: - case EXCEPTION_DATATYPE_MISALIGNMENT: - case EXCEPTION_BREAKPOINT: - case EXCEPTION_SINGLE_STEP: - case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: - case EXCEPTION_FLT_DENORMAL_OPERAND: - case EXCEPTION_FLT_DIVIDE_BY_ZERO: - case EXCEPTION_FLT_INEXACT_RESULT: - case EXCEPTION_FLT_INVALID_OPERATION: - case EXCEPTION_FLT_OVERFLOW: - case EXCEPTION_FLT_STACK_CHECK: - case EXCEPTION_FLT_UNDERFLOW: - case EXCEPTION_INT_DIVIDE_BY_ZERO: - case EXCEPTION_INT_OVERFLOW: - case EXCEPTION_PRIV_INSTRUCTION: - case EXCEPTION_IN_PAGE_ERROR: - case EXCEPTION_ILLEGAL_INSTRUCTION: - case EXCEPTION_NONCONTINUABLE_EXCEPTION: - case EXCEPTION_STACK_OVERFLOW: - case EXCEPTION_INVALID_DISPOSITION: - case EXCEPTION_GUARD_PAGE: - case EXCEPTION_INVALID_HANDLE: - return EXCEPTION_EXECUTE_HANDLER; - }; - - return EXCEPTION_CONTINUE_SEARCH; - } -#endif // #if defined(TUT_USE_SEH) - -} // namespace tut - -#endif // #ifndef TUT_H_GUARD - diff -Nru geos-3.1.0/tests/tut/tut_reporter.h geos-3.2.2/tests/tut/tut_reporter.h --- geos-3.1.0/tests/tut/tut_reporter.h 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/tut/tut_reporter.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,252 +0,0 @@ -// $Id: tut_reporter.h 1820 2006-09-06 16:54:23Z mloskot $ -// -// TUT: C++ Unit Test Framework -// http://tut-framework.sourceforge.net/ -// -// NOTE: This file is a customized version of the official tut_reporter.h. -// The TUT's version of tut_reporter.h file is only a sample of -// how to write TUT visualizer. -// -#ifndef TUT_REPORTER -#define TUT_REPORTER - -#include - -/** -* Template Unit Tests Framework for C++. -* http://tut.dozen.ru -* -* @author dozen, tut@dozen.ru -*/ -namespace -{ - std::ostream& operator << (std::ostream& os,const tut::test_result& tr) - { - switch(tr.result) - { - case tut::test_result::ok: - os << '.'; - break; - - case tut::test_result::fail: - os << '[' << tr.test << "=F]"; - break; - - case tut::test_result::ex_ctor: - os << '[' << tr.test << "=C]"; - break; - - case tut::test_result::ex: - os << '[' << tr.test << "=X]"; - break; - - case tut::test_result::warn: - os << '[' << tr.test << "=W]"; - break; - - case tut::test_result::term: - os << '[' << tr.test << "=T]"; - break; - case tut::test_result::inform: - break; // do nothing - } - - return os; - } -} // namespace - -namespace tut -{ - /** - * Default TUT callback handler. - */ - class reporter : public tut::callback - { - std::string current_group; - typedef std::vector not_passed_list; - not_passed_list not_passed; - std::ostream& os; - - public: - int ok_count; - int ok_group_count; - int exceptions_count; - int failures_count; - int terminations_count; - int warnings_count; - int informs_count; - - reporter() : os(std::cout) - { - init(); - } - - reporter(std::ostream& out) : os(out) - { - init(); - } - - void run_started() - { - init(); - } - - void test_completed(const tut::test_result& tr) - { - if( tr.group != current_group ) - { - os << std::endl << tr.group << ": " << std::flush; - current_group = tr.group; - } - - os << tr << std::flush; - - // inform result is neutral: not failure naither success - if (tr.result == tut::test_result::inform) - { - informs_count++; - } - - // Treat inform test results as passed - if( tr.result == tut::test_result::ok - || tr.result == tut::test_result::inform ) - { - ok_group_count++; - ok_count++; - } - else if( tr.result == tut::test_result::ex ) - exceptions_count++; - else if( tr.result == tut::test_result::ex_ctor ) - exceptions_count++; - else if( tr.result == tut::test_result::fail ) - failures_count++; - else if( tr.result == tut::test_result::warn ) - warnings_count++; - else - terminations_count++; - - if( tr.result != tut::test_result::ok ) - { - not_passed.push_back(tr); - } - } - - void group_started(const std::string& name) - { - ok_group_count = 0; - } - - void group_completed(const std::string& name) - { - os << " " << ok_group_count << std::endl; - } - - void run_completed() - { - os << std::endl; - - if( not_passed.size() > 0 ) - { - not_passed_list::const_iterator i = not_passed.begin(); - while( i != not_passed.end() ) - { - tut::test_result tr = *i; - - os << std::endl; - os << "---> " << "group: " << tr.group - << ", test: test<" << tr.test - << ">" << std::endl; - os << " problem: "; - - switch(tr.result) - { - case test_result::fail: - os << "assertion failed" << std::endl; - break; - case test_result::ex: - case test_result::ex_ctor: - os << "unexpected exception" << std::endl; - if( tr.exception_typeid != "" ) - { - os << " exception typeid: " - << tr.exception_typeid << std::endl; - } - break; - case test_result::term: - os << "would be terminated" << std::endl; - break; - case test_result::warn: - os << "test passed, but cleanup code (destructor) \ - raised an exception" << std::endl; - break; - case test_result::inform: - os << "test sends neutral information message" << std::endl; - break; - default: - break; - } - - if( tr.message != "" ) - { - if( tr.result == test_result::fail ) - { - os << " failed assertion: \"" - << tr.message << "\"" << std::endl; - } - else - { - os << " message: \"" - << tr.message << "\"" << std::endl; - } - } - - ++i; - } - } - - os << std::endl; - os << "Tests summary:" << std::endl; - if( terminations_count > 0 ) - os << " - terminations:" << terminations_count << std::endl; - if( exceptions_count > 0 ) - os << " - exceptions:" << exceptions_count << std::endl; - if( failures_count > 0 ) - os << " - failures:" << failures_count << std::endl; - if( warnings_count > 0 ) - os << " - warnings:" << warnings_count << std::endl; - if( informs_count > 0 ) - os << " - informing:" << informs_count << std::endl; - - os << " - passed: " << ok_count; - os << std::endl; - } - - bool all_ok() const - { - return not_passed.size() == 0; - } - - int get_failures_count() const - { - return failures_count; - } - - private: - void init() - { - ok_count = 0; - ok_group_count = 0; - exceptions_count = 0; - failures_count = 0; - terminations_count = 0; - warnings_count = 0; - informs_count = 0; - - not_passed.clear(); - } - }; - -} // namespace tut - -#endif // #ifndef TUT_REPORTER - diff -Nru geos-3.1.0/tests/tut/tut_restartable.h geos-3.2.2/tests/tut/tut_restartable.h --- geos-3.1.0/tests/tut/tut_restartable.h 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/tut/tut_restartable.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,372 +0,0 @@ -// $Id: tut_restartable.h 1820 2006-09-06 16:54:23Z mloskot $ -// -// TUT: C++ Unit Test Framework -// http://tut-framework.sourceforge.net/ -// -// NOTE: This file is included to GEOS source tree and may include some -// changes comparing to the official version of TUT. -// -// The TUT License -// -// Copyright 2002-2006 Vladimir Dyuzhev. -// -// Redistribution and use in source and binary forms, with or without modification, -// are permitted provided that the following conditions are met: -// -// Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR -// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, -// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -#ifndef TUT_RESTARTABLE_H_GUARD -#define TUT_RESTARTABLE_H_GUARD - -#include "tut.h" -#include -#include - -/** - * Template Unit Tests Framework for C++. - * http://tut.dozen.ru - * - * Optional restartable wrapper for test_runner. - * Allows to restart test runs finished due to - * abnormal test application termination (such as - * segmentation fault or math error). - * - * @author dozen, tut@dozen.ru - */ -namespace tut -{ - namespace util - { - /** - * Escapes non-alphabetical characters in string. - */ - std::string escape(const std::string& orig) - { - std::string rc; - std::string::const_iterator i,e; - i = orig.begin(); - e = orig.end(); - - while( i != e ) - { - if( (*i >= 'a' && *i <= 'z') || - (*i >= 'A' && *i <= 'Z') || - (*i >= '0' && *i <= '9') ) - { - rc += *i; - } - else - { - rc += '\\'; - rc += ('a'+(((unsigned int)*i)>>4)); - rc += ('a'+(((unsigned int)*i)&0xF)); - } - - ++i; - } - return rc; - } - - /** - * Un-escapes string. - */ - std::string unescape(const std::string& orig) - { - std::string rc; - std::string::const_iterator i,e; - i = orig.begin(); - e = orig.end(); - - while( i != e ) - { - if( *i != '\\' ) - { - rc += *i; - } - else - { - ++i; if( i == e ) throw std::invalid_argument("unexpected end of string"); - unsigned int c1 = *i; - ++i; if( i == e ) throw std::invalid_argument("unexpected end of string"); - unsigned int c2 = *i; - rc += (((c1-'a')<<4) + (c2-'a')); - } - - ++i; - } - return rc; - } - - /** - * Serialize test_result avoiding interfering with operator <<. - */ - void serialize(std::ostream& os,const tut::test_result& tr) - { - os << escape(tr.group) << std::endl; - os << tr.test << ' '; - switch(tr.result) - { - case test_result::ok: os << 0; break; - case test_result::fail: os << 1; break; - case test_result::ex: os << 2; break; - case test_result::warn: os << 3; break; - case test_result::term: os << 4; break; - default: throw std::logic_error("operator << : bad result_type"); - } - os << ' ' << escape(tr.message) << std::endl; - } - - /** - * deserialization for test_result - */ - void deserialize(std::istream& is,tut::test_result& tr) - { - std::getline(is,tr.group); - if( is.eof() ) throw tut::no_more_tests(); - tr.group = unescape(tr.group); - - tr.test = -1; - is >> tr.test; - if( tr.test < 0 ) throw std::logic_error("operator >> : bad test number"); - - int n = -1; is >> n; - switch(n) - { - case 0: tr.result = test_result::ok; break; - case 1: tr.result = test_result::fail; break; - case 2: tr.result = test_result::ex; break; - case 3: tr.result = test_result::warn; break; - case 4: tr.result = test_result::term; break; - default: throw std::logic_error("operator >> : bad result_type"); - } - - is.ignore(1); // space - std::getline(is,tr.message); - tr.message = unescape(tr.message); - if( !is.good() ) throw std::logic_error("malformed test result"); - } - }; - - /** - * Restartable test runner wrapper. - */ - class restartable_wrapper - { - test_runner& runner_; - callback* callback_; - - std::string dir_; - std::string log_; // log file: last test being executed - std::string jrn_; // journal file: results of all executed tests - - public: - /** - * Default constructor. - * @param dir Directory where to search/put log and journal files - */ - restartable_wrapper(const std::string& dir = ".") - : runner_(runner.get()), callback_(0), dir_(dir) - { - // dozen: it works, but it would be better to use system path separator - jrn_ = dir_+'/'+"journal.tut"; - log_ = dir_+'/'+"log.tut"; - } - - /** - * Stores another group for getting by name. - */ - void register_group(const std::string& name,group_base* gr) - { - runner_.register_group(name,gr); - } - - /** - * Stores callback object. - */ - void set_callback(callback* cb) - { - callback_ = cb; - } - - /** - * Returns callback object. - */ - callback& get_callback() const - { - return runner_.get_callback(); - } - - /** - * Returns list of known test groups. - */ - groupnames list_groups() const - { - return runner_.list_groups(); - } - - /** - * Runs all tests in all groups. - */ - void run_tests() const - { - // where last run was failed - std::string fail_group; - int fail_test; - read_log_(fail_group,fail_test); - bool fail_group_reached = (fail_group == ""); - - // iterate over groups - tut::groupnames gn = list_groups(); - tut::groupnames::const_iterator gni,gne; - gni = gn.begin(); - gne = gn.end(); - while( gni != gne ) - { - // skip all groups before one that failed - if( !fail_group_reached ) - { - if( *gni != fail_group ) - { - ++gni; - continue; - } - fail_group_reached = true; - } - - // first or restarted run - int test = (*gni == fail_group && fail_test>=0)? fail_test+1:1; - while(true) - { - // last executed test pos - register_execution_(*gni,test); - - try - { - tut::test_result tr = runner_.run_test(*gni,test); - register_test_(tr); - } - catch( const tut::beyond_last_test& ex ) - { - break; - } - catch( const tut::no_such_test& ex ) - { - // it's ok - } - - ++test; - } - - ++gni; - } - - // show final results to user - invoke_callback_(); - - // truncate files as mark of successful finish - truncate_(); - } - - private: - /** - * Shows results from journal file. - */ - void invoke_callback_() const - { - runner_.set_callback(callback_); - runner_.get_callback().run_started(); - - std::string current_group; - std::ifstream ijournal(jrn_.c_str()); - while( ijournal.good() ) - { - // read next test result - try - { - tut::test_result tr; - util::deserialize(ijournal,tr); - runner_.get_callback().test_completed(tr); - } - catch( const no_more_tests& ) - { - break; - } - } - - runner_.get_callback().run_completed(); - } - - /** - * Register test into journal. - */ - void register_test_(const test_result& tr) const - { - std::ofstream ojournal(jrn_.c_str(),std::ios::app); - util::serialize(ojournal,tr); - ojournal << std::flush; - if( !ojournal.good() ) - throw std::runtime_error("unable to register test result in file "+jrn_); - } - - /** - * Mark the fact test going to be executed - */ - void register_execution_(const std::string& grp,int test) const - { - // last executed test pos - std::ofstream olog(log_.c_str()); - olog << util::escape(grp) << std::endl << test << std::endl << std::flush; - if( !olog.good() ) - throw std::runtime_error("unable to register execution in file "+log_); - } - - /** - * Truncate tests. - */ - void truncate_() const - { - std::ofstream olog(log_.c_str()); - std::ofstream ojournal(jrn_.c_str()); - } - - /** - * Read log file - */ - void read_log_(std::string& fail_group,int& fail_test) const - { - // read failure point, if any - std::ifstream ilog(log_.c_str()); - std::getline(ilog,fail_group); - fail_group = util::unescape(fail_group); - ilog >> fail_test; - if( !ilog.good() ) - { - fail_group = ""; fail_test = -1; - truncate_(); - } - else - { - // test was terminated... - tut::test_result tr(fail_group,fail_test,tut::test_result::term); - register_test_(tr); - } - } - }; -} - -#endif - diff -Nru geos-3.1.0/tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp geos-3.2.2/tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp --- geos-3.1.0/tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/algorithm/CGAlgorithms/computeOrientationTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,9 @@ -// $Id: computeOrientationTest.cpp 2156 2008-08-12 00:23:44Z mloskot $ +// $Id: computeOrientationTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for CGAlgorithms::computeOrientation() function // Ported from JTS junit/algorithm/ComputeOrientationTest.java -// tut -#include +#include // geos #include #include diff -Nru geos-3.1.0/tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp geos-3.2.2/tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp --- geos-3.1.0/tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/algorithm/CGAlgorithms/isCCWTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,10 @@ -// $Id: isCCWTest.cpp 2165 2008-08-18 23:45:34Z mloskot $ +// $Id: isCCWTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for CGAlgorithms::isCCW() function // Ported from JTS junit/algorithm/IsCCWTest.java // tut -#include +#include // geos #include #include diff -Nru geos-3.1.0/tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp geos-3.2.2/tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp --- geos-3.1.0/tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/algorithm/CGAlgorithms/isPointInRingTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,17 +1,17 @@ -// $Id: isPointInRingTest.cpp 2184 2008-09-16 20:13:55Z mloskot $ +// $Id: isPointInRingTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for CGAlgorithms::isPointInRing() function -// GEOS +// tut +#include +// geos #include #include #include #include #include #include -// TUT -#include -// STL +// std #include #include diff -Nru geos-3.1.0/tests/unit/algorithm/ConvexHullTest.cpp geos-3.2.2/tests/unit/algorithm/ConvexHullTest.cpp --- geos-3.1.0/tests/unit/algorithm/ConvexHullTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/algorithm/ConvexHullTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,8 +1,10 @@ -// $Id: ConvexHullTest.cpp 2167 2008-08-19 00:18:04Z mloskot $ +// $Id: ConvexHullTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::algorithm::ConvexHull // Ported from JTS junit/algorithm/ConvexHullTest.java +#include +#include // geos #include #include @@ -17,9 +19,6 @@ #include #include #include -// tut -#include -#include namespace geos { namespace geom { diff -Nru geos-3.1.0/tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp geos-3.2.2/tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp --- geos-3.1.0/tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/algorithm/distance/DiscreteHausdorffDistanceTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,131 @@ +// $Id: DiscreteHausdorffDistanceTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Test Suite for geos::algorithm::distance::DiscreteHausdorffDistance +// Ported from JTS junit/algorithm/distance/DiscreteHausdorffDistanceTest.java rev. 1.2 + + +#include +// geos +#include +#include +#include +#include +#include // required for use in auto_ptr +#include +// std +#include +#include +#include + +namespace geos { + namespace geom { + class Geometry; + } +} + +using namespace geos::geom; +using namespace geos::algorithm::distance; // for Location + +namespace tut +{ + // + // Test Group + // + + // Test data, not used + struct test_DiscreteHausdorffDistance_data { + + typedef std::auto_ptr GeomPtr; + + test_DiscreteHausdorffDistance_data() + : + pm(), + gf(&pm), + reader(&gf) + {} + + static const double TOLERANCE; + + void runTest(const std::string& wkt1, const std::string& wkt2, + double expectedDistance) + { + GeomPtr g1 ( reader.read(wkt1) ); + GeomPtr g2 ( reader.read(wkt2) ); + + double distance = DiscreteHausdorffDistance::distance(*g1, *g2); + double diff = fabs(distance-expectedDistance); + //std::cerr << "expectedDistance:" << expectedDistance << " actual distance:" << distance << std::endl; + ensure( diff <= TOLERANCE ); + } + + void runTest(const std::string& wkt1, const std::string& wkt2, + double densifyFactor, double expectedDistance) + { + GeomPtr g1 ( reader.read(wkt1) ); + GeomPtr g2 ( reader.read(wkt2) ); + + double distance = DiscreteHausdorffDistance::distance(*g1, + *g2, densifyFactor); + double diff = fabs(distance-expectedDistance); + //std::cerr << "expectedDistance:" << expectedDistance << " actual distance:" << distance << std::endl; + ensure( diff <= TOLERANCE ); + } + + PrecisionModel pm; + GeometryFactory gf; + geos::io::WKTReader reader; + + }; + const double test_DiscreteHausdorffDistance_data::TOLERANCE = 0.00001; + + typedef test_group group; + typedef group::object object; + + group test_DiscreteHausdorffDistance_group("geos::algorithm::distace::DiscreteHausdorffDistance"); + + + + // + // Test Cases + // + + // 1 - testLineSegments + template<> + template<> + void object::test<1>() + { +runTest("LINESTRING (0 0, 2 1)", "LINESTRING (0 0, 2 0)", 1.0); + } + + // 2 - testLineSegments2 + template<> + template<> + void object::test<2>() + { +runTest("LINESTRING (0 0, 2 0)", "LINESTRING (0 1, 1 2, 2 1)", 2.0); + } + + // 3 - testLinePoints + template<> + template<> + void object::test<3>() + { +runTest("LINESTRING (0 0, 2 0)", "MULTIPOINT (0 1, 1 0, 2 1)", 1.0); + } + + // 4 - testLinesShowingDiscretenessEffect + // + // Shows effects of limiting HD to vertices + // Answer is not true Hausdorff distance. + // + template<> + template<> + void object::test<4>() + { +runTest("LINESTRING (130 0, 0 0, 0 150)", "LINESTRING (10 10, 10 150, 130 10)", 14.142135623730951); +// densifying provides accurate HD +runTest("LINESTRING (130 0, 0 0, 0 150)", "LINESTRING (10 10, 10 150, 130 10)", 0.5, 70.0); + } + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/algorithm/PointLocatorTest.cpp geos-3.2.2/tests/unit/algorithm/PointLocatorTest.cpp --- geos-3.1.0/tests/unit/algorithm/PointLocatorTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/algorithm/PointLocatorTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,18 +1,19 @@ -// $Id: PointLocatorTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: PointLocatorTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::algorithm::PointLocator // Ported from JTS junit/algorithm/PointLocator.java -// TUT -#include -// GEOS +#include +// geos #include #include #include #include #include // required for use in auto_ptr #include +// std #include +#include #include namespace geos { diff -Nru geos-3.1.0/tests/unit/algorithm/RobustLineIntersectionTest.cpp geos-3.2.2/tests/unit/algorithm/RobustLineIntersectionTest.cpp --- geos-3.1.0/tests/unit/algorithm/RobustLineIntersectionTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/algorithm/RobustLineIntersectionTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,293 @@ +// $Id: RobustLineIntersectionTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Ported from JTS junit/algorithm/RobustLineIntersectionTest.java rev. 1.3 + +#include +// geos +#include +#include +#include +#include +#include // required for use in auto_ptr +#include +#include +// std +#include +#include +#include + +namespace geos { + namespace geom { + class Geometry; + } +} + +using namespace geos::geom; // + +namespace tut +{ + // + // Test Group + // + + struct test_robustlineintersection_data + { + typedef std::auto_ptr GeomPtr; + + bool equals(const Coordinate& p0, const Coordinate& p1, + double distanceTolerance) + { + return p0.distance(p1) <= distanceTolerance; + } + + void testIntPoints(const Coordinate& p, const Coordinate& q, + double distanceTolerance) + { + bool isEqual = equals(p, q, distanceTolerance); + ensure("testIntPoints", isEqual); + } + + /** + * + * @param pt array of 4 Coordinates + * @param expectedIntersectionNum + * @param intPt the expected intersection points + * (maybe null if not tested) + * must contain at least expectedIntersectionNum + * elements + */ + void computeIntersection(const std::vector& pt, + int expectedIntersectionNum, + const std::vector& intPt, + double distanceTolerance) + { + geos::algorithm::LineIntersector li; + li.computeIntersection(pt[0], pt[1], pt[2], pt[3]); + + int intNum = li.getIntersectionNum(); + ensure_equals(intNum, expectedIntersectionNum); + + if ( intPt.empty() ) return; + + ensure_equals(intPt.size(), static_cast::size_type>(intNum)); + + // test that both points are represented here + //bool isIntPointsCorrect = true; + if (intNum == 1) + { + testIntPoints(intPt[0], li.getIntersection(0), + distanceTolerance); + } + else if (intNum == 2) + { + testIntPoints(intPt[0], li.getIntersection(0), + distanceTolerance); + testIntPoints(intPt[1], li.getIntersection(0), + distanceTolerance); + + if ( !( + equals(intPt[0],li.getIntersection(0), distanceTolerance) + || + equals(intPt[0],li.getIntersection(1), distanceTolerance) ) ) + { + testIntPoints(intPt[0], li.getIntersection(0), + distanceTolerance); + testIntPoints(intPt[0], li.getIntersection(1), + distanceTolerance); + } + + else if ( !( + equals(intPt[1],li.getIntersection(0), distanceTolerance) + || + equals(intPt[1],li.getIntersection(1), distanceTolerance) ) ) + { + testIntPoints(intPt[1], li.getIntersection(0), + distanceTolerance); + testIntPoints(intPt[1], li.getIntersection(1), + distanceTolerance); + } + } + //assertTrue("Int Pts not equal", isIntPointsCorrect); + } + + void computeIntersection(const std::string& wkt1, + const std::string& wkt2, + int expectedIntersectionNum, + const std::string& expectedWKT, + double distanceTolerance) + //throws ParseException + { + GeomPtr g1(reader.read(wkt1)); + GeomPtr g2(reader.read(wkt2)); + + LineString* l1ptr = dynamic_cast(g1.get()); + LineString* l2ptr = dynamic_cast(g2.get()); + + ensure(0 != l1ptr); + ensure(0 != l2ptr); + + LineString& l1 = *l1ptr; + LineString& l2 = *l2ptr; + + std::vector pt; + pt.push_back(l1.getCoordinateN(0)); + pt.push_back(l1.getCoordinateN(1)); + pt.push_back(l2.getCoordinateN(0)); + pt.push_back(l2.getCoordinateN(1)); + + GeomPtr g(reader.read(expectedWKT)); + + std::auto_ptr cs ( g->getCoordinates() ); + + std::vector intPt; + for (size_t i=0; isize(); ++i) + intPt.push_back(cs->getAt(i)); + + computeIntersection(pt, expectedIntersectionNum, + intPt, distanceTolerance); + } + + void computeIntersection(const std::string& wkt1, + const std::string& wkt2, + int expectedIntersectionNum, + const std::vector& intPt, + double distanceTolerance) + // throws ParseException + { + GeomPtr g1(reader.read(wkt1)); + GeomPtr g2(reader.read(wkt2)); + + LineString* l1ptr = dynamic_cast(g1.get()); + LineString* l2ptr = dynamic_cast(g2.get()); + + ensure(0 != l1ptr); + ensure(0 != l2ptr); + + LineString& l1 = *l1ptr; + LineString& l2 = *l2ptr; + + std::vector pt; + pt.push_back(l1.getCoordinateN(0)); + pt.push_back(l1.getCoordinateN(1)); + pt.push_back(l2.getCoordinateN(0)); + pt.push_back(l2.getCoordinateN(1)); + + computeIntersection(pt, expectedIntersectionNum, + intPt, distanceTolerance); + } + + test_robustlineintersection_data() + : + pm(), + gf(&pm), + reader(&gf) + { + } + + PrecisionModel pm; + GeometryFactory gf; + geos::io::WKTReader reader; + + }; + + typedef test_group group; + typedef group::object object; + + group test_robustlineintersection_group( + "geos::algorithm::RobustLineIntersection"); + + + // + // Test Cases + // + + // 1 - Test from strk which is bad in GEOS (2009-04-14). + template<> + template<> + void object::test<1>() + { + computeIntersection( + "LINESTRING (588750.7429703881 4518950.493668233, 588748.2060409798 4518933.9452804085)", + "LINESTRING (588745.824857241 4518940.742239175, 588748.2060437313 4518933.9452791475)", + 1, + "POINT (588748.2060416829 4518933.945284994)", + 0); + } + + // 2 - Test from strk which is bad in GEOS (2009-04-14). + template<> + template<> + void object::test<2>() + { + computeIntersection( + "LINESTRING (588743.626135934 4518924.610969561, 588732.2822865889 4518925.4314047815)", + "LINESTRING (588739.1191384895 4518927.235700594, 588731.7854614238 4518924.578370095)", + 1, + "POINT (588733.8306132929 4518925.319423238)", + 0); + } + + // 3 - DaveSkeaCase + // + // This used to be a failure case (exception), + // but apparently works now. + // Possibly normalization has fixed this? + // +#if 0 // fails: finds 1 intersection rather then two + template<> + template<> + void object::test<3>() + { + std::vector intPt; + intPt.push_back(Coordinate(2089426.5233462777, 1180182.3877339689)); + intPt.push_back(Coordinate(2085646.6891757075, 1195618.7333999649)); + + computeIntersection( + "LINESTRING ( 2089426.5233462777 1180182.3877339689, 2085646.6891757075 1195618.7333999649 )", + "LINESTRING ( 1889281.8148903656 1997547.0560044837, 2259977.3672235999 483675.17050843034 )", + 2, + intPt, 0); + } +#endif // fails + +#if 0 // fails: the intersection point doesn't match + // 4 - Outside envelope using HCoordinate method (testCmp5CaseWKT) + template<> + template<> + void object::test<4>() + { + std::vector intPt; + intPt.push_back(Coordinate(4348437.0557510145, 5552597.375203926)); + + computeIntersection( + "LINESTRING (4348433.262114629 5552595.478385733, 4348440.849387404 5552599.272022122 )", + "LINESTRING (4348433.26211463 5552595.47838573, 4348440.8493874 5552599.27202212 )", + 1, + intPt, 0); + } +#endif // fails + +#if 0 // fails: the intersection point doesn't match + // 5 - Result of this test should be the same as the WKT one! + // (testCmp5CaseRaw) + template<> + template<> + void object::test<5>() + { + std::vector pt; + pt.push_back(Coordinate(4348433.262114629, 5552595.478385733)); + pt.push_back(Coordinate(4348440.849387404, 5552599.272022122)); + pt.push_back(Coordinate(4348433.26211463, 5552595.47838573)); + pt.push_back(Coordinate(4348440.8493874, 5552599.27202212)); + + std::vector intPt; + intPt.push_back(Coordinate(4348437.0557510145, 5552597.375203926)); + + computeIntersection( pt, 1, intPt, 0); + } +#endif // fails + + + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/algorithm/RobustLineIntersectorTest.cpp geos-3.2.2/tests/unit/algorithm/RobustLineIntersectorTest.cpp --- geos-3.1.0/tests/unit/algorithm/RobustLineIntersectorTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/algorithm/RobustLineIntersectorTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,256 @@ +// $Id: RobustLineIntersectorTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Ported from JTS junit/algorithm/RobustLineIntersectorTest.java rev. 1.1 + +#include +// geos +#include +#include +#include +#include +#include +#include // required for use in auto_ptr +#include +#include +#include +#include +#include +// std +#include +#include +#include + + +using namespace geos::geom; // +using geos::algorithm::LineIntersector; +using geos::algorithm::CGAlgorithms; + + +namespace tut +{ + // + // Test Group + // + + struct test_robustlineintersector_data { + + typedef std::auto_ptr GeomPtr; + + LineIntersector i; + + }; + + typedef test_group group; + typedef group::object object; + + group test_robustlineintersector_group( + "geos::algorithm::RobustLineIntersector"); + + + + + // + // Test Cases + // + + // 1 - test2Lines + template<> + template<> + void object::test<1>() + { + LineIntersector i; + Coordinate p1(10, 10); + Coordinate p2(20, 20); + Coordinate q1(20, 10); + Coordinate q2(10, 20); + Coordinate x(15, 15); + i.computeIntersection(p1, p2, q1, q2); + + ensure_equals(i.getIntersectionNum(), (int)LineIntersector::POINT_INTERSECTION); + ensure_equals(i.getIntersectionNum(), 1); + ensure_equals(i.getIntersection(0), x); + ensure("isProper", i.isProper()); + ensure("hasIntersection", i.hasIntersection()); + } + + // 2 - testCollinear1 + template<> + template<> + void object::test<2>() + { + LineIntersector i; + Coordinate p1(10, 10); + Coordinate p2(20, 10); + Coordinate q1(22, 10); + Coordinate q2(30, 10); + i.computeIntersection(p1, p2, q1, q2); + + ensure_equals(i.getIntersectionNum(), (int)LineIntersector::NO_INTERSECTION); + ensure_equals(i.getIntersectionNum(), 0); + ensure("!isProper", !i.isProper()); + ensure("!hasIntersection", !i.hasIntersection()); + } + + // 3 - testCollinear2 + template<> + template<> + void object::test<3>() + { + LineIntersector i; + Coordinate p1(10, 10); + Coordinate p2(20, 10); + Coordinate q1(20, 10); + Coordinate q2(30, 10); + i.computeIntersection(p1, p2, q1, q2); + + ensure_equals(i.getIntersectionNum(), (int)LineIntersector::POINT_INTERSECTION); + ensure_equals(i.getIntersectionNum(), 1); + ensure("!isProper", !i.isProper()); + ensure("hasIntersection", i.hasIntersection()); + } + + // 4 - testCollinear3 + template<> + template<> + void object::test<4>() + { + LineIntersector i; + Coordinate p1(10, 10); + Coordinate p2(20, 10); + Coordinate q1(15, 10); + Coordinate q2(30, 10); + i.computeIntersection(p1, p2, q1, q2); + + ensure_equals(i.getIntersectionNum(), (int)LineIntersector::COLLINEAR_INTERSECTION); + ensure_equals(i.getIntersectionNum(), 2); + ensure("!isProper", !i.isProper()); + ensure("hasIntersection", i.hasIntersection()); + } + + // 5 - testCollinear4 + template<> + template<> + void object::test<5>() + { + LineIntersector i; + Coordinate p1(10, 10); + Coordinate p2(20, 10); + Coordinate q1(10, 10); + Coordinate q2(30, 10); + i.computeIntersection(p1, p2, q1, q2); + + ensure_equals(i.getIntersectionNum(), (int)LineIntersector::COLLINEAR_INTERSECTION); + ensure_equals(i.getIntersectionNum(), 2); + ensure("!isProper", !i.isProper()); + ensure("hasIntersection", i.hasIntersection()); + } + + // 6 - testEndpointIntersection + template<> + template<> + void object::test<6>() + { + i.computeIntersection(Coordinate(100, 100), Coordinate(10, 100), + Coordinate(100, 10), Coordinate(100, 100)); + ensure("hasIntersection", i.hasIntersection()); + ensure_equals(i.getIntersectionNum(), 1); + } + + // 7 - testEndpointIntersection2 + template<> + template<> + void object::test<7>() + { + i.computeIntersection(Coordinate(190, 50), Coordinate(120, 100), + Coordinate(120, 100), Coordinate(50, 150)); + ensure("hasIntersection", i.hasIntersection()); + ensure_equals(i.getIntersectionNum(), 1); + ensure_equals(i.getIntersection(1), Coordinate(120, 100)); + } + + // 8 - testOverlap + template<> + template<> + void object::test<8>() + { + i.computeIntersection(Coordinate(180, 200), Coordinate(160, 180), + Coordinate(220, 240), Coordinate(140, 160)); + ensure("hasIntersection", i.hasIntersection()); + ensure_equals(i.getIntersectionNum(), 2); + } + + // 9 - testIsProper1 + template<> + template<> + void object::test<9>() + { + i.computeIntersection(Coordinate(30, 10), Coordinate(30, 30), + Coordinate(10, 10), Coordinate(90, 11)); + ensure("hasIntersection", i.hasIntersection()); + ensure_equals(i.getIntersectionNum(), 1); + ensure("isProper", i.isProper()); + } + + // 10 - testIsProper2 + template<> + template<> + void object::test<10>() + { + i.computeIntersection(Coordinate(10, 30), Coordinate(10, 0), + Coordinate(11, 90), Coordinate(10, 10)); + ensure("hasIntersection", i.hasIntersection()); + ensure_equals(i.getIntersectionNum(), 1); + ensure("!isProper", !i.isProper()); + } + + // 11 - testIsCCW + template<> + template<> + void object::test<11>() + { + ensure_equals(CGAlgorithms::computeOrientation( + Coordinate(-123456789, -40), + Coordinate(0, 0), + Coordinate(381039468754763.0, 123456789)), 1); + } + + // 12 - testIsCCW2 + template<> + template<> + void object::test<12>() + { + ensure_equals(CGAlgorithms::computeOrientation( + Coordinate(10, 10), + Coordinate(20, 20), + Coordinate(0, 0)), 0); + } + + // 13 - testA + template<> + template<> + void object::test<13>() + { + Coordinate p1(-123456789, -40); + Coordinate p2(381039468754763.0, 123456789); + Coordinate q(0, 0); + + using geos::geom::CoordinateSequence; + using geos::geom::GeometryFactory; + using geos::geom::LineString; + + GeometryFactory factory; + CoordinateSequence* cs = new CoordinateArraySequence(); + cs->add(p1); + cs->add(p2); + + GeomPtr l ( factory.createLineString(cs) ); + GeomPtr p ( factory.createPoint(q) ); + ensure(!l->intersects(p.get())); + + ensure(!CGAlgorithms::isOnLine(q, cs)); + ensure_equals(CGAlgorithms::computeOrientation(p1, p2, q), -1); + + } + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/capi/badthreadtest.c geos-3.2.2/tests/unit/capi/badthreadtest.c --- geos-3.1.0/tests/unit/capi/badthreadtest.c 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/badthreadtest.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,450 +0,0 @@ -/************************************************************************ - * - * $Id: badthreadtest.c 2253 2009-01-23 23:58:18Z mloskot $ - * - * Test for C-Wrapper of GEOS library - * - * Copyright (C) 2005 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - * Author: Sandro Santilli - * - ***********************************************************************/ - -#define _GNU_SOURCE - -#include -#include -#include -#include -#include - -#include "geos_c.h" - -#define MAXWKTLEN 1047551 - -void -usage(char *me) -{ - fprintf(stderr, "Usage: %s \n", me); - exit(1); -} - -void -notice1(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "NOTICE1: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); -} - -void -notice2(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "NOTICE2: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); -} - -void -notice(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "NOTICE: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); -} - -void -log_and_exit(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "ERROR: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); - exit(1); -} - -void -log_and_exit1(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "ERROR1: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); - pthread_exit(NULL); -} - -void -log_and_exit2(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "ERROR2: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); - pthread_exit(NULL); -} - -GEOSGeometry* -fineGrainedReconstructionTest(const GEOSGeometry* g1) -{ - GEOSCoordSequence* cs; - GEOSGeometry* g2; - GEOSGeometry* shell; - const GEOSGeometry* gtmp; - GEOSGeometry**geoms; - unsigned int ngeoms, i; - int type; - - /* Geometry reconstruction from CoordSeq */ - type = GEOSGeomTypeId(g1); - switch ( type ) - { - case GEOS_POINT: - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); - g2 = GEOSGeom_createPoint(cs); - return g2; - break; - case GEOS_LINESTRING: - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); - g2 = GEOSGeom_createLineString(cs); - return g2; - break; - case GEOS_LINEARRING: - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); - g2 = GEOSGeom_createLinearRing(cs); - return g2; - break; - case GEOS_POLYGON: - gtmp = GEOSGetExteriorRing(g1); - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(gtmp)); - shell = GEOSGeom_createLinearRing(cs); - ngeoms = GEOSGetNumInteriorRings(g1); - geoms = malloc(ngeoms*sizeof(GEOSGeometry*)); - for (i=0; i>4], hex[bytes[i]&0x0F]); - } -} - -int -do_all(char *inputfile) -{ - GEOSGeometry* g1; - GEOSGeometry* g2; - GEOSGeometry* g3; - GEOSGeometry* g4; - const GEOSGeometry **gg; - unsigned int npoints, ndims; - static char wkt[MAXWKTLEN]; - FILE *input; - char *ptr; - unsigned char* uptr; - size_t size; - double dist, area; - - input = fopen(inputfile, "r"); - if ( ! input ) { perror("fopen"); exit(1); } - - size = fread(wkt, 1, MAXWKTLEN-1, input); - fclose(input); - if ( ! size ) { perror("fread"); exit(1); } - if ( size == MAXWKTLEN-1 ) { perror("WKT input too big!"); exit(1); } - wkt[size] = '\0'; /* ensure it is null terminated */ - - /* WKT input */ - g1 = GEOSGeomFromWKT(wkt); - - /* WKT output */ - ptr = GEOSGeomToWKT(g1); - printf("Input (WKT): %s\n", ptr); - free(ptr); - - /* WKB output */ - uptr = GEOSGeomToWKB_buf(g1, &size); - printf("Input (WKB): "); printHEX(stdout, uptr, size); putchar('\n'); - - /* WKB input */ - g2 = GEOSGeomFromWKB_buf(uptr, size); free(uptr); - if ( ! GEOSEquals(g1, g2) ) log_and_exit("Round WKB conversion failed"); - GEOSGeom_destroy(g2); - - /* Size and dimension */ - npoints = GEOSGetNumCoordinates(g1); - ndims = GEOSGeom_getDimensions(g1); - printf("Geometry coordinates: %dx%d\n", npoints, ndims); - - /* Geometry fine-grained deconstruction/reconstruction test */ - g2 = fineGrainedReconstructionTest(g1); - if ( ! GEOSEquals(g1, g2) ) - { - log_and_exit("Reconstruction test failed\n"); - } - GEOSGeom_destroy(g2); - - /* Unary predicates */ - if ( GEOSisEmpty(g1) ) printf("isEmpty\n"); - if ( GEOSisValid(g1) ) printf("isValid\n"); - if ( GEOSisSimple(g1) ) printf("isSimple\n"); - if ( GEOSisRing(g1) ) printf("isRing\n"); - - /* Convex Hull */ - g2 = GEOSConvexHull(g1); - if ( ! g2 ) - { - log_and_exit("GEOSConvexHull() raised an exception"); - } - ptr = GEOSGeomToWKT(g2); - printf("ConvexHull: %s\n", ptr); - free(ptr); - - /* Buffer */ - GEOSGeom_destroy(g1); - g1 = GEOSBuffer(g2, 100, 30); - if ( ! g1 ) - { - log_and_exit("GEOSBuffer() raised an exception"); - } - ptr = GEOSGeomToWKT(g1); - printf("Buffer: %s\n", ptr); - free(ptr); - - - /* Intersection */ - g3 = GEOSIntersection(g1, g2); - if ( ! GEOSEquals(g3, g2) ) - { - GEOSGeom_destroy(g1); - GEOSGeom_destroy(g2); - GEOSGeom_destroy(g3); - log_and_exit("Intersection(g, Buffer(g)) didn't return g"); - } - ptr = GEOSGeomToWKT(g3); - printf("Intersection: %s\n", ptr); - GEOSGeom_destroy(g3); - free(ptr); - - /* Difference */ - g3 = GEOSDifference(g1, g2); - ptr = GEOSGeomToWKT(g3); - printf("Difference: %s\n", ptr); - GEOSGeom_destroy(g3); - free(ptr); - - /* SymDifference */ - g3 = GEOSSymDifference(g1, g2); - ptr = GEOSGeomToWKT(g3); - printf("SymDifference: %s\n", ptr); - free(ptr); - - /* Boundary */ - g4 = GEOSBoundary(g3); - ptr = GEOSGeomToWKT(g4); - printf("Boundary: %s\n", ptr); - GEOSGeom_destroy(g3); - GEOSGeom_destroy(g4); - free(ptr); - - /* Union */ - g3 = GEOSUnion(g1, g2); - if ( ! GEOSEquals(g3, g1) ) - { - GEOSGeom_destroy(g1); - GEOSGeom_destroy(g2); - GEOSGeom_destroy(g3); - log_and_exit("Union(g, Buffer(g)) didn't return Buffer(g)"); - } - ptr = GEOSGeomToWKT(g3); - printf("Union: %s\n", ptr); - free(ptr); - - /* PointOnSurcace */ - g4 = GEOSPointOnSurface(g3); - ptr = GEOSGeomToWKT(g4); - printf("PointOnSurface: %s\n", ptr); - GEOSGeom_destroy(g3); - GEOSGeom_destroy(g4); - free(ptr); - - /* Centroid */ - g3 = GEOSGetCentroid(g2); - ptr = GEOSGeomToWKT(g3); - printf("Centroid: %s\n", ptr); - GEOSGeom_destroy(g3); - free(ptr); - - /* Relate (and RelatePattern )*/ - ptr = GEOSRelate(g1, g2); - if ( ! GEOSRelatePattern(g1, g2, ptr) ) - { - GEOSGeom_destroy(g1); - GEOSGeom_destroy(g2); - free(ptr); - log_and_exit("! RelatePattern(g1, g2, Relate(g1, g2))"); - } - printf("Relate: %s\n", ptr); - free(ptr); - - /* Polygonize */ - gg = (const GEOSGeometry**)malloc(2*sizeof(GEOSGeometry*)); - gg[0] = g1; - gg[1] = g2; - g3 = GEOSPolygonize(gg, 2); - free(gg); - if ( ! g3 ) - { - log_and_exit("Exception running GEOSPolygonize"); - } - ptr = GEOSGeomToWKT(g3); - GEOSGeom_destroy(g3); - printf("Polygonize: %s\n", ptr); - free(ptr); - - /* LineMerge */ - g3 = GEOSLineMerge(g1); - if ( ! g3 ) - { - log_and_exit("Exception running GEOSLineMerge"); - } - ptr = GEOSGeomToWKT(g3); - printf("LineMerge: %s\n", ptr); - free(ptr); - GEOSGeom_destroy(g3); - - /* Binary predicates */ - if ( GEOSIntersects(g1, g2) ) printf("Intersect\n"); - if ( GEOSDisjoint(g1, g2) ) printf("Disjoint\n"); - if ( GEOSTouches(g1, g2) ) printf("Touches\n"); - if ( GEOSCrosses(g1, g2) ) printf("Crosses\n"); - if ( GEOSWithin(g1, g2) ) printf("Within\n"); - if ( GEOSContains(g1, g2) ) printf("Contains\n"); - if ( GEOSOverlaps(g1, g2) ) printf("Overlaps\n"); - - /* Distance */ - if ( GEOSDistance(g1, g2, &dist) ) printf("Distance: %g\n", dist); - - /* Area */ - if ( GEOSArea(g1, &area) ) printf("Area 1: %g\n", area); - if ( GEOSArea(g2, &area) ) printf("Area 2: %g\n", area); - - GEOSGeom_destroy(g2); - - /* Simplify */ - g3 = GEOSSimplify(g1, 0.5); - ptr = GEOSGeomToWKT(g3); - printf("Simplify: %s\n", ptr); - free(ptr); - GEOSGeom_destroy(g3); - - /* Topology Preserve Simplify */ - g3 = GEOSTopologyPreserveSimplify(g1, 0.5); - ptr = GEOSGeomToWKT(g3); - printf("Simplify: %s\n", ptr); - free(ptr); - GEOSGeom_destroy(g3); - - GEOSGeom_destroy(g1); - - return 0; -} - -void *threadfunc1( void *arg ) -{ - initGEOS( notice1, log_and_exit1 ); - printf("GEOS version %s\n", GEOSversion()); - putc('.', stderr); fflush(stderr); - do_all((char*)arg); - putc('+', stderr); fflush(stderr); - finishGEOS(); - - pthread_exit(NULL); -} - -void *threadfunc2( void *arg ) -{ - initGEOS( notice2, log_and_exit2 ); - printf("GEOS version %s\n", GEOSversion()); - putc('.', stderr); fflush(stderr); - do_all((char *)arg); - putc('+', stderr); fflush(stderr); - finishGEOS(); - - pthread_exit(NULL); -} - -int -main(int argc, char **argv) -{ - pthread_t thread1, thread2; - - if ( argc < 2 ) usage(argv[0]); - pthread_create( &thread1, NULL, threadfunc1, argv[1] ); - pthread_create( &thread2, NULL, threadfunc2, argv[1] ); - - pthread_join( thread1, NULL ); - pthread_join( thread2, NULL ); - - return EXIT_SUCCESS; -} - diff -Nru geos-3.1.0/tests/unit/capi/brokengrammar geos-3.2.2/tests/unit/capi/brokengrammar --- geos-3.1.0/tests/unit/capi/brokengrammar 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/brokengrammar 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2)),((3 3,6 2,6 4,3 3)),((78 45,65 34,100 54,78 45),(4 65, 54 23, 544 346, 2 1, 4 65))) diff -Nru geos-3.1.0/tests/unit/capi/GEOSBufferTest.cpp geos-3.2.2/tests/unit/capi/GEOSBufferTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSBufferTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/capi/GEOSBufferTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,491 @@ +// $Id: GEOSBufferTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Test Suite for C-API GEOSBuffer and GEOSBufferWithStyle + +#include +// geos +#include +// std +#include +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used in test cases. + struct test_capigeosbuffer_data + { + GEOSGeometry* geom1_; + GEOSGeometry* geom2_; + char* wkt_; + double area_; + + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeosbuffer_data() + : geom1_(0), geom2_(0), wkt_(0) + { + initGEOS(notice, notice); + } + + ~test_capigeosbuffer_data() + { + GEOSGeom_destroy(geom1_); + GEOSGeom_destroy(geom2_); + GEOSFree(wkt_); + geom1_ = 0; + geom2_ = 0; + wkt_ = 0; + finishGEOS(); + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_capigeosbuffer_group("capi::GEOSBuffer"); + + // + // Test Cases + // + + + // Buffer against empty point + template<> + template<> + void object::test<1>() + { + geom1_ = GEOSGeomFromWKT("POINT EMPTY"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 1, 8, + GEOSBUF_CAP_ROUND, + GEOSBUF_JOIN_BEVEL, + 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(std::string(wkt_), std::string("POLYGON EMPTY")); + } + + // Buffer against empty linestring + template<> + template<> + void object::test<2>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING EMPTY"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 1, 8, + GEOSBUF_CAP_ROUND, + GEOSBUF_JOIN_BEVEL, + 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(std::string(wkt_), std::string("POLYGON EMPTY")); + } + + // Buffer against empty polygon + template<> + template<> + void object::test<3>() + { + geom1_ = GEOSGeomFromWKT("POLYGON EMPTY"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 1, 8, + GEOSBUF_CAP_ROUND, + GEOSBUF_JOIN_BEVEL, + 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(std::string(wkt_), std::string("POLYGON EMPTY")); + } + + // Simple Buffer on a 2-vertices line (quadSegs: 1) + template<> + template<> + void object::test<4>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBuffer(geom1_, 5, 1); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 7); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 161.803, 0.001); + + } + + // Simple Buffer on a 2-vertices line (quadSegs: 2) + template<> + template<> + void object::test<5>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBuffer(geom1_, 5, 2); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 11); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 182.514, 0.001); + } + + // Buffer with square end caps on a 2-vertices line (no matter quadSegs) + template<> + template<> + void object::test<6>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 20, GEOSBUF_CAP_SQUARE, + GEOSBUF_JOIN_ROUND, 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 7); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 211.803, 0.001); + + } + + // Buffer with flat end caps on a 2-vertices line (no matter quadSegs) + template<> + template<> + void object::test<7>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 20, GEOSBUF_CAP_FLAT, + GEOSBUF_JOIN_ROUND, 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 5); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 111.803, 0.001); + } + + // Buffer with flat end cap on a 2-vertices horizontal line + template<> + template<> + void object::test<8>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 10)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 20, GEOSBUF_CAP_FLAT, + GEOSBUF_JOIN_ROUND, 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 5); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 50.0, 0.001); + + ensure_equals(std::string(wkt_), std::string( +"POLYGON ((10.0000000000000000 15.0000000000000000, 10.0000000000000000 5.0000000000000000, 5.0000000000000000 5.0000000000000000, 5.0000000000000000 15.0000000000000000, 10.0000000000000000 15.0000000000000000))" + )); + } + + // Buffer with square end cap on a 2-vertices horizontal line + template<> + template<> + void object::test<9>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 10)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 20, GEOSBUF_CAP_SQUARE, + GEOSBUF_JOIN_ROUND, 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 7); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 150.0, 0.001); + + ensure_equals(std::string(wkt_), std::string( +"POLYGON ((10.0000000000000000 15.0000000000000000, 15.0000000000000000 15.0000000000000000, 15.0000000000000000 5.0000000000000000, 5.0000000000000000 5.0000000000000000, 0.0000000000000000 5.0000000000000009, 0.0000000000000000 15.0000000000000000, 10.0000000000000000 15.0000000000000000))" + )); + } + + // Buffer with flat end cap and round join style + // on an L-shaped simple line + template<> + template<> + void object::test<10>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 20, GEOSBUF_CAP_SQUARE, + GEOSBUF_JOIN_ROUND, 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 29); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 244.615, 0.001); + + } + + // Buffer with flat end cap and mitre join style + // on an L-shaped simple line + template<> + template<> + void object::test<11>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 20, GEOSBUF_CAP_SQUARE, + GEOSBUF_JOIN_MITRE, 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 9); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 250.0, 0.001); + + ensure_equals(std::string(wkt_), std::string( +"POLYGON ((5.0000000000000000 15.0000000000000000, 5.0000000000000000 20.0000000000000000, 5.0000000000000000 25.0000000000000000, 15.0000000000000000 25.0000000000000000, 15.0000000000000000 5.0000000000000000, 5.0000000000000000 5.0000000000000000, 0.0000000000000000 5.0000000000000009, 0.0000000000000000 15.0000000000000000, 5.0000000000000000 15.0000000000000000))" + )); + } + + // Buffer with flat end cap and bevel join style + // on an L-shaped simple line + template<> + template<> + void object::test<12>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 20, GEOSBUF_CAP_SQUARE, + GEOSBUF_JOIN_BEVEL, 5.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 10); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 237.5, 0.001); + + ensure_equals(std::string(wkt_), std::string( +"POLYGON ((5.0000000000000000 15.0000000000000000, 5.0000000000000000 20.0000000000000000, 5.0000000000000000 25.0000000000000000, 15.0000000000000000 25.0000000000000000, 15.0000000000000000 10.0000000000000000, 10.0000000000000000 5.0000000000000000, 5.0000000000000000 5.0000000000000000, 0.0000000000000000 5.0000000000000009, 0.0000000000000000 15.0000000000000000, 5.0000000000000000 15.0000000000000000))" + )); + } + + // Buffer with flat end cap and bevel join style + // on an L-shaped simple line with different quadSegs and mitreLimit + // (result unaffected) + template<> + template<> + void object::test<13>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(5 10, 10 10, 10 20)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 5, 200, GEOSBUF_CAP_SQUARE, + GEOSBUF_JOIN_BEVEL, 10.0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 10); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 237.5, 0.001); + + ensure_equals(std::string(wkt_), std::string( +"POLYGON ((5.0000000000000000 15.0000000000000000, 5.0000000000000000 20.0000000000000000, 5.0000000000000000 25.0000000000000000, 15.0000000000000000 25.0000000000000000, 15.0000000000000000 10.0000000000000000, 10.0000000000000000 5.0000000000000000, 5.0000000000000000 5.0000000000000000, 0.0000000000000000 5.0000000000000009, 0.0000000000000000 15.0000000000000000, 5.0000000000000000 15.0000000000000000))" + )); + } + + // Buffer with limited mitre (1) + template<> + template<> + void object::test<14>() + { + geom1_ = GEOSGeomFromWKT("POLYGON((0 0, 10 0, 10 10, 0 0))"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 2, 200, GEOSBUF_CAP_FLAT, + GEOSBUF_JOIN_MITRE, 1); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 7); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 127.452, 0.001); + + } + + // Buffer with limited mitre (2) + template<> + template<> + void object::test<15>() + { + geom1_ = GEOSGeomFromWKT("POLYGON((0 0, 10 0, 10 10, 0 0))"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 2, 200, GEOSBUF_CAP_FLAT, + GEOSBUF_JOIN_MITRE, 2); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 6); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 139.043, 0.001); + + } + + // Buffer with limited mitre (3) + template<> + template<> + void object::test<16>() + { + geom1_ = GEOSGeomFromWKT("POLYGON((0 0, 10 0, 10 10, 0 0))"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSBufferWithStyle(geom1_, 2, 200, GEOSBUF_CAP_FLAT, + GEOSBUF_JOIN_MITRE, 3); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(GEOSGetNumCoordinates(geom2_), 4); + + ensure(0 != GEOSArea(geom2_, &area_)); + ensure_distance(area_, 141.598, 0.001); + + } + + // Single-sided buffer (1) + template<> + template<> + void object::test<17>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(0 0, 10 0)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSSingleSidedBuffer(geom1_, 2, 2, GEOSBUF_JOIN_ROUND, 2, 1); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(std::string(wkt_), std::string( +"LINESTRING (0.0000000000000000 2.0000000000000000, 10.0000000000000000 2.0000000000000000)" + )); + + } + + // Single-sided buffer (2) + template<> + template<> + void object::test<18>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(0 0, 10 0)"); + + ensure( 0 != geom1_ ); + + geom2_ = GEOSSingleSidedBuffer(geom1_, 2, 2, GEOSBUF_JOIN_ROUND, 2, 0); + + ensure( 0 != geom2_ ); + + wkt_ = GEOSGeomToWKT(geom2_); + + ensure_equals(std::string(wkt_), std::string( +"LINESTRING (10.0000000000000000 -2.0000000000000000, 0.0000000000000000 -2.0000000000000000)" + )); + + } + + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/capi/GEOSContainsTest.cpp geos-3.2.2/tests/unit/capi/GEOSContainsTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSContainsTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/capi/GEOSContainsTest.cpp 2009-04-30 00:52:36.000000000 +0100 @@ -0,0 +1,121 @@ +// $Id: GEOSContainsTest.cpp 2424 2009-04-29 23:52:36Z mloskot $ +// +// Test Suite for C-API GEOSContains + +#include +// geos +#include +// std +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used in test cases. + struct test_capigeoscontains_data + { + GEOSGeometry* geom1_; + GEOSGeometry* geom2_; + + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeoscontains_data() + : geom1_(0), geom2_(0) + { + initGEOS(notice, notice); + } + + ~test_capigeoscontains_data() + { + GEOSGeom_destroy(geom1_); + GEOSGeom_destroy(geom2_); + geom1_ = 0; + geom2_ = 0; + finishGEOS(); + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_capigeoscontains_group("capi::GEOSContains"); + + // + // Test Cases + // + + template<> + template<> + void object::test<1>() + { + geom1_ = GEOSGeomFromWKT("POLYGON EMPTY"); + geom2_ = GEOSGeomFromWKT("POLYGON EMPTY"); + + ensure( 0 != geom1_ ); + ensure( 0 != geom2_ ); + + char const r1 = GEOSContains(geom1_, geom2_); + + ensure_equals(r1, 0); + + char const r2 = GEOSContains(geom2_, geom1_); + + ensure_equals(r2, 0); + } + + template<> + template<> + void object::test<2>() + { + geom1_ = GEOSGeomFromWKT("POLYGON((1 1,1 5,5 5,5 1,1 1))"); + geom2_ = GEOSGeomFromWKT("POINT(2 2)"); + + ensure( 0 != geom1_ ); + ensure( 0 != geom2_ ); + + char const r1 = GEOSContains(geom1_, geom2_); + + ensure_equals(int(r1), 1); + + char const r2 = GEOSContains(geom2_, geom1_); + + ensure_equals(int(r2), 0); + } + + template<> + template<> + void object::test<3>() + { + geom1_ = GEOSGeomFromWKT("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))"); + geom2_ = GEOSGeomFromWKT("POLYGON((1 1,1 2,2 2,2 1,1 1))"); + + ensure( 0 != geom1_ ); + ensure( 0 != geom2_ ); + + char const r1 = GEOSContains(geom1_, geom2_); + + ensure_equals(int(r1), 1); + + char const r2 = GEOSContains(geom2_, geom1_); + + ensure_equals(int(r2), 0); + } + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/capi/GEOSCoordSeqTest.cpp geos-3.2.2/tests/unit/capi/GEOSCoordSeqTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSCoordSeqTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/GEOSCoordSeqTest.cpp 2009-05-07 09:45:47.000000000 +0100 @@ -1,12 +1,11 @@ -// $Id: GEOSCoordSeqTest.cpp 2164 2008-08-18 23:30:00Z mloskot $ +// $Id: GEOSCoordSeqTest.cpp 2485 2009-05-07 08:45:47Z strk $ // // Test Suite for C-API GEOSCoordSeq -// TUT -#include -// GEOS CAPI +#include +// geos #include -// C+ +// std #include #include #include @@ -20,40 +19,40 @@ // Common data used in test cases. struct test_capigeoscoordseq_data - { + { GEOSCoordSequence* cs_; - static void notice(const char *fmt, ...) - { + static void notice(const char *fmt, ...) + { std::fprintf( stdout, "NOTICE: "); - va_list ap; - va_start(ap, fmt); - std::vfprintf(stdout, fmt, ap); - va_end(ap); - - std::fprintf(stdout, "\n"); - } - - test_capigeoscoordseq_data() : cs_(0) - { - initGEOS(notice, notice); - } + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeoscoordseq_data() : cs_(0) + { + initGEOS(notice, notice); + } - ~test_capigeoscoordseq_data() - { + ~test_capigeoscoordseq_data() + { GEOSCoordSeq_destroy(cs_); cs_ = 0; - finishGEOS(); - } + finishGEOS(); + } - }; + }; - typedef test_group group; - typedef group::object object; + typedef test_group group; + typedef group::object object; - group test_capigeoscoordseq_group("capi::GEOSCoordSeq"); + group test_capigeoscoordseq_group("capi::GEOSCoordSeq"); // // Test Cases @@ -64,177 +63,200 @@ template<> void object::test<1>() { - cs_ = GEOSCoordSeq_create(5, 3); - - unsigned int size; - unsigned int dims; - - ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); - ensure_equals( size, 5u ); - - ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); - ensure_equals( dims, 3u ); - - for (unsigned int i=0; i<5; ++i) - { - double x = i*10; - double y = i*10+1; - double z = i*10+2; - - GEOSCoordSeq_setX(cs_, i, x); - GEOSCoordSeq_setY(cs_, i, y); - GEOSCoordSeq_setZ(cs_, i, z); - - double xcheck, ycheck, zcheck; - ensure( 0 != GEOSCoordSeq_getX(cs_, i, &xcheck) ); - ensure( 0 != GEOSCoordSeq_getY(cs_, i, &ycheck) ); - ensure( 0 != GEOSCoordSeq_getZ(cs_, i, &zcheck) ); - - ensure_equals( xcheck, x ); - ensure_equals( ycheck, y ); - ensure_equals( zcheck, z ); - } - } + cs_ = GEOSCoordSeq_create(5, 3); + + unsigned int size; + unsigned int dims; + + ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); + ensure_equals( size, 5u ); + + ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); + ensure_equals( dims, 3u ); + + for (unsigned int i=0; i<5; ++i) + { + double x = i*10; + double y = i*10+1; + double z = i*10+2; + + GEOSCoordSeq_setX(cs_, i, x); + GEOSCoordSeq_setY(cs_, i, y); + GEOSCoordSeq_setZ(cs_, i, z); + + double xcheck, ycheck, zcheck; + ensure( 0 != GEOSCoordSeq_getX(cs_, i, &xcheck) ); + ensure( 0 != GEOSCoordSeq_getY(cs_, i, &ycheck) ); + ensure( 0 != GEOSCoordSeq_getZ(cs_, i, &zcheck) ); + + ensure_equals( xcheck, x ); + ensure_equals( ycheck, y ); + ensure_equals( zcheck, z ); + } + } // Test not swapped setX/setY calls (see bug #133, fixed) template<> template<> void object::test<2>() { - cs_ = GEOSCoordSeq_create(1, 3); - - unsigned int size; - unsigned int dims; - - ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); - ensure_equals( size, 1u ); - - ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); - ensure_equals( dims, 3u ); - - double x = 10; - double y = 11; - double z = 12; + cs_ = GEOSCoordSeq_create(1, 3); + + unsigned int size; + unsigned int dims; + + ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); + ensure_equals( size, 1u ); + + ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); + ensure_equals( dims, 3u ); + + double x = 10; + double y = 11; + double z = 12; // X, Y, Z - GEOSCoordSeq_setX(cs_, 0, x); - GEOSCoordSeq_setY(cs_, 0, y); - GEOSCoordSeq_setZ(cs_, 0, z); - - double xcheck, ycheck, zcheck; - ensure( 0 != GEOSCoordSeq_getY(cs_, 0, &ycheck) ); - ensure( 0 != GEOSCoordSeq_getX(cs_, 0, &xcheck) ); - ensure( 0 != GEOSCoordSeq_getZ(cs_, 0, &zcheck) ); - - ensure_equals( xcheck, x ); - ensure_equals( ycheck, y ); - ensure_equals( zcheck, z ); - } + GEOSCoordSeq_setX(cs_, 0, x); + GEOSCoordSeq_setY(cs_, 0, y); + GEOSCoordSeq_setZ(cs_, 0, z); + + double xcheck, ycheck, zcheck; + ensure( 0 != GEOSCoordSeq_getY(cs_, 0, &ycheck) ); + ensure( 0 != GEOSCoordSeq_getX(cs_, 0, &xcheck) ); + ensure( 0 != GEOSCoordSeq_getZ(cs_, 0, &zcheck) ); + + ensure_equals( xcheck, x ); + ensure_equals( ycheck, y ); + ensure_equals( zcheck, z ); + } // Test not swapped setOrdinate calls (see bug #133, fixed) template<> template<> void object::test<3>() { - cs_ = GEOSCoordSeq_create(1, 3); - - unsigned int size; - unsigned int dims; - - ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); - ensure_equals( size, 1u ); - - ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); - ensure_equals( dims, 3u ); - - double x = 10; - double y = 11; - double z = 12; + cs_ = GEOSCoordSeq_create(1, 3); + + unsigned int size; + unsigned int dims; + + ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); + ensure_equals( size, 1u ); + + ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); + ensure_equals( dims, 3u ); + + double x = 10; + double y = 11; + double z = 12; // X, Y, Z - GEOSCoordSeq_setOrdinate(cs_, 0, 0, x); - GEOSCoordSeq_setOrdinate(cs_, 0, 1, y); - GEOSCoordSeq_setOrdinate(cs_, 0, 2, z); - - double xcheck, ycheck, zcheck; - ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 1, &ycheck) ); - ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 0, &xcheck) ); - ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 2, &zcheck) ); - - ensure_equals( xcheck, x ); - ensure_equals( ycheck, y ); - ensure_equals( zcheck, z ); - } + GEOSCoordSeq_setOrdinate(cs_, 0, 0, x); + GEOSCoordSeq_setOrdinate(cs_, 0, 1, y); + GEOSCoordSeq_setOrdinate(cs_, 0, 2, z); + + double xcheck, ycheck, zcheck; + ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 1, &ycheck) ); + ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 0, &xcheck) ); + ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 2, &zcheck) ); + + ensure_equals( xcheck, x ); + ensure_equals( ycheck, y ); + ensure_equals( zcheck, z ); + } // Test swapped setX calls (see bug #133, fixed) template<> template<> void object::test<4>() { - cs_ = GEOSCoordSeq_create(1, 3); - - unsigned int size; - unsigned int dims; - - ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); - ensure_equals( size, 1u ); - - ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); - ensure_equals( dims, 3u ); - - double x = 10; - double y = 11; - double z = 12; + cs_ = GEOSCoordSeq_create(1, 3); + + unsigned int size; + unsigned int dims; + + ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); + ensure_equals( size, 1u ); + + ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); + ensure_equals( dims, 3u ); + + double x = 10; + double y = 11; + double z = 12; // Y, X, Z - GEOSCoordSeq_setY(cs_, 0, y); - GEOSCoordSeq_setX(cs_, 0, x); - GEOSCoordSeq_setZ(cs_, 0, z); - - double xcheck, ycheck, zcheck; - ensure( 0 != GEOSCoordSeq_getY(cs_, 0, &ycheck) ); - ensure( 0 != GEOSCoordSeq_getX(cs_, 0, &xcheck) ); - ensure( 0 != GEOSCoordSeq_getZ(cs_, 0, &zcheck) ); - - ensure_equals( xcheck, x ); - ensure_equals( ycheck, y ); - ensure_equals( zcheck, z ); - } + GEOSCoordSeq_setY(cs_, 0, y); + GEOSCoordSeq_setX(cs_, 0, x); + GEOSCoordSeq_setZ(cs_, 0, z); + + double xcheck, ycheck, zcheck; + ensure( 0 != GEOSCoordSeq_getY(cs_, 0, &ycheck) ); + ensure( 0 != GEOSCoordSeq_getX(cs_, 0, &xcheck) ); + ensure( 0 != GEOSCoordSeq_getZ(cs_, 0, &zcheck) ); + + ensure_equals( xcheck, x ); + ensure_equals( ycheck, y ); + ensure_equals( zcheck, z ); + } // Test swapped setOrdinate calls (see bug #133, fixed) template<> template<> void object::test<5>() { - cs_ = GEOSCoordSeq_create(1, 3); - - unsigned int size; - unsigned int dims; - - ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); - ensure_equals( size, 1u ); - - ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); - ensure_equals( dims, 3u ); - - double x = 10; - double y = 11; - double z = 12; + cs_ = GEOSCoordSeq_create(1, 3); + + unsigned int size; + unsigned int dims; + + ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); + ensure_equals( size, 1u ); + + ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); + ensure_equals( dims, 3u ); + + double x = 10; + double y = 11; + double z = 12; // Y, X, Z - GEOSCoordSeq_setOrdinate(cs_, 0, 1, y); - GEOSCoordSeq_setOrdinate(cs_, 0, 0, x); - GEOSCoordSeq_setOrdinate(cs_, 0, 2, z); - - double xcheck, ycheck, zcheck; - ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 1, &ycheck) ); - ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 0, &xcheck) ); - ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 2, &zcheck) ); - - ensure_equals( xcheck, x ); - ensure_equals( ycheck, y ); - ensure_equals( zcheck, z ); - } + GEOSCoordSeq_setOrdinate(cs_, 0, 1, y); + GEOSCoordSeq_setOrdinate(cs_, 0, 0, x); + GEOSCoordSeq_setOrdinate(cs_, 0, 2, z); + + double xcheck, ycheck, zcheck; + ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 1, &ycheck) ); + ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 0, &xcheck) ); + ensure( 0 != GEOSCoordSeq_getOrdinate(cs_, 0, 2, &zcheck) ); + + ensure_equals( xcheck, x ); + ensure_equals( ycheck, y ); + ensure_equals( zcheck, z ); + } + + // Test getDimensions call (see bug #135) + template<> + template<> + void object::test<6>() + { + cs_ = GEOSCoordSeq_create(1, 2); + + unsigned int size; + unsigned int dims; + + ensure ( 0 != GEOSCoordSeq_getSize(cs_, &size) ); + ensure_equals( size, 1u ); + + ensure ( 0 != GEOSCoordSeq_getDimensions(cs_, &dims) ); + + // The dimension passed to GEOSCoordSeq_create() + // is a request for a minimum, not a strict mandate + // for changing actual size. + // + ensure ( dims >= 2u ); + + } } // namespace tut diff -Nru geos-3.1.0/tests/unit/capi/GEOSGeomFromWKBTest.cpp geos-3.2.2/tests/unit/capi/GEOSGeomFromWKBTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSGeomFromWKBTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/capi/GEOSGeomFromWKBTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,148 @@ +// $Id: GEOSGeomFromWKBTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Test Suite for C-API GEOSGeomFromWKB + +#include +#include // wkb_hex_decoder +// geos +#include +// std +#include +#include +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used in test cases. + struct test_capigeosgeomfromwkb_data + { + GEOSGeometry* geom1_; + GEOSGeometry* geom2_; + GEOSWKTReader* reader_; + + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeosgeomfromwkb_data() + : geom1_(0), geom2_(0), reader_(0) + { + initGEOS(notice, notice); + reader_ = GEOSWKTReader_create(); + } + + ~test_capigeosgeomfromwkb_data() + { + GEOSGeom_destroy(geom2_); + geom2_ = 0; + GEOSGeom_destroy(geom1_); + geom1_ = 0; + GEOSWKTReader_destroy(reader_); + reader_ = 0; + finishGEOS(); + } + + void test_wkb(std::string const& wkbhex, std::string const& wkt) + { + wkb_hex_decoder::binary_type wkb; + wkb_hex_decoder::decode(wkbhex, wkb); + + geom1_ = GEOSGeomFromWKB_buf(&wkb[0], wkb.size()); + ensure("GEOSGeomFromWKB_buf failed to create geometry", 0 != geom1_ ); + + // TODO: Update test to compare with WKT-based geometry + (void)wkt; + // ATM, some XYZ and XYZM geometries fail + //geom2_ = GEOSWKTReader_read(reader_, wkt.c_str()); + //ensure ( 0 != geom2_ ); + //char result = GEOSEquals(geom1_, geom2_); + //ensure_equals(result, char(1)); + } + }; + + typedef test_group group; + typedef group::object object; + + group test_capigeosgeomfromwkb_group("capi::GEOSGeomFromWKB"); + + // + // Test Cases + // + + template<> + template<> + void object::test<1>() + { + // POINT(1.234 5.678) + std::string wkt("POINT (1.234 5.678)"); + std::string wkb("01010000005839B4C876BEF33F83C0CAA145B61640"); + test_wkb(wkb, wkt); + } + + template<> + template<> + void object::test<2>() + { + // SRID=4;POINT(0 0) + std::string wkt("POINT(0 0)"); + std::string ewkb("01010000200400000000000000000000000000000000000000"); + test_wkb(ewkb, wkt); + } + + template<> + template<> + void object::test<3>() + { + // SRID=32632;POINT(1.234 5.678) + std::string wkt("POINT (1.234 5.678)"); + std::string ewkb("0101000020787F00005839B4C876BEF33F83C0CAA145B61640"); + test_wkb(ewkb, wkt); + } + + template<> + template<> + void object::test<4>() + { + // POINT (1.234 5.678 15 79) -- XYZM + std::string wkt("POINT (1.234 5.678 15 79)"); + std::string ewkb("01010000C05839B4C876BEF33F83C0CAA145B616400000000000002E400000000000C05340"); + test_wkb(ewkb, wkt); + } + + template<> + template<> + void object::test<5>() + { + std::string wkt("MULTIPOINT (1.123 1.456, 2.123 2.456, 3.123 3.456)"); + std::string ewkb("01040000000300000001010000002b8716d9cef7f13fb29defa7c64bf73f010100000096438b6ce7fb0040d9cef753e3a50340010100000096438b6ce7fb0840d9cef753e3a50b40"); + test_wkb(ewkb, wkt); + } + + // TODO: Does GEOSGeomFromWKB_buf accept EWKB or WKB only? + // The cases below test EWKB input and they are failing. + //template<> + //template<> + //void object::test<6>() + //{ + // // SELECT st_geomfromewkt('MULTIPOINT((0 0 1 1), (3 2 2 1))') ; + // std::string wkt("MULTIPOINT((0 0 1 1), (3 2 2 1))"); + // std::string ewkb("01040000C00200000001010000C000000000000000000000000000000000000000000000F03F000000000000F03F01010000C0000000000000084000000000000000400000000000000040000000000000F03F"); + // test_wkb(ewkb, wkt); + //} + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/capi/GEOSGeomToWKTTest.cpp geos-3.2.2/tests/unit/capi/GEOSGeomToWKTTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSGeomToWKTTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/GEOSGeomToWKTTest.cpp 2009-04-30 00:52:36.000000000 +0100 @@ -1,12 +1,11 @@ -// $Id: GEOSGeomToWKTTest.cpp 2253 2009-01-23 23:58:18Z mloskot $ +// $Id: GEOSGeomToWKTTest.cpp 2424 2009-04-29 23:52:36Z mloskot $ // // Test Suite for C-API GEOSGeomToWKT -// TUT -#include -// GEOS CAPI +#include +// geos #include -// C+ +// std #include #include #include @@ -21,40 +20,42 @@ // Common data used in test cases. struct test_capigeosgeomtowkt_data - { - GEOSGeometry* geom1_; + { + GEOSGeometry* geom1_; - static void notice(const char *fmt, ...) - { + static void notice(const char *fmt, ...) + { std::fprintf( stdout, "NOTICE: "); - va_list ap; - va_start(ap, fmt); - std::vfprintf(stdout, fmt, ap); - va_end(ap); - - std::fprintf(stdout, "\n"); - } + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } - test_capigeosgeomtowkt_data() + test_capigeosgeomtowkt_data() : geom1_(0) - { - initGEOS(notice, notice); - } + { + initGEOS(notice, notice); + } - ~test_capigeosgeomtowkt_data() - { + ~test_capigeosgeomtowkt_data() + { GEOSGeom_destroy(geom1_); geom1_ = 0; - finishGEOS(); - } + finishGEOS(); + } void test_wkt(std::string const& wkt) { geom1_ = GEOSGeomFromWKT(wkt.c_str()); ensure ( 0 != geom1_ ); - std::string out(GEOSGeomToWKT(geom1_)); + char* wkt_c = GEOSGeomToWKT(geom1_); + std::string out(wkt_c); + free(wkt_c); ensure_equals(out, wkt); } @@ -64,16 +65,18 @@ geom1_ = GEOSGeomFromWKT(wkt.c_str()); ensure ( 0 != geom1_ ); - std::string out(GEOSGeomToWKT(geom1_)); + char* wkt_c = GEOSGeomToWKT(geom1_); + std::string out(wkt_c); + free(wkt_c); ensure_equals(out.substr(0, n), wkt.substr(0, n)); } - }; + }; - typedef test_group group; - typedef group::object object; + typedef test_group group; + typedef group::object object; - group test_capigeosgeomtowkt_group("capi::GEOSGeomToWKT"); + group test_capigeosgeomtowkt_group("capi::GEOSGeomToWKT"); // // Test Cases diff -Nru geos-3.1.0/tests/unit/capi/GEOSGetCentroidTest.cpp geos-3.2.2/tests/unit/capi/GEOSGetCentroidTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSGetCentroidTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/capi/GEOSGetCentroidTest.cpp 2010-04-18 10:34:53.000000000 +0100 @@ -0,0 +1,82 @@ +// $Id$ +// +// Test Suite for C-API GEOSGetCentroid + +#include +// geos +#include +// std +#include +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used in test cases. + struct test_capigeosgetcentroid_data + { + + GEOSGeometry* geom1_; + GEOSGeometry* geom2_; + + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeosgetcentroid_data() + : geom1_(0), geom2_(0) + { + initGEOS(notice, notice); + } + + ~test_capigeosgetcentroid_data() + { + GEOSGeom_destroy(geom1_); + GEOSGeom_destroy(geom2_); + geom1_ = 0; + geom2_ = 0; + finishGEOS(); + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_capigeosgetcentroid_group("capi::GEOSGetCentroid"); + + // + // Test Cases + // + + /* More of a leak test */ + template<> + template<> + void object::test<1>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(0 0, 10 0)"); + + ensure ( ! GEOSisEmpty(geom1_) ); + + geom2_ = GEOSGetCentroid(geom1_); + + ensure ( ! GEOSisEmpty(geom2_) ); + + } + + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp geos-3.2.2/tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/GEOSPolygonizer_getCutEdgesTest.cpp 2009-04-30 00:52:36.000000000 +0100 @@ -1,12 +1,11 @@ -// $Id: GEOSPolygonizer_getCutEdgesTest.cpp 2145 2008-07-31 17:08:34Z mloskot $ +// $Id: GEOSPolygonizer_getCutEdgesTest.cpp 2424 2009-04-29 23:52:36Z mloskot $ // // Test Suite for C-API GEOSPolygonizeGetCutEdges -// TUT -#include -// GEOS CAPI +#include +// geos #include -// C+ +// std #include #include #include @@ -20,35 +19,35 @@ // Common data used in test cases. struct test_capigeospolygonizegetcutedges_data - { - static void notice(const char *fmt, ...) - { - std::fprintf( stdout, "NOTICE: "); - - va_list ap; - va_start(ap, fmt); - std::vfprintf(stdout, fmt, ap); - va_end(ap); - - std::fprintf(stdout, "\n"); - } - - test_capigeospolygonizegetcutedges_data() - { - initGEOS(notice, notice); - } - - ~test_capigeospolygonizegetcutedges_data() - { - finishGEOS(); - } + { + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeospolygonizegetcutedges_data() + { + initGEOS(notice, notice); + } + + ~test_capigeospolygonizegetcutedges_data() + { + finishGEOS(); + } - }; + }; - typedef test_group group; - typedef group::object object; + typedef test_group group; + typedef group::object object; - group test_capigeospolygonizegetcutedges_group("capi::GEOSPolygonizeGetCutEdges"); + group test_capigeospolygonizegetcutedges_group("capi::GEOSPolygonizeGetCutEdges"); // // Test Cases diff -Nru geos-3.1.0/tests/unit/capi/GEOSPreparedGeometryTest.cpp geos-3.2.2/tests/unit/capi/GEOSPreparedGeometryTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSPreparedGeometryTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/capi/GEOSPreparedGeometryTest.cpp 2009-12-08 17:39:59.000000000 +0000 @@ -0,0 +1,145 @@ +// $Id: GEOSPreparedGeometryTest.cpp 2810 2009-12-08 17:39:59Z strk $ +// +// Test Suite for C-API GEOSPreparedGeometry + +#include +// geos +#include +// std +#include +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used in test cases. + struct test_capigeospreparedgeometry_data + { + GEOSGeometry* geom1_; + GEOSGeometry* geom2_; + + const GEOSPreparedGeometry* prepGeom1_; + const GEOSPreparedGeometry* prepGeom2_; + + + + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeospreparedgeometry_data() + : geom1_(0), geom2_(0), prepGeom1_(0), prepGeom2_(0) + { + initGEOS(notice, notice); + } + + ~test_capigeospreparedgeometry_data() + { + GEOSGeom_destroy(geom1_); + GEOSGeom_destroy(geom2_); + GEOSPreparedGeom_destroy(prepGeom1_); + GEOSPreparedGeom_destroy(prepGeom2_); + geom1_ = 0; + geom2_ = 0; + prepGeom1_ = 0; + prepGeom2_ = 0; + finishGEOS(); + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_capigeospreparedgeometry_group("capi::GEOSPreparedGeometry"); + + // + // Test Cases + // + + // Test geometry preparation + template<> + template<> + void object::test<1>() + { + geom1_ = GEOSGeomFromWKT("POLYGON EMPTY"); + prepGeom1_ = GEOSPrepare(geom1_); + + ensure(0 != prepGeom1_); + + } + + // Test PreparedContainsProperly + // Taken from regress/regress_ogc_prep.sql of postgis + // as of revno 3936 + // ref: containsproperly200 (a) + template<> + template<> + void object::test<2>() + { + geom1_ = GEOSGeomFromWKT("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"); + geom2_ = GEOSGeomFromWKT("POLYGON((2 2, 2 3, 3 3, 3 2, 2 2))"); + prepGeom1_ = GEOSPrepare(geom1_); + + ensure(0 != prepGeom1_); + + int ret = GEOSPreparedContainsProperly(prepGeom1_, geom2_); + ensure_equals(ret, 1); + + } + + // Test PreparedContainsProperly + // Taken from regress/regress_ogc_prep.sql of postgis + // as of revno 3936 + // ref: containsproperly200 (b) + template<> + template<> + void object::test<3>() + { + geom1_ = GEOSGeomFromWKT("POLYGON((2 2, 2 3, 3 3, 3 2, 2 2))"); + geom2_ = GEOSGeomFromWKT("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"); + prepGeom1_ = GEOSPrepare(geom1_); + + ensure(0 != prepGeom1_); + + int ret = GEOSPreparedContainsProperly(prepGeom1_, geom2_); + ensure_equals(ret, 0); + + } + + // Test PreparedIntersects + // Also used as a linestring leakage reported + // by http://trac.osgeo.org/geos/ticket/305 + // + template<> + template<> + void object::test<4>() + { + geom1_ = GEOSGeomFromWKT("LINESTRING(0 0, 10 10)"); + geom2_ = GEOSGeomFromWKT("LINESTRING(0 10, 10 0)"); + prepGeom1_ = GEOSPrepare(geom1_); + + ensure(0 != prepGeom1_); + + int ret = GEOSPreparedIntersects(prepGeom1_, geom2_); + ensure_equals(ret, 1); + + } + + // TODO: add lots of more tests + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/capi/GEOSSimplifyTest.cpp geos-3.2.2/tests/unit/capi/GEOSSimplifyTest.cpp --- geos-3.1.0/tests/unit/capi/GEOSSimplifyTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/GEOSSimplifyTest.cpp 2009-04-30 00:52:36.000000000 +0100 @@ -1,12 +1,11 @@ -// $Id: GEOSSimplifyTest.cpp 2164 2008-08-18 23:30:00Z mloskot $ +// $Id: GEOSSimplifyTest.cpp 2424 2009-04-29 23:52:36Z mloskot $ // // Test Suite for C-API GEOSSimplify -// TUT -#include -// GEOS CAPI +#include +// geos #include -// C+ +// std #include #include #include @@ -20,43 +19,43 @@ // Common data used in test cases. struct test_capigeossimplify_data - { - GEOSGeometry* geom1_; - GEOSGeometry* geom2_; - - static void notice(const char *fmt, ...) - { - std::fprintf( stdout, "NOTICE: "); - - va_list ap; - va_start(ap, fmt); - std::vfprintf(stdout, fmt, ap); - va_end(ap); - - std::fprintf(stdout, "\n"); - } + { + GEOSGeometry* geom1_; + GEOSGeometry* geom2_; + + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } - test_capigeossimplify_data() + test_capigeossimplify_data() : geom1_(0), geom2_(0) - { - initGEOS(notice, notice); - } + { + initGEOS(notice, notice); + } - ~test_capigeossimplify_data() - { + ~test_capigeossimplify_data() + { GEOSGeom_destroy(geom1_); GEOSGeom_destroy(geom2_); geom1_ = 0; geom2_ = 0; - finishGEOS(); - } + finishGEOS(); + } - }; + }; - typedef test_group group; - typedef group::object object; + typedef test_group group; + typedef group::object object; - group test_capigeossimplify_group("capi::GEOSSimplify"); + group test_capigeossimplify_group("capi::GEOSSimplify"); // // Test Cases @@ -67,13 +66,13 @@ template<> void object::test<1>() { - geom1_ = GEOSGeomFromWKT("POLYGON EMPTY"); + geom1_ = GEOSGeomFromWKT("POLYGON EMPTY"); - ensure ( 0 != GEOSisEmpty(geom1_) ); + ensure ( 0 != GEOSisEmpty(geom1_) ); - geom2_ = GEOSSimplify(geom1_, 43.2); + geom2_ = GEOSSimplify(geom1_, 43.2); - ensure ( 0 != GEOSisEmpty(geom2_) ); + ensure ( 0 != GEOSisEmpty(geom2_) ); } } // namespace tut diff -Nru geos-3.1.0/tests/unit/capi/geostest.c geos-3.2.2/tests/unit/capi/geostest.c --- geos-3.1.0/tests/unit/capi/geostest.c 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/geostest.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,383 +0,0 @@ -/************************************************************************ - * - * $Id: geostest.c 2232 2009-01-13 01:21:05Z pramsey $ - * - * Test for C-Wrapper of GEOS library - * - * Copyright (C) 2005 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - * Author: Sandro Santilli - * - ***********************************************************************/ - -#define _GNU_SOURCE - -#include -#include -#include - -#include "geos_c.h" - -#define MAXWKTLEN 1047551 - -void -usage(char *me) -{ - fprintf(stderr, "Usage: %s \n", me); - exit(1); -} - -void -notice(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "NOTICE: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); -} - -void -log_and_exit(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "ERROR: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); - exit(1); -} - -GEOSGeometry* -fineGrainedReconstructionTest(const GEOSGeometry* g1) -{ - GEOSCoordSequence* cs; - GEOSGeometry* g2; - GEOSGeometry* shell; - const GEOSGeometry* gtmp; - GEOSGeometry**geoms; - unsigned int ngeoms, i; - int type; - - /* Geometry reconstruction from CoordSeq */ - type = GEOSGeomTypeId(g1); - switch ( type ) - { - case GEOS_POINT: - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); - g2 = GEOSGeom_createPoint(cs); - return g2; - break; - case GEOS_LINESTRING: - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); - g2 = GEOSGeom_createLineString(cs); - return g2; - break; - case GEOS_LINEARRING: - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(g1)); - g2 = GEOSGeom_createLinearRing(cs); - return g2; - break; - case GEOS_POLYGON: - gtmp = GEOSGetExteriorRing(g1); - cs = GEOSCoordSeq_clone(GEOSGeom_getCoordSeq(gtmp)); - shell = GEOSGeom_createLinearRing(cs); - ngeoms = GEOSGetNumInteriorRings(g1); - geoms = malloc(ngeoms*sizeof(GEOSGeometry*)); - for (i=0; i>4], hex[bytes[i]&0x0F]); - } -} - -int -do_all(char *inputfile) -{ - GEOSGeometry* g1; - GEOSGeometry* g2; - GEOSGeometry* g3; - GEOSGeometry* g4; - const GEOSGeometry **gg; - unsigned int npoints, ndims; - static char wkt[MAXWKTLEN]; - FILE *input; - char *ptr; - unsigned char* uptr; - size_t size; - double dist, area; - - input = fopen(inputfile, "r"); - if ( ! input ) { perror("fopen"); exit(1); } - - size = fread(wkt, 1, MAXWKTLEN-1, input); - fclose(input); - if ( ! size ) { perror("fread"); exit(1); } - if ( size == MAXWKTLEN-1 ) { perror("WKT input too big!"); exit(1); } - wkt[size] = '\0'; /* ensure it is null terminated */ - - /* WKT input */ - g1 = GEOSGeomFromWKT(wkt); - - /* WKT output */ - ptr = GEOSGeomToWKT(g1); - printf("Input (WKT): %s\n", ptr); - free(ptr); - - /* WKB output */ - uptr = GEOSGeomToWKB_buf(g1, &size); - printf("Input (WKB): "); printHEX(stdout, uptr, size); putchar('\n'); - - /* WKB input */ - g2 = GEOSGeomFromWKB_buf(uptr, size); free(uptr); - if ( ! GEOSEquals(g1, g2) ) log_and_exit("Round WKB conversion failed"); - GEOSGeom_destroy(g2); - - /* Size and dimension */ - npoints = GEOSGetNumCoordinates(g1); - ndims = GEOSGeom_getDimensions(g1); - printf("Geometry coordinates: %dx%d\n", npoints, ndims); - - /* Geometry fine-grained deconstruction/reconstruction test */ - g2 = fineGrainedReconstructionTest(g1); - if ( ! GEOSEquals(g1, g2) ) - { - log_and_exit("Reconstruction test failed\n"); - } - GEOSGeom_destroy(g2); - - /* Unary predicates */ - if ( GEOSisEmpty(g1) ) printf("isEmpty\n"); - if ( GEOSisValid(g1) ) printf("isValid\n"); - if ( GEOSisSimple(g1) ) printf("isSimple\n"); - if ( GEOSisRing(g1) ) printf("isRing\n"); - - /* Convex Hull */ - g2 = GEOSConvexHull(g1); - if ( ! g2 ) - { - log_and_exit("GEOSConvexHull() raised an exception"); - } - ptr = GEOSGeomToWKT(g2); - printf("ConvexHull: %s\n", ptr); - free(ptr); - - /* Buffer */ - GEOSGeom_destroy(g1); - g1 = GEOSBuffer(g2, 100, 30); - if ( ! g1 ) - { - log_and_exit("GEOSBuffer() raised an exception"); - } - ptr = GEOSGeomToWKT(g1); - printf("Buffer: %s\n", ptr); - free(ptr); - - - /* Intersection */ - g3 = GEOSIntersection(g1, g2); - if ( ! GEOSEquals(g3, g2) ) - { - GEOSGeom_destroy(g1); - GEOSGeom_destroy(g2); - GEOSGeom_destroy(g3); - log_and_exit("Intersection(g, Buffer(g)) didn't return g"); - } - ptr = GEOSGeomToWKT(g3); - printf("Intersection: %s\n", ptr); - GEOSGeom_destroy(g3); - free(ptr); - - /* Difference */ - g3 = GEOSDifference(g1, g2); - ptr = GEOSGeomToWKT(g3); - printf("Difference: %s\n", ptr); - GEOSGeom_destroy(g3); - free(ptr); - - /* SymDifference */ - g3 = GEOSSymDifference(g1, g2); - ptr = GEOSGeomToWKT(g3); - printf("SymDifference: %s\n", ptr); - free(ptr); - - /* Boundary */ - g4 = GEOSBoundary(g3); - ptr = GEOSGeomToWKT(g4); - printf("Boundary: %s\n", ptr); - GEOSGeom_destroy(g3); - GEOSGeom_destroy(g4); - free(ptr); - - /* Union */ - g3 = GEOSUnion(g1, g2); - if ( ! GEOSEquals(g3, g1) ) - { - GEOSGeom_destroy(g1); - GEOSGeom_destroy(g2); - GEOSGeom_destroy(g3); - log_and_exit("Union(g, Buffer(g)) didn't return Buffer(g)"); - } - ptr = GEOSGeomToWKT(g3); - printf("Union: %s\n", ptr); - free(ptr); - - /* PointOnSurcace */ - g4 = GEOSPointOnSurface(g3); - ptr = GEOSGeomToWKT(g4); - printf("PointOnSurface: %s\n", ptr); - GEOSGeom_destroy(g3); - GEOSGeom_destroy(g4); - free(ptr); - - /* Centroid */ - g3 = GEOSGetCentroid(g2); - ptr = GEOSGeomToWKT(g3); - printf("Centroid: %s\n", ptr); - GEOSGeom_destroy(g3); - free(ptr); - - /* Relate (and RelatePattern )*/ - ptr = GEOSRelate(g1, g2); - if ( ! GEOSRelatePattern(g1, g2, ptr) ) - { - GEOSGeom_destroy(g1); - GEOSGeom_destroy(g2); - free(ptr); - log_and_exit("! RelatePattern(g1, g2, Relate(g1, g2))"); - } - printf("Relate: %s\n", ptr); - free(ptr); - - /* Polygonize */ - gg = (const GEOSGeometry**)malloc(2*sizeof(GEOSGeometry*)); - gg[0] = g1; - gg[1] = g2; - g3 = GEOSPolygonize(gg, 2); - free(gg); - if ( ! g3 ) - { - log_and_exit("Exception running GEOSPolygonize"); - } - ptr = GEOSGeomToWKT(g3); - GEOSGeom_destroy(g3); - printf("Polygonize: %s\n", ptr); - free(ptr); - - /* LineMerge */ - g3 = GEOSLineMerge(g1); - if ( ! g3 ) - { - log_and_exit("Exception running GEOSLineMerge"); - } - ptr = GEOSGeomToWKT(g3); - printf("LineMerge: %s\n", ptr); - free(ptr); - GEOSGeom_destroy(g3); - - /* Binary predicates */ - if ( GEOSIntersects(g1, g2) ) printf("Intersect\n"); - if ( GEOSDisjoint(g1, g2) ) printf("Disjoint\n"); - if ( GEOSTouches(g1, g2) ) printf("Touches\n"); - if ( GEOSCrosses(g1, g2) ) printf("Crosses\n"); - if ( GEOSWithin(g1, g2) ) printf("Within\n"); - if ( GEOSContains(g1, g2) ) printf("Contains\n"); - if ( GEOSOverlaps(g1, g2) ) printf("Overlaps\n"); - - /* Distance */ - if ( GEOSDistance(g1, g2, &dist) ) printf("Distance: %g\n", dist); - - /* Area */ - if ( GEOSArea(g1, &area) ) printf("Area 1: %g\n", area); - if ( GEOSArea(g2, &area) ) printf("Area 2: %g\n", area); - - GEOSGeom_destroy(g2); - - /* Simplify */ - g3 = GEOSSimplify(g1, 0.5); - ptr = GEOSGeomToWKT(g3); - printf("Simplify: %s\n", ptr); - free(ptr); - GEOSGeom_destroy(g3); - - /* Topology Preserve Simplify */ - g3 = GEOSTopologyPreserveSimplify(g1, 0.5); - ptr = GEOSGeomToWKT(g3); - printf("Simplify: %s\n", ptr); - free(ptr); - GEOSGeom_destroy(g3); - - GEOSGeom_destroy(g1); - - return 0; -} - -int -main(int argc, char **argv) -{ - int i, n=1; - - initGEOS(notice, log_and_exit); - printf("GEOS version %s\n", GEOSversion()); - - if ( argc < 2 ) usage(argv[0]); - if ( argc > 2 ) n=atoi(argv[2]); - if ( ! n ) n=1; - - for (i=0; i +// geos +#include +// std +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used in test cases. + struct test_capigeoswithin_data + { + GEOSGeometry* geom1_; + GEOSGeometry* geom2_; + + static void notice(const char *fmt, ...) + { + std::fprintf( stdout, "NOTICE: "); + + va_list ap; + va_start(ap, fmt); + std::vfprintf(stdout, fmt, ap); + va_end(ap); + + std::fprintf(stdout, "\n"); + } + + test_capigeoswithin_data() + : geom1_(0), geom2_(0) + { + initGEOS(notice, notice); + } + + ~test_capigeoswithin_data() + { + GEOSGeom_destroy(geom1_); + GEOSGeom_destroy(geom2_); + geom1_ = 0; + geom2_ = 0; + finishGEOS(); + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_capigeoswithin_group("capi::GEOSWithin"); + + // + // Test Cases + // + + template<> + template<> + void object::test<1>() + { + geom1_ = GEOSGeomFromWKT("POLYGON EMPTY"); + geom2_ = GEOSGeomFromWKT("POLYGON EMPTY"); + + ensure( 0 != geom1_ ); + ensure( 0 != geom2_ ); + + char const r1 = GEOSWithin(geom1_, geom2_); + + ensure_equals(r1, 0); + + char const r2 = GEOSWithin(geom2_, geom1_); + + ensure_equals(r2, 0); + } + + template<> + template<> + void object::test<2>() + { + geom1_ = GEOSGeomFromWKT("POLYGON((1 1,1 5,5 5,5 1,1 1))"); + geom2_ = GEOSGeomFromWKT("POINT(2 2)"); + + ensure( 0 != geom1_ ); + ensure( 0 != geom2_ ); + + char const r1 = GEOSWithin(geom1_, geom2_); + + ensure_equals(int(r1), 0); + + char const r2 = GEOSWithin(geom2_, geom1_); + + ensure_equals(int(r2), 1); + } + + template<> + template<> + void object::test<3>() + { + geom1_ = GEOSGeomFromWKT("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)))"); + geom2_ = GEOSGeomFromWKT("POLYGON((1 1,1 2,2 2,2 1,1 1))"); + + ensure( 0 != geom1_ ); + ensure( 0 != geom2_ ); + + char const r1 = GEOSWithin(geom1_, geom2_); + + ensure_equals(int(r1), 0); + + char const r2 = GEOSWithin(geom2_, geom1_); + + ensure_equals(int(r2), 1); + } + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/capi/test.expected geos-3.2.2/tests/unit/capi/test.expected --- geos-3.1.0/tests/unit/capi/test.expected 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/test.expected 1970-01-01 01:00:00.000000000 +0100 @@ -1,25 +0,0 @@ -GEOS version 3.0.0rc2-CAPI-1.3.0 -Input (WKT): MULTIPOLYGON (((362062.2000000029802322 231744.0000000000000000, 362076.0000000000000000 231749.7999999969906639, 362122.2999999970197678 231753.5000000000000000, 362187.0000000000000000 231767.9000000059895683, 362242.0000000000000000 231776.0000000000000000, 362296.2000000029802322 231786.7000000030093361, 362517.0000000000000000 231821.5000000000000000, 362651.7999999970197678 231844.7999999969906639, 362772.7000000029802322 231871.7999999969906639, 362805.0999999939813279 231874.2999999969906639, 362847.2000000029802322 231876.0000000000000000, 362912.7999999970197678 231888.9000000059895683, 363005.9000000060186721 231903.0000000000000000, 363169.2000000029802322 231929.2999999969906639, 363247.9000000060186721 231934.0000000000000000, 363333.9000000060186721 231950.0000000000000000, 363516.0999999939813279 231985.5000000000000000, 363630.2999999970197678 232004.7000000030093361, 363694.7000000029802322 232012.0000000000000000, 363754.0000000000000000 232021.0999999940104317, 363833.4000000060186721 232029.7999999969906639, 363913.5999999939813279 232048.5000000000000000, 363940.5999999939813279 232052.0000000000000000, 364014.7999999970197678 232060.2999999969906639, 364044.7000000029802322 232065.7999999969906639, 364082.7000000029802322 232074.0999999940104317, 364165.2999999970197678 232083.7999999969906639, 364208.5999999939813279 232097.0999999940104317, 364279.7999999970197678 232104.0000000000000000, 364316.7000000029802322 232112.7999999969906639, 364331.2000000029802322 232113.5999999940104317, 364391.2000000029802322 232127.5999999940104317, 364483.7999999970197678 232140.0000000000000000, 364606.7999999970197678 232159.5999999940104317, 364662.7999999970197678 232170.5999999940104317, 364712.9000000060186721 232182.7000000030093361, 364823.7999999970197678 232201.5000000000000000, 364904.9000000060186721 232211.0000000000000000, 364967.2000000029802322 232221.0999999940104317, 365061.2999999970197678 232240.5000000000000000, 365191.0999999939813279 232255.9000000059895683, 365262.9000000060186721 232262.2999999969906639, 365391.7000000029802322 232283.5999999940104317, 365525.2999999970197678 232308.9000000059895683, 365598.4000000060186721 232326.5999999940104317, 365727.0999999939813279 232341.5999999940104317, 365803.0000000000000000 232352.2999999969906639, 365935.4000000060186721 232377.5999999940104317, 366011.5000000000000000 232384.7999999969906639, 366056.0999999939813279 232391.2000000030093361, 366128.7000000029802322 232407.4000000059895683, 366295.5999999939813279 232442.7000000030093361, 366445.2000000029802322 232457.2000000030093361, 366624.7999999970197678 232486.2999999969906639, 366663.2000000029802322 232490.2000000030093361, 366707.2000000029802322 232502.4000000059895683, 366807.0999999939813279 232522.7000000030093361, 366862.9000000060186721 232529.7999999969906639, 366971.0999999939813279 232543.5000000000000000, 367088.0999999939813279 232563.0999999940104317, 367185.2999999970197678 232575.4000000059895683, 367222.2000000029802322 232582.4000000059895683, 367331.7999999970197678 232597.0000000000000000, 367530.2999999970197678 232629.7999999969906639, 367683.5999999939813279 232660.7000000030093361, 367772.5999999939813279 232675.7999999969906639, 367939.0000000000000000 232693.0999999940104317, 367995.5999999939813279 232701.0000000000000000, 368055.0999999939813279 232702.5999999940104317, 368135.0000000000000000 232714.2999999969906639, 368220.7999999970197678 232735.4000000059895683, 368312.5999999939813279 232753.4000000059895683, 368380.7999999970197678 232770.7999999969906639, 368447.2999999970197678 232777.5999999940104317, 368512.0999999939813279 232792.0999999940104317, 368544.0000000000000000 232795.5999999940104317, 368601.7999999970197678 232805.0999999940104317, 368660.7999999970197678 232813.0999999940104317, 368707.2999999970197678 232826.4000000059895683, 368782.5000000000000000 232836.0999999940104317, 368832.5999999939813279 232847.7999999969906639, 368906.5999999939813279 232860.5000000000000000, 368992.5000000000000000 232873.0999999940104317, 369089.0999999939813279 232892.0000000000000000, 369260.5000000000000000 232916.7000000030093361, 369318.7000000029802322 232931.2000000030093361, 369445.5999999939813279 232945.5999999940104317, 369508.7000000029802322 232950.0999999940104317, 369574.2000000029802322 232960.5000000000000000, 369616.0999999939813279 232967.7999999969906639, 369656.2000000029802322 232978.2000000030093361, 369717.7000000029802322 233002.0000000000000000, 369777.7000000029802322 233016.0999999940104317, 369875.4000000060186721 233024.0000000000000000, 370035.0000000000000000 233046.9000000059895683, 370117.0999999939813279 233056.0000000000000000, 370200.0999999939813279 233077.5999999940104317, 370233.5999999939813279 233079.0999999940104317, 370496.9000000060186721 233123.2999999969906639, 370539.4000000060186721 233127.0000000000000000, 370601.7000000029802322 233135.0000000000000000, 370655.2999999970197678 233146.5999999940104317, 370855.0999999939813279 233178.7999999969906639, 370932.7000000029802322 233182.0999999940104317, 371060.0999999939813279 233205.0000000000000000, 371120.7000000029802322 233223.0000000000000000, 371178.5999999939813279 233233.0000000000000000, 371201.7999999970197678 233229.2000000030093361, 371245.2999999970197678 233232.5000000000000000, 371289.9000000060186721 233243.7000000030093361, 371425.7999999970197678 233259.0000000000000000, 371487.5000000000000000 233276.4000000059895683, 371552.2999999970197678 233291.9000000059895683, 371638.0999999939813279 233306.4000000059895683, 371715.0999999939813279 233318.5999999940104317, 371821.2000000029802322 233332.4000000059895683, 371918.2999999970197678 233350.7999999969906639, 371988.0999999939813279 233360.2000000030093361, 372040.7000000029802322 233366.2999999969906639, 372158.5999999939813279 233382.2999999969906639, 372175.5000000000000000 233379.5999999940104317, 372201.0999999939813279 233382.5999999940104317, 372351.2999999970197678 233410.0999999940104317, 372419.0000000000000000 233417.5000000000000000, 372500.7999999970197678 233432.2000000030093361, 372538.7000000029802322 233434.0999999940104317, 372559.2999999970197678 233439.2000000030093361, 372715.7999999970197678 233463.5999999940104317, 372780.9000000060186721 233472.0999999940104317, 372809.5999999939813279 233479.5999999940104317, 372842.9000000060186721 233484.0000000000000000, 372895.9000000060186721 233498.0999999940104317, 372959.7999999970197678 233506.0999999940104317, 372967.7999999970197678 233500.5000000000000000, 372986.0999999939813279 233503.7000000030093361, 373016.2000000029802322 233511.5999999940104317, 373076.5000000000000000 233519.7000000030093361, 373115.5000000000000000 233524.5000000000000000, 373133.9000000060186721 233529.7000000030093361, 373218.7999999970197678 233538.9000000059895683, 373322.5999999939813279 233555.2000000030093361, 373403.9000000060186721 233574.7999999969906639, 373503.5000000000000000 233590.0999999940104317, 373539.5999999939813279 233594.0999999940104317, 373567.7000000029802322 233595.0999999940104317, 373612.9000000060186721 233595.2999999969906639, 373629.5000000000000000 233598.0000000000000000, 373642.2000000029802322 233597.9000000059895683, 373633.7999999970197678 233582.0999999940104317, 373623.7999999970197678 233570.2000000030093361, 373584.0999999939813279 233479.2000000030093361, 373562.9000000060186721 233422.0999999940104317, 373549.0999999939813279 233399.0000000000000000, 373506.7999999970197678 233325.7999999969906639, 373487.2999999970197678 233294.2000000030093361, 373460.2000000029802322 233259.7999999969906639, 373442.0999999939813279 233240.0999999940104317, 373426.7000000029802322 233220.0000000000000000, 373405.4000000060186721 233187.2999999969906639, 373383.0999999939813279 233164.7999999969906639, 373333.5999999939813279 233096.7000000030093361, 373325.5000000000000000 233078.5000000000000000, 373298.2999999970197678 233028.5999999940104317, 373269.2999999970197678 232982.5999999940104317, 373220.0999999939813279 232893.2000000030093361, 373190.7999999970197678 232853.7000000030093361, 373145.4000000060186721 232784.7000000030093361, 373100.9000000060186721 232712.0000000000000000, 373090.4000000060186721 232680.2999999969906639, 373077.5999999939813279 232660.0999999940104317, 373046.4000000060186721 232597.2999999969906639, 373028.9000000060186721 232538.2000000030093361, 373012.4000000060186721 232520.0000000000000000, 373002.5000000000000000 232506.2999999969906639, 372997.2999999970197678 232499.9000000059895683, 372979.9000000060186721 232471.7999999969906639, 372966.5000000000000000 232452.4000000059895683, 372963.0999999939813279 232436.0999999940104317, 372925.2000000029802322 232361.5000000000000000, 372900.0000000000000000 232326.4000000059895683, 372885.7000000029802322 232295.2000000030093361, 372849.7000000029802322 232245.0000000000000000, 372803.2999999970197678 232173.7999999969906639, 372764.9000000060186721 232096.2000000030093361, 372735.2000000029802322 232063.2999999969906639, 372710.9000000060186721 232032.2000000030093361, 372692.5000000000000000 232004.7000000030093361, 372691.9000000060186721 231988.7000000030093361, 372680.0000000000000000 231952.0000000000000000, 372658.5999999939813279 231917.0000000000000000, 372655.5999999939813279 231898.0000000000000000, 372629.7999999970197678 231847.0999999940104317, 372609.7999999970197678 231810.5999999940104317, 372589.2999999970197678 231778.0000000000000000, 372571.0000000000000000 231743.4000000059895683, 372549.4000000060186721 231706.7000000030093361, 372536.9000000060186721 231677.0999999940104317, 372497.9000000060186721 231600.4000000059895683, 372476.7999999970197678 231562.9000000059895683, 372467.5999999939813279 231529.0999999940104317, 372455.0000000000000000 231502.4000000059895683, 372444.2999999970197678 231467.7000000030093361, 372431.0000000000000000 231419.5000000000000000, 372394.5000000000000000 231364.2999999969906639, 372379.0000000000000000 231339.5000000000000000, 372355.0000000000000000 231312.5999999940104317, 372344.0999999939813279 231286.2999999969906639, 372307.7999999970197678 231214.0000000000000000, 372292.0999999939813279 231194.9000000059895683, 372274.5000000000000000 231145.2999999969906639, 372260.0999999939813279 231120.5999999940104317, 372226.2999999970197678 231083.2999999969906639, 372194.2999999970197678 231041.4000000059895683, 372136.4000000060186721 230959.0999999940104317, 372112.7999999970197678 230922.5000000000000000, 372065.5999999939813279 230841.5999999940104317, 372054.0000000000000000 230818.2999999969906639, 372031.7000000029802322 230784.2999999969906639, 372014.7000000029802322 230735.5999999940104317, 371990.4000000060186721 230694.2000000030093361, 371950.7999999970197678 230628.4000000059895683, 371931.7000000029802322 230578.9000000059895683, 371890.9000000060186721 230511.2999999969906639, 371874.9000000060186721 230494.5000000000000000, 371861.4000000060186721 230513.7000000030093361, 371858.0000000000000000 230493.4000000059895683, 371846.0999999939813279 230455.0999999940104317, 371828.0999999939813279 230407.5000000000000000, 371813.2999999970197678 230374.7999999969906639, 371787.7999999970197678 230316.5000000000000000, 371751.2999999970197678 230262.7000000030093361, 371731.5000000000000000 230213.7000000030093361, 371699.2000000029802322 230171.7999999969906639, 371679.2999999970197678 230125.2000000030093361, 371656.5999999939813279 230095.5999999940104317, 371621.4000000060186721 230055.4000000059895683, 371584.2999999970197678 229987.7000000030093361, 371550.0999999939813279 229912.5000000000000000, 371526.9000000060186721 229867.4000000059895683, 371504.7999999970197678 229838.7999999969906639, 371485.5999999939813279 229801.7999999969906639, 371475.5000000000000000 229778.0000000000000000, 371461.4000000060186721 229752.2000000030093361, 371440.7000000029802322 229706.7999999969906639, 371400.7999999970197678 229629.0999999940104317, 371372.4000000060186721 229581.5999999940104317, 371349.4000000060186721 229546.5999999940104317, 371312.2999999970197678 229480.4000000059895683, 371296.2000000029802322 229454.2999999969906639, 371274.9000000060186721 229432.0999999940104317, 371253.0999999939813279 229396.0999999940104317, 371224.5000000000000000 229358.0999999940104317, 371185.5000000000000000 229294.0000000000000000, 371153.2999999970197678 229239.7000000030093361, 371066.4000000060186721 229032.7000000030093361, 371027.5000000000000000 228966.9000000059895683, 371004.7999999970197678 228913.0000000000000000, 370991.0000000000000000 228890.2000000030093361, 370938.0999999939813279 228790.4000000059895683, 370919.2999999970197678 228762.7999999969906639, 370884.2999999970197678 228707.4000000059895683, 370840.0000000000000000 228630.9000000059895683, 370797.2000000029802322 228558.2999999969906639, 370722.5000000000000000 228398.9000000059895683, 370677.2000000029802322 228323.2999999969906639, 370655.5000000000000000 228268.2999999969906639, 370635.0000000000000000 228228.7999999969906639, 370577.7999999970197678 228117.5999999940104317, 370556.9000000060186721 228088.4000000059895683, 370533.5999999939813279 228047.9000000059895683, 370511.2999999970197678 228025.2999999969906639, 370485.2000000029802322 227994.7999999969906639, 370435.7999999970197678 227946.2999999969906639, 370399.7999999970197678 227881.0999999940104317, 370342.5999999939813279 227793.2000000030093361, 370316.4000000060186721 227755.2999999969906639, 370239.5999999939813279 227614.7999999969906639, 370195.0000000000000000 227565.2000000030093361, 370123.2999999970197678 227431.2000000030093361, 370067.0000000000000000 227353.9000000059895683, 370025.5000000000000000 227277.7000000030093361, 369958.5000000000000000 227171.5000000000000000, 369938.7999999970197678 227130.5000000000000000, 369892.7999999970197678 227050.5000000000000000, 369876.7999999970197678 227022.7999999969906639, 369837.7999999970197678 226970.5000000000000000, 369820.7999999970197678 226933.0000000000000000, 369782.4000000060186721 226859.7999999969906639, 369762.0999999939813279 226819.2000000030093361, 369739.0999999939813279 226782.2000000030093361, 369713.0999999939813279 226749.2000000030093361, 369686.5000000000000000 226704.7000000030093361, 369642.4000000060186721 226620.0999999940104317, 369596.2000000029802322 226546.0999999940104317, 369578.5000000000000000 226510.5000000000000000, 369541.4000000060186721 226455.2000000030093361, 369519.0000000000000000 226397.2000000030093361, 369476.7999999970197678 226327.0999999940104317, 369435.5999999939813279 226235.5999999940104317, 369404.9000000060186721 226135.2999999969906639, 369367.4000000060186721 226063.0999999940104317, 369353.7999999970197678 226024.0000000000000000, 369316.9000000060186721 225937.7999999969906639, 369292.9000000060186721 225899.7999999969906639, 369258.7999999970197678 225837.5000000000000000, 369226.0999999939813279 225790.5999999940104317, 369191.9000000060186721 225739.9000000059895683, 369169.7000000029802322 225702.7999999969906639, 369136.7999999970197678 225661.9000000059895683, 369115.5000000000000000 225641.7999999969906639, 368998.0999999939813279 225443.2999999969906639, 368960.2000000029802322 225358.5999999940104317, 368890.7999999970197678 225224.5999999940104317, 368812.7999999970197678 225025.9000000059895683, 368771.7000000029802322 224939.2999999969906639, 368741.9000000060186721 224859.9000000059895683, 368701.4000000060186721 224765.9000000059895683, 368679.0999999939813279 224703.4000000059895683, 368637.0999999939813279 224627.2999999969906639, 368616.7000000029802322 224565.7999999969906639, 368592.7999999970197678 224525.2999999969906639, 368547.5000000000000000 224416.7999999969906639, 368528.0000000000000000 224383.7999999969906639, 368468.5999999939813279 224270.0000000000000000, 368457.2000000029802322 224234.2000000030093361, 368445.0999999939813279 224206.0000000000000000, 368404.4000000060186721 224140.4000000059895683, 368387.0000000000000000 224066.9000000059895683, 368348.7999999970197678 223972.2000000030093361, 368324.5999999939813279 223901.2999999969906639, 368299.0999999939813279 223849.2999999969906639, 368281.0999999939813279 223819.2000000030093361, 368249.7000000029802322 223748.4000000059895683, 368221.7999999970197678 223704.0000000000000000, 368187.0999999939813279 223625.7999999969906639, 368163.5999999939813279 223575.7999999969906639, 368139.7999999970197678 223508.4000000059895683, 368111.0999999939813279 223455.5000000000000000, 368083.9000000060186721 223370.5999999940104317, 368056.0000000000000000 223315.7000000030093361, 368028.7000000029802322 223248.7999999969906639, 368011.0000000000000000 223201.7000000030093361, 367981.7999999970197678 223133.9000000059895683, 367963.4000000060186721 223102.7999999969906639, 367932.0999999939813279 223056.4000000059895683, 367903.2999999970197678 222978.5999999940104317, 367852.0999999939813279 222807.4000000059895683, 367820.5999999939813279 222727.0999999940104317, 367790.0999999939813279 222635.4000000059895683, 367757.7999999970197678 222557.5999999940104317, 367742.4000000060186721 222516.0000000000000000, 367708.2000000029802322 222426.2999999969906639, 367660.2000000029802322 222299.9000000059895683, 367625.7999999970197678 222225.5999999940104317, 367591.7000000029802322 222159.4000000059895683, 367561.2999999970197678 222093.5000000000000000, 367502.2000000029802322 221924.4000000059895683, 367472.9000000060186721 221842.5999999940104317, 367458.5000000000000000 221819.4000000059895683, 367427.7000000029802322 221735.7000000030093361, 367385.0000000000000000 221624.0999999940104317, 367360.5000000000000000 221574.2000000030093361, 367326.0000000000000000 221490.0000000000000000, 367290.2999999970197678 221393.2999999969906639, 367271.2000000029802322 221339.7000000030093361, 367244.0999999939813279 221268.7999999969906639, 367237.2999999970197678 221245.9000000059895683, 367214.0000000000000000 221194.0000000000000000, 367200.4000000060186721 221137.9000000059895683, 367162.2999999970197678 221044.7000000030093361, 367147.0999999939813279 220987.0999999940104317, 367117.7999999970197678 220919.2999999969906639, 367102.7999999970197678 220894.0999999940104317, 367073.5999999939813279 220814.7999999969906639, 367023.4000000060186721 220673.0000000000000000, 366980.0999999939813279 220598.2999999969906639, 366962.0999999939813279 220558.7999999969906639, 366905.7999999970197678 220454.4000000059895683, 366882.4000000060186721 220416.9000000059895683, 366857.0000000000000000 220370.5000000000000000, 366824.4000000060186721 220272.7999999969906639, 366787.5999999939813279 220128.7000000030093361, 366743.9000000060186721 220049.2000000030093361, 366730.5000000000000000 220013.0000000000000000, 366694.7999999970197678 219922.4000000059895683, 366668.2999999970197678 219845.4000000059895683, 366642.2999999970197678 219788.5000000000000000, 366621.0000000000000000 219728.5000000000000000, 366602.0000000000000000 219663.5000000000000000, 366578.2999999970197678 219606.5999999940104317, 366570.7000000029802322 219575.7000000030093361, 366551.5999999939813279 219513.2000000030093361, 366507.5000000000000000 219429.5999999940104317, 366492.0000000000000000 219386.0000000000000000, 366458.4000000060186721 219301.2000000030093361, 366426.7000000029802322 219211.0000000000000000, 366392.9000000060186721 219139.2000000030093361, 366373.0999999939813279 219087.2000000030093361, 366316.5999999939813279 218974.4000000059895683, 366294.7999999970197678 218940.7999999969906639, 366260.7999999970197678 218889.5000000000000000, 366214.2999999970197678 218764.0999999940104317, 366187.5999999939813279 218662.4000000059895683, 366165.0000000000000000 218615.7999999969906639, 366128.7999999970197678 218519.2000000030093361, 366086.9000000060186721 218417.5999999940104317, 366068.7999999970197678 218378.0000000000000000, 366035.0000000000000000 218307.2000000030093361, 366012.2000000029802322 218231.7999999969906639, 365984.7000000029802322 218153.4000000059895683, 365950.2000000029802322 218060.7999999969906639, 365922.0999999939813279 218017.7999999969906639, 365903.4000000060186721 217982.2000000030093361, 365835.2000000029802322 217851.0999999940104317, 365798.5000000000000000 217801.9000000059895683, 365728.4000000060186721 217660.2999999969906639, 365673.2000000029802322 217559.0000000000000000, 365657.5000000000000000 217511.4000000059895683, 365636.9000000060186721 217461.9000000059895683, 365589.2999999970197678 217352.4000000059895683, 365560.7000000029802322 217312.0000000000000000, 365525.2000000029802322 217245.2999999969906639, 365480.9000000060186721 217133.2000000030093361, 365442.5000000000000000 217056.5999999940104317, 365405.9000000060186721 216955.5000000000000000, 365379.2000000029802322 216908.0000000000000000, 365341.2000000029802322 216825.7999999969906639, 365319.2000000029802322 216784.2999999969906639, 365303.2999999970197678 216741.5999999940104317, 365259.2999999970197678 216668.0000000000000000, 365243.2000000029802322 216626.4000000059895683, 365206.9000000060186721 216581.0999999940104317, 365172.5000000000000000 216521.7999999969906639, 365148.7000000029802322 216481.7999999969906639, 365127.2000000029802322 216438.7999999969906639, 365081.2999999970197678 216365.2000000030093361, 365054.5000000000000000 216305.2999999969906639, 365045.0999999939813279 216300.0000000000000000, 365042.4000000060186721 216280.5999999940104317, 365035.0000000000000000 216259.2999999969906639, 365022.9000000060186721 216243.5000000000000000, 365011.7999999970197678 216224.2000000030093361, 364987.5999999939813279 216190.2000000030093361, 364980.9000000060186721 216167.2999999969906639, 364958.2999999970197678 216136.7999999969906639, 364941.7999999970197678 216095.7000000030093361, 364917.7999999970197678 216058.2000000030093361, 364883.2999999970197678 216007.7999999969906639, 364861.2000000029802322 215961.2999999969906639, 364850.2999999970197678 215946.0000000000000000, 364833.7999999970197678 215915.9000000059895683, 364803.7000000029802322 215856.0000000000000000, 364770.0000000000000000 215806.2000000030093361, 364714.7000000029802322 215744.7999999969906639, 364702.5999999939813279 215717.0000000000000000, 364679.5999999939813279 215672.9000000059895683, 364650.7999999970197678 215618.0000000000000000, 364631.7999999970197678 215591.5000000000000000, 364601.0999999939813279 215554.5000000000000000, 364583.7999999970197678 215510.9000000059895683, 364568.5999999939813279 215482.2000000030093361, 364521.5000000000000000 215423.0999999940104317, 364479.2000000029802322 215387.0000000000000000, 364413.2000000029802322 215308.2000000030093361, 364385.2000000029802322 215279.2000000030093361, 364366.2000000029802322 215262.5999999940104317, 364336.4000000060186721 215230.0999999940104317, 364285.0000000000000000 215148.7000000030093361, 364246.2999999970197678 215118.2999999969906639, 364224.5999999939813279 215094.2999999969906639, 364190.0999999939813279 215058.9000000059895683, 364165.0999999939813279 215030.4000000059895683, 364125.7999999970197678 214999.5999999940104317, 364103.5999999939813279 214973.0000000000000000, 364053.5999999939813279 214926.0000000000000000, 364011.7999999970197678 214890.7000000030093361, 363965.5000000000000000 214853.5000000000000000, 363920.7000000029802322 214801.9000000059895683, 363876.5000000000000000 214769.7000000030093361, 363806.2999999970197678 214703.5000000000000000, 363766.7000000029802322 214674.2000000030093361, 363747.7999999970197678 214657.0000000000000000, 363681.7000000029802322 214592.2999999969906639, 363620.5000000000000000 214559.7999999969906639, 363580.2999999970197678 214535.5000000000000000, 363530.5999999939813279 214496.4000000059895683, 363510.2999999970197678 214495.7000000030093361, 363474.9000000060186721 214488.7999999969906639, 363430.5000000000000000 214476.5000000000000000, 363381.0999999939813279 214465.2999999969906639, 363316.5000000000000000 214466.4000000059895683, 363252.5999999939813279 214461.4000000059895683, 363156.7000000029802322 214466.4000000059895683, 363090.7999999970197678 214484.2999999969906639, 363077.5000000000000000 214493.5000000000000000, 363067.0999999939813279 214497.2000000030093361, 363040.0000000000000000 214500.2000000030093361, 362914.5999999939813279 214528.5000000000000000, 362870.2000000029802322 214553.0999999940104317, 362846.2999999970197678 214560.5999999940104317, 362828.4000000060186721 214561.9000000059895683, 362827.0000000000000000 214572.7999999969906639, 362814.0000000000000000 214577.5000000000000000, 362776.5000000000000000 214595.5999999940104317, 362765.4000000060186721 214599.2000000030093361, 362667.9000000060186721 214651.5999999940104317, 362630.2999999970197678 214667.7000000030093361, 362576.0999999939813279 214694.0000000000000000, 362543.2999999970197678 214725.4000000059895683, 362511.9000000060186721 214750.9000000059895683, 362478.0000000000000000 214757.4000000059895683, 362379.2999999970197678 214796.7999999969906639, 362260.2999999970197678 214866.5000000000000000, 362127.0999999939813279 214946.7999999969906639, 362023.9000000060186721 215017.2999999969906639, 361984.0999999939813279 215042.4000000059895683, 361890.5000000000000000 215113.7000000030093361, 361777.5999999939813279 215181.7999999969906639, 361710.0999999939813279 215233.7999999969906639, 361692.4000000060186721 215248.4000000059895683, 361671.7000000029802322 215256.7000000030093361, 361597.9000000060186721 215286.9000000059895683, 361502.5000000000000000 215343.7000000030093361, 361472.0000000000000000 215357.2000000030093361, 361423.7000000029802322 215382.7999999969906639, 361259.2000000029802322 215487.7000000030093361, 361226.5999999939813279 215505.7000000030093361, 361191.5999999939813279 215527.7000000030093361, 361118.7000000029802322 215568.2999999969906639, 360996.0999999939813279 215603.5000000000000000, 360963.9000000060186721 215608.5000000000000000, 360927.7999999970197678 215621.5000000000000000, 360842.7999999970197678 215661.9000000059895683, 360789.5999999939813279 215691.0000000000000000, 360754.0999999939813279 215720.0999999940104317, 360727.2000000029802322 215747.4000000059895683, 360701.7999999970197678 215765.7999999969906639, 360660.5000000000000000 215812.9000000059895683, 360654.2999999970197678 215825.9000000059895683, 360615.2999999970197678 215860.9000000059895683, 360579.2999999970197678 215885.0000000000000000, 360488.2000000029802322 215951.2000000030093361, 360455.4000000060186721 215982.0999999940104317, 360441.2000000029802322 216003.7999999969906639, 360437.7000000029802322 216052.2000000030093361, 360418.2999999970197678 216065.0000000000000000, 360341.0999999939813279 216078.5999999940104317, 360322.0000000000000000 216078.5000000000000000, 360150.7000000029802322 216078.2000000030093361, 359950.5999999939813279 216070.4000000059895683, 359871.2999999970197678 216067.2000000030093361, 359804.9000000060186721 216063.7999999969906639, 359732.7999999970197678 216061.2999999969906639, 359707.2000000029802322 216057.2999999969906639, 359633.7999999970197678 216055.4000000059895683, 359624.4000000060186721 216048.5999999940104317, 359625.9000000060186721 216033.5999999940104317, 359629.0000000000000000 216003.7000000030093361, 359644.5999999939813279 215957.5999999940104317, 359657.4000000060186721 215924.9000000059895683, 359666.5000000000000000 215890.9000000059895683, 359668.4000000060186721 215838.4000000059895683, 359654.0000000000000000 215798.2999999969906639, 359637.7000000029802322 215765.5999999940104317, 359599.0000000000000000 215719.4000000059895683, 359511.2999999970197678 215645.5000000000000000, 359472.4000000060186721 215625.5999999940104317, 359428.0999999939813279 215611.4000000059895683, 359380.9000000060186721 215602.7000000030093361, 359323.5000000000000000 215606.5999999940104317, 359253.0000000000000000 215621.7000000030093361, 359209.9000000060186721 215664.7000000030093361, 359166.5000000000000000 215718.7000000030093361, 359135.7999999970197678 215767.7000000030093361, 359093.5999999939813279 215819.7000000030093361, 359042.4000000060186721 215891.7000000030093361, 359013.2999999970197678 215925.7000000030093361, 358938.2999999970197678 215980.0999999940104317, 358873.5999999939813279 216000.7000000030093361, 358766.2000000029802322 216007.9000000059895683, 358736.2999999970197678 216003.7999999969906639, 358607.9000000060186721 215998.9000000059895683, 358535.5000000000000000 216001.0000000000000000, 358492.4000000060186721 215997.2000000030093361, 358428.0000000000000000 215997.2000000030093361, 358369.5999999939813279 215995.7000000030093361, 358258.4000000060186721 215994.0000000000000000, 358108.0000000000000000 215982.2999999969906639, 357988.2999999970197678 215983.2000000030093361, 357948.2000000029802322 215980.9000000059895683, 357892.0000000000000000 215980.7999999969906639, 357883.2999999970197678 215978.0000000000000000, 357866.4000000060186721 215979.2000000030093361, 357825.2999999970197678 215971.4000000059895683, 357798.2999999970197678 215947.2999999969906639, 357769.2999999970197678 215922.2999999969906639, 357739.2000000029802322 215886.5000000000000000, 357707.9000000060186721 215864.0000000000000000, 357645.7999999970197678 215826.5999999940104317, 357580.5999999939813279 215805.7000000030093361, 357556.2999999970197678 215796.0999999940104317, 357522.7000000029802322 215787.5999999940104317, 357488.9000000060186721 215777.2999999969906639, 357361.5000000000000000 215746.2999999969906639, 357308.2000000029802322 215729.2000000030093361, 357270.5999999939813279 215713.9000000059895683, 357247.7000000029802322 215699.7999999969906639, 357230.2000000029802322 215689.5999999940104317, 357198.4000000060186721 215674.0999999940104317, 357158.5000000000000000 215656.7999999969906639, 357139.4000000060186721 215647.5999999940104317, 357090.0999999939813279 215625.4000000059895683, 357061.0000000000000000 215606.0000000000000000, 357024.7999999970197678 215585.0000000000000000, 356976.7000000029802322 215540.9000000059895683, 356959.7999999970197678 215519.2999999969906639, 356924.2999999970197678 215495.9000000059895683, 356863.9000000060186721 215441.0000000000000000, 356847.4000000060186721 215434.2999999969906639, 356827.2999999970197678 215423.0999999940104317, 356801.4000000060186721 215401.0999999940104317, 356769.0999999939813279 215372.2000000030093361, 356726.2000000029802322 215341.4000000059895683, 356698.5999999939813279 215325.5000000000000000, 356639.7000000029802322 215286.0000000000000000, 356586.0999999939813279 215239.5000000000000000, 356520.0000000000000000 215173.7000000030093361, 356487.9000000060186721 215140.2999999969906639, 356460.0999999939813279 215110.7000000030093361, 356416.2000000029802322 215058.0999999940104317, 356396.2000000029802322 215039.5000000000000000, 356363.0000000000000000 215005.5999999940104317, 356287.2000000029802322 214938.5000000000000000, 356251.5000000000000000 214906.0999999940104317, 356155.7999999970197678 214810.9000000059895683, 356106.7999999970197678 214766.7999999969906639, 355999.7000000029802322 214667.7000000030093361, 355956.2999999970197678 214633.0000000000000000, 355922.0000000000000000 214604.5999999940104317, 355896.7000000029802322 214583.0000000000000000, 355879.5999999939813279 214565.0000000000000000, 355815.9000000060186721 214515.0999999940104317, 355791.4000000060186721 214485.5000000000000000, 355781.2000000029802322 214480.2000000030093361, 355783.5000000000000000 214472.5999999940104317, 355756.4000000060186721 214447.2000000030093361, 355703.5999999939813279 214373.7999999969906639, 355649.7999999970197678 214316.2000000030093361, 355633.7999999970197678 214298.5000000000000000, 355606.4000000060186721 214267.0000000000000000, 355576.4000000060186721 214229.5999999940104317, 355565.0000000000000000 214217.2999999969906639, 355524.7000000029802322 214182.0000000000000000, 355492.0999999939813279 214141.7000000030093361, 355431.7000000029802322 214075.7999999969906639, 355412.5999999939813279 214056.7000000030093361, 355382.2000000029802322 214028.2000000030093361, 355344.5999999939813279 213994.4000000059895683, 355296.9000000060186721 213940.7999999969906639, 355261.2999999970197678 213908.9000000059895683, 355237.5000000000000000 213876.4000000059895683, 355212.5999999939813279 213844.2999999969906639, 355182.2999999970197678 213811.4000000059895683, 355151.2999999970197678 213757.0000000000000000, 355117.9000000060186721 213724.2000000030093361, 355114.5999999939813279 213715.7999999969906639, 355102.5999999939813279 213703.0000000000000000, 355084.9000000060186721 213673.7999999969906639, 355062.2000000029802322 213654.7999999969906639, 355051.5999999939813279 213640.0000000000000000, 355001.7000000029802322 213589.9000000059895683, 355002.5000000000000000 213576.9000000059895683, 354978.7999999970197678 213553.4000000059895683, 354926.5999999939813279 213487.9000000059895683, 354892.5999999939813279 213432.0000000000000000, 354877.4000000060186721 213414.2999999969906639, 354800.9000000060186721 213315.2000000030093361, 354747.7999999970197678 213259.2999999969906639, 354662.7999999970197678 213136.4000000059895683, 354613.2000000029802322 213069.2999999969906639, 354552.2999999970197678 212996.5000000000000000, 354491.9000000060186721 212928.0999999940104317, 354444.7000000029802322 212858.5999999940104317, 354436.5999999939813279 212851.2000000030093361, 354404.2999999970197678 212798.9000000059895683, 354393.2999999970197678 212790.0999999940104317, 354374.9000000060186721 212772.0000000000000000, 354260.0999999939813279 212618.0999999940104317, 354242.0000000000000000 212583.5000000000000000, 354214.5000000000000000 212556.0000000000000000, 354161.7999999970197678 212490.5999999940104317, 354133.0999999939813279 212448.5999999940104317, 354112.5000000000000000 212416.5000000000000000, 354096.7000000029802322 212404.2999999969906639, 354078.5999999939813279 212384.5999999940104317, 354063.2999999970197678 212363.5000000000000000, 354057.2000000029802322 212342.0999999940104317, 354032.7999999970197678 212313.5000000000000000, 354029.7999999970197678 212300.5999999940104317, 353984.7999999970197678 212246.5000000000000000, 353954.7000000029802322 212221.5000000000000000, 353943.5000000000000000 212207.2000000030093361, 353925.7999999970197678 212184.5000000000000000, 353923.2999999970197678 212167.2000000030093361, 353906.2999999970197678 212149.9000000059895683, 353895.2999999970197678 212132.7000000030093361, 353885.7999999970197678 212113.7999999969906639, 353872.7000000029802322 212104.5999999940104317, 353840.4000000060186721 212061.7999999969906639, 353825.5999999939813279 212045.0000000000000000, 353810.9000000060186721 212021.2999999969906639, 353715.5999999939813279 211903.7000000030093361, 353694.4000000060186721 211872.0999999940104317, 353665.0999999939813279 211831.5999999940104317, 353618.5000000000000000 211776.9000000059895683, 353575.2999999970197678 211713.7999999969906639, 353539.5999999939813279 211678.0000000000000000, 353527.0999999939813279 211661.2000000030093361, 353469.5999999939813279 211595.7999999969906639, 353462.0000000000000000 211575.0000000000000000, 353432.0999999939813279 211538.0999999940104317, 353408.7000000029802322 211500.0000000000000000, 353380.5999999939813279 211457.5000000000000000, 353357.0000000000000000 211426.5000000000000000, 353348.7000000029802322 211410.7000000030093361, 353310.2999999970197678 211358.9000000059895683, 353277.4000000060186721 211317.5000000000000000, 353251.2999999970197678 211272.0000000000000000, 353232.7000000029802322 211244.4000000059895683, 353221.5000000000000000 211230.5999999940104317, 353201.2000000029802322 211201.5000000000000000, 353131.0000000000000000 211097.4000000059895683, 353084.2999999970197678 211045.7999999969906639, 353078.2000000029802322 211033.0000000000000000, 353029.7000000029802322 210970.4000000059895683, 353015.0999999939813279 210947.2000000030093361, 353003.7000000029802322 210934.7999999969906639, 352988.2999999970197678 210915.7000000030093361, 352967.4000000060186721 210878.0000000000000000, 352925.7999999970197678 210816.4000000059895683, 352893.0000000000000000 210747.5999999940104317, 352860.4000000060186721 210698.2000000030093361, 352823.7999999970197678 210635.5000000000000000, 352781.7000000029802322 210565.9000000059895683, 352762.5999999939813279 210546.7000000030093361, 352728.0000000000000000 210503.4000000059895683, 352690.5000000000000000 210446.5000000000000000, 352674.4000000060186721 210429.9000000059895683, 352670.0000000000000000 210419.5000000000000000, 352663.7999999970197678 210413.0999999940104317, 352635.7999999970197678 210358.2000000030093361, 352535.7000000029802322 210213.7000000030093361, 352493.9000000060186721 210170.4000000059895683, 352470.7000000029802322 210140.9000000059895683, 352445.7000000029802322 210099.9000000059895683, 352427.5000000000000000 210066.2000000030093361, 352382.2999999970197678 209981.2000000030093361, 352368.5000000000000000 209965.9000000059895683, 352359.0999999939813279 209939.5999999940104317, 352331.0999999939813279 209892.7000000030093361, 352299.2999999970197678 209856.2999999969906639, 352258.7000000029802322 209851.4000000059895683, 352226.5000000000000000 209815.0000000000000000, 352217.5000000000000000 209803.2000000030093361, 352199.7000000029802322 209760.5999999940104317, 352153.9000000060186721 209689.5000000000000000, 352140.0999999939813279 209666.2999999969906639, 352108.5999999939813279 209619.0000000000000000, 352087.2000000029802322 209578.4000000059895683, 352043.9000000060186721 209503.2999999969906639, 352039.9000000060186721 209481.2999999969906639, 352033.9000000060186721 209464.5000000000000000, 352016.7000000029802322 209458.7999999969906639, 352002.7999999970197678 209447.0999999940104317, 351981.2000000029802322 209410.4000000059895683, 351965.4000000060186721 209386.7000000030093361, 351959.0999999939813279 209368.4000000059895683, 351952.7000000029802322 209354.0999999940104317, 351949.4000000060186721 209335.7000000030093361, 351959.5000000000000000 209322.0000000000000000, 351945.2000000029802322 209310.7999999969906639, 351931.9000000060186721 209286.5999999940104317, 351924.2999999970197678 209269.7000000030093361, 351879.7999999970197678 209172.2000000030093361, 351872.0999999939813279 209156.2999999969906639, 351854.7999999970197678 209130.2000000030093361, 351833.7999999970197678 209081.2000000030093361, 351814.2999999970197678 209049.5000000000000000, 351807.2999999970197678 209017.2000000030093361, 351805.2999999970197678 208997.7999999969906639, 351800.0999999939813279 208972.4000000059895683, 351788.0000000000000000 208948.7000000030093361, 351769.7999999970197678 208923.5000000000000000, 351737.5999999939813279 208896.5999999940104317, 351719.7000000029802322 208862.5000000000000000, 351668.5000000000000000 208798.0000000000000000, 351647.7999999970197678 208777.7999999969906639, 351622.7999999970197678 208745.4000000059895683, 351593.4000000060186721 208671.5000000000000000, 351565.7999999970197678 208633.0999999940104317, 351548.9000000060186721 208607.4000000059895683, 351533.5999999939813279 208587.7000000030093361, 351507.0999999939813279 208526.7000000030093361, 351483.5999999939813279 208493.5999999940104317, 351473.2000000029802322 208472.9000000059895683, 351444.5999999939813279 208419.0000000000000000, 351420.0000000000000000 208394.5000000000000000, 351395.7999999970197678 208356.4000000059895683, 351354.2999999970197678 208306.2000000030093361, 351330.7000000029802322 208260.2000000030093361, 351323.0000000000000000 208236.9000000059895683, 351312.0999999939813279 208223.0999999940104317, 351284.7000000029802322 208184.7000000030093361, 351269.2999999970197678 208153.9000000059895683, 351253.9000000060186721 208135.2999999969906639, 351246.9000000060186721 208120.4000000059895683, 351235.7000000029802322 208102.0000000000000000, 351220.0000000000000000 208066.9000000059895683, 351188.2000000029802322 208028.5999999940104317, 351158.2999999970197678 207975.0999999940104317, 351134.2999999970197678 207936.0999999940104317, 351106.9000000060186721 207910.0999999940104317, 351083.7999999970197678 207887.0000000000000000, 351028.2000000029802322 207819.5999999940104317, 351017.7999999970197678 207801.7999999969906639, 350968.2999999970197678 207727.7999999969906639, 350952.5999999939813279 207693.0999999940104317, 350914.9000000060186721 207638.2999999969906639, 350885.7999999970197678 207584.0000000000000000, 350836.0000000000000000 207520.4000000059895683, 350802.2999999970197678 207459.0000000000000000, 350778.5999999939813279 207427.5000000000000000, 350740.5000000000000000 207359.9000000059895683, 350707.7999999970197678 207312.4000000059895683, 350676.4000000060186721 207266.0999999940104317, 350658.7999999970197678 207244.0000000000000000, 350642.9000000060186721 207212.2000000030093361, 350621.5000000000000000 207161.2000000030093361, 350612.0000000000000000 207144.9000000059895683, 350597.2999999970197678 207114.2000000030093361, 350573.9000000060186721 207063.7999999969906639, 350548.7000000029802322 207024.2000000030093361, 350510.5999999939813279 206945.5000000000000000, 350490.7000000029802322 206918.7999999969906639, 350470.9000000060186721 206883.7999999969906639, 350448.7000000029802322 206833.7999999969906639, 350438.0000000000000000 206803.0000000000000000, 350419.2999999970197678 206768.4000000059895683, 350396.2999999970197678 206737.4000000059895683, 350307.7000000029802322 206541.7999999969906639, 350278.2999999970197678 206492.2999999969906639, 350264.7000000029802322 206447.5999999940104317, 350245.2000000029802322 206420.0999999940104317, 350239.2000000029802322 206393.7000000030093361, 350225.4000000060186721 206355.0999999940104317, 350203.7999999970197678 206318.4000000059895683, 350191.7999999970197678 206281.7999999969906639, 350170.2999999970197678 206242.7000000030093361, 350139.7000000029802322 206161.7999999969906639, 350116.2000000029802322 206120.2999999969906639, 350101.9000000060186721 206062.2000000030093361, 350095.0999999939813279 206017.9000000059895683, 350076.2999999970197678 205961.4000000059895683, 350067.2999999970197678 205922.0999999940104317, 350059.0000000000000000 205906.2999999969906639, 350034.5000000000000000 205833.7999999969906639, 350002.0000000000000000 205734.7000000030093361, 349994.7000000029802322 205699.2999999969906639, 349981.0999999939813279 205653.5999999940104317, 349971.5999999939813279 205630.9000000059895683, 349946.5000000000000000 205574.2999999969906639, 349921.2000000029802322 205527.4000000059895683, 349880.2000000029802322 205445.2999999969906639, 349855.5000000000000000 205409.2999999969906639, 349843.7000000029802322 205381.5000000000000000, 349826.5000000000000000 205338.4000000059895683, 349812.5000000000000000 205318.7000000030093361, 349796.0999999939813279 205294.5000000000000000, 349791.2999999970197678 205267.5999999940104317, 349783.4000000060186721 205237.2999999969906639, 349785.5999999939813279 205189.5000000000000000, 349787.5000000000000000 205149.9000000059895683, 349793.7999999970197678 205129.4000000059895683, 349804.7000000029802322 205105.7999999969906639, 349807.2000000029802322 205080.9000000059895683, 349789.0999999939813279 205031.2999999969906639, 349773.2999999970197678 204995.5000000000000000, 349754.2999999970197678 204967.0000000000000000, 349734.0000000000000000 204914.9000000059895683, 349710.7999999970197678 204872.2999999969906639, 349694.0999999939813279 204833.2000000030093361, 349681.0000000000000000 204808.5000000000000000, 349660.2999999970197678 204758.9000000059895683, 349639.2999999970197678 204711.5000000000000000, 349627.0000000000000000 204694.2000000030093361, 349598.4000000060186721 204651.7000000030093361, 349558.0999999939813279 204591.0000000000000000, 349538.7000000029802322 204553.9000000059895683, 349515.9000000060186721 204519.4000000059895683, 349492.5000000000000000 204467.2999999969906639, 349480.5000000000000000 204430.0999999940104317, 349481.7999999970197678 204403.7000000030093361, 349495.0000000000000000 204367.5999999940104317, 349503.2000000029802322 204334.5999999940104317, 349510.5999999939813279 204280.0000000000000000, 349497.5999999939813279 204248.7999999969906639, 349474.7999999970197678 204224.2999999969906639, 349446.0999999939813279 204199.7999999969906639, 349390.2999999970197678 204161.2999999969906639, 349339.7000000029802322 204111.7000000030093361, 349275.7000000029802322 204003.2000000030093361, 349229.4000000060186721 203905.9000000059895683, 349207.9000000060186721 203842.7000000030093361, 349184.9000000060186721 203794.4000000059895683, 349161.2999999970197678 203725.2999999969906639, 349151.4000000060186721 203692.7999999969906639, 349129.0999999939813279 203631.0000000000000000, 349101.7999999970197678 203550.7999999969906639, 349078.7999999970197678 203504.0999999940104317, 349046.2999999970197678 203443.7999999969906639, 349010.7000000029802322 203349.2999999969906639, 349006.2999999970197678 203325.7000000030093361, 348989.0000000000000000 203263.5999999940104317, 348975.0999999939813279 203228.7000000030093361, 348936.9000000060186721 203132.5000000000000000, 348893.4000000060186721 202993.2999999969906639, 348874.9000000060186721 202924.2000000030093361, 348827.4000000060186721 202790.2999999969906639, 348795.0999999939813279 202738.0000000000000000, 348778.5999999939813279 202708.7999999969906639, 348734.0000000000000000 202608.5000000000000000, 348714.7999999970197678 202559.4000000059895683, 348681.9000000060186721 202471.4000000059895683, 348664.9000000060186721 202410.2999999969906639, 348647.7999999970197678 202366.5000000000000000, 348607.5999999939813279 202268.9000000059895683, 348603.2999999970197678 202260.2000000030093361, 348573.7000000029802322 202189.0999999940104317, 348561.7999999970197678 202157.2999999969906639, 348554.0999999939813279 202129.7000000030093361, 348541.2000000029802322 202100.7999999969906639, 348538.7000000029802322 202088.0999999940104317, 348533.4000000060186721 202062.5000000000000000, 348529.0999999939813279 202051.7000000030093361, 348517.7000000029802322 202010.5999999940104317, 348500.0999999939813279 201994.9000000059895683, 348493.7000000029802322 201986.5999999940104317, 348474.5000000000000000 201949.2999999969906639, 348468.7000000029802322 201906.5999999940104317, 348455.0000000000000000 201870.2999999969906639, 348437.7000000029802322 201827.9000000059895683, 348416.7999999970197678 201787.0000000000000000, 348409.7999999970197678 201770.4000000059895683, 348373.4000000060186721 201718.9000000059895683, 348369.2999999970197678 201703.0000000000000000, 348361.5000000000000000 201684.4000000059895683, 348366.7999999970197678 201670.2000000030093361, 348357.7000000029802322 201646.5999999940104317, 348347.5999999939813279 201624.0000000000000000, 348337.7999999970197678 201601.2999999969906639, 348328.7999999970197678 201591.9000000059895683, 348305.4000000060186721 201501.0000000000000000, 348280.2000000029802322 201448.7999999969906639, 348274.0000000000000000 201440.4000000059895683, 348256.7999999970197678 201412.5999999940104317, 348222.4000000060186721 201350.7000000030093361, 348209.2000000029802322 201327.9000000059895683, 348179.7999999970197678 201279.0000000000000000, 348154.7000000029802322 201235.0000000000000000, 348149.9000000060186721 201212.7000000030093361, 348140.5999999939813279 201190.7000000030093361, 348121.0999999939813279 201148.0000000000000000, 348111.2000000029802322 201129.5000000000000000, 348103.5999999939813279 201097.0000000000000000, 348097.0000000000000000 201022.5000000000000000, 348083.5000000000000000 200995.5000000000000000, 348047.5999999939813279 200940.7999999969906639, 348027.0999999939813279 200916.4000000059895683, 347997.5999999939813279 200894.4000000059895683, 347951.7999999970197678 200833.2999999969906639, 347933.4000000060186721 200791.7000000030093361, 347929.7999999970197678 200765.5999999940104317, 347913.0000000000000000 200717.5999999940104317, 347886.7999999970197678 200685.7000000030093361, 347875.2000000029802322 200667.9000000059895683, 347838.7999999970197678 200623.2999999969906639, 347815.4000000060186721 200583.7999999969906639, 347804.7999999970197678 200567.5999999940104317, 347798.4000000060186721 200547.9000000059895683, 347781.7999999970197678 200509.2999999969906639, 347760.7000000029802322 200484.2000000030093361, 347732.5999999939813279 200444.2999999969906639, 347703.4000000060186721 200392.5999999940104317, 347686.0999999939813279 200363.0999999940104317, 347665.2999999970197678 200341.7000000030093361, 347626.7999999970197678 200296.2999999969906639, 347589.2000000029802322 200263.5999999940104317, 347531.9000000060186721 200206.7000000030093361, 347505.0000000000000000 200189.7000000030093361, 347455.5999999939813279 200145.2999999969906639, 347435.7000000029802322 200129.9000000059895683, 347389.0000000000000000 200102.0000000000000000, 347283.9000000060186721 200050.0000000000000000, 347184.2999999970197678 200008.4000000059895683, 347141.0999999939813279 199982.2000000030093361, 347094.4000000060186721 199954.5000000000000000, 347081.9000000060186721 199936.0000000000000000, 347065.0000000000000000 199901.5000000000000000, 347060.2999999970197678 199886.9000000059895683, 347052.0000000000000000 199860.4000000059895683, 347041.0000000000000000 199814.4000000059895683, 347037.4000000060186721 199800.2000000030093361, 347039.7999999970197678 199787.7000000030093361, 347034.5000000000000000 199753.4000000059895683, 347017.2999999970197678 199708.5000000000000000, 346992.7999999970197678 199693.4000000059895683, 346979.7999999970197678 199674.2000000030093361, 346976.2999999970197678 199635.5000000000000000, 346957.5000000000000000 199602.2000000030093361, 346928.0999999939813279 199553.2999999969906639, 346912.5999999939813279 199523.9000000059895683, 346898.7999999970197678 199497.2000000030093361, 346891.7999999970197678 199472.0999999940104317, 346883.4000000060186721 199455.5000000000000000, 346872.2000000029802322 199416.5000000000000000, 346854.4000000060186721 199384.4000000059895683, 346849.2000000029802322 199371.0999999940104317, 346831.7000000029802322 199346.2000000030093361, 346822.7999999970197678 199319.0000000000000000, 346804.9000000060186721 199292.4000000059895683, 346778.5000000000000000 199226.2999999969906639, 346769.7999999970197678 199211.5000000000000000, 346751.7999999970197678 199158.5999999940104317, 346733.7000000029802322 199123.0000000000000000, 346717.7999999970197678 199091.0000000000000000, 346701.7999999970197678 199060.7000000030093361, 346685.5999999939813279 199036.9000000059895683, 346682.7000000029802322 199019.5000000000000000, 346677.9000000060186721 199009.5999999940104317, 346672.5000000000000000 198996.7999999969906639, 346657.2999999970197678 198960.5000000000000000, 346640.0000000000000000 198874.7999999969906639, 346638.2000000029802322 198824.5000000000000000, 346633.5000000000000000 198808.2999999969906639, 346625.2000000029802322 198758.5999999940104317, 346619.7000000029802322 198743.9000000059895683, 346610.5999999939813279 198709.9000000059895683, 346588.0000000000000000 198658.2000000030093361, 346571.5000000000000000 198627.2000000030093361, 346561.0000000000000000 198615.9000000059895683, 346546.2999999970197678 198587.7999999969906639, 346532.9000000060186721 198544.2999999969906639, 346526.7999999970197678 198533.2000000030093361, 346524.2000000029802322 198521.5000000000000000, 346509.9000000060186721 198481.9000000059895683, 346504.2999999970197678 198448.5000000000000000, 346477.0000000000000000 198369.0999999940104317, 346472.5000000000000000 198338.7000000030093361, 346472.2999999970197678 198315.4000000059895683, 346473.4000000060186721 198277.4000000059895683, 346464.4000000060186721 198268.5999999940104317, 346444.0000000000000000 198217.0000000000000000, 346428.9000000060186721 198158.7000000030093361, 346428.7000000029802322 198125.7999999969906639, 346432.2000000029802322 198103.5000000000000000, 346447.4000000060186721 198074.2999999969906639, 346443.7000000029802322 198060.7000000030093361, 346433.9000000060186721 198028.7000000030093361, 346412.2999999970197678 198003.7999999969906639, 346399.2000000029802322 197987.7999999969906639, 346393.5999999939813279 197971.9000000059895683, 346390.2000000029802322 197941.5999999940104317, 346396.9000000060186721 197911.7999999969906639, 346401.5000000000000000 197880.2000000030093361, 346416.5000000000000000 197832.2000000030093361, 346433.5000000000000000 197790.7000000030093361, 346449.7999999970197678 197751.9000000059895683, 346467.7000000029802322 197704.2999999969906639, 346480.2000000029802322 197686.2999999969906639, 346501.2000000029802322 197682.5000000000000000, 346537.2999999970197678 197670.9000000059895683, 346548.7000000029802322 197661.2999999969906639, 346557.0999999939813279 197624.7000000030093361, 346548.5999999939813279 197600.4000000059895683, 346538.5000000000000000 197586.9000000059895683, 346514.5000000000000000 197571.7999999969906639, 346473.2999999970197678 197580.2000000030093361, 346442.0999999939813279 197576.2000000030093361, 346408.7999999970197678 197557.5000000000000000, 346356.4000000060186721 197535.0999999940104317, 346302.9000000060186721 197505.5000000000000000, 346269.7999999970197678 197463.0999999940104317, 346250.7000000029802322 197445.2999999969906639, 346244.7999999970197678 197431.0000000000000000, 346229.7999999970197678 197391.0999999940104317, 346222.5000000000000000 197356.2000000030093361, 346209.2999999970197678 197330.9000000059895683, 346193.0000000000000000 197295.7000000030093361, 346170.2999999970197678 197240.5000000000000000, 346163.5999999939813279 197206.9000000059895683, 346147.2999999970197678 197158.7999999969906639, 346132.0000000000000000 197126.2000000030093361, 346111.7000000029802322 197075.4000000059895683, 346099.5999999939813279 197040.5999999940104317, 346092.0999999939813279 197005.7999999969906639, 346090.7000000029802322 196966.2000000030093361, 346079.0999999939813279 196914.5000000000000000, 346060.7000000029802322 196874.2999999969906639, 346038.7000000029802322 196845.7999999969906639, 346026.5000000000000000 196800.5999999940104317, 346012.9000000060186721 196730.2999999969906639, 346005.0000000000000000 196697.5000000000000000, 345993.0000000000000000 196683.4000000059895683, 345968.2999999970197678 196635.5000000000000000, 345943.5999999939813279 196562.7999999969906639, 345932.5000000000000000 196492.7999999969906639, 345911.2999999970197678 196413.0999999940104317, 345907.0999999939813279 196382.7999999969906639, 345903.7000000029802322 196356.2999999969906639, 345887.0999999939813279 196300.7000000030093361, 345882.0000000000000000 196257.7999999969906639, 345872.5999999939813279 196226.7000000030093361, 345876.7999999970197678 196207.2000000030093361, 345898.2000000029802322 196172.2000000030093361, 345896.2999999970197678 196162.7000000030093361, 345882.7000000029802322 196134.0000000000000000, 345842.7999999970197678 196099.9000000059895683, 345826.5000000000000000 196087.5000000000000000, 345810.5999999939813279 196071.5999999940104317, 345791.9000000060186721 196032.9000000059895683, 345789.4000000060186721 196011.5000000000000000, 345799.2999999970197678 195979.4000000059895683, 345779.0999999939813279 195887.7000000030093361, 345771.7999999970197678 195829.7999999969906639, 345756.5000000000000000 195784.2000000030093361, 345756.2999999970197678 195752.7000000030093361, 345778.5000000000000000 195741.0999999940104317, 345766.2999999970197678 195722.7000000030093361, 345754.5999999939813279 195711.9000000059895683, 345731.0999999939813279 195677.5000000000000000, 345732.2000000029802322 195630.5999999940104317, 345728.2999999970197678 195611.7999999969906639, 345714.2999999970197678 195586.2999999969906639, 345675.0999999939813279 195564.7000000030093361, 345664.7999999970197678 195557.5999999940104317, 345637.2000000029802322 195541.7999999969906639, 345605.2000000029802322 195509.0000000000000000, 345590.2999999970197678 195471.0000000000000000, 345588.5999999939813279 195416.2000000030093361, 345582.9000000060186721 195362.4000000059895683, 345575.9000000060186721 195332.0999999940104317, 345567.9000000060186721 195285.9000000059895683, 345574.5999999939813279 195259.7000000030093361, 345582.0000000000000000 195228.2000000030093361, 345574.0999999939813279 195183.9000000059895683, 345564.5000000000000000 195158.7000000030093361, 345558.0999999939813279 195127.0999999940104317, 345559.2999999970197678 195056.2999999969906639, 345557.4000000060186721 194980.0000000000000000, 345552.9000000060186721 194913.0000000000000000, 345553.0999999939813279 194872.2999999969906639, 345553.0000000000000000 194814.4000000059895683, 345554.7000000029802322 194766.7999999969906639, 345550.5999999939813279 194687.7999999969906639, 345552.2999999970197678 194655.4000000059895683, 345550.5999999939813279 194615.7999999969906639, 345547.7999999970197678 194573.2000000030093361, 345549.2000000029802322 194434.2999999969906639, 345548.4000000060186721 194378.0999999940104317, 345544.7999999970197678 194326.7999999969906639, 345545.5999999939813279 194273.4000000059895683, 345543.4000000060186721 194229.5000000000000000, 345542.4000000060186721 194102.4000000059895683, 345542.7999999970197678 194045.5000000000000000, 345545.2999999970197678 193957.7000000030093361, 345538.2000000029802322 193757.0999999940104317, 345532.7000000029802322 193721.5000000000000000, 345532.2999999970197678 193642.2000000030093361, 345535.0000000000000000 193526.7000000030093361, 345532.9000000060186721 193482.0000000000000000, 345535.2999999970197678 193417.9000000059895683, 345532.0999999939813279 193351.0000000000000000, 345531.4000000060186721 193304.0999999940104317, 345525.0000000000000000 193187.7999999969906639, 345527.5999999939813279 193120.2999999969906639, 345541.5000000000000000 193070.5000000000000000, 345553.7999999970197678 193027.4000000059895683, 345555.0999999939813279 192987.5000000000000000, 345553.9000000060186721 192962.2999999969906639, 345544.5000000000000000 192948.2999999969906639, 345523.2000000029802322 192916.4000000059895683, 345509.7999999970197678 192880.2000000030093361, 345484.9000000060186721 192773.9000000059895683, 345476.9000000060186721 192725.9000000059895683, 345464.7999999970197678 192692.7999999969906639, 345451.9000000060186721 192660.4000000059895683, 345428.7000000029802322 192543.0999999940104317, 345420.9000000060186721 192509.7999999969906639, 345402.0000000000000000 192438.0000000000000000, 345388.0000000000000000 192381.4000000059895683, 345352.2999999970197678 192249.0000000000000000, 345326.2000000029802322 192158.4000000059895683, 345323.5999999939813279 192145.4000000059895683, 345307.4000000060186721 192097.5000000000000000, 345287.5999999939813279 192047.0000000000000000, 345278.2000000029802322 192027.2000000030093361, 345268.0999999939813279 192002.2000000030093361, 345251.9000000060186721 191950.2999999969906639, 345235.9000000060186721 191907.9000000059895683, 345220.5999999939813279 191865.2999999969906639, 345207.7999999970197678 191833.5000000000000000, 345178.7999999970197678 191738.4000000059895683, 345161.4000000060186721 191684.0999999940104317, 345144.4000000060186721 191627.5999999940104317, 345124.2000000029802322 191550.0999999940104317, 345112.7000000029802322 191523.0000000000000000, 345106.7999999970197678 191499.9000000059895683, 345089.2000000029802322 191461.7999999969906639, 345078.7000000029802322 191418.5999999940104317, 345054.5000000000000000 191360.9000000059895683, 345041.7999999970197678 191312.5999999940104317, 345030.5000000000000000 191287.7000000030093361, 345024.0999999939813279 191256.0999999940104317, 344975.4000000060186721 191082.7999999969906639, 344937.0000000000000000 190983.7000000030093361, 344909.0999999939813279 190875.7999999969906639, 344902.4000000060186721 190841.2999999969906639, 344887.2999999970197678 190805.5000000000000000, 344875.0000000000000000 190759.9000000059895683, 344864.0000000000000000 190728.2000000030093361, 344825.5000000000000000 190666.2000000030093361, 344794.7000000029802322 190596.5000000000000000, 344763.5000000000000000 190542.4000000059895683, 344741.5999999939813279 190487.2000000030093361, 344732.2999999970197678 190443.9000000059895683, 344723.7000000029802322 190372.5000000000000000, 344720.9000000060186721 190331.0999999940104317, 344715.4000000060186721 190306.0000000000000000, 344711.5000000000000000 190288.4000000059895683, 344700.0999999939813279 190241.7000000030093361, 344691.7999999970197678 190186.4000000059895683, 344686.5000000000000000 190175.2999999969906639, 344678.0000000000000000 190139.5000000000000000, 344657.7000000029802322 190075.5000000000000000, 344638.2999999970197678 189943.7999999969906639, 344615.9000000060186721 189896.0999999940104317, 344607.0999999939813279 189865.2999999969906639, 344602.2999999970197678 189854.2999999969906639, 344588.5000000000000000 189802.7999999969906639, 344583.0000000000000000 189777.5999999940104317, 344573.7999999970197678 189711.7000000030093361, 344548.7000000029802322 189646.4000000059895683, 344525.5999999939813279 189563.7999999969906639, 344487.4000000060186721 189433.2000000030093361, 344461.5000000000000000 189319.5999999940104317, 344457.0000000000000000 189292.7999999969906639, 344449.7000000029802322 189257.4000000059895683, 344442.7999999970197678 189214.5000000000000000, 344431.0999999939813279 189181.9000000059895683, 344418.4000000060186721 189132.2999999969906639, 344397.2999999970197678 189060.0000000000000000, 344384.7999999970197678 188995.9000000059895683, 344373.5999999939813279 188938.7999999969906639, 344365.0999999939813279 188892.7000000030093361, 344356.0999999939813279 188869.4000000059895683, 344347.2999999970197678 188837.0999999940104317, 344332.5999999939813279 188782.5000000000000000, 344311.2000000029802322 188714.0000000000000000, 344300.2999999970197678 188677.2000000030093361, 344276.4000000060186721 188503.0999999940104317, 344256.9000000060186721 188448.5000000000000000, 344232.0999999939813279 188387.0000000000000000, 344209.0999999939813279 188316.7999999969906639, 344177.5000000000000000 188213.2999999969906639, 344156.7999999970197678 188165.9000000059895683, 344136.7000000029802322 188122.0999999940104317, 344109.5999999939813279 188073.9000000059895683, 344096.4000000060186721 188038.5000000000000000, 344084.4000000060186721 188010.2999999969906639, 344074.0999999939813279 187978.0000000000000000, 344032.0000000000000000 187900.0000000000000000, 344018.2000000029802322 187865.5999999940104317, 344007.7999999970197678 187843.5999999940104317, 343976.7999999970197678 187763.2999999969906639, 343967.7999999970197678 187737.0000000000000000, 343950.4000000060186721 187688.0999999940104317, 343935.9000000060186721 187627.2999999969906639, 343929.9000000060186721 187612.2999999969906639, 343929.0999999939813279 187571.7999999969906639, 343920.7000000029802322 187561.4000000059895683, 343898.0999999939813279 187528.5000000000000000, 343832.2000000029802322 187399.4000000059895683, 343803.9000000060186721 187338.5000000000000000, 343759.5999999939813279 187216.2000000030093361, 343739.2999999970197678 187174.4000000059895683, 343711.2000000029802322 187121.5000000000000000, 343642.0000000000000000 186939.2999999969906639, 343594.5000000000000000 186828.0000000000000000, 343552.4000000060186721 186695.5999999940104317, 343494.9000000060186721 186553.9000000059895683, 343465.4000000060186721 186459.2000000030093361, 343458.2999999970197678 186417.9000000059895683, 343430.7000000029802322 186333.5000000000000000, 343426.9000000060186721 186314.7999999969906639, 343329.7000000029802322 185976.7999999969906639, 343299.7999999970197678 185837.0999999940104317, 343287.5000000000000000 185760.4000000059895683, 343279.0000000000000000 185682.9000000059895683, 343262.5000000000000000 185542.9000000059895683, 343262.2999999970197678 185487.2999999969906639, 343257.5000000000000000 185408.7999999969906639, 343226.7999999970197678 185225.0999999940104317, 343219.5999999939813279 185150.5000000000000000, 343202.5999999939813279 185068.4000000059895683, 343186.2000000029802322 184961.9000000059895683, 343187.4000000060186721 184936.9000000059895683, 343184.0000000000000000 184869.4000000059895683, 343185.5999999939813279 184836.5000000000000000, 343185.7999999970197678 184672.7000000030093361, 343180.7000000029802322 184543.2999999969906639, 343176.9000000060186721 184427.2000000030093361, 343170.0999999939813279 184292.9000000059895683, 343164.0999999939813279 184241.0000000000000000, 343167.2999999970197678 184175.5999999940104317, 343160.2999999970197678 184119.4000000059895683, 343158.5000000000000000 184074.2999999969906639, 343148.0000000000000000 184014.4000000059895683, 343128.0999999939813279 183934.0999999940104317, 343107.0000000000000000 183870.5999999940104317, 343107.4000000060186721 183861.5999999940104317, 343116.9000000060186721 183815.9000000059895683, 343125.5000000000000000 183762.0000000000000000, 343130.0000000000000000 183746.7999999969906639, 343143.7000000029802322 183724.5999999940104317, 343185.5000000000000000 183676.0999999940104317, 343208.5999999939813279 183661.7999999969906639, 343232.7999999970197678 183632.7000000030093361, 343257.4000000060186721 183608.2000000030093361, 343296.5000000000000000 183578.9000000059895683, 343351.2999999970197678 183551.5999999940104317, 343474.2999999970197678 183521.5000000000000000, 343570.0000000000000000 183499.5999999940104317, 343621.9000000060186721 183474.5999999940104317, 343668.9000000060186721 183454.0000000000000000, 343698.7999999970197678 183446.5000000000000000, 343793.7999999970197678 183417.2999999969906639, 343834.2000000029802322 183406.7999999969906639, 343910.9000000060186721 183381.5999999940104317, 343966.0000000000000000 183371.7999999969906639, 344065.4000000060186721 183344.7999999969906639, 344173.7000000029802322 183312.7000000030093361, 344197.2999999970197678 183310.2999999969906639, 344344.5999999939813279 183294.0000000000000000, 344392.0999999939813279 183293.4000000059895683, 344478.2999999970197678 183311.2999999969906639, 344503.2999999970197678 183318.0999999940104317, 344653.7000000029802322 183335.5000000000000000, 344698.7000000029802322 183352.2000000030093361, 344753.5000000000000000 183370.5999999940104317, 344795.5000000000000000 183370.5999999940104317, 344803.5000000000000000 183366.7999999969906639, 344815.5999999939813279 183339.9000000059895683, 344812.0000000000000000 183316.7999999969906639, 344792.5999999939813279 183283.9000000059895683, 344791.5000000000000000 183256.2000000030093361, 344783.0000000000000000 183220.5000000000000000, 344767.5000000000000000 183183.5000000000000000, 344749.2999999970197678 183147.9000000059895683, 344718.7000000029802322 183112.2999999969906639, 344675.2999999970197678 183076.0999999940104317, 344599.0000000000000000 183039.0000000000000000, 344593.9000000060186721 183032.0999999940104317, 344557.9000000060186721 182996.7999999969906639, 344550.5000000000000000 182966.5000000000000000, 344536.7000000029802322 182927.2999999969906639, 344517.5999999939813279 182912.9000000059895683, 344490.0999999939813279 182909.5000000000000000, 344469.4000000060186721 182900.0999999940104317, 344466.0999999939813279 182882.5000000000000000, 344444.4000000060186721 182847.4000000059895683, 344419.2999999970197678 182777.2000000030093361, 344416.5999999939813279 182764.7999999969906639, 344405.2000000029802322 182725.2999999969906639, 344387.2000000029802322 182687.7000000030093361, 344379.5999999939813279 182646.4000000059895683, 344373.5999999939813279 182597.0999999940104317, 344369.5999999939813279 182559.0000000000000000, 344363.7999999970197678 182457.0000000000000000, 344354.2999999970197678 182330.5999999940104317, 344360.7000000029802322 182197.5999999940104317, 344380.4000000060186721 182099.5000000000000000, 344402.9000000060186721 182032.0999999940104317, 344415.2999999970197678 181985.2999999969906639, 344440.7999999970197678 181930.2999999969906639, 344472.5000000000000000 181860.7000000030093361, 344499.5999999939813279 181747.2000000030093361, 344511.2000000029802322 181704.4000000059895683, 344541.7000000029802322 181658.5000000000000000, 344606.2999999970197678 181542.4000000059895683, 344634.0000000000000000 181478.0999999940104317, 344659.5999999939813279 181424.7999999969906639, 344665.0999999939813279 181356.4000000059895683, 344661.2999999970197678 181338.2000000030093361, 344646.5000000000000000 181307.0999999940104317, 344623.5999999939813279 181271.7999999969906639, 344552.2999999970197678 181195.5000000000000000, 344518.2000000029802322 181166.4000000059895683, 344462.0999999939813279 181110.5999999940104317, 344333.0000000000000000 180989.7000000030093361, 344310.2999999970197678 180971.9000000059895683, 344253.2000000029802322 180924.5999999940104317, 344215.7000000029802322 180880.7999999969906639, 344150.5000000000000000 180800.0000000000000000, 344109.7999999970197678 180738.0999999940104317, 344077.0000000000000000 180695.0999999940104317, 344021.9000000060186721 180606.0000000000000000, 343947.5000000000000000 180480.4000000059895683, 343883.5999999939813279 180357.7000000030093361, 343852.7000000029802322 180303.7999999969906639, 343817.0000000000000000 180222.7999999969906639, 343752.7999999970197678 180108.5999999940104317, 343673.0999999939813279 179983.4000000059895683, 343621.7999999970197678 179912.2999999969906639, 343530.9000000060186721 179755.0999999940104317, 343472.4000000060186721 179636.7999999969906639, 343365.9000000060186721 179396.0999999940104317, 343317.2000000029802322 179286.4000000059895683, 343297.2000000029802322 179250.4000000059895683, 343261.2999999970197678 179174.5000000000000000, 343219.4000000060186721 179096.0000000000000000, 343185.5000000000000000 179041.0000000000000000, 343069.5999999939813279 178832.2999999969906639, 342993.5000000000000000 178689.7999999969906639, 342966.7999999970197678 178650.7999999969906639, 342936.7000000029802322 178597.0999999940104317, 342884.0999999939813279 178494.5999999940104317, 342880.0999999939813279 178480.7000000030093361, 342856.5999999939813279 178432.2000000030093361, 342839.0999999939813279 178394.5999999940104317, 342744.9000000060186721 178208.2999999969906639, 342689.5000000000000000 178087.2000000030093361, 342662.2999999970197678 178032.2999999969906639, 342645.5000000000000000 178004.5999999940104317, 342601.9000000060186721 177926.7000000030093361, 342563.0000000000000000 177860.7000000030093361, 342531.9000000060186721 177794.0999999940104317, 342525.7000000029802322 177786.7000000030093361, 342491.7999999970197678 177718.7999999969906639, 342452.0000000000000000 177648.0000000000000000, 342367.5000000000000000 177495.5999999940104317, 342367.2000000029802322 177481.2000000030093361, 342369.5999999939813279 177468.5999999940104317, 342358.2000000029802322 177443.4000000059895683, 342348.5000000000000000 177416.5000000000000000, 342326.4000000060186721 177389.0000000000000000, 342327.0999999939813279 177375.7999999969906639, 342289.4000000060186721 177310.7000000030093361, 342272.0000000000000000 177272.2999999969906639, 342227.4000000060186721 177180.0000000000000000, 342194.9000000060186721 177141.5999999940104317, 342145.0999999939813279 177053.4000000059895683, 342120.0999999939813279 176999.4000000059895683, 342095.0000000000000000 176959.2000000030093361, 342020.4000000060186721 176812.5999999940104317, 341977.2000000029802322 176741.4000000059895683, 341905.2999999970197678 176612.7999999969906639, 341863.9000000060186721 176551.5999999940104317, 341845.2999999970197678 176523.2999999969906639, 341816.4000000060186721 176474.7999999969906639, 341753.0000000000000000 176360.5000000000000000, 341682.2999999970197678 176184.0000000000000000, 341625.7000000029802322 176077.5000000000000000, 341569.5000000000000000 175969.5999999940104317, 341528.7999999970197678 175906.2999999969906639, 341515.2000000029802322 175878.9000000059895683, 341479.5999999939813279 175808.5999999940104317, 341450.7999999970197678 175744.7000000030093361, 341418.4000000060186721 175695.7999999969906639, 341357.9000000060186721 175580.5000000000000000, 341345.0999999939813279 175546.0000000000000000, 341310.9000000060186721 175482.0000000000000000, 341291.2999999970197678 175440.7999999969906639, 341258.7000000029802322 175384.7999999969906639, 341230.4000000060186721 175313.5999999940104317, 341175.7999999970197678 175210.5000000000000000, 341121.0000000000000000 175069.5000000000000000, 341091.0999999939813279 175014.2000000030093361, 341072.2000000029802322 174971.5000000000000000, 341020.0999999939813279 174856.0000000000000000, 340985.4000000060186721 174792.0000000000000000, 340954.4000000060186721 174727.4000000059895683, 340923.2000000029802322 174663.2000000030093361, 340909.7999999970197678 174619.2000000030093361, 340874.0999999939813279 174533.0000000000000000, 340853.9000000060186721 174482.7000000030093361, 340820.9000000060186721 174430.0000000000000000, 340797.5999999939813279 174342.4000000059895683, 340780.2999999970197678 174291.2999999969906639, 340749.0999999939813279 174228.4000000059895683, 340720.4000000060186721 174112.4000000059895683, 340710.7999999970197678 174051.2000000030093361, 340694.5000000000000000 173954.2000000030093361, 340677.4000000060186721 173898.7999999969906639, 340670.2000000029802322 173874.0000000000000000, 340663.7000000029802322 173859.0999999940104317, 340645.2000000029802322 173794.0000000000000000, 340628.2999999970197678 173722.2999999969906639, 340611.7999999970197678 173664.4000000059895683, 340605.7000000029802322 173631.7999999969906639, 340597.0000000000000000 173597.5000000000000000, 340606.5000000000000000 173590.4000000059895683, 340606.4000000060186721 173575.5000000000000000, 340601.9000000060186721 173556.0000000000000000, 340564.2000000029802322 173475.2999999969906639, 340548.4000000060186721 173457.0000000000000000, 340533.5999999939813279 173424.4000000059895683, 340523.2999999970197678 173378.0999999940104317, 340509.2999999970197678 173342.4000000059895683, 340509.2999999970197678 173321.0999999940104317, 340496.7000000029802322 173268.0000000000000000, 340486.4000000060186721 173234.4000000059895683, 340473.4000000060186721 173201.9000000059895683, 340463.2999999970197678 173163.5999999940104317, 340455.7000000029802322 173148.5000000000000000, 340443.2999999970197678 173113.7999999969906639, 340433.5000000000000000 173094.5000000000000000, 340431.9000000060186721 173082.5000000000000000, 340414.0999999939813279 173051.5999999940104317, 340401.2999999970197678 173015.5999999940104317, 340376.2999999970197678 172960.2000000030093361, 340371.5999999939813279 172944.2999999969906639, 340353.5999999939813279 172897.7000000030093361, 340338.7999999970197678 172868.2000000030093361, 340311.2999999970197678 172775.7999999969906639, 340292.2999999970197678 172731.0999999940104317, 340279.0999999939813279 172705.7999999969906639, 340268.2999999970197678 172670.7999999969906639, 340259.7000000029802322 172660.2000000030093361, 340244.7000000029802322 172633.7000000030093361, 340209.0000000000000000 172578.4000000059895683, 340200.5000000000000000 172552.7000000030093361, 340202.9000000060186721 172543.0999999940104317, 340202.7999999970197678 172522.0999999940104317, 340202.0000000000000000 172512.0000000000000000, 340188.5999999939813279 172492.7000000030093361, 340170.9000000060186721 172457.0000000000000000, 340151.2000000029802322 172431.0999999940104317, 340136.0999999939813279 172392.5000000000000000, 340114.7000000029802322 172352.9000000059895683, 340111.7000000029802322 172337.7000000030093361, 340086.7000000029802322 172284.7999999969906639, 340079.7000000029802322 172254.4000000059895683, 340066.7000000029802322 172228.7000000030093361, 340056.0000000000000000 172198.9000000059895683, 340043.7999999970197678 172164.0999999940104317, 340024.2000000029802322 172121.4000000059895683, 340016.0999999939813279 172099.2000000030093361, 339994.2000000029802322 172056.5000000000000000, 339970.7999999970197678 171994.2000000030093361, 339959.2000000029802322 171973.7000000030093361, 339945.4000000060186721 171945.5000000000000000, 339907.7999999970197678 171869.5000000000000000, 339896.2999999970197678 171843.7000000030093361, 339887.0999999939813279 171825.0999999940104317, 339879.7000000029802322 171799.5999999940104317, 339865.5000000000000000 171771.9000000059895683, 339806.4000000060186721 171651.5000000000000000, 339793.5999999939813279 171618.4000000059895683, 339761.2999999970197678 171566.5000000000000000, 339730.7999999970197678 171533.5999999940104317, 339698.5999999939813279 171479.5999999940104317, 339685.7000000029802322 171447.0999999940104317, 339674.0000000000000000 171429.0999999940104317, 339640.0999999939813279 171368.5000000000000000, 339617.5999999939813279 171338.4000000059895683, 339592.2999999970197678 171302.9000000059895683, 339534.5999999939813279 171229.2999999969906639, 339521.4000000060186721 171200.2000000030093361, 339489.5000000000000000 171141.5999999940104317, 339459.4000000060186721 171111.0999999940104317, 339453.4000000060186721 171102.0000000000000000, 339432.7000000029802322 171081.5999999940104317, 339391.2000000029802322 171032.7000000030093361, 339319.0999999939813279 170968.9000000059895683, 339277.7999999970197678 170938.7999999969906639, 339232.9000000060186721 170895.0000000000000000, 339182.4000000060186721 170861.7000000030093361, 339153.4000000060186721 170847.2999999969906639, 339089.2000000029802322 170807.5999999940104317, 339057.7000000029802322 170786.0000000000000000, 339013.5000000000000000 170755.0999999940104317, 339001.2000000029802322 170740.5999999940104317, 338993.2000000029802322 170714.7000000030093361, 338981.9000000060186721 170675.7999999969906639, 338958.5999999939813279 170622.5000000000000000, 338944.0000000000000000 170542.0999999940104317, 338920.2999999970197678 170485.2000000030093361, 338919.5000000000000000 170471.2999999969906639, 338909.0999999939813279 170452.7000000030093361, 338890.2999999970197678 170396.5999999940104317, 338866.5000000000000000 170339.2999999969906639, 338852.7999999970197678 170312.0999999940104317, 338847.2000000029802322 170289.7999999969906639, 338804.7999999970197678 170158.7000000030093361, 338799.0000000000000000 170130.4000000059895683, 338784.7999999970197678 170062.2999999969906639, 338772.0000000000000000 170030.5000000000000000, 338768.9000000060186721 169997.2000000030093361, 338759.0999999939813279 169973.7999999969906639, 338751.7999999970197678 169938.5000000000000000, 338744.7999999970197678 169921.2000000030093361, 338739.4000000060186721 169896.5999999940104317, 338726.9000000060186721 169879.5000000000000000, 338712.7999999970197678 169874.0999999940104317, 338696.2000000029802322 169871.2999999969906639, 338620.7999999970197678 169859.2999999969906639, 338592.0999999939813279 169846.5000000000000000, 338547.7999999970197678 169829.2000000030093361, 338529.0999999939813279 169817.7999999969906639, 338483.2999999970197678 169794.7999999969906639, 338417.2999999970197678 169753.9000000059895683, 338342.2000000029802322 169713.5999999940104317, 338277.0999999939813279 169665.7999999969906639, 338251.7000000029802322 169633.9000000059895683, 338236.2999999970197678 169614.0000000000000000, 338195.2000000029802322 169555.7000000030093361, 338169.0000000000000000 169526.5000000000000000, 338134.5999999939813279 169477.5999999940104317, 338113.0000000000000000 169451.0000000000000000, 338075.7999999970197678 169389.0000000000000000, 338065.5999999939813279 169359.5000000000000000, 338050.7999999970197678 169319.0000000000000000, 338014.4000000060186721 169230.0999999940104317, 337990.5999999939813279 169173.0000000000000000, 337976.0000000000000000 169122.9000000059895683, 337961.2000000029802322 169047.0000000000000000, 337937.7999999970197678 168968.7999999969906639, 337925.5999999939813279 168939.0999999940104317, 337888.7000000029802322 168844.0999999940104317, 337864.2999999970197678 168752.2000000030093361, 337824.0000000000000000 168661.2999999969906639, 337790.2000000029802322 168602.5000000000000000, 337756.7000000029802322 168562.2999999969906639, 337685.7999999970197678 168497.0999999940104317, 337651.9000000060186721 168467.7000000030093361, 337601.2999999970197678 168427.0000000000000000, 337485.7000000029802322 168368.5999999940104317, 337402.2000000029802322 168344.2999999969906639, 337359.2999999970197678 168333.7000000030093361, 337272.2000000029802322 168309.0999999940104317, 337224.0999999939813279 168291.0999999940104317, 337183.0999999939813279 168282.5000000000000000, 337108.0000000000000000 168263.5999999940104317, 337071.2999999970197678 168254.2999999969906639, 337010.9000000060186721 168234.7999999969906639, 336931.0999999939813279 168216.7000000030093361, 336858.2999999970197678 168206.4000000059895683, 336789.2000000029802322 168188.0000000000000000, 336759.2000000029802322 168176.2000000030093361, 336667.7999999970197678 168150.9000000059895683, 336620.4000000060186721 168137.5999999940104317, 336563.9000000060186721 168124.0999999940104317, 336540.5999999939813279 168118.2000000030093361, 336525.9000000060186721 168113.2999999969906639, 336501.2999999970197678 168107.9000000059895683, 336454.7999999970197678 168089.9000000059895683, 336398.5000000000000000 168069.7000000030093361, 336371.5000000000000000 168057.7000000030093361, 336297.5000000000000000 168032.4000000059895683, 336251.7999999970197678 168018.7000000030093361, 336216.7999999970197678 168011.7000000030093361, 336181.0000000000000000 168000.7999999969906639, 336105.4000000060186721 167973.2000000030093361, 336028.0000000000000000 167947.2000000030093361, 335961.2000000029802322 167931.7999999969906639, 335856.7999999970197678 167902.2000000030093361, 335758.2999999970197678 167871.5000000000000000, 335715.7999999970197678 167857.2000000030093361, 335679.0999999939813279 167844.0000000000000000, 335630.4000000060186721 167817.9000000059895683, 335523.2999999970197678 167758.9000000059895683, 335447.2000000029802322 167714.0999999940104317, 335410.4000000060186721 167693.2999999969906639, 335357.0000000000000000 167673.9000000059895683, 335326.7000000029802322 167666.4000000059895683, 335286.5000000000000000 167652.2999999969906639, 335197.0000000000000000 167635.9000000059895683, 335177.0999999939813279 167637.9000000059895683, 335099.7999999970197678 167643.4000000059895683, 335029.2000000029802322 167674.4000000059895683, 334948.7999999970197678 167729.2999999969906639, 334931.9000000060186721 167746.5000000000000000, 334908.0999999939813279 167762.2999999969906639, 334850.4000000060186721 167812.2999999969906639, 334807.0999999939813279 167858.2999999969906639, 334786.5000000000000000 167877.7000000030093361, 334749.4000000060186721 167906.5999999940104317, 334665.2000000029802322 167980.2999999969906639, 334610.0999999939813279 168027.5000000000000000, 334562.7999999970197678 168070.7999999969906639, 334537.7999999970197678 168091.9000000059895683, 334454.9000000060186721 168163.7999999969906639, 334330.2000000029802322 168277.9000000059895683, 334282.7999999970197678 168314.9000000059895683, 334262.5999999939813279 168333.9000000059895683, 334187.0999999939813279 168400.4000000059895683, 334160.4000000060186721 168415.5000000000000000, 334097.2999999970197678 168452.5999999940104317, 334056.7999999970197678 168478.4000000059895683, 334026.7999999970197678 168488.4000000059895683, 333912.7999999970197678 168559.9000000059895683, 333846.5000000000000000 168597.5999999940104317, 333816.0000000000000000 168617.5000000000000000, 333784.2000000029802322 168633.0000000000000000, 333719.7999999970197678 168669.7000000030093361, 333691.7000000029802322 168691.5999999940104317, 333633.2999999970197678 168727.4000000059895683, 333527.0999999939813279 168808.7999999969906639, 333454.9000000060186721 168843.2999999969906639, 333403.0000000000000000 168861.0999999940104317, 333350.2000000029802322 168873.5999999940104317, 333319.9000000060186721 168877.5999999940104317, 333238.7999999970197678 168882.7000000030093361, 333169.5000000000000000 168887.9000000059895683, 333131.7999999970197678 168891.9000000059895683, 333064.5999999939813279 168892.7000000030093361, 333020.2999999970197678 168889.5999999940104317, 332911.5000000000000000 168887.2999999969906639, 332827.0999999939813279 168887.7999999969906639, 332799.9000000060186721 168887.7999999969906639, 332732.7000000029802322 168887.0999999940104317, 332629.5999999939813279 168890.9000000059895683, 332520.5999999939813279 168881.5000000000000000, 332465.2000000029802322 168870.9000000059895683, 332397.9000000060186721 168864.7000000030093361, 332342.7999999970197678 168871.5999999940104317, 332304.0000000000000000 168867.9000000059895683, 332200.4000000060186721 168880.5000000000000000, 332189.9000000060186721 168878.9000000059895683, 332148.7999999970197678 168879.7000000030093361, 332119.5000000000000000 168873.4000000059895683, 332090.2999999970197678 168870.5000000000000000, 332052.0000000000000000 168865.2999999969906639, 332024.2999999970197678 168867.0000000000000000, 331937.7999999970197678 168877.2000000030093361, 331860.0000000000000000 168878.9000000059895683, 331823.0000000000000000 168876.7999999969906639, 331781.0999999939813279 168881.5999999940104317, 331749.2000000029802322 168882.5999999940104317, 331735.2999999970197678 168885.0000000000000000, 331714.7999999970197678 168886.0999999940104317, 331678.5000000000000000 168888.0999999940104317, 331660.5000000000000000 168889.2000000030093361, 331643.5000000000000000 168894.5000000000000000, 331605.0000000000000000 168896.7999999969906639, 331571.2999999970197678 168893.2999999969906639, 331524.9000000060186721 168896.0999999940104317, 331482.5999999939813279 168899.9000000059895683, 331448.7999999970197678 168903.2000000030093361, 331436.7999999970197678 168901.9000000059895683, 331421.4000000060186721 168904.9000000059895683, 331342.0000000000000000 168905.7999999969906639, 331316.5000000000000000 168907.9000000059895683, 331228.4000000060186721 168903.7999999969906639, 331167.7999999970197678 168898.5000000000000000, 331121.2999999970197678 168892.0000000000000000, 331040.4000000060186721 168882.7999999969906639, 330999.0000000000000000 168878.9000000059895683, 330830.0000000000000000 168875.0000000000000000, 330771.2999999970197678 168882.0000000000000000, 330727.7000000029802322 168888.5000000000000000, 330713.5000000000000000 168893.7000000030093361, 330672.0000000000000000 168919.5999999940104317, 330648.5000000000000000 168937.0999999940104317, 330571.2999999970197678 168975.2000000030093361, 330519.2999999970197678 169015.7000000030093361, 330490.5000000000000000 169028.0999999940104317, 330431.0999999939813279 169046.9000000059895683, 330411.9000000060186721 169048.5000000000000000, 330350.0999999939813279 169041.0000000000000000, 330330.7999999970197678 169030.0000000000000000, 330271.5000000000000000 168999.5000000000000000, 330224.5000000000000000 168961.5000000000000000, 330191.7999999970197678 168932.7999999969906639, 330154.0999999939813279 168889.5999999940104317, 330127.2000000029802322 168850.7999999969906639, 330103.0000000000000000 168826.2999999969906639, 330086.0999999939813279 168803.2999999969906639, 330077.9000000060186721 168787.2000000030093361, 330055.2000000029802322 168747.2999999969906639, 330021.5000000000000000 168708.0000000000000000, 330004.0999999939813279 168680.7999999969906639, 329962.7999999970197678 168637.7999999969906639, 329943.5000000000000000 168618.2000000030093361, 329921.5000000000000000 168598.2999999969906639, 329886.9000000060186721 168564.0999999940104317, 329859.7999999970197678 168542.2999999969906639, 329785.2999999970197678 168465.4000000059895683, 329735.5999999939813279 168420.7000000030093361, 329708.2999999970197678 168401.5000000000000000, 329697.2000000029802322 168383.4000000059895683, 329642.7000000029802322 168339.4000000059895683, 329617.9000000060186721 168317.0999999940104317, 329603.5999999939813279 168304.2999999969906639, 329565.7999999970197678 168276.2000000030093361, 329533.5000000000000000 168248.5000000000000000, 329482.2999999970197678 168209.9000000059895683, 329404.5999999939813279 168146.7000000030093361, 329385.4000000060186721 168122.2999999969906639, 329345.0000000000000000 168085.5999999940104317, 329306.0999999939813279 168048.0000000000000000, 329292.5000000000000000 168040.7000000030093361, 329291.9000000060186721 168050.5999999940104317, 329274.7000000029802322 168071.9000000059895683, 329250.5999999939813279 168110.5000000000000000, 329223.4000000060186721 168160.7000000030093361, 329211.0000000000000000 168182.9000000059895683, 329190.2999999970197678 168213.2999999969906639, 329170.2999999970197678 168251.7999999969906639, 329143.9000000060186721 168286.4000000059895683, 329131.9000000060186721 168311.0000000000000000, 329115.2999999970197678 168341.4000000059895683, 329110.2999999970197678 168358.0000000000000000, 329075.7000000029802322 168412.2000000030093361, 329062.4000000060186721 168439.7999999969906639, 329034.2000000029802322 168479.4000000059895683, 329008.2999999970197678 168513.7000000030093361, 328980.0000000000000000 168563.5000000000000000, 328946.7999999970197678 168618.4000000059895683, 328915.7999999970197678 168657.2999999969906639, 328877.7999999970197678 168698.7999999969906639, 328831.5999999939813279 168768.2999999969906639, 328817.2999999970197678 168792.7999999969906639, 328782.0000000000000000 168837.5000000000000000, 328741.7999999970197678 168872.2000000030093361, 328701.4000000060186721 168923.0000000000000000, 328674.5000000000000000 168953.2999999969906639, 328641.7999999970197678 168974.0000000000000000, 328567.4000000060186721 169016.0999999940104317, 328534.0999999939813279 169031.9000000059895683, 328500.0000000000000000 169053.5000000000000000, 328459.7999999970197678 169064.9000000059895683, 328408.5999999939813279 169077.7999999969906639, 328380.4000000060186721 169088.0000000000000000, 328340.7000000029802322 169099.5999999940104317, 328300.0999999939813279 169106.0000000000000000, 328246.4000000060186721 169110.5999999940104317, 328216.0999999939813279 169112.0000000000000000, 328133.7000000029802322 169112.2999999969906639, 328079.0000000000000000 169108.4000000059895683, 328011.0000000000000000 169096.7000000030093361, 327921.4000000060186721 169072.4000000059895683, 327862.0000000000000000 169053.9000000059895683, 327776.9000000060186721 169009.4000000059895683, 327720.0999999939813279 168988.2000000030093361, 327681.0000000000000000 168974.0000000000000000, 327582.0999999939813279 168920.7000000030093361, 327558.4000000060186721 168911.5000000000000000, 327552.7000000029802322 168904.2000000030093361, 327531.4000000060186721 168905.4000000059895683, 327448.0999999939813279 168876.2999999969906639, 327353.7999999970197678 168857.7999999969906639, 327281.4000000060186721 168839.2000000030093361, 327188.0999999939813279 168826.2000000030093361, 327117.5999999939813279 168818.7999999969906639, 327006.7999999970197678 168819.2000000030093361, 326934.0999999939813279 168838.0999999940104317, 326850.2999999970197678 168853.7000000030093361, 326800.9000000060186721 168865.7999999969906639, 326778.0000000000000000 168869.2999999969906639, 326730.0999999939813279 168889.2999999969906639, 326680.2000000029802322 168914.2000000030093361, 326658.5999999939813279 168919.5000000000000000, 326614.5999999939813279 168948.2000000030093361, 326607.9000000060186721 168960.0000000000000000, 326557.0999999939813279 168982.2000000030093361, 326536.9000000060186721 168988.2999999969906639, 326477.0000000000000000 169031.4000000059895683, 326402.4000000060186721 169103.0999999940104317, 326371.0000000000000000 169142.2999999969906639, 326339.7999999970197678 169182.4000000059895683, 326314.2000000029802322 169225.7000000030093361, 326295.0999999939813279 169269.4000000059895683, 326278.7000000029802322 169296.7999999969906639, 326249.0999999939813279 169353.2000000030093361, 326219.4000000060186721 169439.9000000059895683, 326181.5999999939813279 169524.7999999969906639, 326177.5000000000000000 169546.2999999969906639, 326142.5999999939813279 169657.7999999969906639, 326123.0999999939813279 169725.5000000000000000, 326098.4000000060186721 169848.4000000059895683, 326087.2999999970197678 169902.7000000030093361, 326057.0999999939813279 169968.5000000000000000, 326044.7000000029802322 170012.4000000059895683, 326007.7999999970197678 170166.0000000000000000, 325999.2999999970197678 170205.7999999969906639, 326011.5000000000000000 170276.0000000000000000, 326027.5000000000000000 170322.2000000030093361, 326061.7000000029802322 170373.2999999969906639, 326086.0000000000000000 170418.7999999969906639, 326110.5000000000000000 170441.5999999940104317, 326149.0999999939813279 170467.0000000000000000, 326183.9000000060186721 170495.2999999969906639, 326211.7999999970197678 170513.7999999969906639, 326257.5999999939813279 170540.7999999969906639, 326285.7999999970197678 170553.5999999940104317, 326364.4000000060186721 170580.7999999969906639, 326464.7000000029802322 170610.5000000000000000, 326532.7999999970197678 170637.0999999940104317, 326588.9000000060186721 170669.0999999940104317, 326626.7000000029802322 170682.7999999969906639, 326673.0999999939813279 170717.5000000000000000, 326721.2999999970197678 170755.0999999940104317, 326776.4000000060186721 170799.5999999940104317, 326852.4000000060186721 170882.7000000030093361, 326871.5000000000000000 170907.7999999969906639, 326903.2000000029802322 170952.7999999969906639, 326939.5999999939813279 171020.5000000000000000, 326947.4000000060186721 171045.7000000030093361, 326969.2999999970197678 171105.2000000030093361, 326992.7000000029802322 171156.2000000030093361, 327003.5000000000000000 171169.2000000030093361, 327021.2000000029802322 171200.9000000059895683, 327050.7999999970197678 171234.9000000059895683, 327075.4000000060186721 171275.0999999940104317, 327115.0000000000000000 171326.4000000059895683, 327231.5000000000000000 171443.5000000000000000, 327268.0999999939813279 171470.5000000000000000, 327322.2999999970197678 171517.5999999940104317, 327402.5999999939813279 171573.9000000059895683, 327448.5000000000000000 171606.2000000030093361, 327468.0999999939813279 171624.0999999940104317, 327524.7000000029802322 171659.9000000059895683, 327556.0000000000000000 171688.5999999940104317, 327592.2999999970197678 171721.5000000000000000, 327611.5999999939813279 171744.7000000030093361, 327639.5999999939813279 171775.5999999940104317, 327663.4000000060186721 171816.9000000059895683, 327681.7999999970197678 171860.0000000000000000, 327692.5000000000000000 171925.2000000030093361, 327695.7999999970197678 172008.2000000030093361, 327690.2999999970197678 172069.2000000030093361, 327688.0000000000000000 172115.7000000030093361, 327680.5000000000000000 172147.9000000059895683, 327678.5000000000000000 172175.9000000059895683, 327661.2000000029802322 172236.5000000000000000, 327639.4000000060186721 172286.5000000000000000, 327611.4000000060186721 172381.9000000059895683, 327596.2000000029802322 172449.5000000000000000, 327580.5000000000000000 172495.0999999940104317, 327547.5000000000000000 172594.0000000000000000, 327514.7000000029802322 172677.2999999969906639, 327495.7999999970197678 172740.7000000030093361, 327486.7000000029802322 172804.7000000030093361, 327474.0000000000000000 172870.2999999969906639, 327473.9000000060186721 172932.7999999969906639, 327479.7999999970197678 172971.7000000030093361, 327476.2999999970197678 172986.0000000000000000, 327483.0000000000000000 173019.5000000000000000, 327490.0000000000000000 173035.7999999969906639, 327486.5000000000000000 173054.9000000059895683, 327494.0999999939813279 173072.9000000059895683, 327512.5000000000000000 173105.9000000059895683, 327541.0000000000000000 173137.7999999969906639, 327573.2999999970197678 173165.2999999969906639, 327594.7999999970197678 173184.0000000000000000, 327608.2000000029802322 173194.0999999940104317, 327649.7000000029802322 173228.7999999969906639, 327665.2999999970197678 173255.9000000059895683, 327682.2000000029802322 173268.5999999940104317, 327708.0999999939813279 173294.7000000030093361, 327734.2000000029802322 173327.2999999969906639, 327744.0999999939813279 173347.0000000000000000, 327760.5999999939813279 173369.0000000000000000, 327765.9000000060186721 173378.9000000059895683, 327767.9000000060186721 173388.5999999940104317, 327770.5000000000000000 173407.2999999969906639, 327769.7999999970197678 173436.9000000059895683, 327745.2000000029802322 173473.7000000030093361, 327723.9000000060186721 173499.7999999969906639, 327685.9000000060186721 173528.0000000000000000, 327651.2000000029802322 173545.4000000059895683, 327589.5999999939813279 173575.0999999940104317, 327553.0000000000000000 173596.7999999969906639, 327505.5999999939813279 173618.0999999940104317, 327444.9000000060186721 173638.7000000030093361, 327422.9000000060186721 173644.5000000000000000, 327349.0000000000000000 173657.7999999969906639, 327298.2000000029802322 173663.4000000059895683, 327234.0000000000000000 173666.5999999940104317, 327197.7000000029802322 173662.7000000030093361, 327166.0000000000000000 173654.4000000059895683, 327140.9000000060186721 173650.0999999940104317, 327098.5000000000000000 173633.7999999969906639, 327026.4000000060186721 173603.0000000000000000, 327001.0000000000000000 173591.0999999940104317, 326985.9000000060186721 173581.4000000059895683, 326930.2000000029802322 173563.5999999940104317, 326897.5000000000000000 173549.7999999969906639, 326865.9000000060186721 173534.5999999940104317, 326831.2999999970197678 173528.7000000030093361, 326817.2000000029802322 173530.2999999969906639, 326779.7999999970197678 173534.4000000059895683, 326732.2999999970197678 173555.7999999969906639, 326706.9000000060186721 173582.5999999940104317, 326691.7999999970197678 173635.5999999940104317, 326687.2000000029802322 173657.0999999940104317, 326687.5999999939813279 173669.7000000030093361, 326676.9000000060186721 173692.7000000030093361, 326675.5999999939813279 173717.4000000059895683, 326667.0000000000000000 173734.9000000059895683, 326669.4000000060186721 173758.7000000030093361, 326666.2000000029802322 173789.4000000059895683, 326667.7999999970197678 173807.2999999969906639, 326665.5000000000000000 173851.7000000030093361, 326671.7999999970197678 173875.0999999940104317, 326674.0000000000000000 173893.2000000030093361, 326683.7999999970197678 173923.7000000030093361, 326680.9000000060186721 173958.0000000000000000, 326686.0000000000000000 173979.0999999940104317, 326674.9000000060186721 174019.0000000000000000, 326666.4000000060186721 174048.7999999969906639, 326657.5000000000000000 174069.2999999969906639, 326654.5999999939813279 174103.0999999940104317, 326637.4000000060186721 174160.4000000059895683, 326612.2999999970197678 174206.7999999969906639, 326595.7000000029802322 174236.5999999940104317, 326542.7999999970197678 174296.4000000059895683, 326513.5000000000000000 174354.9000000059895683, 326492.7999999970197678 174399.4000000059895683, 326475.7999999970197678 174499.7000000030093361, 326484.2999999970197678 174524.2999999969906639, 326486.2999999970197678 174542.2000000030093361, 326483.9000000060186721 174578.0999999940104317, 326490.9000000060186721 174608.7000000030093361, 326499.0000000000000000 174619.2999999969906639, 326543.2999999970197678 174649.2999999969906639, 326557.7999999970197678 174660.0000000000000000, 326603.7000000029802322 174667.7999999969906639, 326623.2999999970197678 174671.7000000030093361, 326671.5000000000000000 174674.7000000030093361, 326720.0000000000000000 174679.5000000000000000, 326729.4000000060186721 174687.4000000059895683, 326750.9000000060186721 174688.7999999969906639, 326781.7000000029802322 174684.7999999969906639, 326862.4000000060186721 174670.5999999940104317, 326886.7999999970197678 174669.5000000000000000, 326908.7999999970197678 174662.0999999940104317, 326991.7999999970197678 174653.4000000059895683, 327012.7999999970197678 174650.7999999969906639, 327046.0000000000000000 174651.2999999969906639, 327069.2999999970197678 174668.7000000030093361, 327083.2000000029802322 174677.7000000030093361, 327099.7999999970197678 174696.0999999940104317, 327113.7999999970197678 174729.9000000059895683, 327124.7000000029802322 174743.5999999940104317, 327135.5999999939813279 174790.0999999940104317, 327117.2999999970197678 174844.2999999969906639, 327085.7999999970197678 174885.7000000030093361, 327068.7000000029802322 174916.4000000059895683, 327069.7000000029802322 174933.5000000000000000, 327073.2999999970197678 174957.9000000059895683, 327079.4000000060186721 174992.0999999940104317, 327102.2999999970197678 175038.7999999969906639, 327123.4000000060186721 175053.7000000030093361, 327136.5000000000000000 175067.0000000000000000, 327173.9000000060186721 175104.2999999969906639, 327200.2000000029802322 175120.9000000059895683, 327229.2000000029802322 175143.9000000059895683, 327254.2000000029802322 175160.7999999969906639, 327263.0999999939813279 175164.5000000000000000, 327292.2999999970197678 175184.7999999969906639, 327353.5999999939813279 175222.5000000000000000, 327368.2000000029802322 175231.2999999969906639, 327388.7999999970197678 175242.0000000000000000, 327458.7999999970197678 175275.2999999969906639, 327481.0000000000000000 175289.0999999940104317, 327505.2000000029802322 175299.7000000030093361, 327553.2999999970197678 175328.2000000030093361, 327585.7000000029802322 175353.0999999940104317, 327605.7000000029802322 175389.0999999940104317, 327616.7000000029802322 175422.0000000000000000, 327647.7000000029802322 175480.9000000059895683, 327656.7000000029802322 175505.5000000000000000, 327680.5000000000000000 175586.2000000030093361, 327687.0999999939813279 175611.2999999969906639, 327699.0000000000000000 175662.2000000030093361, 327723.5999999939813279 175729.7999999969906639, 327745.0999999939813279 175797.0000000000000000, 327760.7000000029802322 175833.0999999940104317, 327771.0000000000000000 175870.5999999940104317, 327791.5999999939813279 175941.2000000030093361, 327818.2999999970197678 175999.4000000059895683, 327827.0999999939813279 176028.7000000030093361, 327838.0000000000000000 176061.0000000000000000, 327879.0999999939813279 176123.4000000059895683, 327912.7999999970197678 176170.0000000000000000, 327945.0999999939813279 176215.7000000030093361, 327959.9000000060186721 176245.7999999969906639, 327983.7999999970197678 176272.2000000030093361, 327977.5999999939813279 176288.7999999969906639, 327959.0999999939813279 176298.7999999969906639, 327927.0000000000000000 176326.7000000030093361, 327878.4000000060186721 176359.0999999940104317, 327787.7000000029802322 176404.9000000059895683, 327776.9000000060186721 176415.7999999969906639, 327741.0000000000000000 176435.5999999940104317, 327681.0000000000000000 176468.5000000000000000, 327603.2999999970197678 176521.2999999969906639, 327576.5000000000000000 176534.9000000059895683, 327535.5000000000000000 176563.5000000000000000, 327485.5999999939813279 176597.9000000059895683, 327427.4000000060186721 176632.0000000000000000, 327364.7999999970197678 176671.5999999940104317, 327325.4000000060186721 176686.7000000030093361, 327257.7999999970197678 176724.2000000030093361, 327223.7000000029802322 176747.9000000059895683, 327196.2000000029802322 176765.0000000000000000, 327155.7999999970197678 176795.0999999940104317, 327106.5999999939813279 176825.7000000030093361, 327001.5999999939813279 176881.7999999969906639, 326982.0999999939813279 176895.7999999969906639, 326945.2000000029802322 176914.2999999969906639, 326853.7999999970197678 176970.7999999969906639, 326834.7999999970197678 176977.7000000030093361, 326772.7000000029802322 177018.2999999969906639, 326734.0999999939813279 177043.2999999969906639, 326703.7000000029802322 177059.7000000030093361, 326622.2999999970197678 177114.4000000059895683, 326505.4000000060186721 177189.9000000059895683, 326408.2999999970197678 177241.9000000059895683, 326363.7000000029802322 177268.7000000030093361, 326329.2999999970197678 177283.0000000000000000, 326233.0000000000000000 177341.7999999969906639, 326200.2999999970197678 177359.2999999969906639, 326108.7999999970197678 177421.0000000000000000, 326027.7999999970197678 177475.0999999940104317, 325995.2999999970197678 177498.4000000059895683, 325858.4000000060186721 177579.5999999940104317, 325829.2999999970197678 177591.7000000030093361, 325740.7000000029802322 177645.0000000000000000, 325708.7999999970197678 177660.2999999969906639, 325616.9000000060186721 177713.5000000000000000, 325489.9000000060186721 177789.7999999969906639, 325405.0999999939813279 177835.7000000030093361, 325367.0000000000000000 177863.2999999969906639, 325347.2000000029802322 177874.5999999940104317, 325303.5999999939813279 177902.9000000059895683, 325207.7999999970197678 177964.7999999969906639, 325159.4000000060186721 177994.9000000059895683, 325134.2000000029802322 178008.7000000030093361, 325106.0000000000000000 178021.2000000030093361, 325091.0000000000000000 178029.4000000059895683, 325040.0000000000000000 178061.7999999969906639, 325031.2000000029802322 178068.7999999969906639, 325021.2000000029802322 178075.7999999969906639, 325002.5000000000000000 178089.0000000000000000, 324985.0999999939813279 178098.7999999969906639, 324959.5999999939813279 178117.0000000000000000, 324947.4000000060186721 178118.9000000059895683, 324904.5000000000000000 178148.5000000000000000, 324866.5000000000000000 178173.7999999969906639, 324849.7000000029802322 178186.9000000059895683, 324749.0999999939813279 178246.4000000059895683, 324643.2999999970197678 178306.9000000059895683, 324595.2999999970197678 178337.7999999969906639, 324558.4000000060186721 178369.0999999940104317, 324518.7999999970197678 178392.5000000000000000, 324491.7000000029802322 178404.4000000059895683, 324437.0000000000000000 178438.0000000000000000, 324403.0000000000000000 178468.7999999969906639, 324370.2000000029802322 178487.0000000000000000, 324325.7000000029802322 178511.9000000059895683, 324274.5999999939813279 178545.5999999940104317, 324225.0999999939813279 178572.9000000059895683, 324120.2000000029802322 178635.2999999969906639, 324058.2000000029802322 178675.4000000059895683, 324017.5000000000000000 178703.0000000000000000, 323988.5999999939813279 178717.2000000030093361, 323901.9000000060186721 178778.7000000030093361, 323864.0999999939813279 178800.5000000000000000, 323768.2000000029802322 178856.0000000000000000, 323744.7000000029802322 178865.0999999940104317, 323722.2999999970197678 178881.4000000059895683, 323689.9000000060186721 178905.0999999940104317, 323639.5000000000000000 178938.7999999969906639, 323590.7999999970197678 178962.7999999969906639, 323551.2999999970197678 178983.9000000059895683, 323495.5000000000000000 179000.4000000059895683, 323473.7000000029802322 179018.7000000030093361, 323449.7000000029802322 179039.0000000000000000, 323421.7000000029802322 179060.2000000030093361, 323396.5000000000000000 179066.7999999969906639, 323370.5000000000000000 179057.7999999969906639, 323357.0000000000000000 179038.2000000030093361, 323345.0999999939813279 179021.5000000000000000, 323327.7000000029802322 179010.0000000000000000, 323307.7999999970197678 179011.7999999969906639, 323287.7999999970197678 179024.7999999969906639, 323241.7000000029802322 179045.0000000000000000, 323198.2999999970197678 179058.9000000059895683, 323160.7000000029802322 179063.2000000030093361, 323139.5000000000000000 179052.0999999940104317, 323119.0999999939813279 179037.0999999940104317, 323100.5000000000000000 179001.7999999969906639, 323084.2999999970197678 178972.5000000000000000, 323075.9000000060186721 178949.9000000059895683, 323057.7999999970197678 178924.4000000059895683, 323028.4000000060186721 178895.0999999940104317, 323006.2999999970197678 178884.0000000000000000, 322976.2000000029802322 178859.0000000000000000, 322941.5999999939813279 178852.0000000000000000, 322892.0000000000000000 178852.5999999940104317, 322835.4000000060186721 178865.4000000059895683, 322813.2999999970197678 178863.7000000030093361, 322797.5999999939813279 178861.7000000030093361, 322774.7000000029802322 178849.9000000059895683, 322758.0000000000000000 178846.5999999940104317, 322723.5000000000000000 178827.0000000000000000, 322709.5000000000000000 178817.2000000030093361, 322624.0000000000000000 178754.7000000030093361, 322596.7000000029802322 178733.7999999969906639, 322576.2999999970197678 178721.0000000000000000, 322565.7999999970197678 178714.0000000000000000, 322542.2000000029802322 178703.7999999969906639, 322497.2000000029802322 178697.2999999969906639, 322476.7999999970197678 178699.2999999969906639, 322405.5000000000000000 178714.4000000059895683, 322376.7000000029802322 178728.2999999969906639, 322332.9000000060186721 178744.2000000030093361, 322269.2999999970197678 178770.5999999940104317, 322226.2999999970197678 178808.2000000030093361, 322186.5999999939813279 178832.7999999969906639, 322137.2999999970197678 178844.7000000030093361, 322103.5000000000000000 178846.7999999969906639, 322064.5999999939813279 178852.5999999940104317, 322049.7000000029802322 178850.5999999940104317, 322029.4000000060186721 178846.0999999940104317, 322009.5999999939813279 178832.7999999969906639, 321958.7999999970197678 178784.9000000059895683, 321895.2999999970197678 178717.5000000000000000, 321860.2999999970197678 178682.0999999940104317, 321811.5000000000000000 178634.5000000000000000, 321783.7999999970197678 178608.0000000000000000, 321754.5000000000000000 178580.5000000000000000, 321729.7999999970197678 178565.4000000059895683, 321689.9000000060186721 178555.7999999969906639, 321675.7000000029802322 178550.7000000030093361, 321659.0000000000000000 178547.5000000000000000, 321621.7999999970197678 178534.0999999940104317, 321579.0999999939813279 178521.7999999969906639, 321516.5999999939813279 178491.7999999969906639, 321475.5000000000000000 178473.7999999969906639, 321436.4000000060186721 178456.0000000000000000, 321387.5999999939813279 178447.7000000030093361, 321360.7000000029802322 178443.4000000059895683, 321320.7000000029802322 178436.0000000000000000, 321290.0000000000000000 178431.0000000000000000, 321230.4000000060186721 178422.7000000030093361, 321116.7999999970197678 178402.0000000000000000, 321093.5999999939813279 178401.0999999940104317, 321071.0000000000000000 178400.9000000059895683, 321048.7999999970197678 178400.0999999940104317, 320998.9000000060186721 178401.7999999969906639, 320968.2000000029802322 178411.7999999969906639, 320903.7999999970197678 178434.4000000059895683, 320879.2999999970197678 178448.7999999969906639, 320824.0000000000000000 178479.2999999969906639, 320791.7999999970197678 178495.7999999969906639, 320751.5999999939813279 178510.0999999940104317, 320717.7000000029802322 178523.7000000030093361, 320676.2999999970197678 178521.5000000000000000, 320604.0999999939813279 178531.7999999969906639, 320559.5999999939813279 178532.0999999940104317, 320508.4000000060186721 178519.4000000059895683, 320465.4000000060186721 178509.5999999940104317, 320435.2000000029802322 178503.7999999969906639, 320368.4000000060186721 178498.7999999969906639, 320306.2999999970197678 178488.0000000000000000, 320235.0999999939813279 178480.7000000030093361, 320218.2999999970197678 178474.5000000000000000, 320201.7999999970197678 178468.2000000030093361, 320175.4000000060186721 178468.0999999940104317, 320157.2999999970197678 178469.7000000030093361, 320117.5000000000000000 178469.5000000000000000, 320103.7999999970197678 178466.0000000000000000, 320056.2999999970197678 178458.2000000030093361, 319968.0999999939813279 178428.5999999940104317, 319937.5999999939813279 178413.0000000000000000, 319901.0000000000000000 178387.2999999969906639, 319764.7999999970197678 178297.4000000059895683, 319694.2000000029802322 178253.2999999969906639, 319660.2000000029802322 178235.0999999940104317, 319639.5000000000000000 178228.5000000000000000, 319597.0999999939813279 178211.7000000030093361, 319577.0999999939813279 178205.9000000059895683, 319542.0999999939813279 178203.7000000030093361, 319521.5999999939813279 178206.2999999969906639, 319495.9000000060186721 178204.4000000059895683, 319467.0999999939813279 178206.7000000030093361, 319419.7999999970197678 178215.5999999940104317, 319396.7000000029802322 178221.2000000030093361, 319316.5000000000000000 178239.5999999940104317, 319227.7000000029802322 178258.7999999969906639, 319149.2000000029802322 178282.4000000059895683, 319130.0999999939813279 178287.7000000030093361, 319028.7999999970197678 178321.5999999940104317, 318921.7000000029802322 178348.5000000000000000, 318884.0000000000000000 178358.5999999940104317, 318780.7999999970197678 178405.7999999969906639, 318756.4000000060186721 178411.5000000000000000, 318728.7999999970197678 178424.7999999969906639, 318669.5999999939813279 178481.7000000030093361, 318632.4000000060186721 178503.2000000030093361, 318567.5999999939813279 178553.5999999940104317, 318500.0000000000000000 178618.2000000030093361, 318456.0000000000000000 178671.7999999969906639, 318435.4000000060186721 178701.5000000000000000, 318413.2000000029802322 178734.5000000000000000, 318361.2000000029802322 178805.0000000000000000, 318335.5999999939813279 178839.5000000000000000, 318308.0000000000000000 178862.9000000059895683, 318278.9000000060186721 178879.5000000000000000, 318250.5999999939813279 178891.5000000000000000, 318195.9000000060186721 178930.7999999969906639, 318170.5999999939813279 178942.7999999969906639, 318056.9000000060186721 178971.5000000000000000, 318007.9000000060186721 178975.7999999969906639, 317957.2999999970197678 178971.5999999940104317, 317912.7000000029802322 178961.5000000000000000, 317866.5000000000000000 178955.7999999969906639, 317823.5999999939813279 178924.7999999969906639, 317736.5000000000000000 178898.9000000059895683, 317684.7999999970197678 178873.5000000000000000, 317656.5000000000000000 178853.7000000030093361, 317617.7999999970197678 178823.4000000059895683, 317562.9000000060186721 178785.7999999969906639, 317523.0000000000000000 178756.2999999969906639, 317464.2999999970197678 178727.5000000000000000, 317400.2999999970197678 178681.7999999969906639, 317360.0999999939813279 178671.4000000059895683, 317294.0999999939813279 178656.2999999969906639, 317215.5999999939813279 178617.0999999940104317, 317086.2000000029802322 178569.2000000030093361, 317021.2999999970197678 178554.7000000030093361, 316952.7999999970197678 178536.5999999940104317, 316870.0000000000000000 178517.9000000059895683, 316828.2999999970197678 178512.5000000000000000, 316774.4000000060186721 178507.4000000059895683, 316697.2999999970197678 178498.7999999969906639, 316569.0000000000000000 178481.5999999940104317, 316419.7999999970197678 178472.2000000030093361, 316295.0999999939813279 178479.7999999969906639, 316204.7000000029802322 178485.7999999969906639, 316164.2999999970197678 178485.0999999940104317, 316101.7999999970197678 178490.4000000059895683, 316057.9000000060186721 178491.2999999969906639, 315974.4000000060186721 178513.0999999940104317, 315921.0000000000000000 178524.0000000000000000, 315852.2999999970197678 178551.0999999940104317, 315807.2000000029802322 178566.7000000030093361, 315774.0000000000000000 178580.2000000030093361, 315710.7000000029802322 178599.9000000059895683, 315610.7999999970197678 178628.9000000059895683, 315575.5000000000000000 178634.5999999940104317, 315480.7000000029802322 178659.0999999940104317, 315437.9000000060186721 178661.7000000030093361, 315405.7999999970197678 178666.9000000059895683, 315351.7000000029802322 178668.2999999969906639, 315288.5999999939813279 178657.5999999940104317, 315223.2999999970197678 178639.2999999969906639, 315192.0000000000000000 178624.7000000030093361, 315157.0999999939813279 178601.4000000059895683, 315095.2999999970197678 178575.4000000059895683, 315039.7000000029802322 178533.5999999940104317, 315015.5999999939813279 178472.9000000059895683, 315003.2999999970197678 178431.2000000030093361, 314995.2999999970197678 178409.5999999940104317, 314978.2000000029802322 178355.2000000030093361, 314959.2999999970197678 178286.7000000030093361, 314917.7999999970197678 178184.7999999969906639, 314913.0000000000000000 178173.9000000059895683, 314894.7000000029802322 178157.2000000030093361, 314885.0999999939813279 178153.5000000000000000, 314859.4000000060186721 178136.2999999969906639, 314832.0999999939813279 178108.0000000000000000, 314803.4000000060186721 178090.9000000059895683, 314768.0999999939813279 178085.5000000000000000, 314770.4000000060186721 178101.2000000030093361, 314774.5999999939813279 178114.7000000030093361, 314774.4000000060186721 178130.7999999969906639, 314774.7999999970197678 178148.2999999969906639, 314775.2999999970197678 178173.0000000000000000, 314763.9000000060186721 178188.0999999940104317, 314765.4000000060186721 178206.7999999969906639, 314760.5999999939813279 178218.5999999940104317, 314763.2000000029802322 178228.2999999969906639, 314752.7999999970197678 178242.2000000030093361, 314742.5999999939813279 178252.5999999940104317, 314693.4000000060186721 178363.0999999940104317, 314677.7999999970197678 178402.0999999940104317, 314649.5999999939813279 178451.5999999940104317, 314603.7999999970197678 178502.4000000059895683, 314594.5999999939813279 178521.0000000000000000, 314581.5000000000000000 178542.2999999969906639, 314570.0999999939813279 178577.9000000059895683, 314563.0999999939813279 178610.2999999969906639, 314539.0000000000000000 178648.9000000059895683, 314519.5000000000000000 178681.5999999940104317, 314505.4000000060186721 178726.0000000000000000, 314498.5000000000000000 178730.2999999969906639, 314491.2999999970197678 178813.5999999940104317, 314490.0999999939813279 178854.2000000030093361, 314486.5000000000000000 178903.0000000000000000, 314478.2999999970197678 178922.7000000030093361, 314446.2999999970197678 178960.5000000000000000, 314426.4000000060186721 178976.9000000059895683, 314394.0999999939813279 178986.7000000030093361, 314376.2000000029802322 178969.7999999969906639, 314352.7000000029802322 178961.2999999969906639, 314320.4000000060186721 178991.5999999940104317, 314312.0999999939813279 179030.7999999969906639, 314308.5000000000000000 179112.7000000030093361, 314319.2000000029802322 179153.7999999969906639, 314337.7000000029802322 179181.5999999940104317, 314351.0000000000000000 179194.5000000000000000, 314364.0000000000000000 179234.0999999940104317, 314362.7000000029802322 179261.0999999940104317, 314350.5000000000000000 179277.7000000030093361, 314297.2999999970197678 179321.2000000030093361, 314279.9000000060186721 179334.5000000000000000, 314252.7999999970197678 179407.5000000000000000, 314254.2999999970197678 179473.7999999969906639, 314260.7999999970197678 179519.7999999969906639, 314271.5000000000000000 179569.5999999940104317, 314278.2000000029802322 179592.7999999969906639, 314288.7999999970197678 179619.5000000000000000, 314298.7999999970197678 179649.5999999940104317, 314318.5999999939813279 179698.5999999940104317, 314326.5000000000000000 179722.9000000059895683, 314376.5000000000000000 179842.5999999940104317, 314393.2000000029802322 179910.2999999969906639, 314391.9000000060186721 179935.7000000030093361, 314426.7999999970197678 180008.0000000000000000, 314436.9000000060186721 180038.5999999940104317, 314442.2999999970197678 180097.5999999940104317, 314458.0999999939813279 180171.7000000030093361, 314478.9000000060186721 180268.7000000030093361, 314502.7999999970197678 180322.0999999940104317, 314519.0000000000000000 180372.7999999969906639, 314527.7999999970197678 180404.2999999969906639, 314548.7999999970197678 180449.4000000059895683, 314563.7999999970197678 180478.4000000059895683, 314580.5999999939813279 180515.2999999969906639, 314597.7000000029802322 180550.5000000000000000, 314606.7999999970197678 180583.2999999969906639, 314636.4000000060186721 180642.9000000059895683, 314694.9000000060186721 180785.2999999969906639, 314707.4000000060186721 180815.2000000030093361, 314725.9000000060186721 180840.2000000030093361, 314759.2999999970197678 180906.7000000030093361, 314771.7000000029802322 180925.5000000000000000, 314793.4000000060186721 180988.2999999969906639, 314819.0999999939813279 181036.5000000000000000, 314828.5000000000000000 181055.7999999969906639, 314845.4000000060186721 181077.2999999969906639, 314868.4000000060186721 181121.7999999969906639, 314904.2000000029802322 181168.5000000000000000, 314928.7000000029802322 181218.4000000059895683, 314961.4000000060186721 181288.2999999969906639, 314983.5999999939813279 181335.0999999940104317, 315024.2000000029802322 181381.5999999940104317, 315050.5000000000000000 181406.9000000059895683, 315066.7000000029802322 181431.7999999969906639, 315096.5999999939813279 181460.0000000000000000, 315122.2999999970197678 181477.5999999940104317, 315149.5999999939813279 181518.5999999940104317, 315192.4000000060186721 181554.9000000059895683, 315227.0999999939813279 181571.0999999940104317, 315264.2999999970197678 181604.5999999940104317, 315332.5999999939813279 181660.2000000030093361, 315365.2999999970197678 181683.7000000030093361, 315394.4000000060186721 181710.5999999940104317, 315505.0000000000000000 181774.9000000059895683, 315550.7000000029802322 181796.5999999940104317, 315579.4000000060186721 181812.7999999969906639, 315617.0999999939813279 181830.2000000030093361, 315649.5000000000000000 181850.9000000059895683, 315661.2999999970197678 181869.5999999940104317, 315675.2000000029802322 181884.2000000030093361, 315685.2000000029802322 181908.7999999969906639, 315714.2000000029802322 181992.5999999940104317, 315720.2999999970197678 182027.0000000000000000, 315723.2000000029802322 182129.0999999940104317, 315732.0999999939813279 182231.7999999969906639, 315741.4000000060186721 182363.0999999940104317, 315747.5000000000000000 182457.4000000059895683, 315763.5000000000000000 182524.2000000030093361, 315784.7000000029802322 182671.5000000000000000, 315788.7000000029802322 182711.0000000000000000, 315793.2999999970197678 182754.0000000000000000, 315785.9000000060186721 182806.0000000000000000, 315767.4000000060186721 182831.5999999940104317, 315713.2999999970197678 182843.0000000000000000, 315703.7999999970197678 182854.2000000030093361, 315692.7999999970197678 182878.7999999969906639, 315678.7999999970197678 182898.9000000059895683, 315665.5999999939813279 182930.2999999969906639, 315651.5000000000000000 182947.5000000000000000, 315641.9000000060186721 182964.0999999940104317, 315623.7000000029802322 182992.5999999940104317, 315576.0999999939813279 183067.7000000030093361, 315556.0999999939813279 183108.9000000059895683, 315542.7999999970197678 183137.7999999969906639, 315537.9000000060186721 183151.9000000059895683, 315502.5000000000000000 183197.7999999969906639, 315500.0999999939813279 183224.5000000000000000, 315505.5999999939813279 183247.7000000030093361, 315520.5000000000000000 183284.4000000059895683, 315535.0000000000000000 183299.0999999940104317, 315544.4000000060186721 183327.7000000030093361, 315552.4000000060186721 183358.2000000030093361, 315553.7999999970197678 183367.2000000030093361, 315550.7000000029802322 183394.2000000030093361, 315562.9000000060186721 183418.0999999940104317, 315591.2000000029802322 183439.2000000030093361, 315611.2999999970197678 183468.5999999940104317, 315620.0000000000000000 183487.2000000030093361, 315631.4000000060186721 183502.0000000000000000, 315642.2000000029802322 183528.2000000030093361, 315665.7000000029802322 183573.7999999969906639, 315673.2000000029802322 183604.2999999969906639, 315671.7000000029802322 183648.7999999969906639, 315670.9000000060186721 183691.9000000059895683, 315640.2999999970197678 183741.0999999940104317, 315640.7000000029802322 183756.5000000000000000, 315644.2999999970197678 183769.4000000059895683, 315641.2999999970197678 183828.9000000059895683, 315648.5000000000000000 183866.0999999940104317, 315651.9000000060186721 183892.7999999969906639, 315668.9000000060186721 183930.5000000000000000, 315678.2999999970197678 183960.2999999969906639, 315695.2999999970197678 183993.2999999969906639, 315703.5999999939813279 184021.5000000000000000, 315722.5000000000000000 184061.5999999940104317, 315750.0000000000000000 184102.0000000000000000, 315787.7999999970197678 184164.7999999969906639, 315821.4000000060186721 184232.2000000030093361, 315856.7000000029802322 184295.2000000030093361, 315872.7000000029802322 184333.2000000030093361, 315893.7000000029802322 184363.0000000000000000, 315932.0999999939813279 184388.9000000059895683, 315958.9000000060186721 184415.4000000059895683, 315964.5000000000000000 184425.2999999969906639, 315974.2999999970197678 184435.5999999940104317, 316014.4000000060186721 184496.9000000059895683, 316055.2999999970197678 184558.2999999969906639, 316091.2999999970197678 184620.9000000059895683, 316109.7999999970197678 184651.2999999969906639, 316147.2000000029802322 184696.9000000059895683, 316169.2999999970197678 184734.9000000059895683, 316183.7000000029802322 184762.0999999940104317, 316206.5000000000000000 184798.2000000030093361, 316218.5999999939813279 184823.0000000000000000, 316237.5999999939813279 184839.2000000030093361, 316252.4000000060186721 184870.2000000030093361, 316291.4000000060186721 184932.2000000030093361, 316308.4000000060186721 184967.2999999969906639, 316333.2000000029802322 185000.0000000000000000, 316344.2000000029802322 185035.5999999940104317, 316362.2000000029802322 185069.0000000000000000, 316373.7999999970197678 185114.0000000000000000, 316391.5000000000000000 185159.9000000059895683, 316423.7999999970197678 185235.2000000030093361, 316447.9000000060186721 185284.0000000000000000, 316459.2999999970197678 185298.5000000000000000, 316467.5000000000000000 185316.0999999940104317, 316469.2999999970197678 185327.5999999940104317, 316500.9000000060186721 185379.5999999940104317, 316523.7999999970197678 185431.9000000059895683, 316531.2000000029802322 185453.2999999969906639, 316556.9000000060186721 185489.7999999969906639, 316575.5999999939813279 185514.2000000030093361, 316596.7999999970197678 185545.4000000059895683, 316617.2000000029802322 185584.9000000059895683, 316620.2999999970197678 185595.2000000030093361, 316636.5999999939813279 185620.5000000000000000, 316647.5999999939813279 185653.5999999940104317, 316662.2999999970197678 185685.5000000000000000, 316666.4000000060186721 185720.4000000059895683, 316684.2999999970197678 185798.9000000059895683, 316703.2999999970197678 185851.0000000000000000, 316715.2000000029802322 185894.2999999969906639, 316714.0999999939813279 185906.7999999969906639, 316724.0999999939813279 185918.7999999969906639, 316751.7000000029802322 185922.4000000059895683, 316762.7999999970197678 185927.0999999940104317, 316757.7999999970197678 185952.7000000030093361, 316738.0999999939813279 185976.9000000059895683, 316724.7999999970197678 185992.7000000030093361, 316725.7000000029802322 186009.2999999969906639, 316734.5999999939813279 186024.9000000059895683, 316748.0999999939813279 186056.2000000030093361, 316752.2000000029802322 186074.2999999969906639, 316744.2000000029802322 186101.5999999940104317, 316756.5999999939813279 186130.5999999940104317, 316768.0999999939813279 186153.4000000059895683, 316782.5000000000000000 186164.0999999940104317, 316797.4000000060186721 186204.5999999940104317, 316804.0999999939813279 186214.4000000059895683, 316821.2999999970197678 186233.2999999969906639, 316855.5999999939813279 186293.5000000000000000, 316873.5000000000000000 186307.9000000059895683, 316911.4000000060186721 186368.0999999940104317, 316940.5999999939813279 186424.0999999940104317, 316946.5999999939813279 186434.7999999969906639, 316961.7000000029802322 186510.5999999940104317, 316965.0000000000000000 186520.7000000030093361, 316979.2999999970197678 186539.0000000000000000, 316990.5999999939813279 186584.7000000030093361, 316994.2000000029802322 186597.7000000030093361, 317018.4000000060186721 186638.9000000059895683, 317038.7000000029802322 186669.2999999969906639, 317070.5999999939813279 186694.2999999969906639, 317085.9000000060186721 186722.9000000059895683, 317090.4000000060186721 186730.7999999969906639, 317089.9000000060186721 186742.2999999969906639, 317097.7999999970197678 186764.9000000059895683, 317121.5000000000000000 186810.2000000030093361, 317140.2999999970197678 186835.2000000030093361, 317160.2999999970197678 186880.0000000000000000, 317168.5000000000000000 186905.5000000000000000, 317211.9000000060186721 186991.0999999940104317, 317257.9000000060186721 187073.5000000000000000, 317297.7000000029802322 187156.0000000000000000, 317308.7000000029802322 187177.5999999940104317, 317342.2000000029802322 187247.4000000059895683, 317351.2000000029802322 187269.2999999969906639, 317388.2999999970197678 187349.4000000059895683, 317406.7000000029802322 187390.5999999940104317, 317474.0999999939813279 187525.7999999969906639, 317552.7999999970197678 187692.4000000059895683, 317577.2000000029802322 187735.5999999940104317, 317621.7000000029802322 187821.5000000000000000, 317694.4000000060186721 187969.4000000059895683, 317716.5000000000000000 188024.0000000000000000, 317743.9000000060186721 188078.7999999969906639, 317781.5999999939813279 188157.7999999969906639, 317816.0000000000000000 188218.2999999969906639, 317863.0000000000000000 188324.2000000030093361, 317921.0999999939813279 188427.2000000030093361, 317971.0999999939813279 188527.7999999969906639, 318036.4000000060186721 188645.5000000000000000, 318060.2999999970197678 188697.7999999969906639, 318114.5000000000000000 188796.0000000000000000, 318127.0000000000000000 188812.7999999969906639, 318128.5999999939813279 188825.9000000059895683, 318159.2999999970197678 188891.7999999969906639, 318180.0999999939813279 188930.9000000059895683, 318194.2000000029802322 189015.7999999969906639, 318211.0000000000000000 189076.5999999940104317, 318223.2999999970197678 189131.5999999940104317, 318239.5999999939813279 189158.2000000030093361, 318251.2999999970197678 189190.7999999969906639, 318268.2000000029802322 189250.9000000059895683, 318290.0999999939813279 189295.9000000059895683, 318314.0999999939813279 189331.5000000000000000, 318326.0000000000000000 189359.2999999969906639, 318331.5999999939813279 189392.4000000059895683, 318331.2000000029802322 189414.5000000000000000, 318321.7000000029802322 189446.0999999940104317, 318324.4000000060186721 189466.7000000030093361, 318348.0000000000000000 189514.2999999969906639, 318350.9000000060186721 189527.9000000059895683, 318347.0000000000000000 189560.5000000000000000, 318353.5000000000000000 189573.7999999969906639, 318368.7000000029802322 189581.2999999969906639, 318387.2999999970197678 189573.7000000030093361, 318412.5999999939813279 189557.4000000059895683, 318434.9000000060186721 189556.2999999969906639, 318453.0999999939813279 189569.2999999969906639, 318486.7000000029802322 189593.7000000030093361, 318527.2000000029802322 189625.7000000030093361, 318593.7999999970197678 189695.7999999969906639, 318624.7999999970197678 189735.0000000000000000, 318671.5999999939813279 189751.2999999969906639, 318712.5000000000000000 189761.0000000000000000, 318740.7999999970197678 189776.2999999969906639, 318828.4000000060186721 189866.5999999940104317, 318846.2999999970197678 189891.9000000059895683, 318891.4000000060186721 189930.9000000059895683, 318971.5999999939813279 190014.2000000030093361, 319012.2999999970197678 190057.0000000000000000, 319067.5000000000000000 190111.0000000000000000, 319094.0000000000000000 190146.0000000000000000, 319121.9000000060186721 190176.0999999940104317, 319181.9000000060186721 190242.7000000030093361, 319255.2000000029802322 190328.7999999969906639, 319268.9000000060186721 190345.0999999940104317, 319277.2000000029802322 190348.5000000000000000, 319283.5000000000000000 190355.4000000059895683, 319308.2999999970197678 190373.9000000059895683, 319339.5999999939813279 190389.5000000000000000, 319402.2000000029802322 190440.5999999940104317, 319459.7999999970197678 190492.0000000000000000, 319490.5000000000000000 190530.2999999969906639, 319526.7000000029802322 190551.0999999940104317, 319546.9000000060186721 190565.5000000000000000, 319601.0999999939813279 190627.7999999969906639, 319628.7999999970197678 190653.9000000059895683, 319651.2000000029802322 190677.2000000030093361, 319665.2000000029802322 190695.7000000030093361, 319689.5999999939813279 190724.5000000000000000, 319694.7000000029802322 190733.0999999940104317, 319727.2999999970197678 190769.0000000000000000, 319734.0000000000000000 190781.0000000000000000, 319734.7999999970197678 190805.5999999940104317, 319746.9000000060186721 190823.4000000059895683, 319765.9000000060186721 190839.5000000000000000, 319777.5000000000000000 190853.9000000059895683, 319788.7000000029802322 190865.0999999940104317, 319798.2000000029802322 190883.7999999969906639, 319827.0000000000000000 190936.4000000059895683, 319856.0000000000000000 190970.9000000059895683, 319880.2000000029802322 191020.0999999940104317, 319891.5000000000000000 191043.7000000030093361, 319894.7999999970197678 191077.5000000000000000, 319898.2999999970197678 191100.4000000059895683, 319897.5999999939813279 191117.9000000059895683, 319905.5999999939813279 191151.0000000000000000, 319916.2000000029802322 191229.0999999940104317, 319916.2000000029802322 191269.2999999969906639, 319912.7000000029802322 191276.7999999969906639, 319908.0000000000000000 191289.5999999940104317, 319909.4000000060186721 191307.5000000000000000, 319907.7000000029802322 191320.7000000030093361, 319910.9000000060186721 191351.7000000030093361, 319914.7000000029802322 191372.7999999969906639, 319913.2000000029802322 191394.5999999940104317, 319907.9000000060186721 191410.7999999969906639, 319913.2999999970197678 191490.0000000000000000, 319912.5999999939813279 191539.5000000000000000, 319908.2000000029802322 191606.5999999940104317, 319907.5999999939813279 191656.0999999940104317, 319909.0000000000000000 191675.7000000030093361, 319904.7999999970197678 191698.0999999940104317, 319906.0000000000000000 191724.5999999940104317, 319907.5000000000000000 191780.5000000000000000, 319905.5999999939813279 191807.0000000000000000, 319908.7999999970197678 191826.4000000059895683, 319898.7000000029802322 191901.9000000059895683, 319899.4000000060186721 191945.0000000000000000, 319898.7000000029802322 191975.2999999969906639, 319903.4000000060186721 192040.5999999940104317, 319902.2000000029802322 192087.9000000059895683, 319903.5000000000000000 192124.0999999940104317, 319902.2000000029802322 192172.7000000030093361, 319905.7999999970197678 192210.4000000059895683, 319899.0000000000000000 192276.7999999969906639, 319904.2000000029802322 192321.9000000059895683, 319901.2000000029802322 192370.7999999969906639, 319903.4000000060186721 192412.0000000000000000, 319897.5999999939813279 192444.2999999969906639, 319900.0000000000000000 192480.2999999969906639, 319899.7000000029802322 192501.5999999940104317, 319896.0000000000000000 192536.7999999969906639, 319889.5000000000000000 192562.4000000059895683, 319889.9000000060186721 192590.5999999940104317, 319889.5999999939813279 192631.7000000030093361, 319892.5000000000000000 192696.7000000030093361, 319893.7999999970197678 192735.5000000000000000, 319895.5999999939813279 192757.4000000059895683, 319895.2999999970197678 192774.5000000000000000, 319892.0999999939813279 192782.2999999969906639, 319889.5000000000000000 192819.4000000059895683, 319894.5000000000000000 192881.5999999940104317, 319894.7000000029802322 192939.0000000000000000, 319893.2999999970197678 193003.7999999969906639, 319892.0000000000000000 193070.0000000000000000, 319903.2000000029802322 193084.0000000000000000, 319922.5000000000000000 193096.2000000030093361, 319931.2999999970197678 193115.2000000030093361, 319927.2000000029802322 193125.2999999969906639, 319913.2000000029802322 193139.7999999969906639, 319914.9000000060186721 193153.7000000030093361, 319888.7999999970197678 193172.7999999969906639, 319889.4000000060186721 193193.2000000030093361, 319900.0999999939813279 193208.7999999969906639, 319913.7000000029802322 193226.2999999969906639, 319913.4000000060186721 193244.5000000000000000, 319902.2000000029802322 193280.5999999940104317, 319901.9000000060186721 193307.7999999969906639, 319917.4000000060186721 193351.7000000030093361, 319931.2999999970197678 193374.7000000030093361, 319943.5000000000000000 193381.5000000000000000, 319980.4000000060186721 193390.4000000059895683, 320002.2000000029802322 193401.5999999940104317, 320026.0000000000000000 193394.4000000059895683, 320038.0999999939813279 193393.7000000030093361, 320075.2999999970197678 193419.9000000059895683, 320092.0999999939813279 193436.0000000000000000, 320088.7999999970197678 193466.7000000030093361, 320107.0000000000000000 193486.7000000030093361, 320128.4000000060186721 193504.7999999969906639, 320146.5000000000000000 193530.2999999969906639, 320146.5999999939813279 193550.5999999940104317, 320156.2000000029802322 193565.5000000000000000, 320188.7999999970197678 193587.7000000030093361, 320206.9000000060186721 193612.9000000059895683, 320218.4000000060186721 193647.0999999940104317, 320233.2999999970197678 193687.7999999969906639, 320237.0999999939813279 193698.9000000059895683, 320243.5999999939813279 193709.5000000000000000, 320242.9000000060186721 193737.2999999969906639, 320260.0999999939813279 193767.4000000059895683, 320281.9000000060186721 193792.0999999940104317, 320291.0000000000000000 193791.4000000059895683, 320302.9000000060186721 193805.2000000030093361, 320306.7000000029802322 193823.2999999969906639, 320355.0999999939813279 193942.5999999940104317, 320382.5999999939813279 194024.7000000030093361, 320389.5000000000000000 194040.5000000000000000, 320392.7000000029802322 194066.7999999969906639, 320406.5000000000000000 194102.7000000030093361, 320419.9000000060186721 194160.5999999940104317, 320421.0000000000000000 194173.7999999969906639, 320432.2000000029802322 194205.0000000000000000, 320438.0000000000000000 194236.0999999940104317, 320453.7000000029802322 194272.2000000030093361, 320506.0000000000000000 194383.2000000030093361, 320528.5000000000000000 194416.2999999969906639, 320556.2999999970197678 194461.0000000000000000, 320569.5000000000000000 194486.7000000030093361, 320625.2999999970197678 194552.2999999969906639, 320662.5000000000000000 194590.0999999940104317, 320682.2000000029802322 194624.2000000030093361, 320686.0999999939813279 194640.0000000000000000, 320694.2999999970197678 194655.0000000000000000, 320701.0999999939813279 194691.5000000000000000, 320706.5000000000000000 194705.7000000030093361, 320717.9000000060186721 194754.0999999940104317, 320723.7999999970197678 194780.9000000059895683, 320741.5000000000000000 194927.5999999940104317, 320757.2999999970197678 194984.5000000000000000, 320766.4000000060186721 195032.7000000030093361, 320770.4000000060186721 195060.7999999969906639, 320785.5999999939813279 195110.2999999969906639, 320798.7999999970197678 195186.7000000030093361, 320806.7999999970197678 195217.2000000030093361, 320802.7000000029802322 195240.4000000059895683, 320809.5000000000000000 195271.5000000000000000, 320813.2000000029802322 195307.9000000059895683, 320824.2000000029802322 195368.0000000000000000, 320830.9000000060186721 195401.5000000000000000, 320841.7000000029802322 195427.2000000030093361, 320867.4000000060186721 195442.2999999969906639, 320895.2000000029802322 195444.2999999969906639, 320937.9000000060186721 195442.7000000030093361, 320962.5000000000000000 195457.0000000000000000, 320981.7999999970197678 195481.5999999940104317, 320995.9000000060186721 195488.9000000059895683, 321024.5000000000000000 195484.2000000030093361, 321061.4000000060186721 195464.4000000059895683, 321080.9000000060186721 195462.7999999969906639, 321097.5000000000000000 195468.5000000000000000, 321106.7000000029802322 195476.7000000030093361, 321138.9000000060186721 195495.2000000030093361, 321161.2999999970197678 195504.2999999969906639, 321179.0999999939813279 195510.9000000059895683, 321193.4000000060186721 195514.7999999969906639, 321206.0999999939813279 195522.7999999969906639, 321231.4000000060186721 195533.7999999969906639, 321265.9000000060186721 195556.7000000030093361, 321273.9000000060186721 195565.7000000030093361, 321281.9000000060186721 195561.2999999969906639, 321293.0999999939813279 195566.5999999940104317, 321306.4000000060186721 195581.0999999940104317, 321322.0000000000000000 195588.2999999969906639, 321363.5999999939813279 195617.0999999940104317, 321376.7000000029802322 195632.0999999940104317, 321393.2999999970197678 195637.5999999940104317, 321428.2999999970197678 195659.7999999969906639, 321444.2000000029802322 195667.2000000030093361, 321471.7000000029802322 195684.7999999969906639, 321485.9000000060186721 195689.7999999969906639, 321500.4000000060186721 195700.5000000000000000, 321548.4000000060186721 195725.7999999969906639, 321583.9000000060186721 195761.0999999940104317, 321622.7000000029802322 195795.9000000059895683, 321652.5999999939813279 195814.0999999940104317, 321698.5999999939813279 195832.4000000059895683, 321718.2000000029802322 195849.0000000000000000, 321747.0000000000000000 195879.5999999940104317, 321762.7000000029802322 195901.2999999969906639, 321816.7999999970197678 196000.5999999940104317, 321832.5000000000000000 196027.2999999969906639, 321842.7000000029802322 196052.5999999940104317, 321896.7000000029802322 196145.5999999940104317, 321947.4000000060186721 196223.4000000059895683, 321956.0999999939813279 196244.7000000030093361, 322010.9000000060186721 196333.4000000059895683, 322035.9000000060186721 196374.2999999969906639, 322045.5999999939813279 196384.5000000000000000, 322105.7000000029802322 196477.0000000000000000, 322127.7000000029802322 196518.7000000030093361, 322170.4000000060186721 196577.0999999940104317, 322196.5000000000000000 196613.9000000059895683, 322229.2999999970197678 196671.7999999969906639, 322259.9000000060186721 196719.7999999969906639, 322351.0999999939813279 196877.2999999969906639, 322365.0999999939813279 196908.5999999940104317, 322404.4000000060186721 196969.5000000000000000, 322422.5999999939813279 197016.9000000059895683, 322509.5000000000000000 197143.7999999969906639, 322586.4000000060186721 197262.9000000059895683, 322602.0000000000000000 197300.0000000000000000, 322627.5000000000000000 197344.2000000030093361, 322640.7999999970197678 197359.2999999969906639, 322664.7999999970197678 197396.2999999969906639, 322706.7999999970197678 197472.4000000059895683, 322726.4000000060186721 197504.7999999969906639, 322745.5000000000000000 197531.7000000030093361, 322771.5000000000000000 197580.9000000059895683, 322789.2000000029802322 197609.5999999940104317, 322807.5000000000000000 197633.5000000000000000, 322866.0000000000000000 197728.9000000059895683, 322892.9000000060186721 197783.4000000059895683, 322909.5999999939813279 197806.7999999969906639, 322970.7999999970197678 197909.9000000059895683, 323046.4000000060186721 198039.4000000059895683, 323070.7000000029802322 198083.5999999940104317, 323137.2000000029802322 198190.5999999940104317, 323148.2000000029802322 198213.4000000059895683, 323155.2000000029802322 198229.4000000059895683, 323160.2999999970197678 198261.0999999940104317, 323185.5000000000000000 198290.4000000059895683, 323204.7999999970197678 198336.5000000000000000, 323208.2999999970197678 198366.2000000030093361, 323203.4000000060186721 198380.4000000059895683, 323176.0999999939813279 198408.5999999940104317, 323165.4000000060186721 198440.7000000030093361, 323136.2999999970197678 198482.4000000059895683, 323128.7999999970197678 198502.0999999940104317, 323131.0000000000000000 198520.2000000030093361, 323144.7999999970197678 198531.7999999969906639, 323160.4000000060186721 198544.4000000059895683, 323189.7000000029802322 198588.0000000000000000, 323201.0999999939813279 198614.4000000059895683, 323200.9000000060186721 198625.0999999940104317, 323206.7000000029802322 198635.7999999969906639, 323209.0999999939813279 198656.4000000059895683, 323223.2999999970197678 198687.5999999940104317, 323243.5999999939813279 198750.9000000059895683, 323260.7999999970197678 198796.9000000059895683, 323265.7000000029802322 198808.5000000000000000, 323289.5000000000000000 198850.0000000000000000, 323299.4000000060186721 198895.5000000000000000, 323308.5999999939813279 198929.7000000030093361, 323318.0999999939813279 198971.2999999969906639, 323341.0999999939813279 199038.5000000000000000, 323350.9000000060186721 199070.7999999969906639, 323389.9000000060186721 199137.0000000000000000, 323407.9000000060186721 199164.5000000000000000, 323425.5000000000000000 199187.0999999940104317, 323436.2000000029802322 199203.9000000059895683, 323448.7000000029802322 199241.0999999940104317, 323455.5000000000000000 199272.2000000030093361, 323477.0999999939813279 199288.2999999969906639, 323532.9000000060186721 199315.5999999940104317, 323578.7999999970197678 199374.5000000000000000, 323607.2000000029802322 199425.7000000030093361, 323625.9000000060186721 199483.5999999940104317, 323660.4000000060186721 199516.2000000030093361, 323680.7999999970197678 199568.5000000000000000, 323712.2999999970197678 199611.4000000059895683, 323757.5000000000000000 199662.5999999940104317, 323802.2000000029802322 199706.2999999969906639, 323868.9000000060186721 199758.5999999940104317, 323903.2999999970197678 199793.5000000000000000, 323912.9000000060186721 199799.7000000030093361, 323896.7999999970197678 199808.2999999969906639, 323911.2000000029802322 199818.5000000000000000, 323952.5999999939813279 199858.5999999940104317, 323979.0000000000000000 199874.2999999969906639, 324057.5999999939813279 199944.2999999969906639, 324108.5999999939813279 199981.7999999969906639, 324141.0000000000000000 200034.5000000000000000, 324157.0999999939813279 200064.2000000030093361, 324177.0999999939813279 200084.5000000000000000, 324199.5000000000000000 200092.2999999969906639, 324265.5000000000000000 200100.0999999940104317, 324302.0999999939813279 200115.7999999969906639, 324361.2000000029802322 200151.2999999969906639, 324378.7999999970197678 200166.9000000059895683, 324413.2999999970197678 200191.0999999940104317, 324462.7999999970197678 200228.5000000000000000, 324483.7999999970197678 200242.7000000030093361, 324527.0000000000000000 200282.2000000030093361, 324548.5999999939813279 200295.7000000030093361, 324580.5999999939813279 200327.4000000059895683, 324608.5000000000000000 200348.7000000030093361, 324644.2000000029802322 200382.2999999969906639, 324700.2000000029802322 200421.5999999940104317, 324724.0999999939813279 200435.0000000000000000, 324764.5999999939813279 200469.5000000000000000, 324803.0000000000000000 200498.2999999969906639, 324844.0999999939813279 200543.2999999969906639, 324863.5000000000000000 200566.2000000030093361, 324914.2000000029802322 200614.5999999940104317, 324927.0000000000000000 200632.0999999940104317, 324963.5000000000000000 200665.5999999940104317, 324992.4000000060186721 200699.7000000030093361, 325014.2000000029802322 200719.9000000059895683, 325016.5000000000000000 200732.9000000059895683, 325017.5000000000000000 200761.5999999940104317, 325007.7000000029802322 200900.5000000000000000, 324997.5000000000000000 200953.5000000000000000, 324984.7000000029802322 200978.0999999940104317, 324975.7999999970197678 201014.5000000000000000, 324944.9000000060186721 201092.2000000030093361, 324937.4000000060186721 201132.2000000030093361, 324922.2999999970197678 201161.2000000030093361, 324891.7000000029802322 201184.7999999969906639, 324866.9000000060186721 201223.9000000059895683, 324846.0999999939813279 201252.4000000059895683, 324826.7999999970197678 201266.0000000000000000, 324796.4000000060186721 201287.9000000059895683, 324782.7999999970197678 201292.2999999969906639, 322222.0999999939813279 202654.7999999969906639, 322209.7000000029802322 202660.2999999969906639, 319207.0000000000000000 204261.7000000030093361, 309929.2999999970197678 206015.7000000030093361, 309878.5999999939813279 206031.9000000059895683, 309837.2999999970197678 206038.0000000000000000, 309786.7000000029802322 206036.2999999969906639, 309767.7999999970197678 206032.7000000030093361, 309746.4000000060186721 206036.0000000000000000, 309732.2000000029802322 206031.2999999969906639, 309719.7000000029802322 206031.4000000059895683, 309692.0999999939813279 206030.7999999969906639, 309663.9000000060186721 206036.2999999969906639, 309619.2999999970197678 206037.0999999940104317, 309561.7999999970197678 206045.4000000059895683, 309519.5000000000000000 206046.5000000000000000, 309491.9000000060186721 206047.0000000000000000, 309468.9000000060186721 206048.9000000059895683, 309445.2999999970197678 206060.2000000030093361, 309422.5000000000000000 206062.5999999940104317, 309374.4000000060186721 206071.9000000059895683, 309321.9000000060186721 206089.0999999940104317, 309234.4000000060186721 206131.4000000059895683, 309134.0000000000000000 206203.7999999969906639, 309086.5999999939813279 206236.0000000000000000, 309058.0999999939813279 206251.4000000059895683, 309026.2000000029802322 206254.9000000059895683, 308998.2999999970197678 206278.2999999969906639, 308979.0000000000000000 206367.9000000059895683, 308959.7000000029802322 206406.0999999940104317, 308926.5999999939813279 206443.2000000030093361, 308875.7000000029802322 206485.4000000059895683, 308779.7999999970197678 206569.2000000030093361, 308668.5999999939813279 206648.2999999969906639, 308625.2999999970197678 206686.7999999969906639, 308559.2999999970197678 206757.7999999969906639, 308514.0000000000000000 206809.2999999969906639, 308476.9000000060186721 206842.9000000059895683, 308406.5000000000000000 206901.9000000059895683, 308349.5000000000000000 206937.2000000030093361, 308324.4000000060186721 206942.5000000000000000, 308312.0999999939813279 206934.2999999969906639, 308290.5999999939813279 206898.0999999940104317, 308276.2999999970197678 206891.4000000059895683, 308259.0000000000000000 206901.5999999940104317, 308246.5000000000000000 206889.4000000059895683, 308235.9000000060186721 206890.5999999940104317, 308208.5999999939813279 206912.5000000000000000, 308166.5000000000000000 206981.0000000000000000, 308152.2000000029802322 207034.2000000030093361, 308149.9000000060186721 207064.5999999940104317, 308149.2000000029802322 207093.5000000000000000, 308154.5000000000000000 207134.4000000059895683, 308157.4000000060186721 207149.2999999969906639, 308170.0999999939813279 207218.0000000000000000, 308177.7999999970197678 207233.7000000030093361, 308175.4000000060186721 207260.2999999969906639, 308155.9000000060186721 207287.5000000000000000, 308148.4000000060186721 207304.5999999940104317, 308154.2000000029802322 207325.5000000000000000, 308151.7000000029802322 207350.0000000000000000, 308156.5000000000000000 207389.7999999969906639, 308161.0999999939813279 207404.2000000030093361, 308152.0000000000000000 207419.2999999969906639, 308141.9000000060186721 207453.0000000000000000, 308141.9000000060186721 207480.2999999969906639, 308128.9000000060186721 207523.5000000000000000, 308108.7999999970197678 207574.7000000030093361, 308100.2999999970197678 207603.2999999969906639, 308101.5000000000000000 207631.2000000030093361, 308099.0999999939813279 207652.0999999940104317, 308101.2999999970197678 207681.5000000000000000, 308110.5000000000000000 207716.9000000059895683, 308084.5999999939813279 207728.7000000030093361, 308090.5999999939813279 207741.0999999940104317, 308093.4000000060186721 207759.5000000000000000, 308085.0000000000000000 207784.0999999940104317, 308076.0999999939813279 207818.5999999940104317, 308074.7999999970197678 207833.2000000030093361, 308082.7999999970197678 207876.4000000059895683, 308087.7999999970197678 207899.2999999969906639, 308071.2000000029802322 207905.0000000000000000, 308073.0999999939813279 207915.5000000000000000, 308063.2999999970197678 207919.2000000030093361, 308052.0000000000000000 207920.9000000059895683, 308053.2000000029802322 207930.2999999969906639, 308050.2000000029802322 207943.2999999969906639, 308038.4000000060186721 207972.4000000059895683, 308050.2000000029802322 208005.2000000030093361, 308048.0000000000000000 208023.2000000030093361, 308059.7000000029802322 208032.5000000000000000, 308069.5000000000000000 208055.9000000059895683, 308068.9000000060186721 208102.7000000030093361, 308054.9000000060186721 208153.7999999969906639, 308042.2999999970197678 208168.0000000000000000, 308044.5999999939813279 208178.0000000000000000, 308028.7000000029802322 208200.5999999940104317, 308024.7000000029802322 208255.5999999940104317, 308018.5999999939813279 208283.7000000030093361, 308004.7000000029802322 208305.9000000059895683, 307981.2000000029802322 208323.2000000030093361, 307984.5000000000000000 208337.5999999940104317, 307978.2000000029802322 208358.0999999940104317, 307974.0000000000000000 208372.2000000030093361, 307963.7999999970197678 208420.7999999969906639, 307965.9000000060186721 208464.5999999940104317, 307965.2999999970197678 208472.5000000000000000, 307954.9000000060186721 208493.2999999969906639, 307948.0999999939813279 208521.2999999969906639, 307944.5999999939813279 208558.7999999969906639, 307940.4000000060186721 208578.2999999969906639, 307955.5999999939813279 208664.7999999969906639, 307950.2000000029802322 208736.2999999969906639, 307948.2000000029802322 208765.7000000030093361, 307959.2999999970197678 208821.0000000000000000, 307968.7999999970197678 208862.2000000030093361, 307963.0000000000000000 208894.2000000030093361, 307961.4000000060186721 208904.2999999969906639, 307969.2999999970197678 208938.5000000000000000, 307969.0000000000000000 208983.9000000059895683, 307981.0000000000000000 209034.2000000030093361, 307976.5999999939813279 209085.7000000030093361, 307971.5000000000000000 209104.0999999940104317, 307960.2999999970197678 209137.7999999969906639, 307945.5999999939813279 209178.9000000059895683, 307943.0999999939813279 209227.7999999969906639, 307923.5999999939813279 209246.0999999940104317, 307922.4000000060186721 209272.5999999940104317, 307929.4000000060186721 209300.9000000059895683, 307925.7000000029802322 209330.9000000059895683, 307916.2000000029802322 209341.0999999940104317, 307906.5999999939813279 209363.2000000030093361, 307909.5999999939813279 209388.5999999940104317, 307882.4000000060186721 209437.4000000059895683, 307870.0999999939813279 209482.0000000000000000, 307876.5000000000000000 209511.7999999969906639, 307896.7999999970197678 209538.0000000000000000, 307909.5999999939813279 209546.7999999969906639, 307912.7000000029802322 209555.7000000030093361, 307904.0000000000000000 209564.2999999969906639, 307883.4000000060186721 209604.5000000000000000, 307880.7999999970197678 209646.0000000000000000, 307894.0000000000000000 209681.7999999969906639, 307889.7000000029802322 209696.2999999969906639, 307872.7000000029802322 209713.0000000000000000, 307862.7000000029802322 209731.5999999940104317, 307856.2999999970197678 209766.2000000030093361, 307844.2999999970197678 209789.2000000030093361, 307845.9000000060186721 209828.7000000030093361, 307842.7999999970197678 209846.7000000030093361, 307853.5000000000000000 209897.0000000000000000, 307887.7999999970197678 209958.2999999969906639, 307923.2000000029802322 210024.5999999940104317, 307926.7000000029802322 210050.0000000000000000, 307925.2000000029802322 210097.4000000059895683, 307927.0000000000000000 210155.2000000030093361, 307928.2000000029802322 210170.2999999969906639, 307920.0000000000000000 210276.5999999940104317, 307913.9000000060186721 210324.0999999940104317, 307908.7000000029802322 210337.2000000030093361, 307887.7000000029802322 210355.4000000059895683, 307868.7999999970197678 210363.2000000030093361, 307853.7999999970197678 210373.4000000059895683, 307836.5999999939813279 210380.7000000030093361, 307823.4000000060186721 210395.4000000059895683, 307836.5000000000000000 210423.0999999940104317, 307864.5000000000000000 210463.5000000000000000, 307875.5999999939813279 210482.9000000059895683, 307880.5999999939813279 210504.7999999969906639, 307888.4000000060186721 210530.0999999940104317, 307886.5000000000000000 210571.0000000000000000, 307883.0999999939813279 210589.5000000000000000, 307878.2999999970197678 210627.0999999940104317, 307861.4000000060186721 210676.2000000030093361, 307858.0999999939813279 210693.2000000030093361, 307879.2000000029802322 210733.7999999969906639, 307893.0000000000000000 210780.0000000000000000, 307893.5999999939813279 210796.0000000000000000, 307886.7000000029802322 210827.4000000059895683, 307899.5000000000000000 210857.7000000030093361, 307930.0000000000000000 210886.5999999940104317, 307939.0999999939813279 210897.5000000000000000, 307951.2000000029802322 210897.7999999969906639, 307962.7999999970197678 210919.5999999940104317, 307975.0999999939813279 210961.2999999969906639, 307983.9000000060186721 210977.5999999940104317, 307998.4000000060186721 211017.2999999969906639, 308001.7000000029802322 211048.7000000030093361, 308006.9000000060186721 211062.0999999940104317, 308018.4000000060186721 211098.9000000059895683, 308038.7999999970197678 211138.4000000059895683, 308064.9000000060186721 211169.0000000000000000, 308079.5000000000000000 211183.2000000030093361, 308101.7000000029802322 211219.7999999969906639, 308119.2999999970197678 211242.4000000059895683, 308132.0999999939813279 211274.0999999940104317, 308143.2999999970197678 211293.5000000000000000, 308140.2000000029802322 211321.9000000059895683, 308127.0000000000000000 211344.0999999940104317, 308114.7999999970197678 211385.2000000030093361, 308101.7000000029802322 211417.7999999969906639, 308085.0999999939813279 211448.0000000000000000, 308081.5999999939813279 211461.5000000000000000, 308066.7999999970197678 211479.2999999969906639, 308060.7999999970197678 211506.7999999969906639, 308054.5000000000000000 211522.2999999969906639, 308040.5999999939813279 211559.0000000000000000, 308037.2999999970197678 211567.5000000000000000, 308028.5000000000000000 211587.2000000030093361, 308021.0999999939813279 211597.7999999969906639, 308018.2999999970197678 211610.7999999969906639, 308010.7999999970197678 211628.7999999969906639, 308005.0999999939813279 211647.2999999969906639, 307992.9000000060186721 211676.5999999940104317, 307981.7999999970197678 211700.2000000030093361, 307957.9000000060186721 211763.0000000000000000, 307936.2000000029802322 211813.5999999940104317, 307926.7999999970197678 211834.2000000030093361, 307918.2999999970197678 211858.4000000059895683, 307902.0999999939813279 211872.0999999940104317, 307901.5999999939813279 211882.5999999940104317, 307895.9000000060186721 211898.0999999940104317, 307852.4000000060186721 211942.7999999969906639, 307829.2000000029802322 211987.4000000059895683, 307827.5000000000000000 212029.9000000059895683, 307806.9000000060186721 212072.0999999940104317, 307799.9000000060186721 212093.7000000030093361, 307790.5999999939813279 212111.4000000059895683, 307775.0999999939813279 212145.5000000000000000, 307763.2999999970197678 212164.0999999940104317, 307751.5999999939813279 212190.4000000059895683, 307726.7999999970197678 212237.5999999940104317, 307703.0999999939813279 212288.7999999969906639, 307707.9000000060186721 212312.7999999969906639, 307702.0000000000000000 212325.4000000059895683, 307658.2999999970197678 212380.9000000059895683, 307644.5999999939813279 212400.0999999940104317, 307620.4000000060186721 212413.9000000059895683, 307584.2999999970197678 212426.9000000059895683, 307574.7999999970197678 212442.0999999940104317, 307569.7999999970197678 212451.7000000030093361, 307564.5000000000000000 212463.7000000030093361, 307563.4000000060186721 212473.2000000030093361, 307549.2000000029802322 212485.4000000059895683, 307498.5000000000000000 212569.0999999940104317, 307486.9000000060186721 212585.5999999940104317, 307481.0999999939813279 212620.7000000030093361, 307471.0999999939813279 212653.7999999969906639, 307445.5000000000000000 212694.0999999940104317, 307429.7999999970197678 212749.2999999969906639, 307421.0999999939813279 212814.2000000030093361, 307409.5999999939813279 212842.9000000059895683, 307406.5000000000000000 212869.9000000059895683, 307398.0000000000000000 212906.0000000000000000, 307390.0000000000000000 212918.5000000000000000, 307391.2999999970197678 212956.9000000059895683, 307391.9000000060186721 212994.7999999969906639, 307376.4000000060186721 213015.5999999940104317, 307366.0999999939813279 213044.0999999940104317, 307343.4000000060186721 213084.9000000059895683, 307302.5999999939813279 213137.5000000000000000, 307280.5000000000000000 213158.7999999969906639, 307244.7000000029802322 213212.2999999969906639, 307228.7000000029802322 213238.9000000059895683, 307182.5000000000000000 213304.0000000000000000, 307161.9000000060186721 213326.7999999969906639, 307154.5999999939813279 213364.7999999969906639, 307146.0999999939813279 213381.5000000000000000, 307130.7999999970197678 213396.7000000030093361, 307118.5999999939813279 213416.7999999969906639, 307096.2000000029802322 213430.7000000030093361, 307076.2000000029802322 213432.0000000000000000, 307068.5999999939813279 213439.5999999940104317, 307049.4000000060186721 213477.2999999969906639, 307031.5000000000000000 213507.5999999940104317, 307019.7999999970197678 213529.7000000030093361, 307002.5000000000000000 213547.4000000059895683, 306939.2999999970197678 213650.7000000030093361, 306895.9000000060186721 213709.2000000030093361, 306879.0000000000000000 213749.9000000059895683, 306860.7999999970197678 213813.5999999940104317, 306844.2000000029802322 213874.2000000030093361, 306833.7999999970197678 213897.7999999969906639, 306777.9000000060186721 213903.2000000030093361, 306750.7999999970197678 214018.4000000059895683, 306747.4000000060186721 214036.9000000059895683, 306715.7000000029802322 214108.7999999969906639, 306705.0999999939813279 214125.4000000059895683, 306685.7999999970197678 214166.7000000030093361, 306628.5999999939813279 214263.9000000059895683, 306604.5999999939813279 214313.2000000030093361, 306585.4000000060186721 214347.9000000059895683, 306553.9000000060186721 214393.2999999969906639, 306501.9000000060186721 214469.4000000059895683, 306470.2999999970197678 214512.2999999969906639, 306444.5000000000000000 214548.7000000030093361, 306393.0999999939813279 214614.7999999969906639, 306306.5999999939813279 214750.5000000000000000, 306228.5999999939813279 214864.5000000000000000, 306122.0000000000000000 215018.9000000059895683, 306068.2000000029802322 215095.0999999940104317, 306000.9000000060186721 215204.2999999969906639, 305992.7000000029802322 215223.0000000000000000, 305969.7999999970197678 215274.2000000030093361, 305936.2999999970197678 215330.7000000030093361, 305919.9000000060186721 215359.4000000059895683, 305881.9000000060186721 215424.4000000059895683, 305849.2000000029802322 215493.7000000030093361, 305808.5999999939813279 215566.7000000030093361, 305796.5999999939813279 215592.2999999969906639, 305775.7999999970197678 215628.2000000030093361, 305738.7000000029802322 215697.0999999940104317, 305627.2999999970197678 215880.9000000059895683, 305598.7999999970197678 215935.2999999969906639, 305571.7000000029802322 215987.0999999940104317, 305534.5999999939813279 216040.7000000030093361, 305522.5000000000000000 216057.2999999969906639, 305463.5999999939813279 216155.0999999940104317, 305429.7000000029802322 216209.0000000000000000, 305358.0999999939813279 216318.9000000059895683, 305314.9000000060186721 216390.0000000000000000, 305218.0999999939813279 216534.5999999940104317, 305191.0000000000000000 216584.0000000000000000, 305146.5000000000000000 216663.0000000000000000, 305100.5000000000000000 216727.2000000030093361, 305068.4000000060186721 216793.9000000059895683, 305030.0000000000000000 216862.9000000059895683, 304980.4000000060186721 216942.5999999940104317, 304943.2999999970197678 216992.5000000000000000, 304866.2999999970197678 217124.0000000000000000, 304846.0000000000000000 217160.7999999969906639, 304817.2000000029802322 217203.5999999940104317, 304769.5000000000000000 217297.7000000030093361, 304749.2999999970197678 217338.5000000000000000, 304723.2999999970197678 217393.2999999969906639, 304681.0999999939813279 217467.2999999969906639, 304649.7999999970197678 217538.5999999940104317, 304590.2999999970197678 217662.7999999969906639, 304555.0000000000000000 217746.7000000030093361, 304495.2000000029802322 217838.5000000000000000, 304409.5000000000000000 217989.0000000000000000, 304368.2999999970197678 218042.5999999940104317, 304280.7999999970197678 218211.0999999940104317, 304251.0000000000000000 218276.5000000000000000, 304207.0000000000000000 218355.5000000000000000, 304182.4000000060186721 218412.7999999969906639, 304162.0000000000000000 218462.5000000000000000, 304132.0999999939813279 218530.2999999969906639, 304103.5999999939813279 218614.2000000030093361, 304054.4000000060186721 218721.7999999969906639, 304030.7999999970197678 218797.5000000000000000, 304017.7000000029802322 218842.0999999940104317, 303987.2000000029802322 218927.7999999969906639, 303956.7999999970197678 219045.0999999940104317, 303947.2000000029802322 219105.5999999940104317, 303931.0000000000000000 219169.2999999969906639, 303924.5000000000000000 219261.2000000030093361, 303881.4000000060186721 219431.5999999940104317, 303864.0999999939813279 219476.7999999969906639, 303856.0000000000000000 219533.2000000030093361, 303839.2999999970197678 219688.2000000030093361, 303824.2999999970197678 219766.2000000030093361, 303819.2000000029802322 219807.7999999969906639, 303803.2000000029802322 219863.4000000059895683, 303782.7999999970197678 220000.5000000000000000, 303757.0999999939813279 220131.5999999940104317, 303739.9000000060186721 220203.7000000030093361, 303692.0000000000000000 220368.0999999940104317, 303678.2000000029802322 220431.2999999969906639, 303636.4000000060186721 220547.5999999940104317, 303617.0999999939813279 220621.2999999969906639, 303599.4000000060186721 220689.0000000000000000, 303574.5000000000000000 220780.2000000030093361, 303555.2000000029802322 220857.4000000059895683, 303543.5999999939813279 220910.0000000000000000, 303497.7999999970197678 221055.4000000059895683, 303466.0999999939813279 221140.2000000030093361, 303432.2000000029802322 221243.0999999940104317, 303407.7999999970197678 221300.4000000059895683, 303377.5999999939813279 221436.5999999940104317, 303362.7999999970197678 221508.5999999940104317, 303342.2000000029802322 221596.7999999969906639, 303330.5000000000000000 221664.9000000059895683, 303305.9000000060186721 221775.5000000000000000, 303295.5000000000000000 221890.9000000059895683, 303273.7999999970197678 222024.9000000059895683, 303264.0000000000000000 222176.4000000059895683, 303260.4000000060186721 222250.7999999969906639, 303247.5000000000000000 222320.7999999969906639, 303245.7999999970197678 222443.0999999940104317, 303247.4000000060186721 222456.5000000000000000, 303248.2999999970197678 222483.0000000000000000, 307493.0999999939813279 222616.4000000059895683, 307496.0000000000000000 222606.9000000059895683, 308026.2000000029802322 222622.4000000059895683, 308050.7000000029802322 222623.5000000000000000, 312441.7999999970197678 221993.7000000030093361, 311818.2000000029802322 217599.4000000059895683, 317924.5999999939813279 218352.2999999969906639, 318638.9000000060186721 218380.2999999969906639, 318654.0000000000000000 218373.0999999940104317, 325105.7999999970197678 218717.7000000030093361, 328449.5999999939813279 222082.2999999969906639, 329488.7999999970197678 222431.9000000059895683, 333400.7000000029802322 223759.7999999969906639, 334532.5000000000000000 223883.7999999969906639, 336703.7000000029802322 223376.4000000059895683, 337699.0000000000000000 222898.2000000030093361, 338396.0999999939813279 223092.5999999940104317, 338259.9000000060186721 225268.5000000000000000, 338267.7000000029802322 225279.4000000059895683, 338279.5000000000000000 225283.5999999940104317, 338295.7000000029802322 225313.2999999969906639, 338327.5000000000000000 225357.5999999940104317, 338350.0999999939813279 225389.2000000030093361, 338365.5999999939813279 225402.9000000059895683, 338375.9000000060186721 225414.7000000030093361, 338410.0000000000000000 225468.0999999940104317, 338458.7999999970197678 225516.2000000030093361, 338491.9000000060186721 225553.5999999940104317, 338501.9000000060186721 225572.4000000059895683, 338520.5999999939813279 225595.5000000000000000, 338541.2999999970197678 225624.0999999940104317, 338561.0999999939813279 225663.2000000030093361, 338587.0000000000000000 225723.5999999940104317, 338605.7999999970197678 225770.2000000030093361, 338613.7000000029802322 225810.5000000000000000, 338620.0000000000000000 225825.4000000059895683, 338632.9000000060186721 225931.9000000059895683, 338637.9000000060186721 226013.0999999940104317, 338643.5000000000000000 226035.9000000059895683, 338652.2000000029802322 226101.5999999940104317, 338660.2999999970197678 226133.9000000059895683, 338667.5000000000000000 226148.7999999969906639, 338676.4000000060186721 226187.0999999940104317, 338683.4000000060186721 226216.2999999969906639, 338701.9000000060186721 226259.5000000000000000, 338733.7999999970197678 226316.2999999969906639, 338757.7999999970197678 226356.2999999969906639, 338796.7000000029802322 226397.5999999940104317, 338821.5000000000000000 226421.5999999940104317, 338833.9000000060186721 226438.9000000059895683, 338924.2000000029802322 226569.5999999940104317, 338939.2000000029802322 226585.4000000059895683, 339013.7000000029802322 226672.5000000000000000, 339080.2999999970197678 226723.7999999969906639, 339117.9000000060186721 226742.0999999940104317, 339142.9000000060186721 226748.7999999969906639, 339162.0000000000000000 226752.4000000059895683, 339186.7999999970197678 226762.0000000000000000, 339227.0000000000000000 226762.9000000059895683, 339270.2000000029802322 226751.0999999940104317, 339310.9000000060186721 226731.0999999940104317, 339358.2999999970197678 226684.0000000000000000, 339383.0000000000000000 226644.5999999940104317, 339411.7999999970197678 226599.2000000030093361, 339453.2000000029802322 226553.2999999969906639, 339504.4000000060186721 226488.0999999940104317, 339556.7000000029802322 226440.4000000059895683, 339630.7999999970197678 226385.2999999969906639, 339674.7999999970197678 226360.5999999940104317, 339688.7000000029802322 226357.9000000059895683, 339717.4000000060186721 226351.0000000000000000, 339730.2000000029802322 226344.7999999969906639, 339755.5000000000000000 226347.4000000059895683, 339782.0999999939813279 226341.5000000000000000, 339810.7000000029802322 226349.5000000000000000, 339824.5999999939813279 226348.7999999969906639, 339865.5000000000000000 226372.5000000000000000, 339877.5999999939813279 226382.7999999969906639, 339894.2999999970197678 226395.0000000000000000, 339911.5000000000000000 226415.2000000030093361, 339926.2000000029802322 226446.9000000059895683, 339935.0999999939813279 226499.7000000030093361, 339932.0999999939813279 226535.5999999940104317, 339915.7999999970197678 226573.7999999969906639, 339874.0000000000000000 226631.2999999969906639, 339829.2999999970197678 226673.5000000000000000, 339802.2999999970197678 226708.7000000030093361, 339738.4000000060186721 226774.0999999940104317, 339695.4000000060186721 226836.2000000030093361, 339612.7999999970197678 226943.2999999969906639, 339587.0000000000000000 226980.0999999940104317, 339535.9000000060186721 227041.7999999969906639, 339499.2999999970197678 227077.7000000030093361, 339456.7000000029802322 227151.2999999969906639, 339447.2000000029802322 227171.7999999969906639, 339438.7000000029802322 227195.9000000059895683, 339429.5000000000000000 227236.4000000059895683, 339438.5000000000000000 227325.5999999940104317, 339456.0999999939813279 227395.5999999940104317, 339475.0999999939813279 227451.2000000030093361, 339496.0999999939813279 227487.7999999969906639, 339505.7999999970197678 227513.0000000000000000, 339559.4000000060186721 227573.0000000000000000, 339595.0999999939813279 227605.4000000059895683, 339663.0999999939813279 227664.2000000030093361, 339720.2999999970197678 227700.7000000030093361, 339756.7999999970197678 227717.0000000000000000, 339772.7999999970197678 227721.7999999969906639, 339793.0999999939813279 227738.0000000000000000, 339866.5999999939813279 227760.5999999940104317, 339893.0999999939813279 227762.7999999969906639, 339932.4000000060186721 227768.2000000030093361, 339980.9000000060186721 227781.2999999969906639, 339999.7999999970197678 227794.0000000000000000, 340042.2000000029802322 227807.7999999969906639, 340082.4000000060186721 227833.5999999940104317, 340098.9000000060186721 227844.2000000030093361, 340117.9000000060186721 227872.9000000059895683, 340144.9000000060186721 227925.2999999969906639, 340170.2999999970197678 227994.7000000030093361, 340182.7999999970197678 228047.5000000000000000, 340195.5000000000000000 228118.5000000000000000, 340200.9000000060186721 228144.4000000059895683, 340200.2000000029802322 228156.2999999969906639, 340206.9000000060186721 228182.2000000030093361, 340209.2000000029802322 228222.5000000000000000, 340222.5000000000000000 228268.2999999969906639, 340236.2999999970197678 228320.7999999969906639, 340236.9000000060186721 228335.7999999969906639, 340235.5000000000000000 228359.7999999969906639, 340234.5000000000000000 228382.7999999969906639, 340256.9000000060186721 228463.7000000030093361, 346105.4000000060186721 229356.2000000030093361, 346132.5000000000000000 229361.2999999969906639, 346156.5000000000000000 229366.9000000059895683, 346255.2999999970197678 229377.7999999969906639, 346302.2999999970197678 229388.5000000000000000, 346347.2000000029802322 229389.2000000030093361, 346376.5999999939813279 229390.2999999969906639, 346482.5000000000000000 229402.0000000000000000, 346542.2999999970197678 229410.0999999940104317, 346737.5000000000000000 229441.7999999969906639, 346783.0000000000000000 229445.7000000030093361, 346822.2999999970197678 229453.4000000059895683, 346873.4000000060186721 229468.5999999940104317, 346965.2999999970197678 229481.0999999940104317, 347007.5999999939813279 229482.5000000000000000, 347127.5000000000000000 229501.4000000059895683, 347233.2000000029802322 229516.7000000030093361, 347282.7000000029802322 229526.9000000059895683, 347319.0999999939813279 229531.7999999969906639, 347381.5000000000000000 229548.2999999969906639, 347461.9000000060186721 229562.4000000059895683, 347551.0999999939813279 229573.0000000000000000, 347632.5999999939813279 229580.0999999940104317, 347725.7000000029802322 229593.7000000030093361, 347866.7999999970197678 229608.4000000059895683, 347889.5000000000000000 229613.9000000059895683, 347991.0000000000000000 229629.2999999969906639, 348037.0000000000000000 229636.0999999940104317, 348078.7999999970197678 229643.2999999969906639, 348129.2000000029802322 229647.5000000000000000, 348184.7999999970197678 229653.2000000030093361, 348258.5999999939813279 229659.0000000000000000, 348357.5000000000000000 229677.7999999969906639, 348429.0000000000000000 229689.5999999940104317, 348475.2000000029802322 229694.4000000059895683, 348493.2000000029802322 229693.5000000000000000, 348542.2000000029802322 229700.7999999969906639, 348615.9000000060186721 229705.0999999940104317, 348707.5000000000000000 229718.0000000000000000, 348757.0999999939813279 229722.7999999969906639, 348909.9000000060186721 229746.2000000030093361, 349000.5000000000000000 229753.2999999969906639, 349113.5000000000000000 229768.9000000059895683, 349212.5000000000000000 229784.2999999969906639, 349276.4000000060186721 229794.7000000030093361, 349386.2999999970197678 229819.5000000000000000, 349515.2999999970197678 229845.7999999969906639, 349610.5999999939813279 229860.7000000030093361, 349692.7999999970197678 229864.2999999969906639, 349756.7999999970197678 229870.4000000059895683, 349816.2999999970197678 229882.4000000059895683, 349865.0999999939813279 229894.5999999940104317, 349920.0999999939813279 229906.5999999940104317, 350055.5999999939813279 229936.7999999969906639, 350098.7999999970197678 229940.7000000030093361, 350203.9000000060186721 229959.5000000000000000, 350425.5999999939813279 229997.7999999969906639, 350458.5999999939813279 230001.2000000030093361, 350483.4000000060186721 230009.2999999969906639, 350550.2999999970197678 230016.7999999969906639, 350602.2999999970197678 230025.4000000059895683, 350649.0999999939813279 230030.0999999940104317, 350745.5999999939813279 230047.0000000000000000, 350769.5999999939813279 230049.5999999940104317, 350812.0000000000000000 230056.5000000000000000, 350850.0999999939813279 230061.7999999969906639, 350899.2000000029802322 230069.5000000000000000, 350935.2999999970197678 230067.9000000059895683, 351026.0999999939813279 230082.0000000000000000, 351084.2000000029802322 230088.9000000059895683, 351122.9000000060186721 230091.9000000059895683, 351147.9000000060186721 230097.0000000000000000, 351151.2000000029802322 230031.5000000000000000, 353161.4000000060186721 230412.2999999969906639, 353177.0000000000000000 230413.5999999940104317, 362053.7000000029802322 231736.7000000030093361, 362062.2000000029802322 231744.0000000000000000))) -Input (WKB): 0106000000010000000103000000010000002D0E000000CDCCCC3819164100000000004A0C410000000070191641FF6566662E4A0C4100333333291A1641000000004C4A0C41000000002C1B164101343333BF4A0C4100000000081C164100000000004B0C4100CDCCCCE01C1641019A9999554B0C410000000054201641000000006C4C0C41003333336F221641FF656666264D0C4100CDCCCC52241641FF656666FE4D0C41FF656666D4241641FF656666124E0C4100CDCCCC7C25164100000000204E0C41003333338326164101343333874E0C41019A9999F727164100000000F84E0C4100CDCCCC842A1641FF656666CA4F0C41019A9999BF2B164100000000F04F0C41019A9999172D16410000000070500C41FF656666F02F1641000000008C510C4100333333B9311641019A999925520C4100CDCCCCBA3216410000000060520C4100000000A8331641FFCBCCCCA8520C41019A9999E5341641FF656666EE520C41FF656666263616410000000084530C41FF6566669236164100000000A0530C4100333333BB371641FF656666E2530C4100CDCCCC32381641FF6566660E540C4100CDCCCCCA381641FFCBCCCC50540C4100333333153A1641FF6566669E540C41FF656666C23A1641FFCBCCCC08550C4100333333DF3B16410000000040550C4100CDCCCC723C1641FF65666686550C4100CDCCCCAC3C1641FFCBCCCC8C550C4100CDCCCC9C3D1641FFCBCCCCFC550C41003333330F3F16410000000060560C4100333333FB401641FFCBCCCCFC560C4100333333DB411641FFCBCCCC54570C41019A9999A3421641019A9999B5570C41003333335F441641000000004C580C41019A9999A34516410000000098580C4100CDCCCC9C461641FFCBCCCCE8580C4100333333154816410000000084590C41FF6566661C4A164101343333FF590C41019A99993B4B1641FF656666325A0C4100CDCCCC3E4D1641FFCBCCCCDC5A0C4100333333554F164101343333A75B0C41019A999979501641FFCBCCCC345C0C41FF6566667C521641FFCBCCCCAC5C0C4100000000AC531641FF656666025D0C41019A9999BD551641FFCBCCCCCC5D0C4100000000EE561641FF656666065E0C41FF656666A0571641019A9999395E0C4100CDCCCCC258164101343333BB5E0C41FF6566665E5B1641019A9999D55F0C4100CDCCCCB45D1641019A999949600C410033333383601641FF65666632610C4100CDCCCC1C611641019A999951610C4100CDCCCCCC61164101343333B3610C41FF6566665C631641019A999955620C41019A99993B641641FF6566668E620C41FF656666EC65164100000000FC620C41FF656666C0671641FFCBCCCC98630C41003333334569164101343333FB630C4100CDCCCCD86916410134333333640C41003333338F6B164100000000A8640C4100333333A96E1641FF656666AE650C41FF6566660E711641019A9999A5660C41FF65666672721641FF6566661E670C41000000000C751641FFCBCCCCA8670C41FF656666EE75164100000000E8670C41FF656666DC761641FFCBCCCCF4670C41000000001C781641FF65666652680C41003333337379164101343333FB680C41FF656666E27A1641013433338B690C4100333333F37B1641FF656666166A0C4100333333FD7C1641FFCBCCCC4C6A0C41FF656666007E1641FFCBCCCCC06A0C4100000000807E1641FFCBCCCCDC6A0C4100333333677F1641FFCBCCCC286B0C410033333353801641FFCBCCCC686B0C41003333330D81164101343333D36B0C41000000003A821641FFCBCCCC206C0C41FF65666602831641FF6566667E6C0C41FF6566662A84164100000000E46C0C410000000082851641FFCBCCCC486D0C41FF6566660487164100000000E06D0C4100000000B2891641019A9999A56E0C4100CDCCCC9A8A1641019A9999196F0C41FF656666968C1641FFCBCCCC8C6F0C4100CDCCCC928D1641FFCBCCCCB06F0C4100CDCCCC988E16410000000004700C41FF656666408F1641FF6566663E700C4100CDCCCCE08F1641019A999991700C4100CDCCCCD69016410000000050710C4100CDCCCCC6911641FFCBCCCCC0710C41019A99994D9316410000000000720C4100000000CC95164101343333B7720C41FF656666149716410000000000730C41FF65666660981641FFCBCCCCAC730C41FF656666E6981641FFCBCCCCB8730C41019A9999039D1641FF6566661A750C41019A9999AD9D16410000000038750C4100CDCCCCA69E16410000000078750C41003333337D9F1641FFCBCCCCD4750C41FF6566669CA21641FF656666D6760C4100CDCCCCD2A31641FFCBCCCCF0760C41FF656666D0A5164100000000A8770C4100CDCCCCC2A616410000000038780C41FF656666AAA716410000000088780C410033333307A81641019A999969780C4100333333B5A816410000000084780C41019A999967A91641019A9999DD780C410033333387AB16410000000058790C41000000007EAC164101343333E3790C410033333381AD1641013433335F7A0C41FF656666D8AE164101343333D37A0C41FF6566660CB01641FFCBCCCC347B0C4100CDCCCCB4B1164101343333A37B0C410033333339B31641FF656666367C0C41FF65666650B41641019A9999817C0C4100CDCCCC22B51641FF656666B27C0C41FF656666FAB61641FF656666327D0C41000000003EB71641FFCBCCCC1C7D0C41FF656666A4B71641FFCBCCCC347D0C4100333333FDB91641FFCBCCCC107E0C41000000000CBB1641000000004C7E0C410033333353BC1641019A9999C17E0C4100CDCCCCEABC1641FFCBCCCCD07E0C41003333333DBD1641019A9999F97E0C4100333333AFBF1641FFCBCCCCBC7F0C41019A9999B3C01641FFCBCCCC00800C41FF65666626C11641FFCBCCCC3C800C41019A9999ABC116410000000060800C41019A99997FC21641FFCBCCCCD0800C41003333337FC31641FFCBCCCC10810C41003333339FC3164100000000E4800C41FF656666E8C31641019A9999FD800C4100CDCCCC60C41641FFCBCCCC3C810C410000000052C51641019A99997D810C4100000000EEC5164100000000A4810C41019A999937C61641019A9999CD810C41003333338BC716410134333317820C41FF6566662AC91641019A999999820C41019A99996FCA1641FF65666636830C4100000000FECB1641FFCBCCCCB0830C41FF6566668ECC1641FFCBCCCCD0830C4100CDCCCCFECC1641FFCBCCCCD8830C41019A9999B3CD1641FF656666DA830C4100000000F6CD164100000000F0830C4100CDCCCC28CE164101343333EF830C410033333307CE1641FFCBCCCC70830C4100333333DFCD1641019A999911830C41FF65666640CD1641019A999939800C41019A9999EBCC1641FFCBCCCC707E0C41FF656666B4CC164100000000B87D0C41003333330BCC1641FF6566666E7B0C4100333333BDCB1641019A9999717A0C4100CDCCCC50CB1641FF6566665E790C41FF65666608CB1641FFCBCCCCC0780C4100CDCCCCCACA16410000000020780C41019A999975CA1641FF6566661A770C41FF6566661CCA1641FF65666666760C41FF65666656C91641019A999945740C410000000036C9164100000000B4730C4100333333C9C81641FFCBCCCC24720C410033333355C81641FFCBCCCCB4700C41FF65666690C71641019A9999E96D0C41003333331BC71641019A9999AD6C0C41019A999965C61641019A9999856A0C41019A9999B3C516410000000040680C41019A999989C51641FF65666642670C41FF65666656C51641FFCBCCCCA0660C41019A9999D9C41641FF656666AA640C41019A999993C41641019A9999D1620C41019A999951C416410000000040620C41000000002AC41641FF656666D2610C410033333315C41641013433339F610C41019A9999CFC31641FF656666BE600C41000000009AC316410134333323600C41FF6566668CC31641FFCBCCCCA05F0C4100CDCCCCF4C21641000000004C5D0C410000000090C2164101343333335C0C4100CDCCCC56C21641019A9999395B0C4100CDCCCCC6C1164100000000A8590C41003333330DC11641FF6566666E570C41019A999973C01641019A999901550C4100CDCCCCFCBF1641FF656666FA530C41019A99999BBF1641019A999901530C410000000052BF1641019A999925520C41019A99994FBF1641019A9999A5510C410000000020BF16410000000080500C41FF656666CABE164100000000684F0C41FF656666BEBE164100000000D04E0C410033333357BE1641FFCBCCCC384D0C410033333307BE1641FFCBCCCC144C0C4100333333B5BD164100000000104B0C41000000006CBD164101343333FB490C41019A999915BD1641019A9999D5480C41019A9999E3BC1641FFCBCCCCE8470C41019A999947BC16410134333383450C4100333333F3BB16410134333357440C41FF656666CEBB1641FFCBCCCC48430C41000000009CBB16410134333373420C410033333371BB1641019A99995D410C41000000003CBB164100000000DC3F0C4100000000AABA1641FF656666223E0C41000000006CBA1641000000005C3D0C41000000000CBA1641FFCBCCCC843C0C41FF656666E0B91641FF656666B23B0C41003333334FB916410000000070390C41FF65666610B9164101343333D7380C4100000000CAB81641FF6566664A370C41FF65666690B81641FFCBCCCC84360C410033333309B81641FF6566665A350C410033333389B71641013433330B340C41019A9999A1B61641FFCBCCCC78310C410033333343B616410000000054300C41FF65666686B51641FFCBCCCCCC2D0C410000000058B51641FF656666122D0C4100CDCCCCFEB41641FF656666022C0C4100CDCCCCBAB41641FFCBCCCC7C2A0C41019A999959B41641019A999931290C4100333333BBB316410134333323270C4100CDCCCC6EB316410134333397250C41019A9999CBB21641FF6566667A230C41019A99998BB2164100000000F4220C41019A999955B21641019A99998D230C410000000048B2164101343333EB220C41FF65666618B21641FFCBCCCCB8210C41FF656666D0B11641000000003C200C410033333395B11641FF656666361F0C41003333332FB1164100000000641D0C41003333339DB01641019A9999B51B0C41000000004EB01641019A99992D1A0C4100CDCCCCCCAF1641FF656666DE180C41003333337DAF1641019A999969170C41FF65666622AF1641FFCBCCCC7C160C41019A999995AE1641013433333B150C410033333301AE1641019A99991D130C41FF65666678AD164100000000C4100C41019A99991BAD1641013433335B0F0C4100333333C3AC1641FF656666760E0C41FF65666676AC1641FF6566664E0D0C41000000004EAC164100000000900C0C41019A999915AC1641019A9999C10B0C4100CDCCCCC2AB1641FF656666560A0C410033333323AB1641FFCBCCCCE8070C41019A9999B1AA1641FFCBCCCC6C060C41019A999955AA1641FFCBCCCC54050C4100333333C1A916410134333343030C4100CDCCCC80A91641FF65666672020C41019A99992BA91641FFCBCCCCC0010C41FF656666D4A81641FFCBCCCCA0000C410000000062A81641FFCBCCCC70FF0B4100000000C6A716410000000070FD0B410033333345A71641019A9999BDFB0B41019A9999E9A51641019A999945F50B41000000004EA516410134333337F30B4100333333F3A416410000000088F10B4100000000BCA41641019A9999D1F00B41FF656666E8A3164101343333B3ED0B41003333339DA31641FF656666D6EC0B410033333311A31641013433331BEB0B410000000060A2164101343333B7E80B4100CDCCCCB4A11641FF65666672E60B41000000008AA016410134333377E10B4100CDCCCCD49F1641FF6566661ADF0B41000000007E9F1641FF65666662DD0B41000000002C9F1641FF65666626DC0B4100333333479E1641FFCBCCCCACD80B41019A9999F39D164101343333C3D70B41FF656666969D1641013433337FD60B41003333333D9D1641FF656666CAD50B4100CDCCCCD49C1641FF656666D6D40B41003333330F9C1641FF65666652D30B41003333337F9B1641FFCBCCCC48D10B41FF6566669A9A1641019A999989CE0B41019A9999319A1641FF6566665ACD0B41FF656666FE981641FF656666F6C80B41000000004C981641019A999969C70B41003333332D971641019A999939C30B41000000004C96164101343333CFC00B4100000000A6951641019A99996DBE0B41000000009A941641000000001CBB0B41003333334B94164100000000D4B90B4100333333939316410000000054B70B410033333353931641FF65666676B60B4100333333B792164100000000D4B40B41003333337392164100000000A8B30B41019A9999D9911641FF6566665EB10B41FF65666688911641019A999919B00B41FF6566662C911641019A9999F1AE0B41FF656666C4901641019A9999E9AD0B41000000005A901641019A999985AC0B41019A9999A98F1641FFCBCCCCE0A90B4100CDCCCCF08E1641FFCBCCCC90A70B4100000000AA8E16410000000074A60B41019A9999158E1641019A9999B9A40B4100000000BC8D1641019A9999E9A20B4100333333138D1641FFCBCCCCB8A00B41FF6566666E8C1641FFCBCCCCDC9D0B41019A9999F38B1641FF656666BA9A0B41019A99995D8B1641FFCBCCCC78980B4100333333278B16410000000040970B41019A9999938A1641FF6566668E940B41019A9999338A1641FF6566665E930B4100333333AB891641000000006C910B41FF65666628891641FFCBCCCCF48F0B41019A99999F881641013433335F8E0B4100CDCCCC46881641FF656666368D0B4100333333C387164101343333EF8B0B41000000006E871641FF6566664E8B0B41FF65666698851641FF6566661A850B4100CDCCCC00851641FFCBCCCC74820B4100333333EB831641FFCBCCCC447E0B4100333333B3821641013433330F780B4100CDCCCC0E821641FF6566665A750B41019A99999781164101343333DF720B41019A9999F580164101343333EF6F0B41FF6566669C80164101343333FB6D0B41FF656666F47F1641FF6566669A6B0B4100CDCCCCA27F1641FF656666AE690B4100333333437F1641FF6566666A680B41000000008E7E1641FF65666606650B4100000000407E1641FF656666FE630B41FF656666527D16410000000070600B4100CDCCCC247D1641019A9999515F0B41FF656666F47C164100000000705E0B41019A9999517C164101343333635C0B41000000000C7C164101343333175A0B4100333333737B1641019A999921570B41FF656666127B1641FF656666EA540B41FF656666AC7A1641FF6566664A530B41FF656666647A1641019A999959520B4100CDCCCCE67916410134333323500B41003333337779164100000000C04E0B41FF656666EC781641FF6566664E4C0B41FF6566668E781641FF656666BE4A0B41003333332F78164101343333A3480B41FF656666BC77164100000000FC460B41019A99994F771641FFCBCCCC54440B4100000000E0761641019A99999D420B4100CDCCCC72761641FF65666686400B41000000002C761641019A99990D3F0B4100333333B775164101343333EF3C0B41019A99996D751641FF656666F63B0B41FF656666F074164101343333833A0B41003333337D741641FFCBCCCC14380B41FF656666B073164101343333BB320B41FF65666632731641FFCBCCCC38300B41FF656666B8721641013433335B2D0B410033333337721641FFCBCCCCEC2A0B41019A9999F971164100000000A0290B4100CDCCCC70711641FF656666D2260B4100CDCCCCB070164101343333DF220B410033333327701641FFCBCCCC8C200B4100CDCCCC9E6F1641013433337B1E0B4100333333256F1641000000006C1C0B4100CDCCCC386E16410134333323170B41019A9999C36D1641FFCBCCCC94140B41000000008A6D164101343333DB130B4100CDCCCC0E6D1641019A99993D110B4100000000646C1641FFCBCCCCC00D0B4100000000026C1641019A9999310C0B4100000000786B16410000000090090B4100333333E96A1641FF6566668A060B4100CDCCCC9C6A1641019A9999DD040B41FF656666306A1641FF656666A6020B4100333333156A164101343333EF010B4100000000B86916410000000050000B41019A999981691641013433338FFE0A4100333333E9681641019A9999A5FB0A41FF656666AC681641FFCBCCCCD8F90A410033333337681641FF656666BAF70A4100333333FB671641FFCBCCCCF0F60A41FF65666686671641FF65666676F40A41019A9999BD6616410000000008F00A41FF65666610661641FF656666B2ED0A41FF656666C8651641FF65666676EC0A4100333333E76416410134333333E90A41019A9999896416410134333307E80A4100000000246416410000000094E60A41019A9999A1631641FF65666686E30A41FF6566660E631641019A999905DF0A41019A99995F621641019A999989DC0A41000000002A6216410000000068DB0A41003333339B6116410134333393D80A410033333331611641013433332BD60A4100333333C96016410000000064D40A4100000000746016410000000084D20A410000000028601641000000007CD00A4100333333C95F1641FFCBCCCCB4CE0A4100CDCCCCAA5F1641019A9999BDCD0A41FF6566665E5F1641019A9999C9CB0A4100000000AE5E1641FFCBCCCC2CC90A4100000000705E164100000000D0C70A41019A9999E95D1641019A999929C50A4100CDCCCC6A5D16410000000058C20A41019A9999E35C1641019A999919C00A41FF656666945C1641019A999979BE0A41FF656666B25B164101343333F3BA0A41003333335B5B1641FF656666E6B90A4100333333D35A1641000000004CB80A4100333333195A1641FFCBCCCC60B40A41FF656666AE5916410134333333B10A410000000054591641FF656666BEAF0A4100333333C3581641019A9999B9AC0A41019A99991B581641FFCBCCCC8CA90A4100333333D35716410000000050A80A41000000004C571641019A999919A60A4100CDCCCCF0561641FF656666BEA30A4100CDCCCC82561641013433334BA10A4100CDCCCCF8551641FF656666669E0A41FF65666688551641FF6566660E9D0A41019A99993D551641019A9999F19B0A4100CDCCCC2C541641FFCBCCCCD8970A41000000009A531641013433334F960A41019A999981521641FF656666E2910A4100CDCCCCA451164100000000B88E0A410000000066511641013433333B8D0A41019A99991351164101343333AF8B0A4100333333555016410134333343880A4100CDCCCCE24F16410000000000870A4100CDCCCC544F1641FF656666EA840A41019A9999A34E1641019A999969810A41000000000A4E1641FFCBCCCC047F0A41019A9999774D164100000000DC7B0A4100CDCCCC0C4D164100000000607A0A4100CDCCCC744C1641FF656666CE770A4100CDCCCC1C4C1641FF65666682760A4100333333DD4B1641FFCBCCCC2C750A41003333332D4B164100000000E0720A4100CDCCCCEC4A16410134333393710A41019A99995B4A1641FFCBCCCC28700A4100000000D2491641FF6566664E6E0A4100CDCCCC72491641FF6566660E6D0A4100CDCCCC1C491641FF656666B66B0A410033333365481641019A999969690A4100000000FA471641FF6566668A670A41FF656666D44716410000000060670A41019A9999C9471641FFCBCCCCC4660A4100000000AC471641FF6566661A660A41019A99997B471641000000009C650A41003333334F471641019A999901650A41FF656666EE461641019A9999F1630A41019A9999D3461641FF6566663A630A410033333379461641FF65666646620A410033333337461641019A9999FD600A4100333333D7451641019A9999D15F0A41003333334D451641FF6566663E5E0A4100CDCCCCF4441641FF656666CA5C0A4100333333C944164100000000505C0A410033333387441641013433335F5B0A4100CDCCCC0E4416410000000080590A410000000088431641019A9999F1570A4100CDCCCCAA421641FF65666606560A41FF6566667A4216410000000028550A41FF6566661E42164101343333C7530A4100333333AB4116410000000010520A41003333335F411641000000003C510A41FF656666E44016410000000014500A41003333339F40164101343333B74E0A41FF65666662401641019A9999D14D0A4100000000A63F1641FFCBCCCCF84B0A4100CDCCCCFC3E164100000000D84A0A4100CDCCCCF43D1641019A999961480A4100CDCCCC843D1641019A999979470A4100CDCCCC383D1641FFCBCCCCF4460A41019A9999C13C1641FFCBCCCCF0450A4100000000F43B1641019A999965430A4100333333593B1641FF65666672420A41FF656666023B1641FF656666B2410A41FF656666783A16410134333397400A41FF656666143A164101343333B33F0A410033333377391641FFCBCCCCBC3E0A41FF6566661E39164100000000E83D0A41FF6566665638164100000000703C0A4100333333AF371641019A9999553B0A4100000000F6361641000000002C3A0A4100CDCCCC42361641013433338F380A410000000092351641019A99998D370A410033333379341641000000007C350A4100CDCCCCDA331641019A999991340A41003333338F3316410000000008340A4100CDCCCC86321641FF65666602320A410000000092311641FF656666FE300A4100333333F1301641000000003C300A41FF6566662A30164101343333032F0A4100333333D92F1641019A9999FD2E0A41019A99994B2F1641FF656666C62E0A41000000009A2E164100000000642E0A41FF656666D42D1641FF6566660A2E0A4100000000D22C164101343333132E0A41FF656666D22B164101343333EB2D0A4100CDCCCC522A164101343333132E0A41003333334B291641FF656666A22E0A41000000001629164100000000EC2E0A41FF656666EC281641019A9999092F0A410000000080281641019A9999212F0A41FF6566668A2616410000000004300A4100CDCCCCD8251641FFCBCCCCC8300A410033333379251641FFCBCCCC04310A41019A999931251641013433330F310A41000000002C251641FF65666666310A4100000000F8241641000000008C310A410000000062241641FFCBCCCC1C320A41019A999935241641019A999939320A41019A9999AF221641FFCBCCCCDC330A410033333319221641019A99995D340A41FF656666402116410000000030350A4100333333BD201641013433332B360A41019A99993F20164101343333F7360A4100000000B81F1641013433332B370A41003333332D1E1641FF65666666380A4100333333511C164100000000943A0A41FF6566663C1A1641FF656666163D0A41019A99999F181641FF6566664A3F0A41FF656666001816410134333313400A41000000008A161641019A99994D420A41FF656666C6141641FF6566666E440A41FF656666B8131641FF6566660E460A41019A9999711316410134333383460A4100CDCCCC1E131641019A9999C5460A41019A9999F711164101343333B7470A41000000007A101641019A99997D490A410000000000101641019A9999E9490A4100CDCCCC3E0F1641FF656666B64A0A4100CDCCCCAC0C1641019A9999FD4D0A41FF6566662A0C1641019A99998D4E0A41FF6566669E0B1641019A99993D4F0A4100CDCCCC7A0A1641FF65666682500A41FF65666690081641000000009C510A41019A99990F08164100000000C4510A41003333337F071641000000002C520A41003333332B061641013433336F530A41FF656666560516410000000058540A41FF656666C8041641FFCBCCCC40550A4100CDCCCC5C041641013433331B560A4100333333F7031641FF656666AE560A4100000000520316410134333327580A410033333339031641013433338F580A41003333339D02164101343333A7590A41003333330D02164100000000685A0A4100CDCCCCA0001641019A9999795C0A41019A99991D001641FFCBCCCC705D0A4100CDCCCCE4FF1541FF6566661E5E0A4100CDCCCCD6FF1541019A9999A15F0A410033333389FF15410000000008600A41FF65666654FE1541FFCBCCCC74600A410000000008FE15410000000074600A4100CDCCCC5AFB1541019A999971600A41FF6566663AF815410134333333600A4100333333FDF61541019A999919600A41019A9999F3F51541FF656666FE5F0A4100333333D3F41541FF656666EA5F0A4100CDCCCC6CF41541FF656666CA5F0A410033333347F3154101343333BB5F0A41019A999921F31541FFCBCCCC845F0A41019A999927F31541FFCBCCCC0C5F0A410000000034F31541019A99991D5E0A41FF65666672F31541FFCBCCCCAC5C0A41019A9999A5F3154101343333A75B0A4100000000CAF3154101343333975A0A41019A9999D1F3154101343333F3580A410000000098F31541FF656666B2570A4100CDCCCC56F31541FFCBCCCCAC560A4100000000BCF21541013433333B550A41003333335DF1154100000000EC520A41019A9999C1F01541FFCBCCCC4C520A41FF65666610F0154101343333DB510A41019A999953EF1541019A999995510A41000000006EEE1541FFCBCCCCB4510A410000000054ED1541019A99992D520A41019A9999A7EC1541019A999985530A4100000000FAEB1541019A999935550A41003333337FEB1541019A9999BD560A41FF656666D6EA1541019A99995D580A41019A999909EA1541019A99999D5A0A410033333395E91541019A9999AD5B0A410033333369E81541FFCBCCCC605D0A41FF65666666E71541019A9999055E0A4100CDCCCCB8E51541013433333F5E0A410033333341E51541FF6566661E5E0A41019A99993FE3154101343333F75D0A41000000001EE2154100000000085E0A41019A999971E11541019A9999E95D0A410000000070E01541019A9999E95D0A41FF65666686DF1541019A9999DD5D0A41019A9999C9DD154100000000D05D0A410000000070DB1541FF656666725D0A410033333391D91541019A9999795D0A4100CDCCCCF0D8154101343333675D0A410000000010D81541FF656666665D0A4100333333EDD7154100000000505D0A41019A9999A9D71541019A9999595D0A410033333305D71541013433331B5D0A410033333399D61541FF6566665A5C0A410033333325D61541FF656666925B0A4100CDCCCCACD5154100000000745A0A41019A99992FD5154100000000C0590A410033333337D41541FFCBCCCC94580A41FF65666632D31541019A9999ED570A4100333333D1D21541FFCBCCCCA0570A4100CDCCCC4AD21541FFCBCCCC5C570A41019A9999C3D11541FF6566660A570A4100000000C6CF1541FF65666612560A4100CDCCCCF0CE1541019A999989550A41FF6566665ACE1541013433330F550A4100CDCCCCFECD1541FF6566669E540A4100CDCCCCB8CD1541FFCBCCCC4C540A41019A999939CD1541FFCBCCCCD0530A41000000009ACC1541FF65666646530A41019A99994DCC1541FFCBCCCCFC520A41FF65666688CB1541013433334B520A410000000014CB154100000000B0510A410033333383CA15410000000008510A4100CDCCCCC2C9154101343333A74F0A41003333337FC91541FF656666FA4E0A4100333333F1C81541013433333F4E0A41019A9999FFC7154100000000884C0A41019A9999BDC71541FF656666524C0A41003333336DC71541FFCBCCCCF84B0A41019A999905C71541FFCBCCCC484B0A41FF65666684C61541019A9999614A0A4100CDCCCCD8C51541013433336B490A41FF6566666AC5154100000000EC480A4100CDCCCC7EC4154100000000B0470A41FF656666A8C31541000000003C460A4100000000A0C21541019A99992D440A41019A99991FC21541FF65666622430A41FF656666B0C11541019A999935420A4100CDCCCC00C11541FFCBCCCC90400A4100CDCCCCB0C0154100000000FC3F0A41000000002CC01541FFCBCCCCEC3E0A4100CDCCCCFCBE154100000000D43C0A41000000006EBE1541FFCBCCCCD03B0A4100333333EFBC154101343333D7380A41003333332BBC1541FF65666676370A4100CDCCCC7EBA1541019A99995D340A4100333333D1B915410000000048330A410000000048B91541FFCBCCCC64320A4100CDCCCCE2B8154100000000B8310A41FF6566669EB815410000000028310A41019A99999FB71541FFCBCCCC982F0A41019A99993DB7154100000000AC2E0A4100CDCCCC14B71541019A9999812E0A41000000001EB71541FFCBCCCC442E0A41019A9999B1B61541019A9999792D0A41FF656666DEB51541FF6566662E2B0A410033333307B51541019A999961290A4100333333C7B4154100000000D4280A41019A999959B4154100000000D8270A41019A9999E1B31541FFCBCCCCAC260A4100000000B4B31541FF6566664A260A4100CDCCCC12B315410000000030250A41FF65666690B21541019A9999ED230A4100CDCCCC9EB11541FF656666DE210A41FF65666652B11541019A999945210A4100CDCCCCD8B01541019A999961200A41FF65666642B0154101343333531F0A41019A999983AF1541FF656666A61D0A4100333333F5AE154101343333A71C0A410000000096AE154101343333A31B0A41FF65666632AE1541FF656666A21A0A4100333333B9AD1541013433339B190A41003333333DAD154100000000E8170A41019A9999B7AC1541019A9999E1160A41FF656666AAAC1541FF6566669E160A41FF6566667AAC15410000000038160A41019A999933AC1541FF6566664E150A4100CDCCCCD8AB1541FF656666B6140A41FF656666AEAB15410000000040140A4100CDCCCCE6AA154101343333AF120A4100000000EAAA15410134333347120A41003333338BAA1541013433338B110A41FF656666BAA91541013433337F0F0A41FF65666632A9154100000000C00D0A41019A9999F5A81541FF656666320D0A41019A9999C3A71541019A9999190A0A4100333333EFA61541FF6566665A080A41003333339BA515410134333383040A4100CDCCCCD4A41541FF6566666A020A4100333333E1A315410000000024000A41019A9999EFA21541FFCBCCCC00FE094100CDCCCC32A21541FFCBCCCCD4FB0941FF65666612A21541019A999999FB09410033333391A1154101343333F7F909410033333365A11541FFCBCCCCB0F90941019A99991BA115410000000020F90941FF656666509F1541FFCBCCCC50F4094100000000089F1541000000003CF30941000000009A9E15410000000060F2094100333333C79D1541FFCBCCCC54F00941FF656666549D1541FFCBCCCC04EF094100000000029D15410000000004EE094100CDCCCCC29C1541FF656666A2ED0941FF6566667A9C1541FFCBCCCC04ED0941003333333D9C1541000000005CEC094100CDCCCC249C1541FFCBCCCCB0EB094100333333C39B154100000000CCEA094100333333B79B1541FFCBCCCC64EA094100333333039B154100000000B4E8094100CDCCCC8A9A154100000000ECE70941000000005E9A1541019A999979E7094100333333179A154100000000C4E60941003333330D9A1541019A999939E6094100333333C999154101343333AFE50941003333339D991541019A999925E509410033333377991541FF6566668EE4094100CDCCCC42991541FFCBCCCC44E40941019A9999C1981541FF656666EEE20941FF656666869815410000000068E20941019A99994B981541FF656666AAE10941FF656666CE961541019A9999FDDD0941019A999979961541FFCBCCCC00DD0941FF65666604961541FFCBCCCCBCDB0941000000004A9515410134333307DA0941003333339D941541FF6566660ED80941FF6566660E94154100000000F0D60941FF656666DC931541019A999969D60941FF656666F6921541FF6566665ED4094100000000D892154100000000B8D30941FF65666660921541FFCBCCCC90D2094100CDCCCC029215410000000060D10941FF65666692911541000000000CD0094100000000349115410000000014CF094100CDCCCC12911541019A999995CE0941003333337990154101343333F7CC0941019A9999F58F154100000000ACCB0941003333338D8F15410000000040CA094100CDCCCC428F15410134333363C9094100000000168F1541FFCBCCCCF4C8094100CDCCCCC48E1541000000000CC8094100000000AC8D154101343333CBC4094100333333F18C1541FF6566662EC3094100CDCCCCD88C154100000000C8C2094100CDCCCC168C154101343333D3C00941FF656666DC8B1541019A999919C0094100CDCCCCAE8B1541FF656666B6BF094100333333718B1541019A99991DBF0941019A99991D8B154100000000F0BD094100333333778A15410134333303BC094100000000F4891541FFCBCCCCDCB90941019A999971891541019A999951B8094100333333DF881541000000005CB6094100CDCCCC36881541013433332FB40941FF656666EA871541019A999995B309410000000060871541013433333BB2094100000000CA8615410000000074B00941019A99998986154101343333EFAF09410000000078861541000000009CAF0941003333335F861541FFCBCCCC68AF094100333333EF851541019A9999B1AD094100CDCCCC5E841541019A99992DA90941019A9999B783154101343333D3A7094100CDCCCC5A83154101343333E7A6094100CDCCCCF6821541013433339FA5094100000000AE821541019A999991A4094100333333F9811541019A9999E9A1094100000000C2811541013433336FA10941FF6566669C811541FFCBCCCC9CA00941FF6566662C811541019A9999259F094100333333AD801541FF656666029E094100CDCCCC0A80154101343333DB9D0941000000008A7F154100000000B89C094100000000667F1541019A9999599C094100CDCCCC1E7F1541FFCBCCCC049B0941019A9999677E154100000000CC980941FF656666307E1541FF65666612980941FF656666B27D1541000000009896094100CDCCCC5C7D15410134333353950941019A9999AF7C1541FF656666FA920941019A99999F7C1541FF6566664A920941019A9999877C154100000000C491094100CDCCCC427C1541FF65666696910941003333330B7C1541FFCBCCCC3891094100CDCCCCB47B15410134333313900941019A9999757B1541019A9999558F0941FF6566665C7B154101343333C38E094100CDCCCC427B1541FFCBCCCC508E0941019A9999357B1541019A9999BD8D0941000000005E7B154100000000508D094100CDCCCC247B1541FF656666F68C0941019A9999EF7A1541FFCBCCCC348C094100333333D17A1541019A9999AD8B0941003333331F7A1541019A9999A1880941FF656666007A1541FF6566662288094100333333BB791541019A9999518709410033333367791541019A9999C9850941003333331979154100000000CC84094100333333FD781541019A9999C983094100333333F5781541FF6566662E830941FF656666E0781541013433336382094100000000B0781541019A9999A5810941003333336778154100000000DC800941FF656666E6771541FFCBCCCC0480094100CDCCCC9E77154100000000F47E094100000000D276154100000000F07C0941003333337F761541FF6566664E7C0941003333331B761541013433334B7B0941019A9999A575154100000000FC7809410033333337751541FFCBCCCCC8770941019A9999F374154101343333FB760941FF656666B6741541019A99995D760941FF6566664C741541019A999975740941FF656666EE731541FFCBCCCC6C73094100CDCCCCC473154101343333C7720941FF65666652731541000000001871094100000000F07215410000000054700941003333338F72154101343333236F094100333333E9711541019A9999916D094100CDCCCC8A711541019A9999216C0941000000006C71154101343333676B0941FF65666640711541FFCBCCCCF86A094100CDCCCCD2701541019A9999C5690941003333339570154101343333CF680941019A999957701541FF6566663A680941019A99993B70154101343333C367094100CDCCCC0E701541000000003067094100000000D06F1541013433331766094100CDCCCC506F1541FFCBCCCCE464094100333333D96E1541FFCBCCCC3863094100333333796E1541FFCBCCCC00620941019A99990B6E1541FFCBCCCC3061094100333333AF6D1541000000007860094100CDCCCCD06C1541FFCBCCCC5C5E094100333333A76C1541FF656666CE5D094100333333E16B1541FF6566667E5B0941FF656666A26B1541FFCBCCCC685A0941019A99990B6B1541FF656666B258094100333333976A1541000000000057094100000000D0691541013433330355094100333333496915410000000018530941FF656666EA681541000000001C520941000000005268154101343333FF4F094100333333CF67154101343333834E0941019A999951671541FFCBCCCC104D0941003333330B67154100000000604C0941019A9999CB661541019A9999614B09410000000076661541019A9999C9490941000000005066154101343333474909410033333315661541019A999951480941019A9999B7651541FF656666BE46094100CDCCCC52651541019A999981450941FF656666BA641541000000000C43094100CDCCCC6A641541FF65666636420941019A99991B641541FF6566661E41094100CDCCCCC2631541FF6566668E3F0941000000009863154100000000983E0941003333334D63154101343333833D094100333333F1621541013433338B3C094100CDCCCC8E611541FF6566666E3609410033333319611541FF656666E234094100CDCCCCE2601541FFCBCCCC7C33094100CDCCCC94601541FFCBCCCCA032094100CDCCCC7C601541019A9999CD310941019A999945601541FFCBCCCC9830094100333333EF5F154101343333732F094100333333BF5F1541FF6566664E2E094100333333695F1541019A9999152D094100CDCCCCEE5E1541FF6566668E2A094100CDCCCC905E1541FF65666642290941019A9999575E1541019A999971270941FF6566663C5E1541013433330F26094100333333F15D1541013433334B24094100333333CD5D1541FFCBCCCC1023094100000000AC5D1541FF65666692220941000000004A5D1541FF6566664E20094100000000C85C1541019A9999351D094100CDCCCCAA5C1541FF6566661A1C0941FF656666745C1541FFCBCCCCAC1A0941FF6566664E5C154101343333F719094100000000EA5B1541FF6566663218094100CDCCCC845B154101343333BB16094100CDCCCCE05A1541FF6566662A140941000000007E5A1541FF6566660A13094100CDCCCC4E5A1541000000002C120941000000000A5A154101343333D310094100000000D2591541019A999935100941FF6566669059154100000000740F0941003333337D591541FFCBCCCC9C0E0941019A99995D591541FF656666AA0D0941FF65666666591541000000002C0C0941000000006E59154101343333EF0A09410033333387591541013433334B0A094100CDCCCCB2591541FF6566668E09094100CDCCCCBC59154101343333C7080941FF65666674591541FF6566663A0709410033333335591541000000001C06094100333333E9581541000000003805094100000000985815410134333397030941003333333B581541FF65666642020941FF656666F8571541019A99990901094100000000C45715410000000044000941003333337157154101343333B7FE0841003333331D571541000000003CFD084100000000EC561541019A9999B1FC0841019A999979561541019A99995DFB0841FF656666D85515410000000078F9084100CDCCCC8A551541013433334FF80841019A99992F551541013433333BF7084100000000D2541541FF6566669AF5084100000000A2541541FFCBCCCC70F4084100333333A7541541019A99999DF3084100000000DC541541FFCBCCCC7CF2084100CDCCCCFC541541FFCBCCCC74F10841FF6566661A55154100000000C0EF0841FF656666E6541541FF656666C6EE0841003333338B541541FF65666602EE0841FF65666618541541FF6566663EED08410033333339531541FF6566660AEC084100CDCCCC6E521541019A99997DEA084100CDCCCC6E511541019A999919E70841019A9999B5501541013433330FE40841019A99995F501541019A999915E20841019A9999035015410134333393E0084100333333A54F1541FF6566666ADE0841019A99997D4F1541FF65666666DD0841FF656666244F15410000000078DB084100333333B74E1541FF656666F6D80841003333335B4E1541FFCBCCCC80D7084100333333D94D1541FF6566669ED5084100CDCCCC4A4D1541FF656666AAD2084100333333394D1541019A9999EDD1084100000000F44C1541FFCBCCCCFCCF0841FF656666BC4C1541019A9999E5CE0841019A9999234C154100000000E4CB0841019A9999754B1541FF6566668AC70841019A99992B4B1541019A999961C50841019A99996D4A1541FF65666632C10841FF656666EC4915410000000090BF0841FF656666AA491541FF656666A6BE084100000000F84815410000000084BB084100333333AB48154101343333FBB90841019A999927481541013433333BB70841019A9999E3471541FF65666652B50841003333339F47154100000000F4B30841FF656666FE46154101343333E7B0084100333333ED461541019A9999A1B0084100CDCCCC76461541FFCBCCCC68AE08410033333347461541FF6566666AAD0841FF65666628461541019A99998DAC084100CDCCCCF4451541FF656666A6AB084100CDCCCCEA451541FFCBCCCC40AB0841019A9999D54515410000000074AA0841FF656666C4451541019A99991DAA084100CDCCCC96451541FFCBCCCCD4A80841FF656666504515410134333357A8084100CDCCCC36451541FFCBCCCC14A8084100000000EA441541FF656666EAA6084100CDCCCCD2441541FFCBCCCC94A50841000000009C441541FF65666672A4084100CDCCCC56441541013433331FA30841003333330344154100000000D8A1084100333333E74315410134333353A10841019A99995543154101343333B79F0841003333334543154100000000389F0841000000002643154101343333A39E0841003333333B431541019A9999319E084100CDCCCC16431541FFCBCCCC749D0841FF656666EE42154100000000C09C084100333333C7421541FF6566660A9C084100333333A342154101343333BF9B0841019A99994542154100000000E898084100CDCCCCE0411541FF6566664697084100000000C841154101343333039708410033333383411541FFCBCCCC24960841019A9999F9401541019A99993594084100CDCCCCC4401541013433337F930841003333334F40154100000000F891084100CDCCCCEA3F15410000000098900841019A9999D73F1541019A9999E58F0841FF656666B23F1541019A9999358F0841FF656666643F154100000000E08D084100CDCCCC3C3F1541000000004C8D0841FF6566661E3F154100000000488C084100000000043F154100000000F489084100000000CE3E1541000000001C890841FF6566663E3E1541FF65666666870841FF656666EC3D154101343333A3860841FF656666763D154101343333F385084100333333BF3C1541FF6566660A840841019A9999753C1541019A9999BD82084100333333673C1541FFCBCCCCEC81084100000000243C1541FFCBCCCC6C80084100333333BB3B1541019A99996D7F084100CDCCCC8C3B154101343333DF7E084100333333FB3A1541FF6566667A7D0841019A99999D3A1541FF6566663E7C084100333333733A1541FFCBCCCCBC7B0841019A9999593A1541013433331F7B084100333333173A1541FF656666EA79084100CDCCCCC2391541019A999921790841FF65666652391541FF656666E2770841019A9999DD381541FFCBCCCC44760841FF65666698381541FFCBCCCC587508410033333345381541019A9999AD74084100333333AB371541FF6566664273084100CDCCCC14371541FFCBCCCC3C720841019A99992F361541019A99997570084100000000C4351541019A9999ED6F0841FF656666FE341541FF6566668A6E084100CDCCCCAE341541013433330F6E084100000000F433154100000000306D0841019A99994F32154100000000906B084100333333C130154101343333436A0841FF65666614301541019A999971690841019A9999592F15410000000094680841019A9999272F1541000000000068084100000000E42E154100000000EC66084100333333D12E1541013433337766084100000000B02E154101343333A365084100000000842E15410134333333640841019A9999752E1541019A9999C1630841003333337F2E1541019A99995D630841000000006A2E1541013433334B62084100333333252E154100000000E460084100333333C32D1541013433336B600841003333338F2D1541019A9999D15F084100333333812D1541000000009C5E084100000000362D1541019A9999915D0841FF656666C02C1541FF6566660A5C0841FF656666822C1541013433331F5B0841003333334B2C1541019A9999495A0841003333332F2C1541FFCBCCCC80590841019A99990D2C154100000000FC58084100CDCCCCE02B154100000000C4570841019A9999992B154101343333C356084100CDCCCC842B1541FFCBCCCC5856084100CDCCCC3E2B1541019A999991550841003333331B2B154100000000B8540841019A9999D32A154101343333E3530841000000006A2A1541FF656666D251084100333333472A1541000000005C51084100333333FF291541FFCBCCCCB44F084100CDCCCCB629154100000000984E0841003333337729154100000000984D08410033333337291541019A9999A54C0841FF656666F628154101343333E74B084100CDCCCCEA281541000000005C4B0841019A9999D7281541FFCBCCCC0C4B084100000000C2281541FF656666A64A0841003333338528154100000000844908410000000040281541FF656666D646084100CDCCCC3828154100000000444508410000000026281541FF656666C244084100CDCCCC04281541FFCBCCCC3443084100CDCCCCEE27154101343333BF420841FF656666CA27154101343333AF4108410000000070271541019A999911400841000000002E271541019A9999193F0841000000000427154101343333BF3E084100333333C9261541FF656666DE3D0841019A999993261541FF656666823C0841003333337B261541019A9999293C084100CDCCCC7026154100000000CC3B0841019A999937261541013433338F3A08410033333321261541000000008439084100000000B4251541FFCBCCCC0837084100000000A2251541019A99991536084100333333A1251541013433335B350841019A9999A5251541013433332B340841019A999981251541FFCBCCCCE433084100000000302515410000000048320841019A9999F3241541019A99997530084100CDCCCCF2241541FF6566666E2F084100CDCCCC0025154100000000BC2E0841019A99993D251541FF656666D22D084100CDCCCC2E251541019A9999652D0841019A999907251541019A9999652C084100333333B1241541FF6566669E2B084100CDCCCC7C241541FF6566661E2B0841FF65666666241541013433339F2A084100CDCCCC58241541FFCBCCCCAC290841019A999973241541FF656666BE2808410000000086241541019A9999C127084100000000C2241541019A9999412608410000000006251541019A9999F5240841003333334725154101343333BF23084100CDCCCC8E251541FF6566664222084100CDCCCCC0251541FF656666B221084100CDCCCC14261541000000009421084100333333A5261541013433333721084100CDCCCCD2261541FF656666EA200841FF656666F4261541019A9999C51F0841FF656666D226154101343333031F084100000000AA26154101343333971E0841000000004A261541FF6566661E1E084100333333A5251541019A9999611E0841FF65666628251541019A9999411E084100333333A324154100000000AC1D0841019A9999D1231541FFCBCCCCF81C0841019A9999FB221541000000000C1C08410033333377221541FFCBCCCCB81A084100CDCCCC2A221541FF6566662A1A0841003333331322154100000000B819084100333333D7211541FFCBCCCC7818084100000000BA211541019A999961170841003333338521154101343333971608410000000044211541019A99997D15084100333333E920154100000000C4130841FF656666CE20154101343333B7120841003333338D201541FF656666361108410000000050201541019A99993110084100CDCCCCFE1F1541013433339B0E0841FF656666CE1F1541FFCBCCCC840D0841FF656666B01F1541FF6566666E0C084100CDCCCCAA1F1541019A9999310B0841FF6566667C1F1541000000009409084100CDCCCC321F1541FF6566665208084100CDCCCCDA1E1541FF6566666E07084100000000AA1E1541FFCBCCCC04060841019A9999731E1541FF656666D203084100000000541E154100000000CC02084100000000241E1541013433335B02084100333333C11D154100000000DC000841FF6566665E1D1541FF65666696FE074100000000321D1541FF65666666FC074100333333DD1C1541FFCBCCCCE8F90741FF656666CC1C1541FF656666F6F8074100CDCCCCBE1C1541FF65666622F80741FF6566667C1C1541019A999965F6074100000000681C1541FF6566660EF50741FF656666421C1541019A999915F4074100333333531C1541019A999979F3074100CDCCCCA81C1541019A999961F2074100333333A11C1541019A999915F2074100CDCCCC6A1C15410000000030F1074100333333CB1B1541013433331FF00741000000008A1B154100000000BCEF0741FF6566664A1B1541FFCBCCCC3CEF0741019A9999FF1A15410134333307EE0741019A9999F51A1541000000005CED0741003333331D1B1541013433335BEC0741FF656666CC1A1541019A99997DE9074100333333AF1A1541FF656666AEE7074100000000721A1541019A999941E6074100333333711A1541019A999945E5074100000000CA1A1541FFCBCCCCE8E4074100333333991A1541019A999955E40741FF6566666A1A154101343333FFE30741FF6566660C1A154100000000ECE2074100CDCCCC101A1541FFCBCCCC74E1074100333333011A1541FF656666DEE0074100333333C9191541FF65666612E00741FF6566662C191541019A999965DF07410033333303191541FFCBCCCC2CDF074100CDCCCC94181541FF656666AEDE074100CDCCCC1418154100000000A8DD074100333333D91715410000000078DC0741FF656666D2171541019A9999C1DA0741019A9999BB1715410134333313D90741019A99999F171541FFCBCCCC20D80741019A99997F17154101343333AFD60741FF6566669A171541019A9999DDD5074100000000B8171541019A9999E1D40741FF65666698171541013433337FD307410000000072171541019A9999B5D20741FF65666658171541FFCBCCCCB8D10741003333335D171541FF65666682CF0741019A9999551715410000000020CD0741019A9999431715410000000008CB0741FF65666644171541FF656666C2C90741000000004417154101343333F3C7074100CDCCCC4A171541FF65666676C60741FF6566663A171541FF656666FEC30741003333334117154101343333FBC20741FF6566663A171541FF656666BEC10741003333332F171541019A999969C0074100CDCCCC34171541FF65666612BC0741019A999931171541FFCBCCCC50BA07410033333323171541FF656666B6B80741FF65666626171541013433330BB70741019A99991D17154100000000ACB50741019A99991917154101343333B3B10741003333331B17154100000000ECAF07410033333325171541019A99992DAD074100CDCCCC08171541FFCBCCCCE8A6074100CDCCCCF216154100000000CCA5074100333333F1161541019A999951A3074100000000FC161541019A9999B59F0741019A9999F316154100000000509E074100333333FD161541013433334F9C0741FF656666F016154100000000389A0741019A9999ED161541FFCBCCCCC098074100000000D4161541FF6566661E950741FF656666DE161541FF65666602930741000000001617154100000000749107410033333347171541013433331B900741FF6566664C17154100000000DC8E0741019A999947171541FF656666128E07410000000022171541FF656666A28D074100CDCCCCCC16154101343333A38C07410033333397161541019A9999818B0741019A999933161541013433332F880741019A99991316154101343333AF86074100333333E3151541FF656666A6850741019A9999AF15154101343333A384074100CDCCCC52151541FFCBCCCCF8800741019A999933151541FF656666EE7F074100000000E814154100000000B07D074100000000B014154101343333EB7B0741003333332114154100000000C877074100CDCCCCB813154101343333F3740741FF656666AE131541013433338B740741019A99996D131541000000000C730741FF6566661E131541000000007871074100CDCCCCF8121541019A9999D9700741FF656666D0121541019A999911700741019A99998F121541FF656666726E0741019A99994F121541013433331F6D0741FF65666612121541FF656666CA6B074100333333DF11154100000000CC6A0741003333336B11154101343333D3670741019A999925111541FFCBCCCC20660741019A9999E1101541FFCBCCCC5C64074100CDCCCC90101541FFCBCCCCF061074100CDCCCC621015410000000018610741003333334B101541013433335F60074100CDCCCC04101541FF6566662E5F074100CDCCCCDA0F1541FFCBCCCCD45D0741000000007A0F154101343333075C074100333333470F1541FFCBCCCC845A0741000000001A0F1541019A9999BD590741FF656666000F1541FFCBCCCCC0580741019A99993D0E1541FF6566665653074100000000A40D1541019A99993D500741FF656666340D1541FF656666DE4C0741019A9999190D1541FF656666CA4B074100333333DD0C154100000000AC4A074100000000AC0C1541013433333F49074100000000800C1541019A99994148074100000000E60B1541019A99995146074100CDCCCC6A0B1541000000002444074100000000EE0A15410134333373420741FF656666960A1541019A9999B940074100333333710A1541013433335F3F074100CDCCCC4E0A154100000000243D0741019A9999430A1541FFCBCCCCD83B0741019A99992D0A154100000000103B0741000000001E0A154101343333833A0741FF656666F0091541019A99990D39074100333333CF091541013433335337074100000000BA091541FF656666FA360741000000009809154100000000DC35074100CDCCCC4609154100000000DC33074100333333F9081541FF656666BE2F0741019A99999F081541FFCBCCCC402E0741FF6566667C081541FF6566664A2D07410033333369081541FF656666F22C07410000000032081541FF656666562B0741000000001C081541FFCBCCCC8C2A074100333333F7071541019A99997D28074100CDCCCC920715410134333373260741FF65666636071541FF656666DE230741019A99999D061541019A9999C91F07410000000036061541FFCBCCCC3C1C07410000000024061541FF656666661B074100CDCCCC06061541013433334B1A074100333333EB05154100000000F4180741FF656666BC05154101343333EF170741019A999989051541FF65666662160741003333333505154100000000201407410033333303051541013433331F120741FF656666D6041541FF65666656100741FF656666B4041541019A9999E50E0741FF65666690041541013433332B0E0741003333336D041541FFCBCCCC280D0741FF6566663204154100000000740B074100CDCCCCDC031541000000005009074100333333B1031541019A999929080741019A999951031541FFCBCCCCB8020741019A9999030315410000000004010741FF656666A00215410000000018FF0641FF65666644021541FF656666E6FC064100000000C6011541FF656666AAF906410033333373011541013433332FF8064100CDCCCC22011541FFCBCCCCD0F60641FF656666B6001541013433334FF50641019A9999810015410000000034F40641019A999951001541FF65666652F30641FF656666280015410000000050F206410000000080FF144100000000E0EF064100CDCCCC48FF1441FFCBCCCCCCEE0641003333331FFF1441FFCBCCCC1CEE064100333333A3FE1441FF6566669AEB0641003333337FFE144100000000C8EA0641019A999939FE1441FFCBCCCC40E90641019A9999FFFD1441FF6566665AE70641019A9999E7FD1441FF656666E2E60641FF656666E4FD1441FF6566669EE5064100CDCCCCC2FD1441013433334BE50641FF65666668FD14410000000044E4064100CDCCCC60FC1441013433333BE00641019A9999EFFB14410000000054DE0641FF6566663EFB1441019A999981DA064100333333EDFA14410134333333D9064100CDCCCC7CFA1441000000008CD706410000000068F91441FF656666DAD1064100000000AAF814410000000060CE0641019A999901F81441FFCBCCCC3CCA0641019A99991BF7144101343333CFC50641019A9999A5F61441019A9999D9C206410033333389F61441013433338FC1064100CDCCCC1AF6144100000000ECBE0641019A99990BF61441FF65666656BE064100CDCCCC86F41441FF656666C6B30641003333330FF41441FFCBCCCC68AF064100000000DEF314410134333303AD064100000000BCF314410134333397AA0641000000007AF314410134333337A606410033333379F31441FF6566667AA406410000000066F31441FF65666606A2064100333333EBF21441FFCBCCCC489C0641FF656666CEF2144100000000F4990641FF6566668AF21441013433336397064100CDCCCC48F21441013433330F940641019A99994DF2144101343333479306410000000040F21441013433332B910641FF65666646F2144100000000249006410033333347F21441019A9999058B064100CDCCCC32F21441FF656666FA860641019A999923F21441019A999959830641FF65666608F2144101343333277F0641FF656666F0F1144100000000887D064100333333FDF11441FFCBCCCC7C7B064100333333E1F1144101343333BB79064100000000DAF11441FF6566665278064100000000B0F114410134333373760641FF65666660F11441FFCBCCCCF0730641000000000CF11441FFCBCCCCF4710641019A99990DF11441FFCBCCCCAC710641019A999933F11441013433333F7006410000000056F1144100000000906E06410000000068F11441FF656666166E064100CDCCCC9EF11441FFCBCCCC646D06410000000046F21441FFCBCCCCE06B0641FF656666A2F21441FF6566666E6B06410033333303F31441019A9999856A0641019A999965F31441019A9999C16906410000000002F4144101343333D768064100333333DDF41441FFCBCCCCFC67064100333333C9F61441000000000C6706410000000048F81441FFCBCCCC5C660641019A999917F91441FFCBCCCC94650641019A9999D3F9144100000000F0640641003333334BFA144100000000B464064100333333C7FB1441FF656666CA63064100CDCCCC68FC1441FF65666676630641019A99999BFD1441FFCBCCCCAC6206410000000078FE1441FF6566665E620641019A999905001541FF6566668661064100CDCCCCB6011541019A9999856006410033333315021541FF65666672600641FF6566666204154100000000F05F0641FF6566662005154101343333EB5F06410033333379061541FF6566667A60064100333333DD061541FFCBCCCCB060064100CDCCCC36091541000000003C61064100CDCCCCEA091541019A9999C161064100000000C60A1541FFCBCCCC54620641000000006E0B1541FFCBCCCC54620641000000008E0B1541FF65666636620641FF656666BE0B1541013433335F61064100000000B00B1541FF656666A6600641FF656666620B1541013433339F5F0641000000005E0B1541019A9999C15E0641000000003C0B154100000000A45D064100000000FE0A1541000000007C5C064100333333B50A1541013433335F5B064100CDCCCC3A0A1541FF656666425A0641003333338D091541FFCBCCCC20590641000000005C08154100000000F8570641019A999947081541FFCBCCCCC0570641019A9999B7071541FF656666A6560641000000009A07154100000000B455064100CDCCCC62071541FF6566667A540641FF656666160715410134333307540641FF656666A806154100000000EC530641019A999955061541FFCBCCCCA0530641FF656666480615410000000014530641019A9999F105154101343333FB510641003333338D051541019A9999C94F0641FF65666682051541FF656666664F064100CDCCCC54051541FF6566662A4E064100CDCCCC0C051541019A9999FD4C0641FF656666EE04154101343333B34B0641FF656666D6041541FFCBCCCC284A0641FF656666C604154100000000F848064100333333AF04154100000000C84506410033333389041541FFCBCCCCD441064100CDCCCCA2041541FFCBCCCCAC3D0641019A9999F1041541000000009C3A0641019A99994B051541FFCBCCCC80380641003333337D051541FF6566660A37064100333333E3051541FF656666523506410000000062061541019A999925330641FF656666CE061541019A9999992F064100CDCCCCFC06154101343333432E064100CDCCCC7607154100000000D42C06410033333379081541013433333329064100000000E8081541FFCBCCCC30270641FF6566664E091541FF65666686250641FF6566666409154101343333632306410033333355091541019A9999D1220641000000001A091541FFCBCCCCD8210641FF656666BE081541FF656666BE20064100333333A1071541000000005C1E064100CDCCCC1807154101343333731D0641FF65666638061541FFCBCCCCB41B06410000000034041541019A9999ED17064100333333D9031541013433335F17064100CDCCCCF4021541FFCBCCCCE415064100CDCCCC5E021541FF65666686140641000000005A011541000000000012064100333333B7001541FFCBCCCC101006410000000034001541FFCBCCCCB80E0641019A999957FF144100000000F00B0641000000002EFE14410134333303080641FF6566662EFD1441019A99992D04064100CDCCCCB2FC1441FF6566667E0206410000000024FC1441FF656666F6FF05410033333323FB1441FFCBCCCC64FC0541FF656666E4F91441013433337BF805410033333317F91441FF65666642F60541019A9999ABF71441FFCBCCCC58F10541019A9999C1F61441FF656666A6ED0541019A999917F51441FFCBCCCC20E6054100CDCCCC54F4144101343333B3E2054100CDCCCC04F414410134333393E105410033333375F314410000000034DF0541019A9999CDF2144100000000C0DC05410000000046F214410000000008DB0541FF65666676F01441FF65666682D405410000000046EF1441FF6566660ED0054100333333DBEE1441FF656666D6CE054100CDCCCC62EE1441FFCBCCCC28CD0541FF65666690ED1441FFCBCCCCF4C90541FF65666680ED1441019A999985C90541FF65666622ED1441019A999901C80541FF656666DCEC1441FFCBCCCCD4C60541019A999963EB1441FF65666602C105410000000086EA1441019A999939BD05410033333319EA1441FF65666682BB054100000000D6E91441FFCBCCCCA4BA0541019A999927E91441019A999935B80541000000008CE81441019A999925B60541019A99990FE81441FFCBCCCC10B4054100CDCCCCF6E71441019A9999D5B30541003333336FE71441FF656666B6B1054100000000D0E614410000000080AF0541000000007EE51441FFCBCCCCBCAA054100CDCCCC7CE51441019A999949AA0541FF65666686E51441FFCBCCCCE4A9054100CDCCCC58E51441013433331BA905410000000032E514410000000044A80541019A9999D9E414410000000068A70541FF656666DCE41441FF656666FEA60541019A999945E41441019A9999F5A405410000000000E41441FF656666C2A30541019A99994DE3144100000000E0A00541019A9999CBE21441FFCBCCCCAC9F0541FF65666604E2144101343333EB9C0541FF656666A0E11441013433333B9B0541000000003CE11441019A9999F9990541019A999911E01441FFCBCCCC6495054100CDCCCC64DF1441013433332B9305410033333345DE1441FF656666268F0541019A99999FDD1441FFCBCCCC3C8D05410033333355DD1441FF6566665A8C0541019A9999E1DC1441FF656666D68A054100000000E4DB1441000000004487054100333333C9DA144100000000C081054100CDCCCCE6D91441000000006C7E05410000000006D91441FFCBCCCC0C7B05410033333363D81441FF6566661279054100CDCCCC2CD814410134333337780541FF6566669ED71441FFCBCCCC04760541003333332BD71441019A999905740541019A9999A9D61441FF6566667E720541019A9999B7D5144100000000E46E0541FF65666684D5144100000000D06D0541019A9999FBD4144100000000D06B054100333333ADD41441FF656666866A054100CDCCCC2AD41441FF656666C6680541019A9999B9D31441FFCBCCCC8C66054100333333DFD2144100000000546305410000000004D2144100000000EC5E0541FF6566668CD11441019A9999315D054100CDCCCC40D1144100000000DC5B0541FF65666670D014410000000040580541019A9999E5CF14410000000040560541019A999969CF1441013433333B54054100CDCCCCECCE1441019A99993952054100333333B7CE1441019A9999D9500541FF65666628CE144100000000284E0541019A9999D7CD1441019A9999954C0541019A999953CD144100000000F04A0541FF656666F6CC1441013433333348054100333333B1CC1441FF6566669A460541FF65666634CC144101343333A3440541019A9999C1CB14410134333303410541003333339BCB1441019A9999193F0541000000005ACB1441019A9999113C0541019A999915CB1441FF656666563A054100CDCCCCF8CA1441000000009039054100CDCCCCDECA1441FFCBCCCC1839054100CDCCCC94CA144100000000103705410033333351CA1441FF656666D2340541003333330FCA1441013433330333054100CDCCCCF6C91441FF656666FE31054100000000D4C9144100000000EC30054100000000FAC9144101343333B3300541019A9999F9C91441000000003C300541019A9999E7C9144100000000A02F054100CDCCCC50C91441FF6566661A2D0541019A999911C9144100000000882C0541FF656666D6C8144101343333832B054100333333ADC81441FFCBCCCC102A05410033333375C8144101343333F32805410033333375C81441FFCBCCCC4828054100CDCCCC42C8144100000000A0260541019A999919C814410134333393250541019A9999E5C71441013433338F24054100333333BDC71441FFCBCCCC5C23054100CDCCCC9EC7144100000000E4220541003333336DC71441FF656666CE2105410000000046C714410000000034210541019A99993FC7144100000000D4200541FF656666F8C61441FFCBCCCCDC1F054100333333C5C61441FFCBCCCCBC1E05410033333361C61441019A9999011D0541FF6566664EC61441FF656666821C0541FF65666606C61441019A99990D1B054100333333CBC51441019A9999211A0541003333335DC51441FF6566663E1705410033333311C51441FFCBCCCCD8150541FF656666DCC41441FF6566660E15054100333333B1C41441FF656666F613054100CDCCCC8EC41441019A9999A113054100CDCCCC52C41441019A9999CD12054100000000C4C31441013433331311054100000000A2C31441019A999945100541019A9999ABC31441FFCBCCCCF80F054100333333ABC31441FFCBCCCC500F054100000000A8C3144100000000000F0541FF65666672C31441019A9999650E0541019A99992BC3144100000000480D054100CDCCCCDCC21441FFCBCCCC780C0541FF656666A0C2144100000000440B054100CDCCCC4AC2144101343333070A054100CDCCCC3EC21441019A99998D09054100CDCCCCDAC11441FF656666E607054100CDCCCCBEC1144101343333F306054100CDCCCC8AC11441019A9999250605410000000060C114410134333337050541003333332FC11441FFCBCCCC2004054100CDCCCCE0C0144101343333CB020541FF656666C0C01441019A99991902054100CDCCCC68C0144100000000C4000541003333330BC01441019A9999D1FE044100CDCCCCDCBF1441019A99992DFE0441019A9999A5BF1441000000004CFD0441003333330FBF144100000000ECFA044100333333E1BE1441019A99991DFA0441FF656666BCBE1441FFCBCCCC88F9044100CDCCCC9EBE1441FFCBCCCCBCF804410000000066BE144101343333DFF70441019A999979BD1441000000001CF40441FF65666646BD14410134333313F3044100333333C5BC14410000000074F10441003333334BBC1441FFCBCCCC6CF00441FF656666CABB1441FFCBCCCCBCEE044100CDCCCC96BB1441FFCBCCCCB8ED04410000000068BB1441FFCBCCCC28ED0441FF656666E0BA14410000000044EB0441FF65666686BA14410134333353EA04410033333321BA14410134333337E90441FF6566663AB91441FF656666EAE60441019A999905B91441019A999901E604410000000086B81441FFCBCCCC2CE40441019A99990DB81441FFCBCCCC38E30441019A9999F5B7144100000000F0E2044100CDCCCCA2B71441FFCBCCCC4CE2044100CDCCCCFCB61441019A9999C5E00441FF656666DCB5144101343333C7DE04410033333337B51441FF656666D6DD0441019A999983B414410000000078DC0441019A9999B9B31441019A99996DDB0441019A999945B31441FF656666FADA044100CDCCCC44B21441FFCBCCCCBCD9044100CDCCCCC6B114410000000010D904410000000016B11441FFCBCCCC18D8044100CDCCCCE4B01441FFCBCCCCA4D7044100CDCCCCC4B01441019A9999D5D60441019A999997B01441FF6566669ED50441FF6566663AB0144100000000F4D304410000000000B01441FFCBCCCC70D1044100333333A1AF1441019A9999A9CF0441000000009EAF1441FF6566663ACF0441FF65666674AF1441019A9999A5CE04410033333329AF1441FFCBCCCCE4CC044100000000CAAE1441FF6566661ACB04410033333393AE1441FFCBCCCC40CA044100CDCCCC7CAE1441FF6566668EC9044100333333D3AD1441019A999975C5044100000000BCAD14410134333393C404410033333383AD1441FF65666672C204410000000050AD14410000000074C10441019A999943AD1441019A999969C00441FF6566661CAD1441FF656666AEBF044100333333FFAC14410000000094BE044100333333E3AC1441019A999909BE0441019A9999CDAC1441FFCBCCCC44BD0441019A99999BAC144100000000BCBC04410033333363AC1441FFCBCCCC90BC044100CDCCCC20AC1441FF6566667ABC044100333333F3AA1441FF6566661ABC0441FF65666680AA144100000000B4BB044100333333CFA91441019A999929BB0441FF65666684A91441FF656666CEBA044100333333CDA81441FF65666616BA044100333333C5A7144101343333CFB8044100CDCCCC98A61441FFCBCCCC8CB70441FF65666694A51441FF6566660EB6044100CDCCCC2EA51441013433330FB5044100333333F1A414410000000070B4044100CDCCCC4CA41441019A99999DB2044100000000E4A3144100000000B4B10441FF6566665AA31441FFCBCCCC2CB004410000000004A314410000000058AF0441003333336FA214410000000068AD0441FF65666646A21441000000007CAC0441003333330BA214410000000038AB0441019A999979A11441FFCBCCCC70A80441FF6566661AA1144100000000A8A6044100000000E0A014410134333317A5044100CDCCCCA4A0144100000000B8A204410033333347A01441FF65666646A00441FF65666616A01441FFCBCCCC589F044100CDCCCC829F1441FFCBCCCC609C044100333333219F1441019A99998199044100000000809E1441FF656666AA96044100CDCCCCF89D144100000000D494044100CDCCCC729D1441FF6566669293044100333333579C1441FFCBCCCC88910441019A9999CF9B1441019A99999D90044100333333059B144100000000588F044100CDCCCC36991441FFCBCCCC848D044100CDCCCCE8971441FF656666C28C0441003333333D971441019A99996D8C044100CDCCCCE0951441FFCBCCCCA88B0441FF65666620951441FFCBCCCC188B0441FF6566667C94144100000000D48A04410000000050931441FFCBCCCC3C8A044100333333BD921441FF656666F2890441019A9999CB911441FF65666656890441FF6566668C901441019A9999C588044100333333698F1441013433337388044100CDCCCC548E144100000000E087044100CDCCCCDC8D1441019A999981870441003333336F8C144101343333B7860441019A9999B18B1441FFCBCCCC4C860441019A9999CF8A1441FFCBCCCCE0850441FF656666728A1441019A9999B1850441019A9999378A1441FF6566668A85044100333333D5891441013433335F850441003333331B89144101343333CF840441000000003A881441019A99992D84044100000000CE871441019A9999CD83044100000000A6861441013433330383044100333333EF851441019A9999958204410033333363851441019A99995D82044100000000D4841441FF65666606820441019A9999A5831441019A9999298104410000000070821441019A99995980044100CDCCCC64811441FF656666DE7F044100333333C37F1441019A9999F17E044100333333397E144100000000FC7D0441003333338F7D1441019A9999897D0441FF656666FC7C144100000000207D0441019A9999397C1441013433334F7C0441003333338D7A144101343333777A044100CDCCCC5C791441FFCBCCCC10790441019A9999C9781441FF6566666A78044100000000F477144101343333CF77044100CDCCCC7A771441013433339377044100000000DA761441FF656666227704410000000074751441013433339F760441FF6566662475144101343333AF76044100333333EF73144101343333DB76044100CDCCCCD472144101343333D37704410033333393711441FF6566668A790441019A99994F71144100000000147A0441FF656666F0701441FF656666927A0441019A999909701441FF656666227C0441FF6566665C6F1441FF656666927D0441000000000A6F1441019A99992D7E0441019A9999756E1441FFCBCCCC147F044100CDCCCC246D1441FF65666662810441FF656666486C144100000000DC820441003333338B6B1441FF6566663684044100333333276B144101343333DF840441019A9999DB691441FF6566661E87044100CDCCCCE867144101343333AF8A0441003333332B67144101343333D78B0441FF656666DA661441013433336F8C0441FF656666AC65144101343333838E0441019A99994165144100000000FC8E04410033333345641441FFCBCCCC2490044100333333A363144101343333F3900441003333332B63144101343333439104410033333363611441013433337F930441000000005A601441FFCBCCCCAC94044100000000E05F1441000000004C95044100CDCCCC605F144100000000C8950441003333335F5E1441019A9999ED96044100CDCCCCEE5D1441FFCBCCCC9C97044100333333055D144101343333BB980441FF6566665C5B1441FF656666469B0441019A99993B5A1441FF6566665A9C0441000000006C591441FFCBCCCCE89C044100CDCCCC98581441FFCBCCCC4C9D0441019A99991F581441FFCBCCCC6C9D044100333333DB561441019A9999959D044100000000C655144101343333BF9D0441003333332F55144101343333DF9D0441FF65666622541441019A9999E59D04410033333371531441FFCBCCCCCC9D044100000000BE511441FF656666BA9D0441FF6566666C501441FF656666BE9D0441019A9999FF4F1441FF656666BE9D044100CDCCCCF24E1441FFCBCCCCB89D0441FF656666564D144101343333D79D0441FF656666A24B1441000000008C9D044100CDCCCCC44A144101343333379D0441019A9999B7491441019A9999059D044100333333DB481441FFCBCCCC3C9D04410000000040481441013433331F9D0441019A9999A146144100000000849D0441019A99997746144101343333779D044100333333D3451441019A99997D9D0441000000005E451441013433334B9D044100333333E944144100000000349D04410000000050441441FF6566660A9D044100333333E143144100000000189D04410033333387421441019A9999699D0441000000005041144101343333779D044100000000BC401441FF656666669D0441FF65666614401441FFCBCCCC8C9D044100CDCCCC943F1441FFCBCCCC949D0441003333335D3F144100000000A89D0441003333330B3F1441FFCBCCCCB09D0441000000007A3E1441FFCBCCCCC09D044100000000323E1441019A9999C99D044100000000EE3D144100000000F49D044100000000543D1441FF656666069E044100333333CD3C1441FF656666EA9D0441019A9999133C1441FFCBCCCC009E0441FF6566666A3B1441013433331F9E044100333333E33A1441019A9999399E044100333333B33A1441013433332F9E0441019A9999753A144101343333479E04410000000038391441FF6566664E9E044100000000D2381441013433335F9E0441019A999971371441FF6566663E9E0441003333337F36144100000000149E044100333333C535144100000000E09D0441019A999981341441FF656666969D044100000000DC33144101343333779D0441000000003831144100000000589D0441003333334D30144100000000909D044100CDCCCC9E2F144100000000C49D044100000000662F1441019A9999ED9D044100000000C02E1441FFCBCCCCBC9E044100000000622E1441FFCBCCCC489F0441003333332D2D1441019A999979A00441003333335D2C1441019A9999BDA1044100000000EA2B1441FFCBCCCC20A20441FF656666FC2A144101343333B7A20441019A9999AF2A144100000000C4A20441FF656666B82914410000000088A20441003333336B2914410000000030A20441000000007E281441000000003CA1044100000000C2271441000000000CA00441003333333F271441FF656666269F0441FF656666A8261441FFCBCCCCCC9D044100CDCCCC3C261441FF656666969C044100000000DC251441FF656666D29B0441FF65666698251441FF6566661A9B0441019A999977251441019A9999999A044100CDCCCC1C251441FF6566665A99044100000000962414410000000020980441FF65666650241441FF6566664697044100333333AB231441FF656666EE950441000000005E231441019A9999519504410000000006231441FF656666B2940441019A99997B221441FFCBCCCCA0930441003333330F221441FF656666F292044100333333E5201441013433338B900441FF6566661E201441019A9999258F044100333333B11F1441000000008C8E044100CDCCCC841F144101343333FB8D044100CDCCCCAA1E1441013433339B8C0441019A9999471E1441FFCBCCCCE88B0441FF6566660E1E1441FF656666828B044100333333771D1441019A9999A18A044100000000F61C144100000000C489044100333333291C1441013433338F880441FF656666F21A1441019A999995860441019A9999A51A1441FF656666D285044100000000041A1441FFCBCCCCAC840441FF6566666819144100000000808304410000000032191441019A999945830441019A99992F191441FFCBCCCC9483044100CDCCCCEA181441013433333F840441FF6566668A1814410000000074850441019A99991D181441019A99990587044100000000EC17144101343333B78704410033333399171441FF656666AA8804410033333349171441FF656666DE890441019A9999DF16144101343333F38A0441019A9999AF16144100000000B88B0441003333336D16144101343333AB8C0441003333335916144100000000308D044100CDCCCCCE151441019A9999E18E0441019A999999151441FF656666BE8F044100CDCCCC2815144101343333FB90044100333333C1141441019A99990D9204410000000050141441000000009C93044100333333CB1314410134333353950441003333334F131441FF6566668A96044100333333B7121441FF656666D6970441FF656666FE111441FF656666029A044100333333C5111441FF656666C69A04410000000038111441000000002C9C04410033333397101441019A9999419D0441019A9999F50F144100000000D89E0441000000008A0F1441FF656666CA9F044100333333070F14410000000070A00441019A9999DD0D1441FFCBCCCCC0A10441FF656666580D1441013433333FA2044100000000D00C144100000000ECA20441003333332F0C14410134333347A30441FF656666620B1441FF656666AEA30441019A9999F10A14410000000000A4044100CDCCCC520A1441FFCBCCCC5CA40441FF656666B00914410000000090A40441019A9999D9081441FFCBCCCCB4A40441FF6566666008144100000000C0A4044100CDCCCC16071441FF656666C2A40441000000003C06144101343333A3A40441000000002C051441019A999945A40441019A9999C50314410134333383A3044100000000D802144101343333EFA20441019A999983011441013433338BA10441FF656666A0001441019A9999E1A0044100000000040014410000000070A00441FF65666678FE1341019A9999C59E0441019A999919FE1341000000007C9E044100CDCCCC02FE1341019A9999419E0441019A9999ADFD1341013433334B9E0441FF65666660FC1341FF656666629D044100333333E7FA1341FF656666CE9C0441019A9999C5F91341019A9999399C0441FF65666650F81341019A9999D19B0441FF65666636F71341FF656666969B0441003333337BF51341019A9999999B0441FF65666658F41341FFCBCCCC309C04410033333309F31341019A9999AD9C0441019A999943F21341FF6566660E9D044100000000E8F11341FF6566662A9D0441FF65666628F11341FF656666CA9D044100CDCCCC60F01341019A9999919E0441FF6566660AF0134100000000BC9E0441FF6566665AEF1341019A9999A19F0441019A99993FEF13410000000000A00441FF65666674EE1341019A9999B1A00441019A999923EE1341FF656666E2A004410000000034ED1341013433333BA20441019A999909EC1341FFCBCCCC78A40441000000008CEB1341FF656666B2A50441003333330FEB134101343333F3A6044100CDCCCCA8EA1341019A99994DA80441FF6566665CEA134101343333ABA9044100CDCCCC1AEA1341FF65666686AA0441FF656666A4E91341019A999949AC0441019A99992DE9134101343333FFAE0441FF65666696E81341FF656666A6B104410000000086E81341FF65666652B20441FF656666FAE71341FF656666CEB50441FF656666ACE7134100000000ECB70441019A999949E7134101343333C3BB0441003333331DE71341019A999975BD0441FF656666A4E613410000000084BF044100CDCCCC72E6134101343333E3C0044100333333DFE5134100000000B0C5044100333333BDE51341FF656666EEC6044100000000EEE513410000000020C90441000000002EE61341019A999991CA044100CDCCCCB6E61341FF6566662ACC04410000000018E71341FF65666696CD0441000000007AE71341FFCBCCCC4CCE0441FF65666614E813410000000018CF0441019A99999FE81341FF656666FACF0441003333330FE91341FF6566668ED00441FF656666C6E91341FF65666666D104410033333337EA1341FFCBCCCCCCD10441019A999971EB1341FF656666A6D2044100CDCCCC02ED13410000000094D304410033333313EE1341FFCBCCCC68D40441019A9999F3EE1341FFCBCCCC68D5044100CDCCCC8AEF1341FF656666D6D50441FF65666644F0134100000000ECD604410033333305F11341FFCBCCCC18D80441019A9999E1F11341FFCBCCCC7CD90441019A999911F31341019A999915DC0441000000005EF31341FF656666DEDC044100CDCCCCDCF31341FF65666646DE0441FF6566666EF413410000000064E00441019A99998DF41341019A99992DE1044100333333E5F41341019A999909E3044100CDCCCC42F51341019A9999A1E40441000000006EF51341019A999909E5044100CDCCCCB4F513410134333307E60441003333332BF613410134333317E70441019A99998DF61341FFCBCCCC58E80441000000002CF7134101343333F3E9044100000000FEF81341000000009CED0441FF65666690F913410000000074EE04410033333369FA1341FFCBCCCCECEF0441FF656666AAFB134101343333AFF104410000000062FC1341019A9999B1F20441FF656666B0FC1341FFCBCCCC40F3044100CDCCCC92FD1341013433335FF404410000000010FE1341FFCBCCCC44F5044100333333A1FE1341000000004CF60441FF656666EEFE1341019A999905F70441FF6566665EFF1341FFCBCCCCFCF70441019A9999BDFF13410134333347F90441003333330700144100000000A0FA04410000000032001441019A9999A9FC0441003333333F001441019A999941FF04410033333329001441019A9999290105410000000020001441019A99999D0205410000000002001441013433339F03054100000000FAFF1341013433337F04054100CDCCCCB4FF13410000000064060541019A99995DFF134100000000F4070541019A9999EDFE134101343333EF0A054100CDCCCCB0FE1341000000000C0D05410000000072FE1341FFCBCCCC780E054100000000EEFD1341000000009011054100CDCCCC6AFD1341FF6566662A140541003333331FFD1341019A99992516054100CDCCCCFAFC1341019A99992518054100000000C8FC1341FF656666321A0541019A9999C7FC1341FF656666261C054100333333DFFC1341019A99995D1D054100333333D1FC134100000000D01D054100000000ECFC134100000000DC1E05410000000008FD1341FF6566665E1F054100000000FAFC134101343333F71F0541FF65666618FD134101343333872005410000000062FD1341013433338F21054100000000D4FD1341FF6566668E2205410033333355FE1341FF6566666A23054100333333ABFE1341000000000024054100CDCCCCE0FE1341FFCBCCCC5024054100CDCCCC86FF1341FF6566666625054100333333C5FF1341013433333F26054100CDCCCC08001441FFCBCCCCA4260541FF65666670001441019A99997527054100CDCCCCD8001441FF6566667A280541FF656666000114410000000018290541FF6566664201144100000000C8290541019A99995701144101343333172A0541019A99995F011441FFCBCCCC642A0541000000006A011441FF656666FA2A0541003333336701144101343333E72B054100CDCCCC04011441019A99990D2D0541019A9999AF001441FF656666DE2D0541019A99991700144100000000C02E054100CDCCCC8CFF1341013433334B2F0541FF65666696FE1341FFCBCCCC383005410000000004FE1341FF656666E6300541FF65666646FD1341FFCBCCCC90310541019A999953FC1341019A999935320541019A9999FBFB1341000000006432054100000000D4FA1341FF656666CE32054100CDCCCC08FA134101343333FB3205410000000008F91341FFCBCCCC1433054100CDCCCC76F81341019A9999F532054100000000F8F7134101343333B3320541019A999993F71341FFCBCCCC9032054100000000EAF61341FF6566660E320541019A9999C9F5134100000000183105410000000064F51341FFCBCCCCB8300541019A999927F51341013433336B30054100CDCCCC48F41341FFCBCCCCDC2F054100000000C6F31341FF6566666E2F0541019A999947F31341FFCBCCCCF42E054100333333BDF21341019A9999C52E054100CDCCCC84F21341FF656666D22E054100333333EFF1134101343333F32E05410033333331F11341FF6566669E2F0541019A9999CBF01341FFCBCCCC74300541003333338FF01341FFCBCCCC1C32054100CDCCCC7CF01341FFCBCCCCC8320541FF6566667EF01341019A99992D330541019A999953F01341019A9999E5330541FF6566664EF0134101343333AB340541000000002CF013410134333337350541019A999935F01341019A9999F535054100CDCCCC28F0134101343333EB360541003333332FF01341FF6566667A3705410000000026F01341019A9999DD380541003333333FF01341FFCBCCCC983905410000000048F01341019A9999293A0541003333336FF01341019A99991D3B0541019A999963F0134100000000303C05410000000078F01341FFCBCCCCD83C0541019A99994BF0134100000000183E0541019A999929F01341FF656666063F05410000000006F01341FF656666AA3F0541FF656666FAEF1341FFCBCCCCB8400541019A9999B5EF134101343333834205410033333351EF1341FF656666F643054100CDCCCC0EEF1341FFCBCCCCE4440541003333333BEE134101343333C346054100000000C6ED134101343333974805410033333373ED134101343333FB490541003333332FED1341019A99991D4D05410033333351ED1341FF656666E24D05410033333359ED1341019A9999714E0541019A99994FED1341FFCBCCCC904F0541019A99996BED1341019A999985500541000000008CED1341FF656666DA500541003333333DEE1341FF656666CA5105410033333377EE1341000000002052054100CDCCCC2EEF1341FF6566665E520541003333337DEF1341019A99997D520541000000003EF01341019A9999955205410000000000F1134100000000BC520541019A999925F1134101343333FB520541019A99997BF11341FF6566660653054100CDCCCCF6F11341FF656666E6520541019A999939F31341FFCBCCCC74520541003333339BF31341000000006C52054100333333F3F31341FFCBCCCC30520541003333333FF5134101343333EB5105410033333393F51341FF656666D65105410000000018F61341FF656666DA5105410033333375F61341019A99996552054100CDCCCCACF61341019A9999AD52054100333333EFF61341FFCBCCCC405305410033333327F71341013433334F54054100CDCCCC52F71341FFCBCCCCBC540541FF6566667EF71341FFCBCCCC305605410033333335F71341FF656666E257054100333333B7F61341019A99992D59054100CDCCCC72F6134101343333235A054100CDCCCC76F6134100000000AC5A05410033333385F61341013433336F5B0541019A99999DF61341FFCBCCCC805C054100333333F9F61341FF656666F65D0541019A99994DF71341019A99996D5E05410000000082F7134100000000D85E0541019A999917F81341FF6566660260054100CDCCCC80F81341013433338760054100CDCCCCF4F81341013433333F61054100CDCCCC58F91341FF656666C6610541FF6566667CF9134100000000E461054100333333F1F91341FF65666686620541FF656666E6FA134100000000B463054100CDCCCC20FB1341FF656666FA6305410033333373FB13410000000050640541003333338BFC1341FF6566665A65054100000000E4FC1341FFCBCCCCC865054100CDCCCC44FD1341019A99991D6605410033333305FE1341019A99990167054100CDCCCC86FE1341FFCBCCCCC867054100CDCCCCD6FE1341FFCBCCCCE868054100CDCCCC02FF134100000000F069054100CDCCCC7EFF134101343333C76B054100CDCCCCA2FF1341000000008C6C05410000000002001441019A9999116F0541FF6566661C001441FF656666DA6F0541000000004C001441019A999971710541FF656666AE001441FF6566668E730541FF6566660401144100000000A875054100CDCCCC42011441FFCBCCCCC8760541000000006C011441FFCBCCCCF4770541FF656666BE011441019A9999297A0541003333332902144101343333FB7B0541FF6566664C021441019A9999E57C0541000000007802144100000000E87D0541FF6566661C03144101343333DB7F054100333333A30314410000000050810541FF65666624041441019A9999BD820541019A99995F041441FF656666AE83054100333333BF041441019A999981840541FF656666A6041441FF65666606850541FF6566665C041441FF6566665685054100000000DC031441019A999935860541019A999919031441FFCBCCCC3887054100CDCCCCAE01144101343333A7880541019A999983011441FF656666FE88054100000000F4001441FFCBCCCC9C890541000000000400144100000000A48A054100333333CDFE1341FF6566664A8C05410000000062FE134101343333B78C054100000000BEFD1341000000009C8D0541FF656666F6FC134101343333AF8E0541019A99990DFC134100000000C08F05410033333313FB1341FFCBCCCCFC900541019A999975FA1341019A9999759105410033333367F91341019A9999A192054100CDCCCCDEF81341013433335F93054100CDCCCC70F8134100000000E893054100333333CFF71341FFCBCCCCD8940541FF6566660AF71341019A9999CD950541FF65666666F51341FF6566668E970541FF65666618F51341FF656666FE97054100CDCCCC84F41341FF656666929805410033333317F31341FF656666569A054100333333CBF21341019A99998D9A054100CDCCCCD2F11341FF656666D29B0541FF65666638F11341FF6566669A9C054100CDCCCCBEF01341019A99991D9D05410033333379EF134101343333D39E0541019A9999A5ED1341013433332FA105410033333321EC134101343333CFA2054100CDCCCC6EEB1341019A9999A5A3054100333333E5EA13410000000018A405410000000064E91341FF656666EEA5054100333333E1E81341FF6566667AA605410033333373E713410000000068A80541003333332FE61341FFCBCCCC18AA054100333333ADE5134101343333D3AA0541019A999989E31341FFCBCCCC5CAD05410033333315E31341019A9999BDAD054100CDCCCCB2E113410000000068AF05410033333333E11341FF656666E2AF0541019A9999C3DF1341000000008CB10541019A9999C7DD1341FF656666EEB30541FF65666674DC1341019A99995DB5054100000000DCDB1341FF6566663AB6054100CDCCCC8CDB1341FFCBCCCC94B60541FF656666DEDA13410134333377B70541003333335FD91341FF65666666B90541019A99999DD813410134333357BA054100CDCCCC38D81341019A9999C5BA054100000000C8D71341019A999929BB0541000000008CD71341013433336BBB054100000000C0D61341FF6566666EBC054100CDCCCC9CD61341FF656666A6BC054100CDCCCC74D61341FF656666DEBC0541000000002AD613410000000048BD0541FF656666E4D51341FF65666696BD0541FF6566667ED513410000000028BE0541019A99994DD513410134333337BE054100000000A2D413410000000024BF0541000000000AD41341FF656666EEBF054100CDCCCCC6D313410134333357C00541FF65666634D213410134333333C20541003333338DD013410134333317C4054100333333CDCF1341FF6566660EC50541019A999939CF1341FFCBCCCC08C60541003333339BCE134100000000C4C6054100CDCCCC2ECE13410134333323C705410000000054CD13410000000030C8054100000000CCCC1341FF65666626C9054100CDCCCC48CC134100000000B8C9054100CDCCCC96CB1341013433337FCA0541FF656666CACA1341FFCBCCCC8CCB0541FF65666604CA13410134333367CC054100CDCCCC60C81341FF6566665ACE054100CDCCCC68C71341013433339BCF054100000000C6C613410000000078D00541FF65666652C61341019A9999E9D00541019A9999F7C41341019A9999D5D20541FF65666660C413410000000084D3054100CDCCCCE0C213410000000040D5054100CDCCCC82C21341FFCBCCCC88D505410033333329C21341013433330BD60541019A9999A7C11341FFCBCCCCC8D6054100000000DEC01341FF656666D6D70541003333331BC01341FF65666696D80541003333337DBF1341013433333FD90541000000009EBE134101343333C3D9054100CDCCCC46BE1341019A999955DA054100CDCCCCE6BD134100000000F8DA054100CDCCCC76BD1341019A9999A1DB05410000000012BD1341FF656666D6DB054100000000AABC1341FF6566668EDB05410000000074BC1341019A9999F1DA0541FF65666644BC1341000000006CDA054100CDCCCCFEBB13410000000010DA054100333333AFBB1341FF6566661EDA0541003333335FBB1341FF65666686DA054100CDCCCCA6BA13410000000028DB054100333333F9B913410134333397DB054100CDCCCC62B91341019A9999B9DB0541000000000EB91341FFCBCCCC60DB0541FF656666BCB81341FFCBCCCCE8DA05410000000072B81341FF656666CED905410033333331B8134100000000E4D80541019A99990FB81341013433332FD8054100333333C7B713410134333363D70541019A999951B71341FFCBCCCC78D6054100333333F9B613410000000020D6054100CDCCCC80B613410000000058D50541FF656666F6B513410000000020D505410000000030B51341FFCBCCCC24D50541019A99994DB41341013433338BD5054100333333F5B31341019A99997DD50541FF656666B6B31341019A99996DD5054100CDCCCC5AB31341013433330FD505410000000018B31341FFCBCCCCF4D40541000000008EB213410000000058D405410000000056B21341019A999909D405410000000000B11341019A999915D2054100CDCCCC92B01341FF6566666ED105410033333341B013410000000008D105410033333317B0134100000000D0D0054100CDCCCCB8AF1341FF6566667ED0054100CDCCCC04AF1341FF6566664AD0054100333333B3AE1341FF6566665AD005410000000096AD134101343333D3D0054100CDCCCC22AD1341FF65666642D10541019A999973AC1341019A9999C1D105410033333375AB1341FFCBCCCC94D2054100333333C9AA1341019A9999C1D30541FF6566662AAA1341FF65666686D405410033333365A91341019A9999E5D4054100000000DEA81341FF656666F6D40541FF65666642A81341FFCBCCCC24D5054100CDCCCC06A81341FFCBCCCC14D50541019A9999B5A71341FFCBCCCCF0D40541FF65666666A71341FF65666686D40541003333339BA613410134333307D30541003333339DA5134100000000ECD005410033333311A51341FFCBCCCCD0CF0541000000004EA413410000000054CE054100333333DFA313410000000080CD0541000000006AA3134100000000A4CC05410033333307A31341013433332BCC0541019A999967A21341FF656666DECB054100CDCCCC2EA21341019A9999B5CB054100000000ECA11341000000009CCB05410033333357A11341FFCBCCCC30CB0541FF656666ACA01341FF656666CECA0541FF656666B29F1341FF656666DEC90541000000000E9F1341FF6566664EC90541019A9999719E134100000000C0C80541FF656666AE9D1341019A99997DC8054100CDCCCC429D1341013433335BC8054100CDCCCCA29C13410000000020C8054100000000289C134100000000F8C70541019A9999399B1341019A9999B5C7054100333333739913410000000010C70541FF65666616991341FFCBCCCC08C7054100000000BC9813410134333307C705410033333363981341FFCBCCCC00C70541019A99999B971341FF6566660EC7054100CDCCCC20971341FF6566665EC70541003333331F9613410134333313C8054100333333BD951341FF65666686C8054100000000E0941341FF6566667AC90541003333335F941341FF656666FEC90541FF656666BE931341FFCBCCCC70CA054100CDCCCC36931341019A9999DDCA0541003333339192134100000000CCCA0541FF65666670911341FF6566661ECB0541FF656666BE901341FFCBCCCC20CB0541019A9999F18F134101343333BBCA0541019A9999458F1341FFCBCCCC6CCA054100CDCCCCCC8E1341FF6566663ECA0541019A9999C18D1341FF65666616CA054100333333C98C134100000000C0C90541FF656666AC8B1341019A999985C9054100333333698B13410000000054C9054100333333278B1341019A999921C90541019A9999BD8A1341FFCBCCCC20C9054100333333758A1341019A99992DC9054100000000D6891341000000002CC90541003333339F8913410000000010C9054100333333E1881341019A9999D1C80541FF65666680871341FFCBCCCCE4C70541FF656666068713410000000068C705410000000074861341FF6566669AC60541003333335384134101343333CBC3054100CDCCCC38831341FF6566666AC2054100CDCCCCB0821341FFCBCCCCD8C10541000000005E82134100000000A4C10541FF656666B4811341019A99991DC10541FF6566666481134101343333EFC00541FF656666D8801341019A9999DDC00541FF65666686801341FF656666F2C00541019A99991F80134101343333E3C00541FF656666AC7F1341019A9999F5C0054100333333EF7E1341FFCBCCCC3CC1054100CDCCCC927E1341019A999969C1054100000000527D1341FFCBCCCCFCC1054100CDCCCCEE7B1341FF65666696C2054100CDCCCCB47A13410134333353C30541FF656666687A1341019A99997DC3054100333333D3781341FFCBCCCC8CC4054100CDCCCC267713410000000064C505410000000090761341FFCBCCCCB4C5054100333333F3741341FF6566662EC70541019A999991741341000000005CC705410033333323741341FF656666C6C70541FF65666636731341019A99998DC90541019A9999A1721341019A999939CA0541FF6566669E711341FFCBCCCCCCCB05410000000090701341019A9999D1CD054100000000E06F1341FF6566667ECF0541019A99998D6F1341000000006CD0054100CDCCCC346F13410000000074D1054100CDCCCC646E134100000000A8D30541FF656666FE6D134100000000BCD4054100000000906D13410134333377D50541019A99991B6D134100000000FCD50541FF656666AA6C1341000000005CD60541019A9999CF6B1341FF65666696D70541FF6566666A6B1341FF656666F6D70541019A9999A369134100000000DCD80541019A9999DF681341FF656666FED805410033333315681341FFCBCCCCDCD8054100CDCCCC62671341000000008CD8054100000000AA661341FF6566665ED80541FF656666FE651341FF65666666D7054100000000A26413410134333397D6054100333333D363134100000000CCD505410000000062631341019A99992DD5054100333333C7621341013433333BD40541019A9999EB611341FF6566660ED30541000000004C611341FF65666622D205410033333361601341000000003CD1054100333333615F1341FF656666CECF0541FF656666C05E1341013433337BCF0541FF656666B85D1341FF65666602CF0541FF6566667E5C1341FFCBCCCCC8CD054100CDCCCC785A1341019A999949CC05410033333375591341019A9999D5CB05410033333363581341FFCBCCCC44CB0541000000001857134101343333AFCA054100333333715613410000000084CA0541019A999999551341013433335BCA05410033333365541341FF65666616CA05410000000064521341FFCBCCCC8CC90541003333330F501341019A999941C90541FF6566661C4E1341FF6566667EC9054100CDCCCCB24C1341FF656666AEC9054100333333114C1341FFCBCCCCA8C9054100333333174B134101343333D3C90541019A9999674A1341FF656666DAC90541019A999919491341FFCBCCCC88CA0541000000004448134100000000E0CA05410033333331471341FFCBCCCCB8CB054100CDCCCC7C461341019A999935CC054100000000F8451341019A9999A1CC054100CDCCCCFA441341013433333FCD0541003333336B4313410134333327CE054100000000DE421341FFCBCCCC54CE054100CDCCCC62411341FFCBCCCC18CF0541019A9999B7401341019A99992DCF054100333333374013410134333357CF054100CDCCCC5E3F1341FF65666662CF0541FF656666623E1341FFCBCCCC0CCF0541003333335D3D1341FF6566667ACE054100000000E03C1341019A999905CE0541FF656666543C1341013433334BCD0541003333335D3B1341013433337BCC054100CDCCCC7E3A1341FFCBCCCC2CCB0541FF6566661E3A13410134333347C9054100333333ED391341019A9999F9C7054100333333CD391341FFCBCCCC4CC7054100CDCCCC88391341019A999999C50541003333333D391341019A999975C305410033333397381341FF65666646C00541000000008438134101343333EFBF054100CDCCCC3A381341019A999969BF0541FF65666614381341000000004CBF0541019A9999AD371341FF656666C2BE0541FF6566664037134100000000E0BD0541019A9999CD3613410134333357BD0541FF65666640361341000000002CBD0541019A999949361341019A9999A9BD0541FF6566665A361341019A999915BE0541019A999959361341FF65666696BE0541003333335B361341FF65666622BF0541003333335D36134100000000E8BF0541019A99992F361341FFCBCCCC60C00541019A999935361341FF656666F6C00541FF65666622361341FFCBCCCC54C1054100CDCCCC2C361341FF656666A2C105410033333303361341019A999911C20541FF656666DA351341FFCBCCCC64C20541019A999915351341FFCBCCCCD8C5054100333333D7341341FFCBCCCC10C70541FF65666666341341FFCBCCCC9CC8054100333333AF3313410134333333CA0541FF6566668A33134100000000C8CA05410000000056331341FF65666672CB0541FF65666628331341013433338FCC0541FF6566660C331341FF65666692CD054100000000AC32134101343333C7CE0541000000005E321341FFCBCCCCCCCF0541019A9999253213410000000030D10541000000000A321341FF65666652D1054100333333ED311341FFCBCCCCECD30541FF656666E8311341019A999931D5054100000000DA31134100000000B8D6054100333333B9311341019A999955D7054100333333393113410000000084D80541019A9999E93013410134333307D90541FF65666668301341019A999955D9054100CDCCCC20301341FF656666CED8054100CDCCCCC22F1341FF6566668AD80541019A9999412F1341FFCBCCCC7CD90541FF656666202F1341FF656666B6DA054100000000122F1341019A999945DD054100CDCCCC3C2F1341FF6566668EDE054100CDCCCC862F1341FFCBCCCC6CDF054100000000BC2F134100000000D4DF054100000000F02F1341FFCBCCCC10E1054100CDCCCCEA2F1341FFCBCCCCE8E1054100000000BA2F1341019A99996DE2054100333333E52E1341019A9999C9E30541019A99999F2E13410000000034E4054100333333332E1341000000007CE6054100333333392E1341FF6566668EE8054100333333532E1341FF656666FEE90541000000007E2E1341FFCBCCCC8CEB054100CDCCCC982E1341FF65666646EC054100333333C32E1341000000001CED054100333333EB2E1341FFCBCCCC0CEE0541FF6566663A2F1341FFCBCCCC94EF0541000000005A2F13410134333357F005410000000022301341FFCBCCCC14F4054100CDCCCC64301341FF65666632F60541019A99995F301341019A9999FDF6054100333333EB3013410000000040F90541019A999913311341FFCBCCCC34FA05410033333329311341FFCBCCCC0CFC0541FF65666668311341019A99995DFE0541019A9999BB311341019A999965010641003333331B321341FFCBCCCC10030641000000005C321341FF656666A6040641003333337F321341FF656666A205064100333333D3321341013433330B070641003333330F33134101343333F3070641FF65666652331341FF6566661A09064100CDCCCC9633134100000000340A064100333333BB331341FF6566663A0B0641019A99993134134101343333170D0641019A99991B351341FF6566668A110641019A99994D351341019A999979120641019A999997351341019A999941130641003333331D361341019A99995515064100CDCCCC4E36134100000000EC150641019A9999A5361341FF656666E2170641FF6566660C37134100000000641906410000000032371341FF656666FE190641019A999975371341FF656666AA1A0641019A9999D1371341FF6566660E1C064100CDCCCC6038134100000000841D064100CDCCCCC238134101343333131F0641019A999945391341FF65666642210641FF6566669E391341FFCBCCCCB822064100CDCCCC403A1341FFCBCCCC2C24064100000000AA3A134101343333F724064100CDCCCCEA3A1341FF656666BE250641FF656666623B134100000000A026064100333333C93B1341FFCBCCCC2C270641FF656666363C1341FFCBCCCC74280641019A9999E13C13410134333397290641FF6566666C3D1341FFCBCCCC182A064100333333013E1341FFCBCCCC242B0641FF656666123F1341019A9999E12C064100333333953F1341019A99999D2D0641019A999909401341FFCBCCCC742E064100000000C4411341013433337730064100CDCCCC7A421341FFCBCCCC24310641019A9999ED421341FF656666A6310641FF65666684431341019A999931320641000000000644134101343333D73206410033333335441341FFCBCCCC6C33064100CDCCCC6C441341019A9999E133064100CDCCCC94441341FF656666A634064100CDCCCC08451341FFCBCCCC443706410033333321451341000000005838064100CDCCCC2C451341FFCBCCCC883B0641FF65666650451341FF656666BE3E0641019A999975451341FFCBCCCCD8420641000000008E45134101343333CB45064100000000CE451341019A9999E147064100CDCCCC22461341000000007C4C064100CDCCCC3246134100000000B84D0641003333334546134100000000104F0641019A99992746134100000000B0500641019A9999DD451341FFCBCCCC7C510641003333330545134100000000D851064100333333DF441341019A99993152064100333333B3441341FF656666F6520641003333337B4413410134333397530641FF65666646441341FF65666692540641000000000E441341000000001C550641019A9999E7431341FFCBCCCCA055064100CDCCCC9E431341FFCBCCCC84560641FF656666E0421341019A9999DD580641FF6566669042134101343333275A0641003333335B421341FF6566660E5B0641019A999947421341013433337F5B064100000000BA411341FF656666EE5C0641FF656666B041134100000000C45D0641FF656666C6411341019A99997D5E0641000000000242134101343333A35F0641000000003C421341FFCBCCCC18600641019A999961421341019A9999FD600641019A999981421341019A9999F16106410033333387421341019A99993962064100CDCCCC7A421341019A999911630641019A9999AB421341FFCBCCCCD063064100CDCCCC1C431341019A999979640641003333336D431341FFCBCCCC646506410000000090431341019A9999F9650641019A9999BD431341000000007066064100CDCCCCE8431341019A99994167064100CDCCCC46441341FF656666AE68064100CDCCCC64441341FF656666A269064100CDCCCC5E441341FF656666066B0641019A99995B441341013433335F6C064100333333E1431341FFCBCCCCE86D064100CDCCCCE243134100000000646E064100333333F143134101343333CB6E064100333333E543134101343333A77006410000000002441341FFCBCCCCD0710641019A99990F441341FF656666A6720641019A99995344134100000000D47306410033333379441341FF656666C274064100333333BD441341FF656666CA750641FF656666DE44134100000000AC760641000000002A451341FFCBCCCCEC77064100000000984513410000000030790641003333332F461341FF656666267B0641019A9999B5461341019A9999417D064100CDCCCC42471341019A9999397F064100CDCCCC82471341019A99996980064100CDCCCCD64713410000000058810641FF656666704813410134333327820641019A9999DB48134101343333FB82064100000000F2481341FF6566664A8306410033333319491341FFCBCCCC9C830641019A9999B94913410134333387850641003333335D4A1341FF6566667287064100333333ED4A1341013433336789064100333333374B1341FF6566665A8A064100CDCCCCCC4B134101343333C78B064100333333254C134101343333F78C064100CDCCCC5E4C1341FFCBCCCCD08D064100000000BA4C1341019A9999F18E0641FF656666EA4C134100000000B88F0641FF656666364D1341019A999939900641019A9999714D1341019A999931910641019A99990D4E1341019A999921930641019A9999514E1341FF6566663A94064100CDCCCCB44E1341000000004095064100CDCCCCE04E1341FFCBCCCC5C96064100CDCCCC284F1341000000006897064100333333574F134100000000D0980641000000009E4F1341013433333F9A0641003333331F501341019A9999999C0641019A99997F50134100000000209E064100333333AD50134100000000949E064100000000CE501341FFCBCCCC209F064100333333D5501341FFCBCCCC7C9F0641019A999953511341FFCBCCCC1CA1064100333333AF51134101343333BFA2064100CDCCCCCC511341FF6566666AA30641019A999933521341FF6566668EA40641FF6566667E521341019A999951A5064100333333D3521341013433334BA6064100CDCCCC245313410134333387A706410033333331531341019A9999D9A70641FF6566667253134100000000A4A80641FF6566669E531341FFCBCCCCACA9064100333333D953134100000000ACAA0641019A9999E953134101343333C3AB064100333333315413410134333337AE0641003333337D54134100000000D8AF064100CDCCCCAC541341FF65666632B10641FF656666A8541341FF65666696B10641FF656666D0541341FF656666F6B1064100CDCCCC3E5513410134333313B20641003333336B551341FFCBCCCC38B206410033333357551341019A999905B30641FF6566660855134101343333C7B3064100333333D3541341019A999945B4064100CDCCCCD6541341FF656666CAB40641FF656666FA5413410134333347B50641FF65666630551341019A999941B6064100CDCCCC40551341FF656666D2B6064100CDCCCC20551341FFCBCCCCACB70641FF65666652551341FFCBCCCC94B80641FF65666680551341013433334BB9064100000000BA551341FFCBCCCCA0B90641019A9999F5551341FFCBCCCCE4BA0641FF656666105613410134333333BB06410033333355561341FF656666CABB0641FF656666DE56134100000000ACBD06410000000026571341013433331FBE0641019A9999BD571341FFCBCCCC00C00641FF65666632581341FFCBCCCCC0C10641FF6566664A581341FF65666616C2064100CDCCCC86581341FFCBCCCC74C406410000000094581341019A9999C5C4064100333333CD5813410000000058C50641FF656666FA581341019A9999C5C6064100CDCCCC08591341019A99992DC70641019A9999695913410134333377C8064100CDCCCCBA591341FF6566666AC90641FF6566663A5A1341FF65666632CA0641019A9999775A13410134333317CB0641019A9999895A1341FF65666656CB0641019A9999875A1341FF656666B2CB064100333333A75A13410134333367CC064100000000065B1341019A9999D1CD064100333333515B1341019A999999CE064100333333A15B13410000000000D0064100000000C25B134100000000CCD00641019A99996F5C1341FFCBCCCC78D30641019A9999275D1341000000000CD6064100CDCCCCC65D134100000000A0D8064100CDCCCCF25D1341FFCBCCCC4CD9064100CDCCCC785E1341013433337BDB064100CDCCCC9C5E1341FF6566662ADC064100333333315F134101343333ABDE064100CDCCCC7A5F1341FFCBCCCCF4DF0641FF65666688601341FF6566662EE4064100333333C36113410134333363E9064100CDCCCC24621341FFCBCCCCBCEA064100CDCCCCD6621341000000006CED0641019A9999F9631341013433330BF20641000000005264134100000000C0F30641019A9999BF641341FF65666676F50641FF65666656651341FF656666EEF7064100000000E0651341FF656666D2F90641000000009C661341019A999921FD0641FF65666684671341019A999959000741FF6566664C681341FF6566667E030741019A999951691341000000002C07074100333333B1691341FF656666CE080741000000008A6A134100000000E00B074100000000BC6A1341FF656666660C0741FF656666C26A134101343333CF0C0741003333333D6B1341FF656666DE0E0741FF656666906B1341013433331710074100CDCCCCC86B1341FF656666BE120741000000000C6C1341FFCBCCCCA4140741003333333D6C1341FFCBCCCC5C160741FF6566667E6C1341019A99993117074100333333AD6C1341FF6566663618074100CDCCCCF06C134101343333171A0741FF656666486D1341013433337F1B0741FF656666A86D1341000000009C1C074100000000D86D1341FF6566667A1D0741FF656666EE6D134101343333831E074100CDCCCCEC6D134100000000341F074100CDCCCCC66D1341FFCBCCCC30200741019A9999D16D1341019A9999D520074100000000306E1341FF65666652220741019A99993B6E134101343333BF220741000000002C6E134100000000C423074100000000466E1341FF6566662E24074100CDCCCC826E1341FF6566666A24074100333333CD6E1341019A99992D240741FF656666326F134101343333AB230741019A99998B6F1341FF656666A2230741FF656666D46F1341FF6566660A24074100CDCCCC5A701341019A9999CD24074100CDCCCCFC701341019A9999CD2507410033333307721341FF656666FE27074100333333837213410000000038290741FF6566663E731341FF656666BA29074100000000E273134100000000082A07410033333353741341FF656666822A0741019A9999B1751341FFCBCCCC542D074100333333F9751341013433331F2E0741019A9999AD76134101343333572F0741FF656666EE771341019A9999F131074100333333917813410000000048330741000000006E79134100000000F834074100000000D87913410000000010360741019A9999477A1341FFCBCCCC00370741019A9999377B1341019A99991539074100CDCCCC5C7C1341FF656666C63B0741019A9999937C1341FFCBCCCC483C074100CDCCCCB47C134100000000643C074100000000CE7C1341013433339B3C074100333333317D1341013433332F3D0741FF656666AE7D134100000000AC3D074100CDCCCCA87E1341FFCBCCCC443F0741003333338F7F134100000000E0400741000000000A801341FF6566661242074100CDCCCC9A801341FFCBCCCCB8420741019A9999EB801341000000002C430741FF656666C4811341FF6566661E450741003333333382134101343333EF45074100CDCCCC8C821341019A9999A946074100CDCCCCC4821341019A99993D470741FF65666626831341000000002448074100CDCCCC3A831341FFCBCCCC6848074100333333BD831341000000008849074100000000D883134100000000E849074100333333DB831341FFCBCCCCAC4A0741019A99990B841341013433333B4B0741019A99995784134100000000BC4B07410000000086841341013433332F4C074100CDCCCCB2841341FFCBCCCC884C074100CDCCCCD8841341FF6566661E4D0741000000004C85134101343333C34E074100000000C085134101343333D74F074100CDCCCC20861341FFCBCCCC60510741000000004E861341019A99991D520741003333335B861341000000002C530741003333336986134101343333E3530741FF65666666861341013433336F540741FF65666686861341000000007855074100CDCCCCB0861341FFCBCCCCE857074100CDCCCCB0861341FF6566662A59074100CDCCCCA2861341FF656666665907410000000090861341FFCBCCCCCC590741019A999995861341000000005C5A074100CDCCCC8E861341019A9999C55A0741019A99999B861341019A9999BD5B074100CDCCCCAA861341FF656666665C074100CDCCCCA4861341FFCBCCCC145D0741019A99998F861341FF656666965D074100333333A58613410000000010600741FF656666A2861341000000009C61074100CDCCCC90861341FFCBCCCCB4630741FF6566668E861341FFCBCCCC406507410000000094861341019A9999DD6507410033333383861341FFCBCCCC906607410000000088861341FFCBCCCC64670741000000008E8613410000000024690741FF6566668686134100000000F8690741003333339386134101343333936A074100CDCCCC6A86134101343333EF6C0741019A99996D86134100000000486E074100CDCCCC6A861341FF6566663A6F0741019A99997D861341FFCBCCCC4471074100CDCCCC7886134101343333BF720741000000007E861341FFCBCCCCE073074100CDCCCC78861341019A99996575074100333333878613410134333393760741000000006C861341FF656666A678074100CDCCCC80861341013433330F7A074100CDCCCC74861341FF656666967B0741019A99997D86134100000000E07C0741FF65666666861341FF656666E27D07410000000070861341FF656666027F074100CDCCCC6E861341FFCBCCCCAC7F07410000000060861341FF656666C680074100000000468613410134333393810741019A999947861341FFCBCCCC74820741FF65666646861341019A9999BD8307410000000052861341019A9999C5850741003333335786134100000000FC860741FF6566665E86134101343333AB870741003333335D8613410000000034880741FF65666650861341FF656666728807410000000046861341013433339B890741000000005A861341FFCBCCCC8C8B074100CDCCCC5A86134100000000588D07410033333355861341FF6566665E8F07410000000050861341000000007091074100CDCCCC7C86134100000000E091074100000000CA861341019A99994192074100333333ED861341019A9999D992074100CDCCCCDC861341FF6566662A93074100CDCCCCA4861341FF6566669E930741019A9999AB861341019A99990D9407410033333343861341FF656666A6940741019A999945861341019A999949950741FF65666670861341FF656666C695074100CDCCCCA6861341FF65666652960741019A9999A586134100000000E496074100CDCCCC78861341FFCBCCCC04980741019A999977861341FF656666DE980741019A9999B5861341019A99993D9A074100333333ED861341019A9999F59A0741000000001E871341000000002C9B0741019A9999B187134101343333739B074100CDCCCC08881341FFCBCCCCCC9B0741000000006888134101343333939B0741FF65666698881341019A99998D9B0741003333332D891341013433335F9C0741FF6566667089134100000000E09C07410033333363891341019A9999D59D074100000000AC891341019A9999759E0741019A9999018A1341FF656666069F0741000000004A8A1341FF656666D29F0741FF6566664A8A1341FFCBCCCC74A0074100CDCCCC708A134100000000ECA0074100333333F38A1341019A99999DA10741019A99993B8B13410134333367A20741019A9999698B1341FFCBCCCC78A3074100333333A58B1341FF656666BEA40741FF656666B48B13410134333317A50741FF656666CE8B1341000000006CA50741019A9999CB8B1341FF6566664AA60741FF656666108C1341013433333BA70741019A9999678C1341FFCBCCCC00A80741000000008C8C134101343333FBA70741019A9999BB8C1341019A999969A8074100CDCCCCCA8C1341FF656666FAA80741FF6566668C8D1341FFCBCCCCB4AC0741FF656666FA8D1341019A999945AF074100000000168E134100000000C4AF074100CDCCCC228E1341FF65666696B00741000000005A8E1341019A9999B5B10741019A99998F8E1341FFCBCCCC84B3074100000000948E1341FF656666EEB3074100CDCCCCC08E134100000000E8B4074100000000D88E1341FFCBCCCCE0B5074100CDCCCC168F1341019A999901B7074100000000E88F1341019A999979BA07410000000042901341FF65666682BB074100333333B190134100000000E8BC074100000000E6901341019A9999B5BD074100333333C5911341FF656666C2BF0741000000005A921341FFCBCCCCF0C0074100CDCCCCA8921341019A999901C20741FF656666B89213410000000080C2074100333333D992134100000000F8C20741FF656666F4921341000000001CC40741000000000A931341019A99998DC40741019A999937931341FFCBCCCC10C60741003333334F93134101343333E7C607410000000096931341FFCBCCCC7CCB074100333333D59313410000000044CD0741019A9999F9931341019A9999C5CE0741019A999909941341FF656666A6CF0741FF65666646941341FF65666632D10741003333337B941341019A999995D30741003333339B941341019A999989D4074100CDCCCC8A9413410134333343D5074100000000A6941341000000003CD6074100CDCCCCB4941341013433335FD7074100CDCCCCE09413410000000040D90741019A9999FB941341000000004CDA074100CDCCCC26951341019A999919DB0741019A99998D951341FF65666692DB074100CDCCCCFC951341FF656666A2DB0741019A9999A7961341019A999995DB0741000000000A9713410000000008DC07410033333357971341FFCBCCCCCCDC0741019A99998F9713410134333307DD07410000000002981341019A9999E1DC0741019A9999959813410134333343DC0741019A9999E3981341FF65666636DC074100000000269913410000000064DC074100CDCCCC4A991341019A9999A5DC0741019A9999CB991341019A999939DD074100333333259A1341FF65666682DD0741FF6566666C9A134101343333B7DD0741019A9999A59A1341FF656666D6DD0741FF656666D89A1341FF65666616DE0741019A99993D9B1341FF6566666EDE0741019A9999C79B1341019A999925DF0741019A9999E79B1341019A99996DDF0741019A9999079C1341FF6566664ADF0741FF656666349C1341FFCBCCCC74DF0741019A9999699C1341FFCBCCCCE8DF074100000000A89C1341FF65666622E00741FF6566664E9D1341FFCBCCCC08E1074100CDCCCC829D1341FFCBCCCC80E1074100333333C59D1341FFCBCCCCACE1074100333333519E1341FF6566665EE2074100CDCCCC909E1341019A999999E2074100CDCCCCFE9E1341FF65666626E30741019A9999379F1341FF6566664EE30741019A9999719F134100000000A4E30741019A999931A01341FF6566666EE40741019A9999BFA01341FFCBCCCC88E5074100CDCCCC5AA11341013433339FE60741FF656666D2A11341FFCBCCCC30E70741FF6566668AA2134101343333C3E7074100CDCCCCD8A213410000000048E80741000000004CA31341FFCBCCCC3CE9074100CDCCCC8AA31341FF656666EAE907410033333363A41341FFCBCCCC04ED074100000000A2A41341FF656666DAED074100CDCCCCCAA41341FFCBCCCCA4EE074100CDCCCCA2A51341FFCBCCCC8CF10741019A99996DA6134101343333FBF30741FF65666690A61341019A9999A5F40741019A99996BA71341013433336BF70741019A9999CFA71341FF656666B2F80741FF656666F6A713410000000004F9074100CDCCCCE6A8134100000000E8FB074100CDCCCC3EA91341019A999935FD0741019A9999E9A91341FFCBCCCC08FF07410000000052AA1341013433332F00084100333333D5AA1341FF656666FE010841019A99994FAB1341FF6566667E030841FF656666BCAC1341FF6566666A080841FF656666F4AC1341FFCBCCCC64090841019A999991AD1341000000004C0B0841FF656666DAAD134101343333C70C08410000000036AF1341FF656666BE100841019A999969B01341013433337714084100000000A8B0134100000000A0150841000000000EB11341019A9999011708410033333343B11341FF6566667A17084100333333A3B11341FF656666A2180841003333334BB2134101343333031B0841019A999999B21341FF656666061C084100000000E6B21341019A9999DD1C0841000000004EB3134101343333671E084100CDCCCC94B31341FFCBCCCC4C1F084100000000DEB31341000000000C20084100000000C8B413410134333307230841019A999933B5134101343333BB240841FF65666676B51341FF65666676250841003333336BB6134101343333AF280841019A999999B7134101343333BB2C084100CDCCCCFAB71341FFCBCCCC1C2E084100CDCCCC04B91341FFCBCCCC7431084100CDCCCC30B91341013433332B32084100CDCCCC4CB9134101343333AB3208410033333361B91341FFCBCCCCA833084100000000C6B9134101343333933408410033333313BA134100000000043608410033333321BA1341019A9999F1360841019A99990DBA13410134333363370841FF656666A0B91341FFCBCCCC44380841019A999975B91341019A9999453908410033333301B9134101343333933A084100333333E3B81341FFCBCCCC303B084100000000ECB81341019A9999C13B08410033333323B91341FF6566661E3C0841019A999961B9134101343333833C084100CDCCCCD6B9134100000000E03D0841FF65666604BA134101343333B33E0841019A999903BA1341FFCBCCCC083F084100CDCCCC1ABA1341FF6566665E3F0841FF65666624BA13410134333303400841003333335DBA1341FFCBCCCCFC400841FF656666AEBA134101343333F742084100333333F3BA1341013433336744084100CDCCCC06BB134100000000C44408410000000066BB13410000000010460841019A99998DBB1341000000007C470841FF656666B2BB1341019A99998D480841FF656666D8BB1341FF656666DA490841FF65666634BC134100000000F44B0841019A99995BBC1341FF656666F64C0841019A9999F7BC134100000000084F0841019A99993FBD134100000000E44F08410000000086BD1341FFCBCCCC9850084100CDCCCCB0BD1341013433331F51084100CDCCCCE2BD1341FFCBCCCC4852084100000000FEBD1341019A999941530841FF65666654BE1341FF656666C2530841019A999933BF1341FFCBCCCC9C54084100333333EBBF1341000000007456084100CDCCCC5CC01341019A99990D580841019A9999A7C01341FFCBCCCCDC590841019A999931C11341019A9999E15A08410033333383C1134100000000845C08410033333301C2134101343333DB5D084100000000B6C21341FFCBCCCC745F084100CDCCCC68C31341FF656666D2600841019A999973C41341FFCBCCCC7462084100333333FDC41341000000008C630841019A999923C51341019A9999BD63084100333333E3C41341FF6566660264084100CDCCCC1CC513410000000054640841FF656666C2C51341FFCBCCCC94650841000000002CC61341FF65666612660841FF65666666C71341FF65666642680841FF65666632C81341FF6566666E69084100000000B4C8134100000000146B0841FF656666F4C81341019A9999016C0841FF65666644C9134100000000A46C0841000000009EC91341FF656666E26C084100000000A6CA1341FFCBCCCC206D0841FF65666638CB1341FF6566669E6D084100CDCCCC24CC1341FF656666BA6E0841003333336BCC134101343333376F084100333333F5CC1341FFCBCCCCF86F084100333333BBCD13410000000024710841003333330FCE1341019A99999571084100000000BCCE1341019A9999D1720841FF65666612CF1341019A99993D730841FF65666692CF1341013433333B7408410000000002D01341019A9999E574084100CDCCCC90D01341FF656666F275084100CDCCCC70D11341FFCBCCCC2C770841FF656666D0D113410000000098770841FF65666672D2134100000000AC780841000000000CD31341FF65666692790841FF656666B0D31341FF656666FA7A084100000000FED31341019A9999B17B084100CDCCCCC8D41341FFCBCCCC347D084100000000FCD41341FFCBCCCCC07D0841000000008ED51341FFCBCCCCCC7E0841019A999901D61341019A9999DD7F084100CDCCCC58D61341013433337F8008410000000062D6134101343333E78008410000000066D61341FFCBCCCCCC81084100CDCCCC3ED6134100000000248608410000000016D6134100000000CC87084100CDCCCCE2D51341FFCBCCCC9088084100333333BFD5134100000000B4890841019A999943D51341019A9999218C0841019A999925D51341019A9999618D084100333333E9D41341019A9999498E084100CDCCCC6ED41341FF656666068F0841019A99990BD41341013433333F900841FF656666B8D313410134333323910841003333336BD313410000000090910841019A9999F1D21341013433333F92084100333333BBD21341FF65666662920841FF656666B8AA1341FF656666F6BC084100CDCCCC86AA1341FF65666622BD0841000000009C7B1341019A99992DEF084100333333A5EA1241019A9999FD250941FF656666DAE91241013433337F2609410033333335E9124100000000B026094100CDCCCC6AE81241FF656666A2260941003333331FE81241019A999985260941019A9999C9E7124100000000A026094100CDCCCC90E71241FF6566667A26094100CDCCCC5EE71241013433337B260941FF656666F0E61241FF65666676260941019A99997FE61241FF656666A226094100333333CDE51241FFCBCCCCA826094100333333E7E4124101343333EB260941000000003EE4124100000000F4260941019A9999CFE3124100000000F8260941019A999973E3124101343333072709410033333315E31241019A99996127094100000000BAE21241FFCBCCCC74270941019A9999F9E1124101343333BF270941019A999927E11241FFCBCCCC48280941019A9999C9DF1241013433339B2909410000000038DE1241FF656666DE2B0941FF6566667ADD124100000000E02C0941FF65666608DD1241013433335B2D094100CDCCCC88DC124101343333772D09410033333319DC1241FF656666322E094100000000CCDB124101343333FF30094100CDCCCC7EDB1241FFCBCCCC30320941FF656666FADA1241019A99995933094100CDCCCC2EDA124101343333AB34094100333333AFD81241019A999949370941FF656666F2D61241FF656666C23909410033333345D61241FF656666F63A0941003333333DD51241FF6566662E3D09410000000088D41241FF656666CA3E0941019A9999F3D3124101343333D73F094100000000DAD2124101343333AF41094100000000F6D11241019A9999C9420941019A999991D1124100000000F4420941FF65666660D11241FF656666B2420941FF6566660AD11241FFCBCCCC9041094100333333D1D01241013433335B410941000000008CD01241FFCBCCCCAC410941000000005AD01241013433334B410941019A99992FD01241FFCBCCCC54410941FF656666C2CF12410000000004420941000000001ACF1241000000002844094100CDCCCCE0CE1241019A9999D1450941019A9999D7CE1241FFCBCCCCC446094100CDCCCCD4CE124100000000AC47094100000000EACE124101343333F3480941019A9999F5CE1241FF6566666A490941FF65666628CF124100000000904B09410033333347CF1241019A99990D4C0941019A99993DCF1241FF656666E24C0941019A9999EFCE124100000000BC4D0941019A9999D1CE1241FFCBCCCC444E094100CDCCCCE8CE124100000000EC4E094100CDCCCCDECE124100000000B04F094100000000F2CE1241FF656666EE500941FF65666604CF1241019A99996151094100000000E0CE1241FF656666DA510941019A9999B7CE124100000000E8520941019A9999B7CE1241FF656666C2530941019A999983CE1241000000001C5509410033333333CE1241019A9999B55609410033333311CE1241FF6566669A5709410000000016CE1241019A999979580941FF6566660CCE1241FFCBCCCC205909410033333315CE1241000000000C5A0941000000003ACE124101343333275B0941FF656666D2CD1241019A9999855B0941FF656666EACD1241FFCBCCCCE85B0941019A9999F5CD1241000000007C5C094100000000D4CD1241FFCBCCCC405D0941FF656666B0CD1241FFCBCCCC545E094100333333ABCD1241019A9999C95E094100333333CBCD1241013433332360094100333333DFCD1241FF656666DA60094100CDCCCC9CCD12410000000008610941FF656666A4CD1241000000005C610941003333337DCD1241019A9999796109410000000050CD1241013433338761094100CDCCCC54CD1241FF656666D261094100CDCCCC48CD1241FF6566663A620941019A999919CD1241013433332363094100CDCCCC48CD1241019A9999296409410000000040CD1241019A9999B964094100CDCCCC6ECD124100000000046509410000000096CD124101343333BF650941019A999993CD1241019A999935670941019A99995BCD1241FF656666CE6809410033333329CD12410000000040690941FF65666632CD1241000000009069094100CDCCCCF2CC1241FFCBCCCC446A094100CDCCCCE2CC1241FFCBCCCCFC6B0941FF656666CACC1241019A9999DD6C094100CDCCCC92CC1241013433338F6D094100CDCCCC34CC1241019A9999196E09410000000042CC1241FFCBCCCC8C6E094100CDCCCC28CC1241FFCBCCCC306F09410000000018CC1241019A9999A16F094100333333EFCB1241FF65666626710941019A9999F7CB1241FFCBCCCC8472094100333333F5CB124100000000C4720941019A9999CBCB1241FF6566666A730941FF656666B0CB1241FF6566664A740941FF656666A2CB1241FF65666676750941019A999991CB1241FF65666612760941FF656666CECB1241FF656666C678094100CDCCCCB8CB1241FF656666027B094100CDCCCCB0CB1241019A9999ED7B094100333333DDCB124100000000A87D09410033333303CC1241019A9999F17E094100000000ECCB1241019A9999F17F0941019A9999E5CB1241FF656666428009410033333305CC124100000000548109410000000004CC124101343333BF8209410000000034CC1241019A999951840941FF65666622CC1241019A9999ED850941000000000ECC1241FFCBCCCC8086094100333333E1CB1241FF6566668E870941FF656666A6CB124101343333D7880941FF6566669CCB1241FF6566665E8A0941FF6566664ECB1241FFCBCCCCF08A0941019A999949CB1241FFCBCCCCC48B0941019A999965CB124101343333A78C094100CDCCCC56CB124101343333978D094100CDCCCC30CB1241FFCBCCCCE88D0941FF6566660ACB1241019A9999998E0941FF65666616CB1241FFCBCCCC648F0941019A9999A9CA124101343333EB900941FF65666678CA124100000000509209410000000092CA1241FF6566663E93094100333333E3CA12410000000010940941FF65666616CB1241FF6566665694094100CDCCCC22CB1241019A99999D9409410000000000CB1241FF656666E2940941019A9999ADCA1241000000002496094100333333A3CA1241000000007097094100000000D8CA1241FF6566668E98094100CDCCCCC6CA1241FF6566660299094100CDCCCC82CA1241000000008899094100CDCCCC5ACA1241FFCBCCCC1C9A09410033333341CA1241019A9999319B09410033333311CA1241019A9999E99B0941019A999917CA1241019A9999259D0941003333330BCA1241019A9999B59D09410000000036CA124100000000489F094100333333BFCA1241FF65666632A1094100CDCCCC4CCB1241FFCBCCCC44A3094100CDCCCC5ACB12410000000010A4094100CDCCCC54CB1241013433338BA50941000000005CCB1241019A999959A7094100CDCCCC60CB1241FF656666D2A709410000000040CB1241FFCBCCCC24AB0941019A999927CB1241FFCBCCCCA0AC094100CDCCCC12CB1241019A999909AD094100CDCCCCBECA1241013433339BAD09410033333373CA1241019A9999D9AD09410033333337CA1241013433332BAE0941FF656666F2C91241019A999965AE0941019A9999BDC9124101343333DBAE094100000000F2C91241FFCBCCCCB8AF09410000000062CA124100000000FCB00941FF6566668ECA12410134333397B10941FF656666A2CA1241FF65666646B20941019A9999C1CA1241FFCBCCCC10B3094100000000BACA12410000000058B40941FF656666ACCA124100000000ECB409410033333399CA1241FFCBCCCC18B60941019A999955CA1241019A9999A1B70941FF65666648CA1241019A999929B8094100CDCCCC9CCA1241FF6566666EB9094100000000D4CA124100000000E0BA0941FF656666D6CA12410000000060BB094100CDCCCCBACA1241013433335BBC094100000000EECA1241019A99994DBD09410000000068CB1241FFCBCCCC34BE0941FF6566668CCB1241000000008CBE094100CDCCCCBCCB1241FF6566668EBE094100333333EBCB1241FFCBCCCC3CBF0941FF6566661CCC1241FF6566668AC00941019A99993FCC1241FFCBCCCC0CC10941019A999979CC1241FF6566664AC2094100CDCCCC86CC1241019A999945C30941019A99999BCC1241FFCBCCCCB0C30941019A9999C9CC124101343333D7C40941003333331BCD12410134333313C60941019A999983CD12410000000008C7094100000000BECD1241019A999979C7094100CDCCCC16CE1241FF6566669EC80941003333335DCE12410134333353C90941FF65666690CE1241FFCBCCCC50CA094100333333BDCE124100000000ECCA094100CDCCCCB0CE124101343333CFCB0941000000007CCE1241FFCBCCCC80CC0941003333334BCE1241019A9999C9CD094100CDCCCC16CE1241FF656666CECE0941FF656666D4CD124100000000C0CF0941FF656666C6CD1241000000002CD00941003333338BCD1241FF656666BAD009410033333373CD1241FF65666696D10941000000005ACD1241FF65666612D20941FF65666622CD12410000000038D309410033333315CD1241000000007CD3094100000000F2CC1241019A999919D40941FF656666D4CC1241FF6566666ED4094100333333C9CC1241FF656666D6D4094100333333ABCC1241FF65666666D50941FF65666694CC1241FF656666FAD50941019A999963CC1241FFCBCCCCE4D609410033333337CC1241019A9999A1D70941019A9999D7CB12410000000098D9094100CDCCCC80CB1241FFCBCCCC2CDB0941003333335BCB1241019A9999D1DB09410033333339CB12410134333393DC0941FF656666F8CA1241FFCBCCCC00DD0941FF656666F6CA1241FFCBCCCC54DD0941019A9999DFCA1241FFCBCCCCD0DD0941019A999931CA1241FF65666636DF094100CDCCCCD4C91241013433339BE0094100000000CEC9124101343333EFE10941019A99997BC91241FFCBCCCC40E30941019A99995FC91241019A9999EDE30941FF6566663AC91241013433337BE40941FF656666FCC81241000000008CE5094100333333CDC81241FFCBCCCC20E60941FF6566669EC8124101343333F3E60941003333333BC81241FFCBCCCC6CE80941FF656666DCC71241FF65666606EA0941019A9999EFC71241FF656666C6EA094100000000D8C71241013433332BEB09410033333329C7124101343333E7EC0941FF656666F2C61241FFCBCCCC80ED0941019A999991C6124101343333EFED09410033333301C612410134333357EE094100333333DBC51241FFCBCCCCD0EE094100333333C7C51241019A99991DEF094100000000B2C51241019A99997DEF0941019A9999ADC51241019A9999C9EF094100CDCCCC74C51241013433332BF0094100000000AAC41241FFCBCCCCC8F20941019A99997BC41241FFCBCCCC4CF30941FF65666664C41241019A999965F40941FF6566663CC41241FF6566666EF5094100000000D6C31241FFCBCCCCB0F609410033333397C31241FF6566666AF80941FF65666674C31241019A999971FA0941FF65666646C312410134333357FB0941000000003AC31241013433332FFC09410000000018C312410000000050FD094100000000F8C2124100000000B4FD094100333333FDC2124101343333E7FE0941019A9999FFC21241FF65666616000A41019A9999C1C21241FFCBCCCCBC000A41FF65666698C21241FFCBCCCCA0010A41019A99993DC2124101343333E7020A41FF6566669AC11241000000008C040A410000000042C11241FF65666636050A4100CDCCCCB2C01241FF656666E2060A4100CDCCCC72C0124101343333B7070A4100000000BABF124100000000C0090A41019A999967BF1241FF656666760A0A41FF6566664ABF1241FF656666A60B0A41FF65666628BF1241000000002C0C0A4100333333EBBE1241019A9999A50C0A41FF656666BABE1241FF656666460D0A4100CDCCCC60BE1241019A9999B50D0A4100CDCCCC10BE124100000000C00D0A41FF656666F2BD1241FFCBCCCCFC0D0A41019A9999A5BD1241FF6566662A0F0A41000000005EBD1241FFCBCCCC1C100A41003333332FBD1241019A9999CD100A4100000000EABC1241013433335B110A4100333333EDBB1241019A999995140A41019A99993FBB1241019A999969160A4100000000FCBA124101343333AF170A4100333333B3BA1241FFCBCCCCAC190A4100CDCCCC70BA1241019A9999911B0A410033333347BA1241FF6566664E1C0A41019A999967B91241019A9999791C0A4100333333FBB812410134333313200A41019A9999EDB8124101343333A7200A4100CDCCCC6EB81241FF656666E6220A41FF65666644B81241013433336B230A4100333333F7B71241019A9999B5240A41FF65666612B7124101343333BF270A41FF656666B2B61241019A999949290A41019A999965B61241013433335F2A0A41019A9999E7B51241FF656666CA2B0A41019A999917B51241013433332B2E0A410033333399B41241FF656666822F0A410000000032B41241019A9999A5300A41FF65666664B31241FF656666B6320A41FF6566660AB2124100000000F4360A41FF656666D2B0124100000000843A0A410000000028AF124101343333573F0A4100CDCCCC50AE1241FFCBCCCCB8410A41019A999943AD1241FF65666622450A4100CDCCCC22AD124100000000B8450A4100333333C7AC1241019A999951470A410033333341AC1241019A999915490A41019A9999FFAB124101343333FB490A41019A999967AB124101343333034C0A4100CDCCCCE4AA1241019A99992D4E0A41FF65666642AA1241019A999975500A41FF65666612AA1241FF65666642510A4100333333BFA91241019A999961520A4100CDCCCC2AA91241FFCBCCCC88540A41003333336DA7124101343333475A0A4100333333FBA61241FF656666FA5B0A4100CDCCCC8EA61241FFCBCCCC985D0A41FF656666FAA51241019A9999455F0A4100000000CAA51241FF656666CA5F0A41FF656666DEA41241FFCBCCCCD8620A4100CDCCCC56A412410000000088640A41FF65666638A3124101343333F7670A41019A99998BA2124100000000306A0A41FF65666608A11241FFCBCCCCB46E0A41000000009CA012410000000040700A4100000000EA9F124100000000B8720A4100000000329F1241019A9999B9740A41019A9999B19E124101343333CF760A4100000000189E124101343333F7780A41019A9999519D1241FFCBCCCC747B0A4100333333BD9C124100000000047D0A4100333333899B12410000000020810A4100000000389B1241FF65666646820A4100CDCCCCC49A1241FFCBCCCC9C830A4100000000069A1241019A99998D860A4100333333B599124100000000D4870A41003333334D991241FF6566668A890A41FF656666A4981241FF656666DA8B0A410033333327981241FFCBCCCC148E0A410033333339971241FF656666F6910A4100000000AC961241019A999995940A4100CDCCCCBC9512410000000074970A41000000006694124100000000289C0A4100333333C1931241FFCBCCCCD49D0A410033333363921241FFCBCCCC18A30A4100000000EC9112410000000024A50A41000000003C911241000000009CA70A41019A9999D9901241FF65666666A90A41000000008890124100000000F4AA0A41FF65666610901241FF65666612AD0A41FF6566669E8F1241019A9999B1AF0A41019A9999D98E1241FF6566660EB30A41003333337B8E1241000000006CB50A4100CDCCCC468E1241FFCBCCCCD0B60A4100CDCCCCCC8D1241FF6566667EB90A4100333333538D1241FFCBCCCC28BD0A4100CDCCCC2C8D1241FFCBCCCC0CBF0A4100000000EC8C1241FF6566660AC10A4100000000D28C1241019A9999E9C30A41019A9999258C1241FFCBCCCC3CC90A41FF656666E08B1241FF656666A6CA0A4100000000C08B1241019A999969CC0A41003333337D8B1241019A999941D10A4100333333418B1241019A9999B1D30A4100CDCCCC2C8B1241FF656666FED40A4100CDCCCCEC8A124101343333BBD60A41003333339B8A12410000000004DB0A41FF656666348A1241FFCBCCCC1CDF0A41019A9999EF891241019A99995DE10A410000000030891241FFCBCCCC80E60A4100CDCCCCF8881241FF6566667AE80A41019A999951881241FFCBCCCC1CEC0A41FF65666604881241FF6566666AEE0A41019A9999BD8712410000000088F00A41000000005A871241019A999961F30A4100CDCCCC0C87124101343333CBF50A41FF656666DE8612410000000070F70A41003333332786124101343333FBFB0A41FF656666A8851241019A9999A1FE0A4100CDCCCC20851241FFCBCCCCD8010B4100333333BF84124101343333A3030B41FF65666646841241FFCBCCCCE4070B41003333330B841241FFCBCCCC240A0B4100CDCCCCB8831241FF656666E60C0B41000000008A83124101343333070F0B41019A999927831241000000007C120B4100000000FE8212410134333317160B4100333333A782124101343333471A0B41000000008082124101343333031F0B41019A999971821241FF65666656210B41000000003E821241FF65666686230B410033333337821241FFCBCCCC58270B41019A99993D82124100000000C4270B4100333333418212410000000098280B41FF65666694C4124101343333C32C0B4100000000A0C4124101343333772C0B4100CDCCCCE8CC124101343333F32C0B4100CDCCCC4ACD124100000000FC2C0B4100333333E7111341019A99994D190B4100CDCCCC2808134101343333FB8F0A41FF65666692671341FF65666682A70A41019A9999BB721341FF65666662A80A4100000000F8721341FFCBCCCC28A80A4100333333C7D71341019A9999EDB20A41FF656666060C1441FF656666121C0B4100333333431C144101343333FF260B4100CDCCCC62591441FF6566667E500B4100000000126B1441FF6566665E540B4100CDCCCCFE8C14410134333383440B41000000008C9C1441019A999991350B41FF65666670A71441FFCBCCCCA43B0B41019A99994FA5144100000000A47F0B4100CDCCCC6EA5144101343333FB7F0B41000000009EA51441FFCBCCCC1C800B4100CDCCCCDEA51441FF6566660A810B41000000005EA61441FFCBCCCC6C820B41FF656666B8A61441019A999969830B41FF656666F6A6144101343333D7830B41019A99991FA71441019A999935840B4100000000A8A71441FFCBCCCCE0850B41003333336BA81441019A999961870B41019A9999EFA81441FFCBCCCC8C880B41019A999917A914410134333323890B41FF65666662A9144100000000DC890B4100333333B5A91441FFCBCCCCC08A0B41FF65666604AA1441019A9999F98B0B41000000006CAA1441FFCBCCCCDC8D0B4100333333B7AA1441019A9999518F0B4100CDCCCCD6AA14410000000094900B4100000000F0AA1441013433330B910B41019A999923AB1441013433335F940B41019A999937AB1441FFCBCCCCE8960B41000000004EAB1441013433339F970B4100CDCCCC70AB1441FFCBCCCCAC990B410033333391AB144101343333AF9A0B4100000000AEAB1441FF656666269B0B41019A9999D1AB1441FFCBCCCC589C0B41019A9999EDAB1441FF656666429D0B41019A999937AC1441000000009C9E0B4100333333B7AC1441FF65666662A00B410033333317AD1441FF656666A2A10B4100CDCCCCB2AD1441FFCBCCCCECA20B410000000016AE1441FFCBCCCCACA30B41019A999947AE14410134333337A40B4100CDCCCCB0AF1441FFCBCCCC4CA80B4100CDCCCCECAF144101343333CBA80B4100CDCCCC16B114410000000084AB0B410033333321B21441FF6566661EAD0B41019A9999B7B21441FFCBCCCCB0AD0B41019A99991BB31441FF656666E6AD0B410000000068B314410134333303AE0B4100333333CBB314410000000050AE0B41000000006CB414410134333357AE0B4100CDCCCC18B51441FFCBCCCCF8AD0B41019A9999BBB51441FFCBCCCC58AD0B410033333379B6144100000000E0AB0B4100000000DCB61441FFCBCCCCA4AA0B41003333334FB71441019A999939A90B4100CDCCCCF4B71441FF656666CAA70B41019A9999C1B81441FFCBCCCCC0A50B4100CDCCCC92B914410134333343A40B4100333333BBBA1441FF6566668AA20B41003333336BBB1441FFCBCCCCC4A10B4100CDCCCCA2BB144101343333AFA10B41019A999915BC14410000000078A10B4100CDCCCC48BC1441FF65666646A10B4100000000AEBC1441013433335BA10B41FF65666618BD1441000000002CA10B4100CDCCCC8ABD1441000000006CA10B41FF656666C2BD1441FF65666666A10B410000000066BE14410000000024A20B41FF65666696BE1441FF65666676A20B4100333333D9BE144100000000D8A20B41000000001EBF1441019A999979A30B4100CDCCCC58BF14410134333377A40B41FF6566667CBF1441019A99991DA60B41FF65666670BF1441FFCBCCCC3CA70B41003333332FBF1441FF6566666EA80B410000000088BE1441FF6566663AAA0B4100333333D5BD1441000000008CAB0B410033333369BD1441019A9999A5AC0B41019A999969BC1441FFCBCCCCB0AE0B41019A9999BDBB1441019A9999A1B00B410033333373BA1441FF656666FAB30B41000000000CBA1441FFCBCCCC20B50B41019A99993FB91441FF6566660EB70B4100333333ADB81441019A99992DB80B4100CDCCCC02B81441FF6566667ABA0B4100CDCCCCDCB71441FF6566661EBB0B4100CDCCCCBAB7144101343333DFBB0B410000000096B714410134333323BD0B4100000000BAB71441FFCBCCCCECBF0B41FF65666600B81441FFCBCCCC1CC20B41FF6566664CB81441019A9999D9C30B41FF656666A0B81441FF656666FEC40B4100333333C7B8144100000000C8C50B41019A99999DB9144100000000A8C70B41FF6566662CBA144101343333ABC80B41FF6566663CBB1441019A999981CA0B410033333321BC1441019A9999A5CB0B4100333333B3BC14410000000028CC0B4100333333F3BC1441FF6566664ECC0B41FF65666644BD144100000000D0CC0B41FF6566666ABE1441FFCBCCCC84CD0B41FF656666D4BE1441FF65666696CD0B41019A999971BF1441019A9999C1CD0B41019A999933C01441FF6566662ACE0B41003333337FC014410000000090CE0B4100CDCCCC28C11441FF656666FECE0B41019A9999C9C11441FFCBCCCCCCCF0B41019A99990BC21441019A999921D00B41019A999957C214410134333307D10B41019A9999C3C21441FF656666AAD20B410033333329C31441019A9999D5D40B41003333335BC31441000000007CD60B41000000008EC3144100000000B4D80B41019A9999A3C314410134333383D90B4100CDCCCCA0C31441FF656666E2D90B41019A9999BBC31441019A9999B1DA0B4100CDCCCCC4C3144100000000F4DB0B4100000000FAC31441FF65666662DD0B410033333331C41441FF65666606DF0B41019A999933C41441FF6566667EDF0B41000000002EC41441FF6566663EE00B41000000002AC41441FF656666F6E00B41019A999983C41441019A99997DE30B41019A9999E51F1541019A999961FF0B410000000052201541FF6566668AFF0B4100000000B220154101343333B7FF0B41003333333D221541FF6566660E000C4100333333F92215410000000064000C4100CDCCCCAC231541019A999969000C41FF65666622241541FF65666672000C4100000000CA25154100000000D0000C4100333333B9261541FFCBCCCC10010C4100000000C6291541FF6566660E020C41000000007C2A1541019A99992D020C4100333333192B1541013433336B020C41019A9999E52B1541FFCBCCCCE4020C4100333333552D1541FFCBCCCC48030C41FF656666FE2D15410000000054030C4100000000DE2F154101343333EB030C4100CDCCCC84311541019A999965040C4100CDCCCC4A32154101343333B7040C41FF656666DC321541FF656666DE040C4100000000D6331541FF65666662050C41019A99991735154101343333D3050C41FF6566667C3615410000000028060C41FF656666C2371541FFCBCCCC60060C4100CDCCCC36391541019A9999CD060C41003333336B3B15410134333343070C4100000000C63B1541013433336F070C41000000005C3D1541FF656666EA070C4100000000143E1541FFCBCCCC20080C4100333333BB3E1541FF6566665A080C4100CDCCCC843F1541000000007C080C410033333363401541019A9999A9080C41FF6566668A41154100000000D8080C410000000016431541FF6566666E090C410000000034441541FFCBCCCCCC090C4100CDCCCCEC44154101343333F3090C4100CDCCCC3445154100000000EC090C4100CDCCCCF8451541FF656666260A0C41019A99991F471541FFCBCCCC480A0C41000000008E48154100000000B00A0C41FF65666654491541FF656666D60A0C41019A9999B74B1541019A9999910B0C4100000000224D1541FF656666CA0B0C4100000000E64E154101343333470C0C410000000072501541FF656666C20C0C41019A999971511541019A9999150D0C41003333332953154100000000DC0D0C41003333332D551541FF656666AE0E0C41FF656666AA561541019A9999250F0C4100333333F3571541FF656666420F0C4100333333F358154101343333730F0C4100333333E159154101343333D30F0C41FF656666A45A1541FFCBCCCC34100C41FF656666805B1541FFCBCCCC94100C41FF6566669E5D1541FF65666686110C41003333334B5E1541019A9999A5110C41019A9999EF5F1541000000003C120C41FF65666666631541FF6566666E130C41FF656666EA631541019A999989130C41019A99994D641541FF656666CA130C410033333359651541FF65666606140C410033333329661541013433334B140C41FF656666E4661541FFCBCCCC70140C41FF6566666668154100000000F8140C41FF656666C6681541FFCBCCCC0C150C4100000000706915410000000044150C41FF656666086A1541FF6566666E150C4100CDCCCCCC6A154100000000AC150C41003333335D6B1541013433339F150C41FF656666C86C15410000000010160C4100CDCCCCB06D15410134333347160C41019A99994B6E1541013433335F160C41019A9999AF6E15410000000088160C4100CDCCCCBC6E1541000000007C140C41019A9999258E1541FF65666662200C4100000000648E1541FFCBCCCC6C200C4100CDCCCC16191641019A9999C5490C4100CDCCCC3819164100000000004A0C41 -Geometry coordinates: 3629x3 -isValid -isSimple -ConvexHull: POLYGON ((335197.0000000000000000 167635.9000000059895683, 329292.5000000000000000 168040.7000000030093361, 326778.0000000000000000 168869.2999999969906639, 326730.0999999939813279 168889.2999999969906639, 326658.5999999939813279 168919.5000000000000000, 326536.9000000060186721 168988.2999999969906639, 326477.0000000000000000 169031.4000000059895683, 314768.0999999939813279 178085.5000000000000000, 314320.4000000060186721 178991.5999999940104317, 303956.7999999970197678 219045.0999999940104317, 303407.7999999970197678 221300.4000000059895683, 303377.5999999939813279 221436.5999999940104317, 303342.2000000029802322 221596.7999999969906639, 303305.9000000060186721 221775.5000000000000000, 303273.7999999970197678 222024.9000000059895683, 303247.5000000000000000 222320.7999999969906639, 303245.7999999970197678 222443.0999999940104317, 303248.2999999970197678 222483.0000000000000000, 340256.9000000060186721 228463.7000000030093361, 371918.2999999970197678 233350.7999999969906639, 373503.5000000000000000 233590.0999999940104317, 373539.5999999939813279 233594.0999999940104317, 373629.5000000000000000 233598.0000000000000000, 373642.2000000029802322 233597.9000000059895683, 373562.9000000060186721 233422.0999999940104317, 365303.2999999970197678 216741.5999999940104317, 365243.2000000029802322 216626.4000000059895683, 339793.5999999939813279 171618.4000000059895683, 338739.4000000060186721 169896.5999999940104317, 338726.9000000060186721 169879.5000000000000000, 337790.2000000029802322 168602.5000000000000000, 337756.7000000029802322 168562.2999999969906639, 337685.7999999970197678 168497.0999999940104317, 337651.9000000060186721 168467.7000000030093361, 337601.2999999970197678 168427.0000000000000000, 337485.7000000029802322 168368.5999999940104317, 335357.0000000000000000 167673.9000000059895683, 335286.5000000000000000 167652.2999999969906639, 335197.0000000000000000 167635.9000000059895683)) -Buffer: POLYGON ((335215.0239261208334938 167537.5377202073286753, 335210.0916716848732904 167536.7606630478694569, 335205.1267784655792639 167536.2307696900388692, 335200.1416244141873904 167535.9493612084188499, 335195.1486379941343330 167535.9171391811396461, 335190.1602671957225539 167536.1341839407396037, 329285.6602671957225539 167940.9341839377593715, 329280.6851495988667011 167941.4004062979074661, 329275.7395326890982687 167942.1145713863952551, 329270.8357652556151152 167943.0748959931370337, 329265.9860915930476040 167944.2789822683553211, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326739.4700757855316624 168777.0208314917108510, 326691.5700757795129903 168797.0208314917108510, 326691.1906471042311750 168797.1801744560070802, 326619.6906471042311750 168827.3801744590164162, 326614.4661321343737654 168829.7659389766049571, 326609.3872034477535635 168832.4477130909217522, 326487.6872034597909078 168901.2477130879124161, 326483.0105803586193360 168904.0626540626399219, 326478.4945191467413679 168907.1285776514559984, 326418.5945191407226957 168950.2285776604549028, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314703.0203897153842263 178009.5747451371571515, 314699.2775538869318552 178012.9502176995156333, 314695.7095452067442238 178016.5099858262110502, 314692.3254273570491932 178020.2450067681784276, 314689.1337968888110481 178024.1457925880094990, 314686.1427613845444284 178028.2024342618533410, 314683.3599188625812531 178032.4046268509118818, 314680.7923384761670604 178036.7416956787055824, 314678.4465425560483709 178041.2026234475779347, 314230.7465425680857152 178947.3026234415883664, 314228.5878578424453735 178951.9700800933642313, 314226.6719709816970862 178956.7423383510031272, 314225.0039485624292865 178961.6067779435543343, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303859.6373324339510873 219021.4480226553569082, 303310.6373324339510873 221276.7480226673360448, 303310.1711850037681870 221278.7524947684432846, 303279.9711850007297471 221414.9524947564641479, 303279.9555483013973571 221415.0231361427286174, 303244.5555483103962615 221575.2231361457088497, 303244.2014352029073052 221576.8931846534833312, 303207.9014352059457451 221755.5931846564926673, 303206.7181479214923456 221762.7344127797405235, 303174.6181479124934413 222012.1344127857300919, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303147.5096594412461855 222319.4101097332895733, 303145.8096594382659532 222441.7101097303093411, 303145.9957166555686854 222449.3534012049494777, 303148.4957166555686854 222489.2534012109390460, 303148.9538959227502346 222494.4171627500036266, 303149.6790615010540932 222499.5502413932117634, 303150.6692645543371327 222504.6388423194293864, 303151.9218439752003178 222509.6692902386421338, 303153.4334335363237187 222514.6280661432247143, 303155.1999709373340011 222519.5018436395912431, 303157.2167087217676453 222524.2775247619138099, 303159.4782270356081426 222528.9422751721285749, 303161.9784481927636079 222533.4835586513218004, 303164.7106530084856786 222537.8891707901784685, 303167.6674988568993285 222542.1472717873693909, 303170.8410394035163336 222546.2464182683033869, 303174.2227459607529454 222550.1755940386210568, 303177.8035304081276990 222553.9242396893096156, 303181.5737696161959320 222557.4822809745091945, 303185.5233313077478670 222560.8401558854966424, 303189.6416012879926711 222563.9888403478544205, 303193.9175119692226872 222566.9198724731104448, 303198.3395721145207062 222569.6253752996271942, 303202.8958977197180502 222572.0980779612727929, 303207.5742439505993389 222574.3313352275581565, 303212.3620380503707565 222576.3191453621548135, 303217.2464131281594746 222578.0561662522668485, 303222.2142427377984859 222579.5377297651721165, 303227.2521761544630863 222580.7598542935156729, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 340241.6451431164168753 228562.5295974992914125, 371903.0451431074179709 233449.6295974932727404, 371903.3732348520425148 233449.6796828560472932, 373488.5732348550227471 233688.9796828530670609, 373492.4870663167093880 233689.4917264690448064, 373528.5870663106907159 233693.4917264690448064, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288032062, 373625.1659228474600241 233697.9060347288323101, 373630.2873771191225387 233697.9969001383287832, 373642.9873771221027710 233697.8969001443183515, 373648.2118495866889134 233697.7191247496230062, 373653.4198936402681284 233697.2685764613561332, 373658.5972774084657431 233696.5464864801033400, 373663.7298528013634495 233695.5548280406510457, 373668.8035941756097600 233694.2963110199489165, 373673.8046366619528271 233692.7743745317566209, 373678.7193140533054247 233690.9931775288132485, 373683.5341961499652825 233688.9575874376751017, 373688.2361254601855762 233686.6731668577413075, 373692.8122531549306586 233684.1461583603522740, 373697.2500741796684451 233681.3834674300451297, 373701.5374614266911522 233678.3926435940084048, 373705.6626988743664697 233675.1818597918318119, 373709.6145136032719165 233671.7598900413722731, 373713.3821066011441872 233668.1360854624363128, 373716.9551822734647430 233664.3203487230930477, 373720.3239765776088461 233660.3231069790199399, 373723.4792837048298679 233656.1552833794266917, 373726.4124812366790138 233651.8282672177592758, 373729.1155537074664608 233647.3538828085002024, 373731.5811145076295361 233642.7443571751064155, 373733.8024260689853691 233638.0122866376477759, 373735.7734182764543220 233633.1706023911829107, 373737.4887050554389134 233628.2325351690815296, 373738.9435990903875791 233623.2115790876850951, 373740.1341246336232871 233618.1214547714043874, 373741.0570283696870320 233612.9760718587203883, 373741.7097883056849241 233607.7894909917085897, 373742.0906206630170345 233602.5758853929000907, 373742.1984847519779578 233597.3495021346316207, 373742.0330858153756708 233592.1246232062694617, 373741.5948758341837674 233586.9155264864384662, 373740.8850522924331017 233581.7364467261068057, 373739.9055549047770910 233576.6015366498031653, 373738.6590603159856983 233571.5248282807588112, 373737.1489747864543460 233566.5201945960870944, 373735.3794248842168599 233561.6013116164249368, 373733.3552462080260739 233556.7816210339078680, 373654.0552462110645138 233380.9816210219287314, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365391.9598568481160328 216695.3460295358672738, 365331.8598568540764973 216580.1460295478464104, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 339878.8843201125273481 171566.1832905930059496, 338824.6843201245646924 169844.3832905810268130, 338822.4769281532499008 169840.9383075150544755, 338820.1304613530519418 169837.5865048365958501, 338807.6304613530519418 169820.4865048425854184, 338807.5334730069153011 169820.3540531243779697, 337870.8334730038768612 168543.3540531243779697, 337867.0221279650577344 168538.4815600363945123, 337833.5221279650577344 168498.2815600333851762, 337830.6202818806632422 168494.9517117698851507, 337827.5742276740493253 168491.7532505890121683, 337824.3899077704991214 168488.6924162408104166, 337753.4899077645386569 168423.4924162378301844, 337751.3185027677100152 168421.5531549594015814, 337717.4185027767089196 168392.1531549684004858, 337714.5758644837187603 168389.7786549685988575, 337663.9758644747198559 168349.0786549655895215, 337659.8087246867362410 168345.9029646954732016, 337655.4809780826326460 168342.9498862957989331, 337651.0045043539139442 168340.2275259852758609, 337646.3915914490935393 168337.7433566600084305, 337530.7915914550540037 168279.3433566540188622, 337526.2029832758707926 168277.1696530297922436, 337521.5099571402533911 168275.2316596969612874, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335386.2942020931513980 167578.2869793250865769, 335315.7942020931513980 167556.6869793160876725, 335310.1989645521389320 167555.1487824073119555, 335304.5239261208334938 167553.9377201983297709, 335215.0239261208334938 167537.5377202073286753)) -Intersection: POLYGON ((335197.0000000000000000 167635.9000000059895683, 329292.5000000000000000 168040.7000000030093361, 326778.0000000000000000 168869.2999999969906639, 326730.0999999939813279 168889.2999999969906639, 326658.5999999939813279 168919.5000000000000000, 326536.9000000060186721 168988.2999999969906639, 326477.0000000000000000 169031.4000000059895683, 314768.0999999939813279 178085.5000000000000000, 314320.4000000060186721 178991.5999999940104317, 303956.7999999970197678 219045.0999999940104317, 303407.7999999970197678 221300.4000000059895683, 303377.5999999939813279 221436.5999999940104317, 303342.2000000029802322 221596.7999999969906639, 303305.9000000060186721 221775.5000000000000000, 303273.7999999970197678 222024.9000000059895683, 303247.5000000000000000 222320.7999999969906639, 303245.7999999970197678 222443.0999999940104317, 303248.2999999970197678 222483.0000000000000000, 340256.9000000060186721 228463.7000000030093361, 371918.2999999970197678 233350.7999999969906639, 373503.5000000000000000 233590.0999999940104317, 373539.5999999939813279 233594.0999999940104317, 373629.5000000000000000 233598.0000000000000000, 373642.2000000029802322 233597.9000000059895683, 373562.9000000060186721 233422.0999999940104317, 365303.2999999970197678 216741.5999999940104317, 365243.2000000029802322 216626.4000000059895683, 339793.5999999939813279 171618.4000000059895683, 338739.4000000060186721 169896.5999999940104317, 338726.9000000060186721 169879.5000000000000000, 337790.2000000029802322 168602.5000000000000000, 337756.7000000029802322 168562.2999999969906639, 337685.7999999970197678 168497.0999999940104317, 337651.9000000060186721 168467.7000000030093361, 337601.2999999970197678 168427.0000000000000000, 337485.7000000029802322 168368.5999999940104317, 335357.0000000000000000 167673.9000000059895683, 335286.5000000000000000 167652.2999999969906639, 335197.0000000000000000 167635.9000000059895683)) -Difference: POLYGON ((335215.0239261208334938 167537.5377202073286753, 335210.0916716848732904 167536.7606630478694569, 335205.1267784655792639 167536.2307696900388692, 335200.1416244141873904 167535.9493612084188499, 335195.1486379941343330 167535.9171391811396461, 335190.1602671957225539 167536.1341839407396037, 329285.6602671957225539 167940.9341839377593715, 329280.6851495988667011 167941.4004062979074661, 329275.7395326890982687 167942.1145713863952551, 329270.8357652556151152 167943.0748959931370337, 329265.9860915930476040 167944.2789822683553211, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326739.4700757855316624 168777.0208314917108510, 326691.5700757795129903 168797.0208314917108510, 326691.1906471042311750 168797.1801744560070802, 326619.6906471042311750 168827.3801744590164162, 326614.4661321343737654 168829.7659389766049571, 326609.3872034477535635 168832.4477130909217522, 326487.6872034597909078 168901.2477130879124161, 326483.0105803586193360 168904.0626540626399219, 326478.4945191467413679 168907.1285776514559984, 326418.5945191407226957 168950.2285776604549028, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314703.0203897153842263 178009.5747451371571515, 314699.2775538869318552 178012.9502176995156333, 314695.7095452067442238 178016.5099858262110502, 314692.3254273570491932 178020.2450067681784276, 314689.1337968888110481 178024.1457925880094990, 314686.1427613845444284 178028.2024342618533410, 314683.3599188625812531 178032.4046268509118818, 314680.7923384761670604 178036.7416956787055824, 314678.4465425560483709 178041.2026234475779347, 314230.7465425680857152 178947.3026234415883664, 314228.5878578424453735 178951.9700800933642313, 314226.6719709816970862 178956.7423383510031272, 314225.0039485624292865 178961.6067779435543343, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303859.6373324339510873 219021.4480226553569082, 303310.6373324339510873 221276.7480226673360448, 303310.1711850037681870 221278.7524947684432846, 303279.9711850007297471 221414.9524947564641479, 303279.9555483013973571 221415.0231361427286174, 303244.5555483103962615 221575.2231361457088497, 303244.2014352029073052 221576.8931846534833312, 303207.9014352059457451 221755.5931846564926673, 303206.7181479214923456 221762.7344127797405235, 303174.6181479124934413 222012.1344127857300919, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303147.5096594412461855 222319.4101097332895733, 303145.8096594382659532 222441.7101097303093411, 303145.9957166555686854 222449.3534012049494777, 303148.4957166555686854 222489.2534012109390460, 303148.9538959227502346 222494.4171627500036266, 303149.6790615010540932 222499.5502413932117634, 303150.6692645543371327 222504.6388423194293864, 303151.9218439752003178 222509.6692902386421338, 303153.4334335363237187 222514.6280661432247143, 303155.1999709373340011 222519.5018436395912431, 303157.2167087217676453 222524.2775247619138099, 303159.4782270356081426 222528.9422751721285749, 303161.9784481927636079 222533.4835586513218004, 303164.7106530084856786 222537.8891707901784685, 303167.6674988568993285 222542.1472717873693909, 303170.8410394035163336 222546.2464182683033869, 303174.2227459607529454 222550.1755940386210568, 303177.8035304081276990 222553.9242396893096156, 303181.5737696161959320 222557.4822809745091945, 303185.5233313077478670 222560.8401558854966424, 303189.6416012879926711 222563.9888403478544205, 303193.9175119692226872 222566.9198724731104448, 303198.3395721145207062 222569.6253752996271942, 303202.8958977197180502 222572.0980779612727929, 303207.5742439505993389 222574.3313352275581565, 303212.3620380503707565 222576.3191453621548135, 303217.2464131281594746 222578.0561662522668485, 303222.2142427377984859 222579.5377297651721165, 303227.2521761544630863 222580.7598542935156729, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 340241.6451431164168753 228562.5295974992914125, 371903.0451431074179709 233449.6295974932727404, 371903.3732348520425148 233449.6796828560472932, 373488.5732348550227471 233688.9796828530670609, 373492.4870663167093880 233689.4917264690448064, 373528.5870663106907159 233693.4917264690448064, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288032062, 373625.1659228474600241 233697.9060347288323101, 373630.2873771191225387 233697.9969001383287832, 373642.9873771221027710 233697.8969001443183515, 373648.2118495866889134 233697.7191247496230062, 373653.4198936402681284 233697.2685764613561332, 373658.5972774084657431 233696.5464864801033400, 373663.7298528013634495 233695.5548280406510457, 373668.8035941756097600 233694.2963110199489165, 373673.8046366619528271 233692.7743745317566209, 373678.7193140533054247 233690.9931775288132485, 373683.5341961499652825 233688.9575874376751017, 373688.2361254601855762 233686.6731668577413075, 373692.8122531549306586 233684.1461583603522740, 373697.2500741796684451 233681.3834674300451297, 373701.5374614266911522 233678.3926435940084048, 373705.6626988743664697 233675.1818597918318119, 373709.6145136032719165 233671.7598900413722731, 373713.3821066011441872 233668.1360854624363128, 373716.9551822734647430 233664.3203487230930477, 373720.3239765776088461 233660.3231069790199399, 373723.4792837048298679 233656.1552833794266917, 373726.4124812366790138 233651.8282672177592758, 373729.1155537074664608 233647.3538828085002024, 373731.5811145076295361 233642.7443571751064155, 373733.8024260689853691 233638.0122866376477759, 373735.7734182764543220 233633.1706023911829107, 373737.4887050554389134 233628.2325351690815296, 373738.9435990903875791 233623.2115790876850951, 373740.1341246336232871 233618.1214547714043874, 373741.0570283696870320 233612.9760718587203883, 373741.7097883056849241 233607.7894909917085897, 373742.0906206630170345 233602.5758853929000907, 373742.1984847519779578 233597.3495021346316207, 373742.0330858153756708 233592.1246232062694617, 373741.5948758341837674 233586.9155264864384662, 373740.8850522924331017 233581.7364467261068057, 373739.9055549047770910 233576.6015366498031653, 373738.6590603159856983 233571.5248282807588112, 373737.1489747864543460 233566.5201945960870944, 373735.3794248842168599 233561.6013116164249368, 373733.3552462080260739 233556.7816210339078680, 373654.0552462110645138 233380.9816210219287314, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365391.9598568481160328 216695.3460295358672738, 365331.8598568540764973 216580.1460295478464104, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 339878.8843201125273481 171566.1832905930059496, 338824.6843201245646924 169844.3832905810268130, 338822.4769281532499008 169840.9383075150544755, 338820.1304613530519418 169837.5865048365958501, 338807.6304613530519418 169820.4865048425854184, 338807.5334730069153011 169820.3540531243779697, 337870.8334730038768612 168543.3540531243779697, 337867.0221279650577344 168538.4815600363945123, 337833.5221279650577344 168498.2815600333851762, 337830.6202818806632422 168494.9517117698851507, 337827.5742276740493253 168491.7532505890121683, 337824.3899077704991214 168488.6924162408104166, 337753.4899077645386569 168423.4924162378301844, 337751.3185027677100152 168421.5531549594015814, 337717.4185027767089196 168392.1531549684004858, 337714.5758644837187603 168389.7786549685988575, 337663.9758644747198559 168349.0786549655895215, 337659.8087246867362410 168345.9029646954732016, 337655.4809780826326460 168342.9498862957989331, 337651.0045043539139442 168340.2275259852758609, 337646.3915914490935393 168337.7433566600084305, 337530.7915914550540037 168279.3433566540188622, 337526.2029832758707926 168277.1696530297922436, 337521.5099571402533911 168275.2316596969612874, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335386.2942020931513980 167578.2869793250865769, 335315.7942020931513980 167556.6869793160876725, 335310.1989645521389320 167555.1487824073119555, 335304.5239261208334938 167553.9377201983297709, 335215.0239261208334938 167537.5377202073286753), (335197.0000000000000000 167635.9000000059895683, 335286.5000000000000000 167652.2999999969906639, 335357.0000000000000000 167673.9000000059895683, 337485.7000000029802322 168368.5999999940104317, 337601.2999999970197678 168427.0000000000000000, 337651.9000000060186721 168467.7000000030093361, 337685.7999999970197678 168497.0999999940104317, 337756.7000000029802322 168562.2999999969906639, 337790.2000000029802322 168602.5000000000000000, 338726.9000000060186721 169879.5000000000000000, 338739.4000000060186721 169896.5999999940104317, 339793.5999999939813279 171618.4000000059895683, 365243.2000000029802322 216626.4000000059895683, 365303.2999999970197678 216741.5999999940104317, 373562.9000000060186721 233422.0999999940104317, 373642.2000000029802322 233597.9000000059895683, 373629.5000000000000000 233598.0000000000000000, 373539.5999999939813279 233594.0999999940104317, 373503.5000000000000000 233590.0999999940104317, 371918.2999999970197678 233350.7999999969906639, 340256.9000000060186721 228463.7000000030093361, 303248.2999999970197678 222483.0000000000000000, 303245.7999999970197678 222443.0999999940104317, 303247.5000000000000000 222320.7999999969906639, 303273.7999999970197678 222024.9000000059895683, 303305.9000000060186721 221775.5000000000000000, 303342.2000000029802322 221596.7999999969906639, 303377.5999999939813279 221436.5999999940104317, 303407.7999999970197678 221300.4000000059895683, 303956.7999999970197678 219045.0999999940104317, 314320.4000000060186721 178991.5999999940104317, 314768.0999999939813279 178085.5000000000000000, 326477.0000000000000000 169031.4000000059895683, 326536.9000000060186721 168988.2999999969906639, 326658.5999999939813279 168919.5000000000000000, 326730.0999999939813279 168889.2999999969906639, 326778.0000000000000000 168869.2999999969906639, 329292.5000000000000000 168040.7000000030093361, 335197.0000000000000000 167635.9000000059895683)) -SymDifference: POLYGON ((335215.0239261208334938 167537.5377202073286753, 335210.0916716848732904 167536.7606630478694569, 335205.1267784655792639 167536.2307696900388692, 335200.1416244141873904 167535.9493612084188499, 335195.1486379941343330 167535.9171391811396461, 335190.1602671957225539 167536.1341839407396037, 329285.6602671957225539 167940.9341839377593715, 329280.6851495988667011 167941.4004062979074661, 329275.7395326890982687 167942.1145713863952551, 329270.8357652556151152 167943.0748959931370337, 329265.9860915930476040 167944.2789822683553211, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326739.4700757855316624 168777.0208314917108510, 326691.5700757795129903 168797.0208314917108510, 326691.1906471042311750 168797.1801744560070802, 326619.6906471042311750 168827.3801744590164162, 326614.4661321343737654 168829.7659389766049571, 326609.3872034477535635 168832.4477130909217522, 326487.6872034597909078 168901.2477130879124161, 326483.0105803586193360 168904.0626540626399219, 326478.4945191467413679 168907.1285776514559984, 326418.5945191407226957 168950.2285776604549028, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314703.0203897153842263 178009.5747451371571515, 314699.2775538869318552 178012.9502176995156333, 314695.7095452067442238 178016.5099858262110502, 314692.3254273570491932 178020.2450067681784276, 314689.1337968888110481 178024.1457925880094990, 314686.1427613845444284 178028.2024342618533410, 314683.3599188625812531 178032.4046268509118818, 314680.7923384761670604 178036.7416956787055824, 314678.4465425560483709 178041.2026234475779347, 314230.7465425680857152 178947.3026234415883664, 314228.5878578424453735 178951.9700800933642313, 314226.6719709816970862 178956.7423383510031272, 314225.0039485624292865 178961.6067779435543343, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303859.6373324339510873 219021.4480226553569082, 303310.6373324339510873 221276.7480226673360448, 303310.1711850037681870 221278.7524947684432846, 303279.9711850007297471 221414.9524947564641479, 303279.9555483013973571 221415.0231361427286174, 303244.5555483103962615 221575.2231361457088497, 303244.2014352029073052 221576.8931846534833312, 303207.9014352059457451 221755.5931846564926673, 303206.7181479214923456 221762.7344127797405235, 303174.6181479124934413 222012.1344127857300919, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303147.5096594412461855 222319.4101097332895733, 303145.8096594382659532 222441.7101097303093411, 303145.9957166555686854 222449.3534012049494777, 303148.4957166555686854 222489.2534012109390460, 303148.9538959227502346 222494.4171627500036266, 303149.6790615010540932 222499.5502413932117634, 303150.6692645543371327 222504.6388423194293864, 303151.9218439752003178 222509.6692902386421338, 303153.4334335363237187 222514.6280661432247143, 303155.1999709373340011 222519.5018436395912431, 303157.2167087217676453 222524.2775247619138099, 303159.4782270356081426 222528.9422751721285749, 303161.9784481927636079 222533.4835586513218004, 303164.7106530084856786 222537.8891707901784685, 303167.6674988568993285 222542.1472717873693909, 303170.8410394035163336 222546.2464182683033869, 303174.2227459607529454 222550.1755940386210568, 303177.8035304081276990 222553.9242396893096156, 303181.5737696161959320 222557.4822809745091945, 303185.5233313077478670 222560.8401558854966424, 303189.6416012879926711 222563.9888403478544205, 303193.9175119692226872 222566.9198724731104448, 303198.3395721145207062 222569.6253752996271942, 303202.8958977197180502 222572.0980779612727929, 303207.5742439505993389 222574.3313352275581565, 303212.3620380503707565 222576.3191453621548135, 303217.2464131281594746 222578.0561662522668485, 303222.2142427377984859 222579.5377297651721165, 303227.2521761544630863 222580.7598542935156729, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 340241.6451431164168753 228562.5295974992914125, 371903.0451431074179709 233449.6295974932727404, 371903.3732348520425148 233449.6796828560472932, 373488.5732348550227471 233688.9796828530670609, 373492.4870663167093880 233689.4917264690448064, 373528.5870663106907159 233693.4917264690448064, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288032062, 373625.1659228474600241 233697.9060347288323101, 373630.2873771191225387 233697.9969001383287832, 373642.9873771221027710 233697.8969001443183515, 373648.2118495866889134 233697.7191247496230062, 373653.4198936402681284 233697.2685764613561332, 373658.5972774084657431 233696.5464864801033400, 373663.7298528013634495 233695.5548280406510457, 373668.8035941756097600 233694.2963110199489165, 373673.8046366619528271 233692.7743745317566209, 373678.7193140533054247 233690.9931775288132485, 373683.5341961499652825 233688.9575874376751017, 373688.2361254601855762 233686.6731668577413075, 373692.8122531549306586 233684.1461583603522740, 373697.2500741796684451 233681.3834674300451297, 373701.5374614266911522 233678.3926435940084048, 373705.6626988743664697 233675.1818597918318119, 373709.6145136032719165 233671.7598900413722731, 373713.3821066011441872 233668.1360854624363128, 373716.9551822734647430 233664.3203487230930477, 373720.3239765776088461 233660.3231069790199399, 373723.4792837048298679 233656.1552833794266917, 373726.4124812366790138 233651.8282672177592758, 373729.1155537074664608 233647.3538828085002024, 373731.5811145076295361 233642.7443571751064155, 373733.8024260689853691 233638.0122866376477759, 373735.7734182764543220 233633.1706023911829107, 373737.4887050554389134 233628.2325351690815296, 373738.9435990903875791 233623.2115790876850951, 373740.1341246336232871 233618.1214547714043874, 373741.0570283696870320 233612.9760718587203883, 373741.7097883056849241 233607.7894909917085897, 373742.0906206630170345 233602.5758853929000907, 373742.1984847519779578 233597.3495021346316207, 373742.0330858153756708 233592.1246232062694617, 373741.5948758341837674 233586.9155264864384662, 373740.8850522924331017 233581.7364467261068057, 373739.9055549047770910 233576.6015366498031653, 373738.6590603159856983 233571.5248282807588112, 373737.1489747864543460 233566.5201945960870944, 373735.3794248842168599 233561.6013116164249368, 373733.3552462080260739 233556.7816210339078680, 373654.0552462110645138 233380.9816210219287314, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365391.9598568481160328 216695.3460295358672738, 365331.8598568540764973 216580.1460295478464104, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 339878.8843201125273481 171566.1832905930059496, 338824.6843201245646924 169844.3832905810268130, 338822.4769281532499008 169840.9383075150544755, 338820.1304613530519418 169837.5865048365958501, 338807.6304613530519418 169820.4865048425854184, 338807.5334730069153011 169820.3540531243779697, 337870.8334730038768612 168543.3540531243779697, 337867.0221279650577344 168538.4815600363945123, 337833.5221279650577344 168498.2815600333851762, 337830.6202818806632422 168494.9517117698851507, 337827.5742276740493253 168491.7532505890121683, 337824.3899077704991214 168488.6924162408104166, 337753.4899077645386569 168423.4924162378301844, 337751.3185027677100152 168421.5531549594015814, 337717.4185027767089196 168392.1531549684004858, 337714.5758644837187603 168389.7786549685988575, 337663.9758644747198559 168349.0786549655895215, 337659.8087246867362410 168345.9029646954732016, 337655.4809780826326460 168342.9498862957989331, 337651.0045043539139442 168340.2275259852758609, 337646.3915914490935393 168337.7433566600084305, 337530.7915914550540037 168279.3433566540188622, 337526.2029832758707926 168277.1696530297922436, 337521.5099571402533911 168275.2316596969612874, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335386.2942020931513980 167578.2869793250865769, 335315.7942020931513980 167556.6869793160876725, 335310.1989645521389320 167555.1487824073119555, 335304.5239261208334938 167553.9377201983297709, 335215.0239261208334938 167537.5377202073286753), (335197.0000000000000000 167635.9000000059895683, 335286.5000000000000000 167652.2999999969906639, 335357.0000000000000000 167673.9000000059895683, 337485.7000000029802322 168368.5999999940104317, 337601.2999999970197678 168427.0000000000000000, 337651.9000000060186721 168467.7000000030093361, 337685.7999999970197678 168497.0999999940104317, 337756.7000000029802322 168562.2999999969906639, 337790.2000000029802322 168602.5000000000000000, 338726.9000000060186721 169879.5000000000000000, 338739.4000000060186721 169896.5999999940104317, 339793.5999999939813279 171618.4000000059895683, 365243.2000000029802322 216626.4000000059895683, 365303.2999999970197678 216741.5999999940104317, 373562.9000000060186721 233422.0999999940104317, 373642.2000000029802322 233597.9000000059895683, 373629.5000000000000000 233598.0000000000000000, 373539.5999999939813279 233594.0999999940104317, 373503.5000000000000000 233590.0999999940104317, 371918.2999999970197678 233350.7999999969906639, 340256.9000000060186721 228463.7000000030093361, 303248.2999999970197678 222483.0000000000000000, 303245.7999999970197678 222443.0999999940104317, 303247.5000000000000000 222320.7999999969906639, 303273.7999999970197678 222024.9000000059895683, 303305.9000000060186721 221775.5000000000000000, 303342.2000000029802322 221596.7999999969906639, 303377.5999999939813279 221436.5999999940104317, 303407.7999999970197678 221300.4000000059895683, 303956.7999999970197678 219045.0999999940104317, 314320.4000000060186721 178991.5999999940104317, 314768.0999999939813279 178085.5000000000000000, 326477.0000000000000000 169031.4000000059895683, 326536.9000000060186721 168988.2999999969906639, 326658.5999999939813279 168919.5000000000000000, 326730.0999999939813279 168889.2999999969906639, 326778.0000000000000000 168869.2999999969906639, 329292.5000000000000000 168040.7000000030093361, 335197.0000000000000000 167635.9000000059895683)) -Boundary: MULTILINESTRING ((335215.0239261208334938 167537.5377202073286753, 335210.0916716848732904 167536.7606630478694569, 335205.1267784655792639 167536.2307696900388692, 335200.1416244141873904 167535.9493612084188499, 335195.1486379941343330 167535.9171391811396461, 335190.1602671957225539 167536.1341839407396037, 329285.6602671957225539 167940.9341839377593715, 329280.6851495988667011 167941.4004062979074661, 329275.7395326890982687 167942.1145713863952551, 329270.8357652556151152 167943.0748959931370337, 329265.9860915930476040 167944.2789822683553211, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326739.4700757855316624 168777.0208314917108510, 326691.5700757795129903 168797.0208314917108510, 326691.1906471042311750 168797.1801744560070802, 326619.6906471042311750 168827.3801744590164162, 326614.4661321343737654 168829.7659389766049571, 326609.3872034477535635 168832.4477130909217522, 326487.6872034597909078 168901.2477130879124161, 326483.0105803586193360 168904.0626540626399219, 326478.4945191467413679 168907.1285776514559984, 326418.5945191407226957 168950.2285776604549028, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314703.0203897153842263 178009.5747451371571515, 314699.2775538869318552 178012.9502176995156333, 314695.7095452067442238 178016.5099858262110502, 314692.3254273570491932 178020.2450067681784276, 314689.1337968888110481 178024.1457925880094990, 314686.1427613845444284 178028.2024342618533410, 314683.3599188625812531 178032.4046268509118818, 314680.7923384761670604 178036.7416956787055824, 314678.4465425560483709 178041.2026234475779347, 314230.7465425680857152 178947.3026234415883664, 314228.5878578424453735 178951.9700800933642313, 314226.6719709816970862 178956.7423383510031272, 314225.0039485624292865 178961.6067779435543343, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303859.6373324339510873 219021.4480226553569082, 303310.6373324339510873 221276.7480226673360448, 303310.1711850037681870 221278.7524947684432846, 303279.9711850007297471 221414.9524947564641479, 303279.9555483013973571 221415.0231361427286174, 303244.5555483103962615 221575.2231361457088497, 303244.2014352029073052 221576.8931846534833312, 303207.9014352059457451 221755.5931846564926673, 303206.7181479214923456 221762.7344127797405235, 303174.6181479124934413 222012.1344127857300919, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303147.5096594412461855 222319.4101097332895733, 303145.8096594382659532 222441.7101097303093411, 303145.9957166555686854 222449.3534012049494777, 303148.4957166555686854 222489.2534012109390460, 303148.9538959227502346 222494.4171627500036266, 303149.6790615010540932 222499.5502413932117634, 303150.6692645543371327 222504.6388423194293864, 303151.9218439752003178 222509.6692902386421338, 303153.4334335363237187 222514.6280661432247143, 303155.1999709373340011 222519.5018436395912431, 303157.2167087217676453 222524.2775247619138099, 303159.4782270356081426 222528.9422751721285749, 303161.9784481927636079 222533.4835586513218004, 303164.7106530084856786 222537.8891707901784685, 303167.6674988568993285 222542.1472717873693909, 303170.8410394035163336 222546.2464182683033869, 303174.2227459607529454 222550.1755940386210568, 303177.8035304081276990 222553.9242396893096156, 303181.5737696161959320 222557.4822809745091945, 303185.5233313077478670 222560.8401558854966424, 303189.6416012879926711 222563.9888403478544205, 303193.9175119692226872 222566.9198724731104448, 303198.3395721145207062 222569.6253752996271942, 303202.8958977197180502 222572.0980779612727929, 303207.5742439505993389 222574.3313352275581565, 303212.3620380503707565 222576.3191453621548135, 303217.2464131281594746 222578.0561662522668485, 303222.2142427377984859 222579.5377297651721165, 303227.2521761544630863 222580.7598542935156729, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 340241.6451431164168753 228562.5295974992914125, 371903.0451431074179709 233449.6295974932727404, 371903.3732348520425148 233449.6796828560472932, 373488.5732348550227471 233688.9796828530670609, 373492.4870663167093880 233689.4917264690448064, 373528.5870663106907159 233693.4917264690448064, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288032062, 373625.1659228474600241 233697.9060347288323101, 373630.2873771191225387 233697.9969001383287832, 373642.9873771221027710 233697.8969001443183515, 373648.2118495866889134 233697.7191247496230062, 373653.4198936402681284 233697.2685764613561332, 373658.5972774084657431 233696.5464864801033400, 373663.7298528013634495 233695.5548280406510457, 373668.8035941756097600 233694.2963110199489165, 373673.8046366619528271 233692.7743745317566209, 373678.7193140533054247 233690.9931775288132485, 373683.5341961499652825 233688.9575874376751017, 373688.2361254601855762 233686.6731668577413075, 373692.8122531549306586 233684.1461583603522740, 373697.2500741796684451 233681.3834674300451297, 373701.5374614266911522 233678.3926435940084048, 373705.6626988743664697 233675.1818597918318119, 373709.6145136032719165 233671.7598900413722731, 373713.3821066011441872 233668.1360854624363128, 373716.9551822734647430 233664.3203487230930477, 373720.3239765776088461 233660.3231069790199399, 373723.4792837048298679 233656.1552833794266917, 373726.4124812366790138 233651.8282672177592758, 373729.1155537074664608 233647.3538828085002024, 373731.5811145076295361 233642.7443571751064155, 373733.8024260689853691 233638.0122866376477759, 373735.7734182764543220 233633.1706023911829107, 373737.4887050554389134 233628.2325351690815296, 373738.9435990903875791 233623.2115790876850951, 373740.1341246336232871 233618.1214547714043874, 373741.0570283696870320 233612.9760718587203883, 373741.7097883056849241 233607.7894909917085897, 373742.0906206630170345 233602.5758853929000907, 373742.1984847519779578 233597.3495021346316207, 373742.0330858153756708 233592.1246232062694617, 373741.5948758341837674 233586.9155264864384662, 373740.8850522924331017 233581.7364467261068057, 373739.9055549047770910 233576.6015366498031653, 373738.6590603159856983 233571.5248282807588112, 373737.1489747864543460 233566.5201945960870944, 373735.3794248842168599 233561.6013116164249368, 373733.3552462080260739 233556.7816210339078680, 373654.0552462110645138 233380.9816210219287314, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365391.9598568481160328 216695.3460295358672738, 365331.8598568540764973 216580.1460295478464104, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 339878.8843201125273481 171566.1832905930059496, 338824.6843201245646924 169844.3832905810268130, 338822.4769281532499008 169840.9383075150544755, 338820.1304613530519418 169837.5865048365958501, 338807.6304613530519418 169820.4865048425854184, 338807.5334730069153011 169820.3540531243779697, 337870.8334730038768612 168543.3540531243779697, 337867.0221279650577344 168538.4815600363945123, 337833.5221279650577344 168498.2815600333851762, 337830.6202818806632422 168494.9517117698851507, 337827.5742276740493253 168491.7532505890121683, 337824.3899077704991214 168488.6924162408104166, 337753.4899077645386569 168423.4924162378301844, 337751.3185027677100152 168421.5531549594015814, 337717.4185027767089196 168392.1531549684004858, 337714.5758644837187603 168389.7786549685988575, 337663.9758644747198559 168349.0786549655895215, 337659.8087246867362410 168345.9029646954732016, 337655.4809780826326460 168342.9498862957989331, 337651.0045043539139442 168340.2275259852758609, 337646.3915914490935393 168337.7433566600084305, 337530.7915914550540037 168279.3433566540188622, 337526.2029832758707926 168277.1696530297922436, 337521.5099571402533911 168275.2316596969612874, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335386.2942020931513980 167578.2869793250865769, 335315.7942020931513980 167556.6869793160876725, 335310.1989645521389320 167555.1487824073119555, 335304.5239261208334938 167553.9377201983297709, 335215.0239261208334938 167537.5377202073286753), (335197.0000000000000000 167635.9000000059895683, 335286.5000000000000000 167652.2999999969906639, 335357.0000000000000000 167673.9000000059895683, 337485.7000000029802322 168368.5999999940104317, 337601.2999999970197678 168427.0000000000000000, 337651.9000000060186721 168467.7000000030093361, 337685.7999999970197678 168497.0999999940104317, 337756.7000000029802322 168562.2999999969906639, 337790.2000000029802322 168602.5000000000000000, 338726.9000000060186721 169879.5000000000000000, 338739.4000000060186721 169896.5999999940104317, 339793.5999999939813279 171618.4000000059895683, 365243.2000000029802322 216626.4000000059895683, 365303.2999999970197678 216741.5999999940104317, 373562.9000000060186721 233422.0999999940104317, 373642.2000000029802322 233597.9000000059895683, 373629.5000000000000000 233598.0000000000000000, 373539.5999999939813279 233594.0999999940104317, 373503.5000000000000000 233590.0999999940104317, 371918.2999999970197678 233350.7999999969906639, 340256.9000000060186721 228463.7000000030093361, 303248.2999999970197678 222483.0000000000000000, 303245.7999999970197678 222443.0999999940104317, 303247.5000000000000000 222320.7999999969906639, 303273.7999999970197678 222024.9000000059895683, 303305.9000000060186721 221775.5000000000000000, 303342.2000000029802322 221596.7999999969906639, 303377.5999999939813279 221436.5999999940104317, 303407.7999999970197678 221300.4000000059895683, 303956.7999999970197678 219045.0999999940104317, 314320.4000000060186721 178991.5999999940104317, 314768.0999999939813279 178085.5000000000000000, 326477.0000000000000000 169031.4000000059895683, 326536.9000000060186721 168988.2999999969906639, 326658.5999999939813279 168919.5000000000000000, 326730.0999999939813279 168889.2999999969906639, 326778.0000000000000000 168869.2999999969906639, 329292.5000000000000000 168040.7000000030093361, 335197.0000000000000000 167635.9000000059895683)) -Union: POLYGON ((335215.0239261208334938 167537.5377202073286753, 335210.0916716848732904 167536.7606630478694569, 335205.1267784655792639 167536.2307696900388692, 335200.1416244141873904 167535.9493612084188499, 335195.1486379941343330 167535.9171391811396461, 335190.1602671957225539 167536.1341839407396037, 329285.6602671957225539 167940.9341839377593715, 329280.6851495988667011 167941.4004062979074661, 329275.7395326890982687 167942.1145713863952551, 329270.8357652556151152 167943.0748959931370337, 329265.9860915930476040 167944.2789822683553211, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326739.4700757855316624 168777.0208314917108510, 326691.5700757795129903 168797.0208314917108510, 326691.1906471042311750 168797.1801744560070802, 326619.6906471042311750 168827.3801744590164162, 326614.4661321343737654 168829.7659389766049571, 326609.3872034477535635 168832.4477130909217522, 326487.6872034597909078 168901.2477130879124161, 326483.0105803586193360 168904.0626540626399219, 326478.4945191467413679 168907.1285776514559984, 326418.5945191407226957 168950.2285776604549028, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314703.0203897153842263 178009.5747451371571515, 314699.2775538869318552 178012.9502176995156333, 314695.7095452067442238 178016.5099858262110502, 314692.3254273570491932 178020.2450067681784276, 314689.1337968888110481 178024.1457925880094990, 314686.1427613845444284 178028.2024342618533410, 314683.3599188625812531 178032.4046268509118818, 314680.7923384761670604 178036.7416956787055824, 314678.4465425560483709 178041.2026234475779347, 314230.7465425680857152 178947.3026234415883664, 314228.5878578424453735 178951.9700800933642313, 314226.6719709816970862 178956.7423383510031272, 314225.0039485624292865 178961.6067779435543343, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303859.6373324339510873 219021.4480226553569082, 303310.6373324339510873 221276.7480226673360448, 303310.1711850037681870 221278.7524947684432846, 303279.9711850007297471 221414.9524947564641479, 303279.9555483013973571 221415.0231361427286174, 303244.5555483103962615 221575.2231361457088497, 303244.2014352029073052 221576.8931846534833312, 303207.9014352059457451 221755.5931846564926673, 303206.7181479214923456 221762.7344127797405235, 303174.6181479124934413 222012.1344127857300919, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303147.5096594412461855 222319.4101097332895733, 303145.8096594382659532 222441.7101097303093411, 303145.9957166555686854 222449.3534012049494777, 303148.4957166555686854 222489.2534012109390460, 303148.9538959227502346 222494.4171627500036266, 303149.6790615010540932 222499.5502413932117634, 303150.6692645543371327 222504.6388423194293864, 303151.9218439752003178 222509.6692902386421338, 303153.4334335363237187 222514.6280661432247143, 303155.1999709373340011 222519.5018436395912431, 303157.2167087217676453 222524.2775247619138099, 303159.4782270356081426 222528.9422751721285749, 303161.9784481927636079 222533.4835586513218004, 303164.7106530084856786 222537.8891707901784685, 303167.6674988568993285 222542.1472717873693909, 303170.8410394035163336 222546.2464182683033869, 303174.2227459607529454 222550.1755940386210568, 303177.8035304081276990 222553.9242396893096156, 303181.5737696161959320 222557.4822809745091945, 303185.5233313077478670 222560.8401558854966424, 303189.6416012879926711 222563.9888403478544205, 303193.9175119692226872 222566.9198724731104448, 303198.3395721145207062 222569.6253752996271942, 303202.8958977197180502 222572.0980779612727929, 303207.5742439505993389 222574.3313352275581565, 303212.3620380503707565 222576.3191453621548135, 303217.2464131281594746 222578.0561662522668485, 303222.2142427377984859 222579.5377297651721165, 303227.2521761544630863 222580.7598542935156729, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 340241.6451431164168753 228562.5295974992914125, 371903.0451431074179709 233449.6295974932727404, 371903.3732348520425148 233449.6796828560472932, 373488.5732348550227471 233688.9796828530670609, 373492.4870663167093880 233689.4917264690448064, 373528.5870663106907159 233693.4917264690448064, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288032062, 373625.1659228474600241 233697.9060347288323101, 373630.2873771191225387 233697.9969001383287832, 373642.9873771221027710 233697.8969001443183515, 373648.2118495866889134 233697.7191247496230062, 373653.4198936402681284 233697.2685764613561332, 373658.5972774084657431 233696.5464864801033400, 373663.7298528013634495 233695.5548280406510457, 373668.8035941756097600 233694.2963110199489165, 373673.8046366619528271 233692.7743745317566209, 373678.7193140533054247 233690.9931775288132485, 373683.5341961499652825 233688.9575874376751017, 373688.2361254601855762 233686.6731668577413075, 373692.8122531549306586 233684.1461583603522740, 373697.2500741796684451 233681.3834674300451297, 373701.5374614266911522 233678.3926435940084048, 373705.6626988743664697 233675.1818597918318119, 373709.6145136032719165 233671.7598900413722731, 373713.3821066011441872 233668.1360854624363128, 373716.9551822734647430 233664.3203487230930477, 373720.3239765776088461 233660.3231069790199399, 373723.4792837048298679 233656.1552833794266917, 373726.4124812366790138 233651.8282672177592758, 373729.1155537074664608 233647.3538828085002024, 373731.5811145076295361 233642.7443571751064155, 373733.8024260689853691 233638.0122866376477759, 373735.7734182764543220 233633.1706023911829107, 373737.4887050554389134 233628.2325351690815296, 373738.9435990903875791 233623.2115790876850951, 373740.1341246336232871 233618.1214547714043874, 373741.0570283696870320 233612.9760718587203883, 373741.7097883056849241 233607.7894909917085897, 373742.0906206630170345 233602.5758853929000907, 373742.1984847519779578 233597.3495021346316207, 373742.0330858153756708 233592.1246232062694617, 373741.5948758341837674 233586.9155264864384662, 373740.8850522924331017 233581.7364467261068057, 373739.9055549047770910 233576.6015366498031653, 373738.6590603159856983 233571.5248282807588112, 373737.1489747864543460 233566.5201945960870944, 373735.3794248842168599 233561.6013116164249368, 373733.3552462080260739 233556.7816210339078680, 373654.0552462110645138 233380.9816210219287314, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365391.9598568481160328 216695.3460295358672738, 365331.8598568540764973 216580.1460295478464104, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 339878.8843201125273481 171566.1832905930059496, 338824.6843201245646924 169844.3832905810268130, 338822.4769281532499008 169840.9383075150544755, 338820.1304613530519418 169837.5865048365958501, 338807.6304613530519418 169820.4865048425854184, 338807.5334730069153011 169820.3540531243779697, 337870.8334730038768612 168543.3540531243779697, 337867.0221279650577344 168538.4815600363945123, 337833.5221279650577344 168498.2815600333851762, 337830.6202818806632422 168494.9517117698851507, 337827.5742276740493253 168491.7532505890121683, 337824.3899077704991214 168488.6924162408104166, 337753.4899077645386569 168423.4924162378301844, 337751.3185027677100152 168421.5531549594015814, 337717.4185027767089196 168392.1531549684004858, 337714.5758644837187603 168389.7786549685988575, 337663.9758644747198559 168349.0786549655895215, 337659.8087246867362410 168345.9029646954732016, 337655.4809780826326460 168342.9498862957989331, 337651.0045043539139442 168340.2275259852758609, 337646.3915914490935393 168337.7433566600084305, 337530.7915914550540037 168279.3433566540188622, 337526.2029832758707926 168277.1696530297922436, 337521.5099571402533911 168275.2316596969612874, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335386.2942020931513980 167578.2869793250865769, 335315.7942020931513980 167556.6869793160876725, 335310.1989645521389320 167555.1487824073119555, 335304.5239261208334938 167553.9377201983297709, 335215.0239261208334938 167537.5377202073286753)) -PointOnSurface: POINT (332463.6393159376457334 200616.9570196597487666) -Centroid: POINT (334794.0925891167717054 204179.0238832769100554) -Relate: 212FF1FF2 -Polygonize: GEOMETRYCOLLECTION (POLYGON ((335215.0239261208334938 167537.5377202073286753, 335210.0916716848732904 167536.7606630478694569, 335205.1267784655792639 167536.2307696900388692, 335200.1416244141873904 167535.9493612084188499, 335195.1486379941343330 167535.9171391811396461, 335190.1602671957225539 167536.1341839407396037, 329285.6602671957225539 167940.9341839377593715, 329280.6851495988667011 167941.4004062979074661, 329275.7395326890982687 167942.1145713863952551, 329270.8357652556151152 167943.0748959931370337, 329265.9860915930476040 167944.2789822683553211, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326739.4700757855316624 168777.0208314917108510, 326691.5700757795129903 168797.0208314917108510, 326691.1906471042311750 168797.1801744560070802, 326619.6906471042311750 168827.3801744590164162, 326614.4661321343737654 168829.7659389766049571, 326609.3872034477535635 168832.4477130909217522, 326487.6872034597909078 168901.2477130879124161, 326483.0105803586193360 168904.0626540626399219, 326478.4945191467413679 168907.1285776514559984, 326418.5945191407226957 168950.2285776604549028, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314703.0203897153842263 178009.5747451371571515, 314699.2775538869318552 178012.9502176995156333, 314695.7095452067442238 178016.5099858262110502, 314692.3254273570491932 178020.2450067681784276, 314689.1337968888110481 178024.1457925880094990, 314686.1427613845444284 178028.2024342618533410, 314683.3599188625812531 178032.4046268509118818, 314680.7923384761670604 178036.7416956787055824, 314678.4465425560483709 178041.2026234475779347, 314230.7465425680857152 178947.3026234415883664, 314228.5878578424453735 178951.9700800933642313, 314226.6719709816970862 178956.7423383510031272, 314225.0039485624292865 178961.6067779435543343, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303859.6373324339510873 219021.4480226553569082, 303310.6373324339510873 221276.7480226673360448, 303310.1711850037681870 221278.7524947684432846, 303279.9711850007297471 221414.9524947564641479, 303279.9555483013973571 221415.0231361427286174, 303244.5555483103962615 221575.2231361457088497, 303244.2014352029073052 221576.8931846534833312, 303207.9014352059457451 221755.5931846564926673, 303206.7181479214923456 221762.7344127797405235, 303174.6181479124934413 222012.1344127857300919, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303147.5096594412461855 222319.4101097332895733, 303145.8096594382659532 222441.7101097303093411, 303145.9957166555686854 222449.3534012049494777, 303148.4957166555686854 222489.2534012109390460, 303148.9538959227502346 222494.4171627500036266, 303149.6790615010540932 222499.5502413932117634, 303150.6692645543371327 222504.6388423194293864, 303151.9218439752003178 222509.6692902386421338, 303153.4334335363237187 222514.6280661432247143, 303155.1999709373340011 222519.5018436395912431, 303157.2167087217676453 222524.2775247619138099, 303159.4782270356081426 222528.9422751721285749, 303161.9784481927636079 222533.4835586513218004, 303164.7106530084856786 222537.8891707901784685, 303167.6674988568993285 222542.1472717873693909, 303170.8410394035163336 222546.2464182683033869, 303174.2227459607529454 222550.1755940386210568, 303177.8035304081276990 222553.9242396893096156, 303181.5737696161959320 222557.4822809745091945, 303185.5233313077478670 222560.8401558854966424, 303189.6416012879926711 222563.9888403478544205, 303193.9175119692226872 222566.9198724731104448, 303198.3395721145207062 222569.6253752996271942, 303202.8958977197180502 222572.0980779612727929, 303207.5742439505993389 222574.3313352275581565, 303212.3620380503707565 222576.3191453621548135, 303217.2464131281594746 222578.0561662522668485, 303222.2142427377984859 222579.5377297651721165, 303227.2521761544630863 222580.7598542935156729, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 340241.6451431164168753 228562.5295974992914125, 371903.0451431074179709 233449.6295974932727404, 371903.3732348520425148 233449.6796828560472932, 373488.5732348550227471 233688.9796828530670609, 373492.4870663167093880 233689.4917264690448064, 373528.5870663106907159 233693.4917264690448064, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288032062, 373625.1659228474600241 233697.9060347288323101, 373630.2873771191225387 233697.9969001383287832, 373642.9873771221027710 233697.8969001443183515, 373648.2118495866889134 233697.7191247496230062, 373653.4198936402681284 233697.2685764613561332, 373658.5972774084657431 233696.5464864801033400, 373663.7298528013634495 233695.5548280406510457, 373668.8035941756097600 233694.2963110199489165, 373673.8046366619528271 233692.7743745317566209, 373678.7193140533054247 233690.9931775288132485, 373683.5341961499652825 233688.9575874376751017, 373688.2361254601855762 233686.6731668577413075, 373692.8122531549306586 233684.1461583603522740, 373697.2500741796684451 233681.3834674300451297, 373701.5374614266911522 233678.3926435940084048, 373705.6626988743664697 233675.1818597918318119, 373709.6145136032719165 233671.7598900413722731, 373713.3821066011441872 233668.1360854624363128, 373716.9551822734647430 233664.3203487230930477, 373720.3239765776088461 233660.3231069790199399, 373723.4792837048298679 233656.1552833794266917, 373726.4124812366790138 233651.8282672177592758, 373729.1155537074664608 233647.3538828085002024, 373731.5811145076295361 233642.7443571751064155, 373733.8024260689853691 233638.0122866376477759, 373735.7734182764543220 233633.1706023911829107, 373737.4887050554389134 233628.2325351690815296, 373738.9435990903875791 233623.2115790876850951, 373740.1341246336232871 233618.1214547714043874, 373741.0570283696870320 233612.9760718587203883, 373741.7097883056849241 233607.7894909917085897, 373742.0906206630170345 233602.5758853929000907, 373742.1984847519779578 233597.3495021346316207, 373742.0330858153756708 233592.1246232062694617, 373741.5948758341837674 233586.9155264864384662, 373740.8850522924331017 233581.7364467261068057, 373739.9055549047770910 233576.6015366498031653, 373738.6590603159856983 233571.5248282807588112, 373737.1489747864543460 233566.5201945960870944, 373735.3794248842168599 233561.6013116164249368, 373733.3552462080260739 233556.7816210339078680, 373654.0552462110645138 233380.9816210219287314, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365391.9598568481160328 216695.3460295358672738, 365331.8598568540764973 216580.1460295478464104, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 339878.8843201125273481 171566.1832905930059496, 338824.6843201245646924 169844.3832905810268130, 338822.4769281532499008 169840.9383075150544755, 338820.1304613530519418 169837.5865048365958501, 338807.6304613530519418 169820.4865048425854184, 338807.5334730069153011 169820.3540531243779697, 337870.8334730038768612 168543.3540531243779697, 337867.0221279650577344 168538.4815600363945123, 337833.5221279650577344 168498.2815600333851762, 337830.6202818806632422 168494.9517117698851507, 337827.5742276740493253 168491.7532505890121683, 337824.3899077704991214 168488.6924162408104166, 337753.4899077645386569 168423.4924162378301844, 337751.3185027677100152 168421.5531549594015814, 337717.4185027767089196 168392.1531549684004858, 337714.5758644837187603 168389.7786549685988575, 337663.9758644747198559 168349.0786549655895215, 337659.8087246867362410 168345.9029646954732016, 337655.4809780826326460 168342.9498862957989331, 337651.0045043539139442 168340.2275259852758609, 337646.3915914490935393 168337.7433566600084305, 337530.7915914550540037 168279.3433566540188622, 337526.2029832758707926 168277.1696530297922436, 337521.5099571402533911 168275.2316596969612874, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335386.2942020931513980 167578.2869793250865769, 335315.7942020931513980 167556.6869793160876725, 335310.1989645521389320 167555.1487824073119555, 335304.5239261208334938 167553.9377201983297709, 335215.0239261208334938 167537.5377202073286753), (335197.0000000000000000 167635.9000000059895683, 335286.5000000000000000 167652.2999999969906639, 335357.0000000000000000 167673.9000000059895683, 337485.7000000029802322 168368.5999999940104317, 337601.2999999970197678 168427.0000000000000000, 337651.9000000060186721 168467.7000000030093361, 337685.7999999970197678 168497.0999999940104317, 337756.7000000029802322 168562.2999999969906639, 337790.2000000029802322 168602.5000000000000000, 338726.9000000060186721 169879.5000000000000000, 338739.4000000060186721 169896.5999999940104317, 339793.5999999939813279 171618.4000000059895683, 365243.2000000029802322 216626.4000000059895683, 365303.2999999970197678 216741.5999999940104317, 373562.9000000060186721 233422.0999999940104317, 373642.2000000029802322 233597.9000000059895683, 373629.5000000000000000 233598.0000000000000000, 373539.5999999939813279 233594.0999999940104317, 373503.5000000000000000 233590.0999999940104317, 371918.2999999970197678 233350.7999999969906639, 340256.9000000060186721 228463.7000000030093361, 303248.2999999970197678 222483.0000000000000000, 303245.7999999970197678 222443.0999999940104317, 303247.5000000000000000 222320.7999999969906639, 303273.7999999970197678 222024.9000000059895683, 303305.9000000060186721 221775.5000000000000000, 303342.2000000029802322 221596.7999999969906639, 303377.5999999939813279 221436.5999999940104317, 303407.7999999970197678 221300.4000000059895683, 303956.7999999970197678 219045.0999999940104317, 314320.4000000060186721 178991.5999999940104317, 314768.0999999939813279 178085.5000000000000000, 326477.0000000000000000 169031.4000000059895683, 326536.9000000060186721 168988.2999999969906639, 326658.5999999939813279 168919.5000000000000000, 326730.0999999939813279 168889.2999999969906639, 326778.0000000000000000 168869.2999999969906639, 329292.5000000000000000 168040.7000000030093361, 335197.0000000000000000 167635.9000000059895683)), POLYGON ((335197.0000000000000000 167635.9000000059895683, 329292.5000000000000000 168040.7000000030093361, 326778.0000000000000000 168869.2999999969906639, 326730.0999999939813279 168889.2999999969906639, 326658.5999999939813279 168919.5000000000000000, 326536.9000000060186721 168988.2999999969906639, 326477.0000000000000000 169031.4000000059895683, 314768.0999999939813279 178085.5000000000000000, 314320.4000000060186721 178991.5999999940104317, 303956.7999999970197678 219045.0999999940104317, 303407.7999999970197678 221300.4000000059895683, 303377.5999999939813279 221436.5999999940104317, 303342.2000000029802322 221596.7999999969906639, 303305.9000000060186721 221775.5000000000000000, 303273.7999999970197678 222024.9000000059895683, 303247.5000000000000000 222320.7999999969906639, 303245.7999999970197678 222443.0999999940104317, 303248.2999999970197678 222483.0000000000000000, 340256.9000000060186721 228463.7000000030093361, 371918.2999999970197678 233350.7999999969906639, 373503.5000000000000000 233590.0999999940104317, 373539.5999999939813279 233594.0999999940104317, 373629.5000000000000000 233598.0000000000000000, 373642.2000000029802322 233597.9000000059895683, 373562.9000000060186721 233422.0999999940104317, 365303.2999999970197678 216741.5999999940104317, 365243.2000000029802322 216626.4000000059895683, 339793.5999999939813279 171618.4000000059895683, 338739.4000000060186721 169896.5999999940104317, 338726.9000000060186721 169879.5000000000000000, 337790.2000000029802322 168602.5000000000000000, 337756.7000000029802322 168562.2999999969906639, 337685.7999999970197678 168497.0999999940104317, 337651.9000000060186721 168467.7000000030093361, 337601.2999999970197678 168427.0000000000000000, 337485.7000000029802322 168368.5999999940104317, 335357.0000000000000000 167673.9000000059895683, 335286.5000000000000000 167652.2999999969906639, 335197.0000000000000000 167635.9000000059895683))) -LineMerge: GEOMETRYCOLLECTION EMPTY -Intersect -Contains -Distance: 0 -Area 1: 2.67588e+09 -Area 2: 2.65405e+09 -Simplify: POLYGON ((335215.0239261208334938 167537.5377202073286753, 335205.1267784655792639 167536.2307696900388692, 335190.1602671957225539 167536.1341839407396037, 329275.7395326890982687 167942.1145713863952551, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326614.4661321343737654 168829.7659389766049571, 326483.0105803586193360 168904.0626540626399219, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314699.2775538869318552 178012.9502176995156333, 314692.3254273570491932 178020.2450067681784276, 314686.1427613845444284 178028.2024342618533410, 314680.7923384761670604 178036.7416956787055824, 314230.7465425680857152 178947.3026234415883664, 314226.6719709816970862 178956.7423383510031272, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303310.6373324339510873 221276.7480226673360448, 303244.5555483103962615 221575.2231361457088497, 303207.9014352059457451 221755.5931846564926673, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303145.8096594382659532 222441.7101097303093411, 303148.4957166555686854 222489.2534012109390460, 303150.6692645543371327 222504.6388423194293864, 303153.4334335363237187 222514.6280661432247143, 303157.2167087217676453 222524.2775247619138099, 303161.9784481927636079 222533.4835586513218004, 303167.6674988568993285 222542.1472717873693909, 303174.2227459607529454 222550.1755940386210568, 303181.5737696161959320 222557.4822809745091945, 303189.6416012879926711 222563.9888403478544205, 303198.3395721145207062 222569.6253752996271942, 303212.3620380503707565 222576.3191453621548135, 303222.2142427377984859 222579.5377297651721165, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 371903.0451431074179709 233449.6295974932727404, 373488.5732348550227471 233688.9796828530670609, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288323101, 373642.9873771221027710 233697.8969001443183515, 373658.5972774084657431 233696.5464864801033400, 373668.8035941756097600 233694.2963110199489165, 373678.7193140533054247 233690.9931775288132485, 373692.8122531549306586 233684.1461583603522740, 373705.6626988743664697 233675.1818597918318119, 373713.3821066011441872 233668.1360854624363128, 373723.4792837048298679 233656.1552833794266917, 373731.5811145076295361 233642.7443571751064155, 373737.4887050554389134 233628.2325351690815296, 373741.0570283696870320 233612.9760718587203883, 373742.1984847519779578 233597.3495021346316207, 373741.5948758341837674 233586.9155264864384662, 373738.6590603159856983 233571.5248282807588112, 373733.3552462080260739 233556.7816210339078680, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 338822.4769281532499008 169840.9383075150544755, 337870.8334730038768612 168543.3540531243779697, 337827.5742276740493253 168491.7532505890121683, 337753.4899077645386569 168423.4924162378301844, 337717.4185027767089196 168392.1531549684004858, 337663.9758644747198559 168349.0786549655895215, 337651.0045043539139442 168340.2275259852758609, 337530.7915914550540037 168279.3433566540188622, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335310.1989645521389320 167555.1487824073119555, 335215.0239261208334938 167537.5377202073286753)) -Simplify: POLYGON ((335215.0239261208334938 167537.5377202073286753, 335205.1267784655792639 167536.2307696900388692, 335190.1602671957225539 167536.1341839407396037, 329275.7395326890982687 167942.1145713863952551, 329261.2026209282921627 167945.7238237099954858, 326746.7026209282921627 168774.3238237039768137, 326614.4661321343737654 168829.7659389766049571, 326483.0105803586193360 168904.0626540626399219, 326415.8285449087852612 168952.2921427348919678, 314706.9285449027665891 178006.3921427289023995, 314699.2775538869318552 178012.9502176995156333, 314692.3254273570491932 178020.2450067681784276, 314686.1427613845444284 178028.2024342618533410, 314680.7923384761670604 178036.7416956787055824, 314230.7465425680857152 178947.3026234415883664, 314226.6719709816970862 178956.7423383510031272, 314223.5882016817340627 178966.5505348258011509, 303859.9882016727351584 219020.0505348258011509, 303310.6373324339510873 221276.7480226673360448, 303244.5555483103962615 221575.2231361457088497, 303207.9014352059457451 221755.5931846564926673, 303174.1926699578762054 222016.0467631698702462, 303147.8926699608564377 222311.9467631608713418, 303145.8096594382659532 222441.7101097303093411, 303148.4957166555686854 222489.2534012109390460, 303150.6692645543371327 222504.6388423194293864, 303153.4334335363237187 222514.6280661432247143, 303157.2167087217676453 222524.2775247619138099, 303161.9784481927636079 222533.4835586513218004, 303167.6674988568993285 222542.1472717873693909, 303174.2227459607529454 222550.1755940386210568, 303181.5737696161959320 222557.4822809745091945, 303189.6416012879926711 222563.9888403478544205, 303198.3395721145207062 222569.6253752996271942, 303212.3620380503707565 222576.3191453621548135, 303222.2142427377984859 222579.5377297651721165, 303232.3466742536984384 222581.7192554557113908, 340240.9466742626973428 228562.4192554587207269, 371903.0451431074179709 233449.6295974932727404, 373488.5732348550227471 233688.9796828530670609, 373535.2659228414413519 233694.0060347228136379, 373625.1659228474600241 233697.9060347288323101, 373642.9873771221027710 233697.8969001443183515, 373658.5972774084657431 233696.5464864801033400, 373668.8035941756097600 233694.2963110199489165, 373678.7193140533054247 233690.9931775288132485, 373692.8122531549306586 233684.1461583603522740, 373705.6626988743664697 233675.1818597918318119, 373713.3821066011441872 233668.1360854624363128, 373723.4792837048298679 233656.1552833794266917, 373731.5811145076295361 233642.7443571751064155, 373737.4887050554389134 233628.2325351690815296, 373741.0570283696870320 233612.9760718587203883, 373742.1984847519779578 233597.3495021346316207, 373741.5948758341837674 233586.9155264864384662, 373738.6590603159856983 233571.5248282807588112, 373733.3552462080260739 233556.7816210339078680, 373652.5153630711138248 233377.7256075733166654, 365392.9153630621149205 216697.2256075733166654, 365330.2477527938899584 216577.1791839415382128, 339880.6477527848910540 171569.1791839415382128, 338822.4769281532499008 169840.9383075150544755, 337870.8334730038768612 168543.3540531243779697, 337827.5742276740493253 168491.7532505890121683, 337753.4899077645386569 168423.4924162378301844, 337717.4185027767089196 168392.1531549684004858, 337663.9758644747198559 168349.0786549655895215, 337651.0045043539139442 168340.2275259852758609, 337530.7915914550540037 168279.3433566540188622, 337516.7246118161710910 168273.5343728628649842, 335388.0246118131908588 167578.8343728748441208, 335310.1989645521389320 167555.1487824073119555, 335215.0239261208334938 167537.5377202073286753)) diff -Nru geos-3.1.0/tests/unit/capi/testrunner.sh geos-3.2.2/tests/unit/capi/testrunner.sh --- geos-3.1.0/tests/unit/capi/testrunner.sh 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/testrunner.sh 1970-01-01 01:00:00.000000000 +0100 @@ -1,28 +0,0 @@ -#!/bin/sh - -runner=$1 -shift -srcdir=$1 -shift - -cat < ${runner} -#!/bin/sh -./geostest ${srcdir}/test.wkt > test.out -ret=\$? - -if test "\$ret" -ne "0"; then - echo "geostest exited with non-zero status (\$ret)" -fi - -# It's enough that it doesn't segfault for now... -# computing a diff doesn't currently work as geostest -# was not initially made taking arch differences into -# account -diff ${srcdir}/test.expected test.out >&2 - -exit \$ret - -EOF - -chmod +x ${runner} -echo "Runner: ${runner} created" diff -Nru geos-3.1.0/tests/unit/capi/test.wkt geos-3.2.2/tests/unit/capi/test.wkt --- geos-3.1.0/tests/unit/capi/test.wkt 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/test.wkt 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -MULTIPOLYGON(((362062.200000003 231744,362076 231749.799999997,362122.299999997 231753.5,362187 231767.900000006,362242 231776,362296.200000003 231786.700000003,362517 231821.5,362651.799999997 231844.799999997,362772.700000003 231871.799999997,362805.099999994 231874.299999997,362847.200000003 231876,362912.799999997 231888.900000006,363005.900000006 231903,363169.200000003 231929.299999997,363247.900000006 231934,363333.900000006 231950,363516.099999994 231985.5,363630.299999997 232004.700000003,363694.700000003 232012,363754 232021.099999994,363833.400000006 232029.799999997,363913.599999994 232048.5,363940.599999994 232052,364014.799999997 232060.299999997,364044.700000003 232065.799999997,364082.700000003 232074.099999994,364165.299999997 232083.799999997,364208.599999994 232097.099999994,364279.799999997 232104,364316.700000003 232112.799999997,364331.200000003 232113.599999994,364391.200000003 232127.599999994,364483.799999997 232140,364606.799999997 232159.599999994,364662.799999997 232170.599999994,364712.900000006 232182.700000003,364823.799999997 232201.5,364904.900000006 232211,364967.200000003 232221.099999994,365061.299999997 232240.5,365191.099999994 232255.900000006,365262.900000006 232262.299999997,365391.700000003 232283.599999994,365525.299999997 232308.900000006,365598.400000006 232326.599999994,365727.099999994 232341.599999994,365803 232352.299999997,365935.400000006 232377.599999994,366011.5 232384.799999997,366056.099999994 232391.200000003,366128.700000003 232407.400000006,366295.599999994 232442.700000003,366445.200000003 232457.200000003,366624.799999997 232486.299999997,366663.200000003 232490.200000003,366707.200000003 232502.400000006,366807.099999994 232522.700000003,366862.900000006 232529.799999997,366971.099999994 232543.5,367088.099999994 232563.099999994,367185.299999997 232575.400000006,367222.200000003 232582.400000006,367331.799999997 232597,367530.299999997 232629.799999997,367683.599999994 232660.700000003,367772.599999994 232675.799999997,367939 232693.099999994,367995.599999994 232701,368055.099999994 232702.599999994,368135 232714.299999997,368220.799999997 232735.400000006,368312.599999994 232753.400000006,368380.799999997 232770.799999997,368447.299999997 232777.599999994,368512.099999994 232792.099999994,368544 232795.599999994,368601.799999997 232805.099999994,368660.799999997 232813.099999994,368707.299999997 232826.400000006,368782.5 232836.099999994,368832.599999994 232847.799999997,368906.599999994 232860.5,368992.5 232873.099999994,369089.099999994 232892,369260.5 232916.700000003,369318.700000003 232931.200000003,369445.599999994 232945.599999994,369508.700000003 232950.099999994,369574.200000003 232960.5,369616.099999994 232967.799999997,369656.200000003 232978.200000003,369717.700000003 233002,369777.700000003 233016.099999994,369875.400000006 233024,370035 233046.900000006,370117.099999994 233056,370200.099999994 233077.599999994,370233.599999994 233079.099999994,370496.900000006 233123.299999997,370539.400000006 233127,370601.700000003 233135,370655.299999997 233146.599999994,370855.099999994 233178.799999997,370932.700000003 233182.099999994,371060.099999994 233205,371120.700000003 233223,371178.599999994 233233,371201.799999997 233229.200000003,371245.299999997 233232.5,371289.900000006 233243.700000003,371425.799999997 233259,371487.5 233276.400000006,371552.299999997 233291.900000006,371638.099999994 233306.400000006,371715.099999994 233318.599999994,371821.200000003 233332.400000006,371918.299999997 233350.799999997,371988.099999994 233360.200000003,372040.700000003 233366.299999997,372158.599999994 233382.299999997,372175.5 233379.599999994,372201.099999994 233382.599999994,372351.299999997 233410.099999994,372419 233417.5,372500.799999997 233432.200000003,372538.700000003 233434.099999994,372559.299999997 233439.200000003,372715.799999997 233463.599999994,372780.900000006 233472.099999994,372809.599999994 233479.599999994,372842.900000006 233484,372895.900000006 233498.099999994,372959.799999997 233506.099999994,372967.799999997 233500.5,372986.099999994 233503.700000003,373016.200000003 233511.599999994,373076.5 233519.700000003,373115.5 233524.5,373133.900000006 233529.700000003,373218.799999997 233538.900000006,373322.599999994 233555.200000003,373403.900000006 233574.799999997,373503.5 233590.099999994,373539.599999994 233594.099999994,373567.700000003 233595.099999994,373612.900000006 233595.299999997,373629.5 233598,373642.200000003 233597.900000006,373633.799999997 233582.099999994,373623.799999997 233570.200000003,373584.099999994 233479.200000003,373562.900000006 233422.099999994,373549.099999994 233399,373506.799999997 233325.799999997,373487.299999997 233294.200000003,373460.200000003 233259.799999997,373442.099999994 233240.099999994,373426.700000003 233220,373405.400000006 233187.299999997,373383.099999994 233164.799999997,373333.599999994 233096.700000003,373325.5 233078.5,373298.299999997 233028.599999994,373269.299999997 232982.599999994,373220.099999994 232893.200000003,373190.799999997 232853.700000003,373145.400000006 232784.700000003,373100.900000006 232712,373090.400000006 232680.299999997,373077.599999994 232660.099999994,373046.400000006 232597.299999997,373028.900000006 232538.200000003,373012.400000006 232520,373002.5 232506.299999997,372997.299999997 232499.900000006,372979.900000006 232471.799999997,372966.5 232452.400000006,372963.099999994 232436.099999994,372925.200000003 232361.5,372900 232326.400000006,372885.700000003 232295.200000003,372849.700000003 232245,372803.299999997 232173.799999997,372764.900000006 232096.200000003,372735.200000003 232063.299999997,372710.900000006 232032.200000003,372692.5 232004.700000003,372691.900000006 231988.700000003,372680 231952,372658.599999994 231917,372655.599999994 231898,372629.799999997 231847.099999994,372609.799999997 231810.599999994,372589.299999997 231778,372571 231743.400000006,372549.400000006 231706.700000003,372536.900000006 231677.099999994,372497.900000006 231600.400000006,372476.799999997 231562.900000006,372467.599999994 231529.099999994,372455 231502.400000006,372444.299999997 231467.700000003,372431 231419.5,372394.5 231364.299999997,372379 231339.5,372355 231312.599999994,372344.099999994 231286.299999997,372307.799999997 231214,372292.099999994 231194.900000006,372274.5 231145.299999997,372260.099999994 231120.599999994,372226.299999997 231083.299999997,372194.299999997 231041.400000006,372136.400000006 230959.099999994,372112.799999997 230922.5,372065.599999994 230841.599999994,372054 230818.299999997,372031.700000003 230784.299999997,372014.700000003 230735.599999994,371990.400000006 230694.200000003,371950.799999997 230628.400000006,371931.700000003 230578.900000006,371890.900000006 230511.299999997,371874.900000006 230494.5,371861.400000006 230513.700000003,371858 230493.400000006,371846.099999994 230455.099999994,371828.099999994 230407.5,371813.299999997 230374.799999997,371787.799999997 230316.5,371751.299999997 230262.700000003,371731.5 230213.700000003,371699.200000003 230171.799999997,371679.299999997 230125.200000003,371656.599999994 230095.599999994,371621.400000006 230055.400000006,371584.299999997 229987.700000003,371550.099999994 229912.5,371526.900000006 229867.400000006,371504.799999997 229838.799999997,371485.599999994 229801.799999997,371475.5 229778,371461.400000006 229752.200000003,371440.700000003 229706.799999997,371400.799999997 229629.099999994,371372.400000006 229581.599999994,371349.400000006 229546.599999994,371312.299999997 229480.400000006,371296.200000003 229454.299999997,371274.900000006 229432.099999994,371253.099999994 229396.099999994,371224.5 229358.099999994,371185.5 229294,371153.299999997 229239.700000003,371066.400000006 229032.700000003,371027.5 228966.900000006,371004.799999997 228913,370991 228890.200000003,370938.099999994 228790.400000006,370919.299999997 228762.799999997,370884.299999997 228707.400000006,370840 228630.900000006,370797.200000003 228558.299999997,370722.5 228398.900000006,370677.200000003 228323.299999997,370655.5 228268.299999997,370635 228228.799999997,370577.799999997 228117.599999994,370556.900000006 228088.400000006,370533.599999994 228047.900000006,370511.299999997 228025.299999997,370485.200000003 227994.799999997,370435.799999997 227946.299999997,370399.799999997 227881.099999994,370342.599999994 227793.200000003,370316.400000006 227755.299999997,370239.599999994 227614.799999997,370195 227565.200000003,370123.299999997 227431.200000003,370067 227353.900000006,370025.5 227277.700000003,369958.5 227171.5,369938.799999997 227130.5,369892.799999997 227050.5,369876.799999997 227022.799999997,369837.799999997 226970.5,369820.799999997 226933,369782.400000006 226859.799999997,369762.099999994 226819.200000003,369739.099999994 226782.200000003,369713.099999994 226749.200000003,369686.5 226704.700000003,369642.400000006 226620.099999994,369596.200000003 226546.099999994,369578.5 226510.5,369541.400000006 226455.200000003,369519 226397.200000003,369476.799999997 226327.099999994,369435.599999994 226235.599999994,369404.900000006 226135.299999997,369367.400000006 226063.099999994,369353.799999997 226024,369316.900000006 225937.799999997,369292.900000006 225899.799999997,369258.799999997 225837.5,369226.099999994 225790.599999994,369191.900000006 225739.900000006,369169.700000003 225702.799999997,369136.799999997 225661.900000006,369115.5 225641.799999997,368998.099999994 225443.299999997,368960.200000003 225358.599999994,368890.799999997 225224.599999994,368812.799999997 225025.900000006,368771.700000003 224939.299999997,368741.900000006 224859.900000006,368701.400000006 224765.900000006,368679.099999994 224703.400000006,368637.099999994 224627.299999997,368616.700000003 224565.799999997,368592.799999997 224525.299999997,368547.5 224416.799999997,368528 224383.799999997,368468.599999994 224270,368457.200000003 224234.200000003,368445.099999994 224206,368404.400000006 224140.400000006,368387 224066.900000006,368348.799999997 223972.200000003,368324.599999994 223901.299999997,368299.099999994 223849.299999997,368281.099999994 223819.200000003,368249.700000003 223748.400000006,368221.799999997 223704,368187.099999994 223625.799999997,368163.599999994 223575.799999997,368139.799999997 223508.400000006,368111.099999994 223455.5,368083.900000006 223370.599999994,368056 223315.700000003,368028.700000003 223248.799999997,368011 223201.700000003,367981.799999997 223133.900000006,367963.400000006 223102.799999997,367932.099999994 223056.400000006,367903.299999997 222978.599999994,367852.099999994 222807.400000006,367820.599999994 222727.099999994,367790.099999994 222635.400000006,367757.799999997 222557.599999994,367742.400000006 222516,367708.200000003 222426.299999997,367660.200000003 222299.900000006,367625.799999997 222225.599999994,367591.700000003 222159.400000006,367561.299999997 222093.5,367502.200000003 221924.400000006,367472.900000006 221842.599999994,367458.5 221819.400000006,367427.700000003 221735.700000003,367385 221624.099999994,367360.5 221574.200000003,367326 221490,367290.299999997 221393.299999997,367271.200000003 221339.700000003,367244.099999994 221268.799999997,367237.299999997 221245.900000006,367214 221194,367200.400000006 221137.900000006,367162.299999997 221044.700000003,367147.099999994 220987.099999994,367117.799999997 220919.299999997,367102.799999997 220894.099999994,367073.599999994 220814.799999997,367023.400000006 220673,366980.099999994 220598.299999997,366962.099999994 220558.799999997,366905.799999997 220454.400000006,366882.400000006 220416.900000006,366857 220370.5,366824.400000006 220272.799999997,366787.599999994 220128.700000003,366743.900000006 220049.200000003,366730.5 220013,366694.799999997 219922.400000006,366668.299999997 219845.400000006,366642.299999997 219788.5,366621 219728.5,366602 219663.5,366578.299999997 219606.599999994,366570.700000003 219575.700000003,366551.599999994 219513.200000003,366507.5 219429.599999994,366492 219386,366458.400000006 219301.200000003,366426.700000003 219211,366392.900000006 219139.200000003,366373.099999994 219087.200000003,366316.599999994 218974.400000006,366294.799999997 218940.799999997,366260.799999997 218889.5,366214.299999997 218764.099999994,366187.599999994 218662.400000006,366165 218615.799999997,366128.799999997 218519.200000003,366086.900000006 218417.599999994,366068.799999997 218378,366035 218307.200000003,366012.200000003 218231.799999997,365984.700000003 218153.400000006,365950.200000003 218060.799999997,365922.099999994 218017.799999997,365903.400000006 217982.200000003,365835.200000003 217851.099999994,365798.5 217801.900000006,365728.400000006 217660.299999997,365673.200000003 217559,365657.5 217511.400000006,365636.900000006 217461.900000006,365589.299999997 217352.400000006,365560.700000003 217312,365525.200000003 217245.299999997,365480.900000006 217133.200000003,365442.5 217056.599999994,365405.900000006 216955.5,365379.200000003 216908,365341.200000003 216825.799999997,365319.200000003 216784.299999997,365303.299999997 216741.599999994,365259.299999997 216668,365243.200000003 216626.400000006,365206.900000006 216581.099999994,365172.5 216521.799999997,365148.700000003 216481.799999997,365127.200000003 216438.799999997,365081.299999997 216365.200000003,365054.5 216305.299999997,365045.099999994 216300,365042.400000006 216280.599999994,365035 216259.299999997,365022.900000006 216243.5,365011.799999997 216224.200000003,364987.599999994 216190.200000003,364980.900000006 216167.299999997,364958.299999997 216136.799999997,364941.799999997 216095.700000003,364917.799999997 216058.200000003,364883.299999997 216007.799999997,364861.200000003 215961.299999997,364850.299999997 215946,364833.799999997 215915.900000006,364803.700000003 215856,364770 215806.200000003,364714.700000003 215744.799999997,364702.599999994 215717,364679.599999994 215672.900000006,364650.799999997 215618,364631.799999997 215591.5,364601.099999994 215554.5,364583.799999997 215510.900000006,364568.599999994 215482.200000003,364521.5 215423.099999994,364479.200000003 215387,364413.200000003 215308.200000003,364385.200000003 215279.200000003,364366.200000003 215262.599999994,364336.400000006 215230.099999994,364285 215148.700000003,364246.299999997 215118.299999997,364224.599999994 215094.299999997,364190.099999994 215058.900000006,364165.099999994 215030.400000006,364125.799999997 214999.599999994,364103.599999994 214973,364053.599999994 214926,364011.799999997 214890.700000003,363965.5 214853.5,363920.700000003 214801.900000006,363876.5 214769.700000003,363806.299999997 214703.5,363766.700000003 214674.200000003,363747.799999997 214657,363681.700000003 214592.299999997,363620.5 214559.799999997,363580.299999997 214535.5,363530.599999994 214496.400000006,363510.299999997 214495.700000003,363474.900000006 214488.799999997,363430.5 214476.5,363381.099999994 214465.299999997,363316.5 214466.400000006,363252.599999994 214461.400000006,363156.700000003 214466.400000006,363090.799999997 214484.299999997,363077.5 214493.5,363067.099999994 214497.200000003,363040 214500.200000003,362914.599999994 214528.5,362870.200000003 214553.099999994,362846.299999997 214560.599999994,362828.400000006 214561.900000006,362827 214572.799999997,362814 214577.5,362776.5 214595.599999994,362765.400000006 214599.200000003,362667.900000006 214651.599999994,362630.299999997 214667.700000003,362576.099999994 214694,362543.299999997 214725.400000006,362511.900000006 214750.900000006,362478 214757.400000006,362379.299999997 214796.799999997,362260.299999997 214866.5,362127.099999994 214946.799999997,362023.900000006 215017.299999997,361984.099999994 215042.400000006,361890.5 215113.700000003,361777.599999994 215181.799999997,361710.099999994 215233.799999997,361692.400000006 215248.400000006,361671.700000003 215256.700000003,361597.900000006 215286.900000006,361502.5 215343.700000003,361472 215357.200000003,361423.700000003 215382.799999997,361259.200000003 215487.700000003,361226.599999994 215505.700000003,361191.599999994 215527.700000003,361118.700000003 215568.299999997,360996.099999994 215603.5,360963.900000006 215608.5,360927.799999997 215621.5,360842.799999997 215661.900000006,360789.599999994 215691,360754.099999994 215720.099999994,360727.200000003 215747.400000006,360701.799999997 215765.799999997,360660.5 215812.900000006,360654.299999997 215825.900000006,360615.299999997 215860.900000006,360579.299999997 215885,360488.200000003 215951.200000003,360455.400000006 215982.099999994,360441.200000003 216003.799999997,360437.700000003 216052.200000003,360418.299999997 216065,360341.099999994 216078.599999994,360322 216078.5,360150.700000003 216078.200000003,359950.599999994 216070.400000006,359871.299999997 216067.200000003,359804.900000006 216063.799999997,359732.799999997 216061.299999997,359707.200000003 216057.299999997,359633.799999997 216055.400000006,359624.400000006 216048.599999994,359625.900000006 216033.599999994,359629 216003.700000003,359644.599999994 215957.599999994,359657.400000006 215924.900000006,359666.5 215890.900000006,359668.400000006 215838.400000006,359654 215798.299999997,359637.700000003 215765.599999994,359599 215719.400000006,359511.299999997 215645.5,359472.400000006 215625.599999994,359428.099999994 215611.400000006,359380.900000006 215602.700000003,359323.5 215606.599999994,359253 215621.700000003,359209.900000006 215664.700000003,359166.5 215718.700000003,359135.799999997 215767.700000003,359093.599999994 215819.700000003,359042.400000006 215891.700000003,359013.299999997 215925.700000003,358938.299999997 215980.099999994,358873.599999994 216000.700000003,358766.200000003 216007.900000006,358736.299999997 216003.799999997,358607.900000006 215998.900000006,358535.5 216001,358492.400000006 215997.200000003,358428 215997.200000003,358369.599999994 215995.700000003,358258.400000006 215994,358108 215982.299999997,357988.299999997 215983.200000003,357948.200000003 215980.900000006,357892 215980.799999997,357883.299999997 215978,357866.400000006 215979.200000003,357825.299999997 215971.400000006,357798.299999997 215947.299999997,357769.299999997 215922.299999997,357739.200000003 215886.5,357707.900000006 215864,357645.799999997 215826.599999994,357580.599999994 215805.700000003,357556.299999997 215796.099999994,357522.700000003 215787.599999994,357488.900000006 215777.299999997,357361.5 215746.299999997,357308.200000003 215729.200000003,357270.599999994 215713.900000006,357247.700000003 215699.799999997,357230.200000003 215689.599999994,357198.400000006 215674.099999994,357158.5 215656.799999997,357139.400000006 215647.599999994,357090.099999994 215625.400000006,357061 215606,357024.799999997 215585,356976.700000003 215540.900000006,356959.799999997 215519.299999997,356924.299999997 215495.900000006,356863.900000006 215441,356847.400000006 215434.299999997,356827.299999997 215423.099999994,356801.400000006 215401.099999994,356769.099999994 215372.200000003,356726.200000003 215341.400000006,356698.599999994 215325.5,356639.700000003 215286,356586.099999994 215239.5,356520 215173.700000003,356487.900000006 215140.299999997,356460.099999994 215110.700000003,356416.200000003 215058.099999994,356396.200000003 215039.5,356363 215005.599999994,356287.200000003 214938.5,356251.5 214906.099999994,356155.799999997 214810.900000006,356106.799999997 214766.799999997,355999.700000003 214667.700000003,355956.299999997 214633,355922 214604.599999994,355896.700000003 214583,355879.599999994 214565,355815.900000006 214515.099999994,355791.400000006 214485.5,355781.200000003 214480.200000003,355783.5 214472.599999994,355756.400000006 214447.200000003,355703.599999994 214373.799999997,355649.799999997 214316.200000003,355633.799999997 214298.5,355606.400000006 214267,355576.400000006 214229.599999994,355565 214217.299999997,355524.700000003 214182,355492.099999994 214141.700000003,355431.700000003 214075.799999997,355412.599999994 214056.700000003,355382.200000003 214028.200000003,355344.599999994 213994.400000006,355296.900000006 213940.799999997,355261.299999997 213908.900000006,355237.5 213876.400000006,355212.599999994 213844.299999997,355182.299999997 213811.400000006,355151.299999997 213757,355117.900000006 213724.200000003,355114.599999994 213715.799999997,355102.599999994 213703,355084.900000006 213673.799999997,355062.200000003 213654.799999997,355051.599999994 213640,355001.700000003 213589.900000006,355002.5 213576.900000006,354978.799999997 213553.400000006,354926.599999994 213487.900000006,354892.599999994 213432,354877.400000006 213414.299999997,354800.900000006 213315.200000003,354747.799999997 213259.299999997,354662.799999997 213136.400000006,354613.200000003 213069.299999997,354552.299999997 212996.5,354491.900000006 212928.099999994,354444.700000003 212858.599999994,354436.599999994 212851.200000003,354404.299999997 212798.900000006,354393.299999997 212790.099999994,354374.900000006 212772,354260.099999994 212618.099999994,354242 212583.5,354214.5 212556,354161.799999997 212490.599999994,354133.099999994 212448.599999994,354112.5 212416.5,354096.700000003 212404.299999997,354078.599999994 212384.599999994,354063.299999997 212363.5,354057.200000003 212342.099999994,354032.799999997 212313.5,354029.799999997 212300.599999994,353984.799999997 212246.5,353954.700000003 212221.5,353943.5 212207.200000003,353925.799999997 212184.5,353923.299999997 212167.200000003,353906.299999997 212149.900000006,353895.299999997 212132.700000003,353885.799999997 212113.799999997,353872.700000003 212104.599999994,353840.400000006 212061.799999997,353825.599999994 212045,353810.900000006 212021.299999997,353715.599999994 211903.700000003,353694.400000006 211872.099999994,353665.099999994 211831.599999994,353618.5 211776.900000006,353575.299999997 211713.799999997,353539.599999994 211678,353527.099999994 211661.200000003,353469.599999994 211595.799999997,353462 211575,353432.099999994 211538.099999994,353408.700000003 211500,353380.599999994 211457.5,353357 211426.5,353348.700000003 211410.700000003,353310.299999997 211358.900000006,353277.400000006 211317.5,353251.299999997 211272,353232.700000003 211244.400000006,353221.5 211230.599999994,353201.200000003 211201.5,353131 211097.400000006,353084.299999997 211045.799999997,353078.200000003 211033,353029.700000003 210970.400000006,353015.099999994 210947.200000003,353003.700000003 210934.799999997,352988.299999997 210915.700000003,352967.400000006 210878,352925.799999997 210816.400000006,352893 210747.599999994,352860.400000006 210698.200000003,352823.799999997 210635.5,352781.700000003 210565.900000006,352762.599999994 210546.700000003,352728 210503.400000006,352690.5 210446.5,352674.400000006 210429.900000006,352670 210419.5,352663.799999997 210413.099999994,352635.799999997 210358.200000003,352535.700000003 210213.700000003,352493.900000006 210170.400000006,352470.700000003 210140.900000006,352445.700000003 210099.900000006,352427.5 210066.200000003,352382.299999997 209981.200000003,352368.5 209965.900000006,352359.099999994 209939.599999994,352331.099999994 209892.700000003,352299.299999997 209856.299999997,352258.700000003 209851.400000006,352226.5 209815,352217.5 209803.200000003,352199.700000003 209760.599999994,352153.900000006 209689.5,352140.099999994 209666.299999997,352108.599999994 209619,352087.200000003 209578.400000006,352043.900000006 209503.299999997,352039.900000006 209481.299999997,352033.900000006 209464.5,352016.700000003 209458.799999997,352002.799999997 209447.099999994,351981.200000003 209410.400000006,351965.400000006 209386.700000003,351959.099999994 209368.400000006,351952.700000003 209354.099999994,351949.400000006 209335.700000003,351959.5 209322,351945.200000003 209310.799999997,351931.900000006 209286.599999994,351924.299999997 209269.700000003,351879.799999997 209172.200000003,351872.099999994 209156.299999997,351854.799999997 209130.200000003,351833.799999997 209081.200000003,351814.299999997 209049.5,351807.299999997 209017.200000003,351805.299999997 208997.799999997,351800.099999994 208972.400000006,351788 208948.700000003,351769.799999997 208923.5,351737.599999994 208896.599999994,351719.700000003 208862.5,351668.5 208798,351647.799999997 208777.799999997,351622.799999997 208745.400000006,351593.400000006 208671.5,351565.799999997 208633.099999994,351548.900000006 208607.400000006,351533.599999994 208587.700000003,351507.099999994 208526.700000003,351483.599999994 208493.599999994,351473.200000003 208472.900000006,351444.599999994 208419,351420 208394.5,351395.799999997 208356.400000006,351354.299999997 208306.200000003,351330.700000003 208260.200000003,351323 208236.900000006,351312.099999994 208223.099999994,351284.700000003 208184.700000003,351269.299999997 208153.900000006,351253.900000006 208135.299999997,351246.900000006 208120.400000006,351235.700000003 208102,351220 208066.900000006,351188.200000003 208028.599999994,351158.299999997 207975.099999994,351134.299999997 207936.099999994,351106.900000006 207910.099999994,351083.799999997 207887,351028.200000003 207819.599999994,351017.799999997 207801.799999997,350968.299999997 207727.799999997,350952.599999994 207693.099999994,350914.900000006 207638.299999997,350885.799999997 207584,350836 207520.400000006,350802.299999997 207459,350778.599999994 207427.5,350740.5 207359.900000006,350707.799999997 207312.400000006,350676.400000006 207266.099999994,350658.799999997 207244,350642.900000006 207212.200000003,350621.5 207161.200000003,350612 207144.900000006,350597.299999997 207114.200000003,350573.900000006 207063.799999997,350548.700000003 207024.200000003,350510.599999994 206945.5,350490.700000003 206918.799999997,350470.900000006 206883.799999997,350448.700000003 206833.799999997,350438 206803,350419.299999997 206768.400000006,350396.299999997 206737.400000006,350307.700000003 206541.799999997,350278.299999997 206492.299999997,350264.700000003 206447.599999994,350245.200000003 206420.099999994,350239.200000003 206393.700000003,350225.400000006 206355.099999994,350203.799999997 206318.400000006,350191.799999997 206281.799999997,350170.299999997 206242.700000003,350139.700000003 206161.799999997,350116.200000003 206120.299999997,350101.900000006 206062.200000003,350095.099999994 206017.900000006,350076.299999997 205961.400000006,350067.299999997 205922.099999994,350059 205906.299999997,350034.5 205833.799999997,350002 205734.700000003,349994.700000003 205699.299999997,349981.099999994 205653.599999994,349971.599999994 205630.900000006,349946.5 205574.299999997,349921.200000003 205527.400000006,349880.200000003 205445.299999997,349855.5 205409.299999997,349843.700000003 205381.5,349826.5 205338.400000006,349812.5 205318.700000003,349796.099999994 205294.5,349791.299999997 205267.599999994,349783.400000006 205237.299999997,349785.599999994 205189.5,349787.5 205149.900000006,349793.799999997 205129.400000006,349804.700000003 205105.799999997,349807.200000003 205080.900000006,349789.099999994 205031.299999997,349773.299999997 204995.5,349754.299999997 204967,349734 204914.900000006,349710.799999997 204872.299999997,349694.099999994 204833.200000003,349681 204808.5,349660.299999997 204758.900000006,349639.299999997 204711.5,349627 204694.200000003,349598.400000006 204651.700000003,349558.099999994 204591,349538.700000003 204553.900000006,349515.900000006 204519.400000006,349492.5 204467.299999997,349480.5 204430.099999994,349481.799999997 204403.700000003,349495 204367.599999994,349503.200000003 204334.599999994,349510.599999994 204280,349497.599999994 204248.799999997,349474.799999997 204224.299999997,349446.099999994 204199.799999997,349390.299999997 204161.299999997,349339.700000003 204111.700000003,349275.700000003 204003.200000003,349229.400000006 203905.900000006,349207.900000006 203842.700000003,349184.900000006 203794.400000006,349161.299999997 203725.299999997,349151.400000006 203692.799999997,349129.099999994 203631,349101.799999997 203550.799999997,349078.799999997 203504.099999994,349046.299999997 203443.799999997,349010.700000003 203349.299999997,349006.299999997 203325.700000003,348989 203263.599999994,348975.099999994 203228.700000003,348936.900000006 203132.5,348893.400000006 202993.299999997,348874.900000006 202924.200000003,348827.400000006 202790.299999997,348795.099999994 202738,348778.599999994 202708.799999997,348734 202608.5,348714.799999997 202559.400000006,348681.900000006 202471.400000006,348664.900000006 202410.299999997,348647.799999997 202366.5,348607.599999994 202268.900000006,348603.299999997 202260.200000003,348573.700000003 202189.099999994,348561.799999997 202157.299999997,348554.099999994 202129.700000003,348541.200000003 202100.799999997,348538.700000003 202088.099999994,348533.400000006 202062.5,348529.099999994 202051.700000003,348517.700000003 202010.599999994,348500.099999994 201994.900000006,348493.700000003 201986.599999994,348474.5 201949.299999997,348468.700000003 201906.599999994,348455 201870.299999997,348437.700000003 201827.900000006,348416.799999997 201787,348409.799999997 201770.400000006,348373.400000006 201718.900000006,348369.299999997 201703,348361.5 201684.400000006,348366.799999997 201670.200000003,348357.700000003 201646.599999994,348347.599999994 201624,348337.799999997 201601.299999997,348328.799999997 201591.900000006,348305.400000006 201501,348280.200000003 201448.799999997,348274 201440.400000006,348256.799999997 201412.599999994,348222.400000006 201350.700000003,348209.200000003 201327.900000006,348179.799999997 201279,348154.700000003 201235,348149.900000006 201212.700000003,348140.599999994 201190.700000003,348121.099999994 201148,348111.200000003 201129.5,348103.599999994 201097,348097 201022.5,348083.5 200995.5,348047.599999994 200940.799999997,348027.099999994 200916.400000006,347997.599999994 200894.400000006,347951.799999997 200833.299999997,347933.400000006 200791.700000003,347929.799999997 200765.599999994,347913 200717.599999994,347886.799999997 200685.700000003,347875.200000003 200667.900000006,347838.799999997 200623.299999997,347815.400000006 200583.799999997,347804.799999997 200567.599999994,347798.400000006 200547.900000006,347781.799999997 200509.299999997,347760.700000003 200484.200000003,347732.599999994 200444.299999997,347703.400000006 200392.599999994,347686.099999994 200363.099999994,347665.299999997 200341.700000003,347626.799999997 200296.299999997,347589.200000003 200263.599999994,347531.900000006 200206.700000003,347505 200189.700000003,347455.599999994 200145.299999997,347435.700000003 200129.900000006,347389 200102,347283.900000006 200050,347184.299999997 200008.400000006,347141.099999994 199982.200000003,347094.400000006 199954.5,347081.900000006 199936,347065 199901.5,347060.299999997 199886.900000006,347052 199860.400000006,347041 199814.400000006,347037.400000006 199800.200000003,347039.799999997 199787.700000003,347034.5 199753.400000006,347017.299999997 199708.5,346992.799999997 199693.400000006,346979.799999997 199674.200000003,346976.299999997 199635.5,346957.5 199602.200000003,346928.099999994 199553.299999997,346912.599999994 199523.900000006,346898.799999997 199497.200000003,346891.799999997 199472.099999994,346883.400000006 199455.5,346872.200000003 199416.5,346854.400000006 199384.400000006,346849.200000003 199371.099999994,346831.700000003 199346.200000003,346822.799999997 199319,346804.900000006 199292.400000006,346778.5 199226.299999997,346769.799999997 199211.5,346751.799999997 199158.599999994,346733.700000003 199123,346717.799999997 199091,346701.799999997 199060.700000003,346685.599999994 199036.900000006,346682.700000003 199019.5,346677.900000006 199009.599999994,346672.5 198996.799999997,346657.299999997 198960.5,346640 198874.799999997,346638.200000003 198824.5,346633.5 198808.299999997,346625.200000003 198758.599999994,346619.700000003 198743.900000006,346610.599999994 198709.900000006,346588 198658.200000003,346571.5 198627.200000003,346561 198615.900000006,346546.299999997 198587.799999997,346532.900000006 198544.299999997,346526.799999997 198533.200000003,346524.200000003 198521.5,346509.900000006 198481.900000006,346504.299999997 198448.5,346477 198369.099999994,346472.5 198338.700000003,346472.299999997 198315.400000006,346473.400000006 198277.400000006,346464.400000006 198268.599999994,346444 198217,346428.900000006 198158.700000003,346428.700000003 198125.799999997,346432.200000003 198103.5,346447.400000006 198074.299999997,346443.700000003 198060.700000003,346433.900000006 198028.700000003,346412.299999997 198003.799999997,346399.200000003 197987.799999997,346393.599999994 197971.900000006,346390.200000003 197941.599999994,346396.900000006 197911.799999997,346401.5 197880.200000003,346416.5 197832.200000003,346433.5 197790.700000003,346449.799999997 197751.900000006,346467.700000003 197704.299999997,346480.200000003 197686.299999997,346501.200000003 197682.5,346537.299999997 197670.900000006,346548.700000003 197661.299999997,346557.099999994 197624.700000003,346548.599999994 197600.400000006,346538.5 197586.900000006,346514.5 197571.799999997,346473.299999997 197580.200000003,346442.099999994 197576.200000003,346408.799999997 197557.5,346356.400000006 197535.099999994,346302.900000006 197505.5,346269.799999997 197463.099999994,346250.700000003 197445.299999997,346244.799999997 197431,346229.799999997 197391.099999994,346222.5 197356.200000003,346209.299999997 197330.900000006,346193 197295.700000003,346170.299999997 197240.5,346163.599999994 197206.900000006,346147.299999997 197158.799999997,346132 197126.200000003,346111.700000003 197075.400000006,346099.599999994 197040.599999994,346092.099999994 197005.799999997,346090.700000003 196966.200000003,346079.099999994 196914.5,346060.700000003 196874.299999997,346038.700000003 196845.799999997,346026.5 196800.599999994,346012.900000006 196730.299999997,346005 196697.5,345993 196683.400000006,345968.299999997 196635.5,345943.599999994 196562.799999997,345932.5 196492.799999997,345911.299999997 196413.099999994,345907.099999994 196382.799999997,345903.700000003 196356.299999997,345887.099999994 196300.700000003,345882 196257.799999997,345872.599999994 196226.700000003,345876.799999997 196207.200000003,345898.200000003 196172.200000003,345896.299999997 196162.700000003,345882.700000003 196134,345842.799999997 196099.900000006,345826.5 196087.5,345810.599999994 196071.599999994,345791.900000006 196032.900000006,345789.400000006 196011.5,345799.299999997 195979.400000006,345779.099999994 195887.700000003,345771.799999997 195829.799999997,345756.5 195784.200000003,345756.299999997 195752.700000003,345778.5 195741.099999994,345766.299999997 195722.700000003,345754.599999994 195711.900000006,345731.099999994 195677.5,345732.200000003 195630.599999994,345728.299999997 195611.799999997,345714.299999997 195586.299999997,345675.099999994 195564.700000003,345664.799999997 195557.599999994,345637.200000003 195541.799999997,345605.200000003 195509,345590.299999997 195471,345588.599999994 195416.200000003,345582.900000006 195362.400000006,345575.900000006 195332.099999994,345567.900000006 195285.900000006,345574.599999994 195259.700000003,345582 195228.200000003,345574.099999994 195183.900000006,345564.5 195158.700000003,345558.099999994 195127.099999994,345559.299999997 195056.299999997,345557.400000006 194980,345552.900000006 194913,345553.099999994 194872.299999997,345553 194814.400000006,345554.700000003 194766.799999997,345550.599999994 194687.799999997,345552.299999997 194655.400000006,345550.599999994 194615.799999997,345547.799999997 194573.200000003,345549.200000003 194434.299999997,345548.400000006 194378.099999994,345544.799999997 194326.799999997,345545.599999994 194273.400000006,345543.400000006 194229.5,345542.400000006 194102.400000006,345542.799999997 194045.5,345545.299999997 193957.700000003,345538.200000003 193757.099999994,345532.700000003 193721.5,345532.299999997 193642.200000003,345535 193526.700000003,345532.900000006 193482,345535.299999997 193417.900000006,345532.099999994 193351,345531.400000006 193304.099999994,345525 193187.799999997,345527.599999994 193120.299999997,345541.5 193070.5,345553.799999997 193027.400000006,345555.099999994 192987.5,345553.900000006 192962.299999997,345544.5 192948.299999997,345523.200000003 192916.400000006,345509.799999997 192880.200000003,345484.900000006 192773.900000006,345476.900000006 192725.900000006,345464.799999997 192692.799999997,345451.900000006 192660.400000006,345428.700000003 192543.099999994,345420.900000006 192509.799999997,345402 192438,345388 192381.400000006,345352.299999997 192249,345326.200000003 192158.400000006,345323.599999994 192145.400000006,345307.400000006 192097.5,345287.599999994 192047,345278.200000003 192027.200000003,345268.099999994 192002.200000003,345251.900000006 191950.299999997,345235.900000006 191907.900000006,345220.599999994 191865.299999997,345207.799999997 191833.5,345178.799999997 191738.400000006,345161.400000006 191684.099999994,345144.400000006 191627.599999994,345124.200000003 191550.099999994,345112.700000003 191523,345106.799999997 191499.900000006,345089.200000003 191461.799999997,345078.700000003 191418.599999994,345054.5 191360.900000006,345041.799999997 191312.599999994,345030.5 191287.700000003,345024.099999994 191256.099999994,344975.400000006 191082.799999997,344937 190983.700000003,344909.099999994 190875.799999997,344902.400000006 190841.299999997,344887.299999997 190805.5,344875 190759.900000006,344864 190728.200000003,344825.5 190666.200000003,344794.700000003 190596.5,344763.5 190542.400000006,344741.599999994 190487.200000003,344732.299999997 190443.900000006,344723.700000003 190372.5,344720.900000006 190331.099999994,344715.400000006 190306,344711.5 190288.400000006,344700.099999994 190241.700000003,344691.799999997 190186.400000006,344686.5 190175.299999997,344678 190139.5,344657.700000003 190075.5,344638.299999997 189943.799999997,344615.900000006 189896.099999994,344607.099999994 189865.299999997,344602.299999997 189854.299999997,344588.5 189802.799999997,344583 189777.599999994,344573.799999997 189711.700000003,344548.700000003 189646.400000006,344525.599999994 189563.799999997,344487.400000006 189433.200000003,344461.5 189319.599999994,344457 189292.799999997,344449.700000003 189257.400000006,344442.799999997 189214.5,344431.099999994 189181.900000006,344418.400000006 189132.299999997,344397.299999997 189060,344384.799999997 188995.900000006,344373.599999994 188938.799999997,344365.099999994 188892.700000003,344356.099999994 188869.400000006,344347.299999997 188837.099999994,344332.599999994 188782.5,344311.200000003 188714,344300.299999997 188677.200000003,344276.400000006 188503.099999994,344256.900000006 188448.5,344232.099999994 188387,344209.099999994 188316.799999997,344177.5 188213.299999997,344156.799999997 188165.900000006,344136.700000003 188122.099999994,344109.599999994 188073.900000006,344096.400000006 188038.5,344084.400000006 188010.299999997,344074.099999994 187978,344032 187900,344018.200000003 187865.599999994,344007.799999997 187843.599999994,343976.799999997 187763.299999997,343967.799999997 187737,343950.400000006 187688.099999994,343935.900000006 187627.299999997,343929.900000006 187612.299999997,343929.099999994 187571.799999997,343920.700000003 187561.400000006,343898.099999994 187528.5,343832.200000003 187399.400000006,343803.900000006 187338.5,343759.599999994 187216.200000003,343739.299999997 187174.400000006,343711.200000003 187121.5,343642 186939.299999997,343594.5 186828,343552.400000006 186695.599999994,343494.900000006 186553.900000006,343465.400000006 186459.200000003,343458.299999997 186417.900000006,343430.700000003 186333.5,343426.900000006 186314.799999997,343329.700000003 185976.799999997,343299.799999997 185837.099999994,343287.5 185760.400000006,343279 185682.900000006,343262.5 185542.900000006,343262.299999997 185487.299999997,343257.5 185408.799999997,343226.799999997 185225.099999994,343219.599999994 185150.5,343202.599999994 185068.400000006,343186.200000003 184961.900000006,343187.400000006 184936.900000006,343184 184869.400000006,343185.599999994 184836.5,343185.799999997 184672.700000003,343180.700000003 184543.299999997,343176.900000006 184427.200000003,343170.099999994 184292.900000006,343164.099999994 184241,343167.299999997 184175.599999994,343160.299999997 184119.400000006,343158.5 184074.299999997,343148 184014.400000006,343128.099999994 183934.099999994,343107 183870.599999994,343107.400000006 183861.599999994,343116.900000006 183815.900000006,343125.5 183762,343130 183746.799999997,343143.700000003 183724.599999994,343185.5 183676.099999994,343208.599999994 183661.799999997,343232.799999997 183632.700000003,343257.400000006 183608.200000003,343296.5 183578.900000006,343351.299999997 183551.599999994,343474.299999997 183521.5,343570 183499.599999994,343621.900000006 183474.599999994,343668.900000006 183454,343698.799999997 183446.5,343793.799999997 183417.299999997,343834.200000003 183406.799999997,343910.900000006 183381.599999994,343966 183371.799999997,344065.400000006 183344.799999997,344173.700000003 183312.700000003,344197.299999997 183310.299999997,344344.599999994 183294,344392.099999994 183293.400000006,344478.299999997 183311.299999997,344503.299999997 183318.099999994,344653.700000003 183335.5,344698.700000003 183352.200000003,344753.5 183370.599999994,344795.5 183370.599999994,344803.5 183366.799999997,344815.599999994 183339.900000006,344812 183316.799999997,344792.599999994 183283.900000006,344791.5 183256.200000003,344783 183220.5,344767.5 183183.5,344749.299999997 183147.900000006,344718.700000003 183112.299999997,344675.299999997 183076.099999994,344599 183039,344593.900000006 183032.099999994,344557.900000006 182996.799999997,344550.5 182966.5,344536.700000003 182927.299999997,344517.599999994 182912.900000006,344490.099999994 182909.5,344469.400000006 182900.099999994,344466.099999994 182882.5,344444.400000006 182847.400000006,344419.299999997 182777.200000003,344416.599999994 182764.799999997,344405.200000003 182725.299999997,344387.200000003 182687.700000003,344379.599999994 182646.400000006,344373.599999994 182597.099999994,344369.599999994 182559,344363.799999997 182457,344354.299999997 182330.599999994,344360.700000003 182197.599999994,344380.400000006 182099.5,344402.900000006 182032.099999994,344415.299999997 181985.299999997,344440.799999997 181930.299999997,344472.5 181860.700000003,344499.599999994 181747.200000003,344511.200000003 181704.400000006,344541.700000003 181658.5,344606.299999997 181542.400000006,344634 181478.099999994,344659.599999994 181424.799999997,344665.099999994 181356.400000006,344661.299999997 181338.200000003,344646.5 181307.099999994,344623.599999994 181271.799999997,344552.299999997 181195.5,344518.200000003 181166.400000006,344462.099999994 181110.599999994,344333 180989.700000003,344310.299999997 180971.900000006,344253.200000003 180924.599999994,344215.700000003 180880.799999997,344150.5 180800,344109.799999997 180738.099999994,344077 180695.099999994,344021.900000006 180606,343947.5 180480.400000006,343883.599999994 180357.700000003,343852.700000003 180303.799999997,343817 180222.799999997,343752.799999997 180108.599999994,343673.099999994 179983.400000006,343621.799999997 179912.299999997,343530.900000006 179755.099999994,343472.400000006 179636.799999997,343365.900000006 179396.099999994,343317.200000003 179286.400000006,343297.200000003 179250.400000006,343261.299999997 179174.5,343219.400000006 179096,343185.5 179041,343069.599999994 178832.299999997,342993.5 178689.799999997,342966.799999997 178650.799999997,342936.700000003 178597.099999994,342884.099999994 178494.599999994,342880.099999994 178480.700000003,342856.599999994 178432.200000003,342839.099999994 178394.599999994,342744.900000006 178208.299999997,342689.5 178087.200000003,342662.299999997 178032.299999997,342645.5 178004.599999994,342601.900000006 177926.700000003,342563 177860.700000003,342531.900000006 177794.099999994,342525.700000003 177786.700000003,342491.799999997 177718.799999997,342452 177648,342367.5 177495.599999994,342367.200000003 177481.200000003,342369.599999994 177468.599999994,342358.200000003 177443.400000006,342348.5 177416.5,342326.400000006 177389,342327.099999994 177375.799999997,342289.400000006 177310.700000003,342272 177272.299999997,342227.400000006 177180,342194.900000006 177141.599999994,342145.099999994 177053.400000006,342120.099999994 176999.400000006,342095 176959.200000003,342020.400000006 176812.599999994,341977.200000003 176741.400000006,341905.299999997 176612.799999997,341863.900000006 176551.599999994,341845.299999997 176523.299999997,341816.400000006 176474.799999997,341753 176360.5,341682.299999997 176184,341625.700000003 176077.5,341569.5 175969.599999994,341528.799999997 175906.299999997,341515.200000003 175878.900000006,341479.599999994 175808.599999994,341450.799999997 175744.700000003,341418.400000006 175695.799999997,341357.900000006 175580.5,341345.099999994 175546,341310.900000006 175482,341291.299999997 175440.799999997,341258.700000003 175384.799999997,341230.400000006 175313.599999994,341175.799999997 175210.5,341121 175069.5,341091.099999994 175014.200000003,341072.200000003 174971.5,341020.099999994 174856,340985.400000006 174792,340954.400000006 174727.400000006,340923.200000003 174663.200000003,340909.799999997 174619.200000003,340874.099999994 174533,340853.900000006 174482.700000003,340820.900000006 174430,340797.599999994 174342.400000006,340780.299999997 174291.299999997,340749.099999994 174228.400000006,340720.400000006 174112.400000006,340710.799999997 174051.200000003,340694.5 173954.200000003,340677.400000006 173898.799999997,340670.200000003 173874,340663.700000003 173859.099999994,340645.200000003 173794,340628.299999997 173722.299999997,340611.799999997 173664.400000006,340605.700000003 173631.799999997,340597 173597.5,340606.5 173590.400000006,340606.400000006 173575.5,340601.900000006 173556,340564.200000003 173475.299999997,340548.400000006 173457,340533.599999994 173424.400000006,340523.299999997 173378.099999994,340509.299999997 173342.400000006,340509.299999997 173321.099999994,340496.700000003 173268,340486.400000006 173234.400000006,340473.400000006 173201.900000006,340463.299999997 173163.599999994,340455.700000003 173148.5,340443.299999997 173113.799999997,340433.5 173094.5,340431.900000006 173082.5,340414.099999994 173051.599999994,340401.299999997 173015.599999994,340376.299999997 172960.200000003,340371.599999994 172944.299999997,340353.599999994 172897.700000003,340338.799999997 172868.200000003,340311.299999997 172775.799999997,340292.299999997 172731.099999994,340279.099999994 172705.799999997,340268.299999997 172670.799999997,340259.700000003 172660.200000003,340244.700000003 172633.700000003,340209 172578.400000006,340200.5 172552.700000003,340202.900000006 172543.099999994,340202.799999997 172522.099999994,340202 172512,340188.599999994 172492.700000003,340170.900000006 172457,340151.200000003 172431.099999994,340136.099999994 172392.5,340114.700000003 172352.900000006,340111.700000003 172337.700000003,340086.700000003 172284.799999997,340079.700000003 172254.400000006,340066.700000003 172228.700000003,340056 172198.900000006,340043.799999997 172164.099999994,340024.200000003 172121.400000006,340016.099999994 172099.200000003,339994.200000003 172056.5,339970.799999997 171994.200000003,339959.200000003 171973.700000003,339945.400000006 171945.5,339907.799999997 171869.5,339896.299999997 171843.700000003,339887.099999994 171825.099999994,339879.700000003 171799.599999994,339865.5 171771.900000006,339806.400000006 171651.5,339793.599999994 171618.400000006,339761.299999997 171566.5,339730.799999997 171533.599999994,339698.599999994 171479.599999994,339685.700000003 171447.099999994,339674 171429.099999994,339640.099999994 171368.5,339617.599999994 171338.400000006,339592.299999997 171302.900000006,339534.599999994 171229.299999997,339521.400000006 171200.200000003,339489.5 171141.599999994,339459.400000006 171111.099999994,339453.400000006 171102,339432.700000003 171081.599999994,339391.200000003 171032.700000003,339319.099999994 170968.900000006,339277.799999997 170938.799999997,339232.900000006 170895,339182.400000006 170861.700000003,339153.400000006 170847.299999997,339089.200000003 170807.599999994,339057.700000003 170786,339013.5 170755.099999994,339001.200000003 170740.599999994,338993.200000003 170714.700000003,338981.900000006 170675.799999997,338958.599999994 170622.5,338944 170542.099999994,338920.299999997 170485.200000003,338919.5 170471.299999997,338909.099999994 170452.700000003,338890.299999997 170396.599999994,338866.5 170339.299999997,338852.799999997 170312.099999994,338847.200000003 170289.799999997,338804.799999997 170158.700000003,338799 170130.400000006,338784.799999997 170062.299999997,338772 170030.5,338768.900000006 169997.200000003,338759.099999994 169973.799999997,338751.799999997 169938.5,338744.799999997 169921.200000003,338739.400000006 169896.599999994,338726.900000006 169879.5,338712.799999997 169874.099999994,338696.200000003 169871.299999997,338620.799999997 169859.299999997,338592.099999994 169846.5,338547.799999997 169829.200000003,338529.099999994 169817.799999997,338483.299999997 169794.799999997,338417.299999997 169753.900000006,338342.200000003 169713.599999994,338277.099999994 169665.799999997,338251.700000003 169633.900000006,338236.299999997 169614,338195.200000003 169555.700000003,338169 169526.5,338134.599999994 169477.599999994,338113 169451,338075.799999997 169389,338065.599999994 169359.5,338050.799999997 169319,338014.400000006 169230.099999994,337990.599999994 169173,337976 169122.900000006,337961.200000003 169047,337937.799999997 168968.799999997,337925.599999994 168939.099999994,337888.700000003 168844.099999994,337864.299999997 168752.200000003,337824 168661.299999997,337790.200000003 168602.5,337756.700000003 168562.299999997,337685.799999997 168497.099999994,337651.900000006 168467.700000003,337601.299999997 168427,337485.700000003 168368.599999994,337402.200000003 168344.299999997,337359.299999997 168333.700000003,337272.200000003 168309.099999994,337224.099999994 168291.099999994,337183.099999994 168282.5,337108 168263.599999994,337071.299999997 168254.299999997,337010.900000006 168234.799999997,336931.099999994 168216.700000003,336858.299999997 168206.400000006,336789.200000003 168188,336759.200000003 168176.200000003,336667.799999997 168150.900000006,336620.400000006 168137.599999994,336563.900000006 168124.099999994,336540.599999994 168118.200000003,336525.900000006 168113.299999997,336501.299999997 168107.900000006,336454.799999997 168089.900000006,336398.5 168069.700000003,336371.5 168057.700000003,336297.5 168032.400000006,336251.799999997 168018.700000003,336216.799999997 168011.700000003,336181 168000.799999997,336105.400000006 167973.200000003,336028 167947.200000003,335961.200000003 167931.799999997,335856.799999997 167902.200000003,335758.299999997 167871.5,335715.799999997 167857.200000003,335679.099999994 167844,335630.400000006 167817.900000006,335523.299999997 167758.900000006,335447.200000003 167714.099999994,335410.400000006 167693.299999997,335357 167673.900000006,335326.700000003 167666.400000006,335286.5 167652.299999997,335197 167635.900000006,335177.099999994 167637.900000006,335099.799999997 167643.400000006,335029.200000003 167674.400000006,334948.799999997 167729.299999997,334931.900000006 167746.5,334908.099999994 167762.299999997,334850.400000006 167812.299999997,334807.099999994 167858.299999997,334786.5 167877.700000003,334749.400000006 167906.599999994,334665.200000003 167980.299999997,334610.099999994 168027.5,334562.799999997 168070.799999997,334537.799999997 168091.900000006,334454.900000006 168163.799999997,334330.200000003 168277.900000006,334282.799999997 168314.900000006,334262.599999994 168333.900000006,334187.099999994 168400.400000006,334160.400000006 168415.5,334097.299999997 168452.599999994,334056.799999997 168478.400000006,334026.799999997 168488.400000006,333912.799999997 168559.900000006,333846.5 168597.599999994,333816 168617.5,333784.200000003 168633,333719.799999997 168669.700000003,333691.700000003 168691.599999994,333633.299999997 168727.400000006,333527.099999994 168808.799999997,333454.900000006 168843.299999997,333403 168861.099999994,333350.200000003 168873.599999994,333319.900000006 168877.599999994,333238.799999997 168882.700000003,333169.5 168887.900000006,333131.799999997 168891.900000006,333064.599999994 168892.700000003,333020.299999997 168889.599999994,332911.5 168887.299999997,332827.099999994 168887.799999997,332799.900000006 168887.799999997,332732.700000003 168887.099999994,332629.599999994 168890.900000006,332520.599999994 168881.5,332465.200000003 168870.900000006,332397.900000006 168864.700000003,332342.799999997 168871.599999994,332304 168867.900000006,332200.400000006 168880.5,332189.900000006 168878.900000006,332148.799999997 168879.700000003,332119.5 168873.400000006,332090.299999997 168870.5,332052 168865.299999997,332024.299999997 168867,331937.799999997 168877.200000003,331860 168878.900000006,331823 168876.799999997,331781.099999994 168881.599999994,331749.200000003 168882.599999994,331735.299999997 168885,331714.799999997 168886.099999994,331678.5 168888.099999994,331660.5 168889.200000003,331643.5 168894.5,331605 168896.799999997,331571.299999997 168893.299999997,331524.900000006 168896.099999994,331482.599999994 168899.900000006,331448.799999997 168903.200000003,331436.799999997 168901.900000006,331421.400000006 168904.900000006,331342 168905.799999997,331316.5 168907.900000006,331228.400000006 168903.799999997,331167.799999997 168898.5,331121.299999997 168892,331040.400000006 168882.799999997,330999 168878.900000006,330830 168875,330771.299999997 168882,330727.700000003 168888.5,330713.5 168893.700000003,330672 168919.599999994,330648.5 168937.099999994,330571.299999997 168975.200000003,330519.299999997 169015.700000003,330490.5 169028.099999994,330431.099999994 169046.900000006,330411.900000006 169048.5,330350.099999994 169041,330330.799999997 169030,330271.5 168999.5,330224.5 168961.5,330191.799999997 168932.799999997,330154.099999994 168889.599999994,330127.200000003 168850.799999997,330103 168826.299999997,330086.099999994 168803.299999997,330077.900000006 168787.200000003,330055.200000003 168747.299999997,330021.5 168708,330004.099999994 168680.799999997,329962.799999997 168637.799999997,329943.5 168618.200000003,329921.5 168598.299999997,329886.900000006 168564.099999994,329859.799999997 168542.299999997,329785.299999997 168465.400000006,329735.599999994 168420.700000003,329708.299999997 168401.5,329697.200000003 168383.400000006,329642.700000003 168339.400000006,329617.900000006 168317.099999994,329603.599999994 168304.299999997,329565.799999997 168276.200000003,329533.5 168248.5,329482.299999997 168209.900000006,329404.599999994 168146.700000003,329385.400000006 168122.299999997,329345 168085.599999994,329306.099999994 168048,329292.5 168040.700000003,329291.900000006 168050.599999994,329274.700000003 168071.900000006,329250.599999994 168110.5,329223.400000006 168160.700000003,329211 168182.900000006,329190.299999997 168213.299999997,329170.299999997 168251.799999997,329143.900000006 168286.400000006,329131.900000006 168311,329115.299999997 168341.400000006,329110.299999997 168358,329075.700000003 168412.200000003,329062.400000006 168439.799999997,329034.200000003 168479.400000006,329008.299999997 168513.700000003,328980 168563.5,328946.799999997 168618.400000006,328915.799999997 168657.299999997,328877.799999997 168698.799999997,328831.599999994 168768.299999997,328817.299999997 168792.799999997,328782 168837.5,328741.799999997 168872.200000003,328701.400000006 168923,328674.5 168953.299999997,328641.799999997 168974,328567.400000006 169016.099999994,328534.099999994 169031.900000006,328500 169053.5,328459.799999997 169064.900000006,328408.599999994 169077.799999997,328380.400000006 169088,328340.700000003 169099.599999994,328300.099999994 169106,328246.400000006 169110.599999994,328216.099999994 169112,328133.700000003 169112.299999997,328079 169108.400000006,328011 169096.700000003,327921.400000006 169072.400000006,327862 169053.900000006,327776.900000006 169009.400000006,327720.099999994 168988.200000003,327681 168974,327582.099999994 168920.700000003,327558.400000006 168911.5,327552.700000003 168904.200000003,327531.400000006 168905.400000006,327448.099999994 168876.299999997,327353.799999997 168857.799999997,327281.400000006 168839.200000003,327188.099999994 168826.200000003,327117.599999994 168818.799999997,327006.799999997 168819.200000003,326934.099999994 168838.099999994,326850.299999997 168853.700000003,326800.900000006 168865.799999997,326778 168869.299999997,326730.099999994 168889.299999997,326680.200000003 168914.200000003,326658.599999994 168919.5,326614.599999994 168948.200000003,326607.900000006 168960,326557.099999994 168982.200000003,326536.900000006 168988.299999997,326477 169031.400000006,326402.400000006 169103.099999994,326371 169142.299999997,326339.799999997 169182.400000006,326314.200000003 169225.700000003,326295.099999994 169269.400000006,326278.700000003 169296.799999997,326249.099999994 169353.200000003,326219.400000006 169439.900000006,326181.599999994 169524.799999997,326177.5 169546.299999997,326142.599999994 169657.799999997,326123.099999994 169725.5,326098.400000006 169848.400000006,326087.299999997 169902.700000003,326057.099999994 169968.5,326044.700000003 170012.400000006,326007.799999997 170166,325999.299999997 170205.799999997,326011.5 170276,326027.5 170322.200000003,326061.700000003 170373.299999997,326086 170418.799999997,326110.5 170441.599999994,326149.099999994 170467,326183.900000006 170495.299999997,326211.799999997 170513.799999997,326257.599999994 170540.799999997,326285.799999997 170553.599999994,326364.400000006 170580.799999997,326464.700000003 170610.5,326532.799999997 170637.099999994,326588.900000006 170669.099999994,326626.700000003 170682.799999997,326673.099999994 170717.5,326721.299999997 170755.099999994,326776.400000006 170799.599999994,326852.400000006 170882.700000003,326871.5 170907.799999997,326903.200000003 170952.799999997,326939.599999994 171020.5,326947.400000006 171045.700000003,326969.299999997 171105.200000003,326992.700000003 171156.200000003,327003.5 171169.200000003,327021.200000003 171200.900000006,327050.799999997 171234.900000006,327075.400000006 171275.099999994,327115 171326.400000006,327231.5 171443.5,327268.099999994 171470.5,327322.299999997 171517.599999994,327402.599999994 171573.900000006,327448.5 171606.200000003,327468.099999994 171624.099999994,327524.700000003 171659.900000006,327556 171688.599999994,327592.299999997 171721.5,327611.599999994 171744.700000003,327639.599999994 171775.599999994,327663.400000006 171816.900000006,327681.799999997 171860,327692.5 171925.200000003,327695.799999997 172008.200000003,327690.299999997 172069.200000003,327688 172115.700000003,327680.5 172147.900000006,327678.5 172175.900000006,327661.200000003 172236.5,327639.400000006 172286.5,327611.400000006 172381.900000006,327596.200000003 172449.5,327580.5 172495.099999994,327547.5 172594,327514.700000003 172677.299999997,327495.799999997 172740.700000003,327486.700000003 172804.700000003,327474 172870.299999997,327473.900000006 172932.799999997,327479.799999997 172971.700000003,327476.299999997 172986,327483 173019.5,327490 173035.799999997,327486.5 173054.900000006,327494.099999994 173072.900000006,327512.5 173105.900000006,327541 173137.799999997,327573.299999997 173165.299999997,327594.799999997 173184,327608.200000003 173194.099999994,327649.700000003 173228.799999997,327665.299999997 173255.900000006,327682.200000003 173268.599999994,327708.099999994 173294.700000003,327734.200000003 173327.299999997,327744.099999994 173347,327760.599999994 173369,327765.900000006 173378.900000006,327767.900000006 173388.599999994,327770.5 173407.299999997,327769.799999997 173436.900000006,327745.200000003 173473.700000003,327723.900000006 173499.799999997,327685.900000006 173528,327651.200000003 173545.400000006,327589.599999994 173575.099999994,327553 173596.799999997,327505.599999994 173618.099999994,327444.900000006 173638.700000003,327422.900000006 173644.5,327349 173657.799999997,327298.200000003 173663.400000006,327234 173666.599999994,327197.700000003 173662.700000003,327166 173654.400000006,327140.900000006 173650.099999994,327098.5 173633.799999997,327026.400000006 173603,327001 173591.099999994,326985.900000006 173581.400000006,326930.200000003 173563.599999994,326897.5 173549.799999997,326865.900000006 173534.599999994,326831.299999997 173528.700000003,326817.200000003 173530.299999997,326779.799999997 173534.400000006,326732.299999997 173555.799999997,326706.900000006 173582.599999994,326691.799999997 173635.599999994,326687.200000003 173657.099999994,326687.599999994 173669.700000003,326676.900000006 173692.700000003,326675.599999994 173717.400000006,326667 173734.900000006,326669.400000006 173758.700000003,326666.200000003 173789.400000006,326667.799999997 173807.299999997,326665.5 173851.700000003,326671.799999997 173875.099999994,326674 173893.200000003,326683.799999997 173923.700000003,326680.900000006 173958,326686 173979.099999994,326674.900000006 174019,326666.400000006 174048.799999997,326657.5 174069.299999997,326654.599999994 174103.099999994,326637.400000006 174160.400000006,326612.299999997 174206.799999997,326595.700000003 174236.599999994,326542.799999997 174296.400000006,326513.5 174354.900000006,326492.799999997 174399.400000006,326475.799999997 174499.700000003,326484.299999997 174524.299999997,326486.299999997 174542.200000003,326483.900000006 174578.099999994,326490.900000006 174608.700000003,326499 174619.299999997,326543.299999997 174649.299999997,326557.799999997 174660,326603.700000003 174667.799999997,326623.299999997 174671.700000003,326671.5 174674.700000003,326720 174679.5,326729.400000006 174687.400000006,326750.900000006 174688.799999997,326781.700000003 174684.799999997,326862.400000006 174670.599999994,326886.799999997 174669.5,326908.799999997 174662.099999994,326991.799999997 174653.400000006,327012.799999997 174650.799999997,327046 174651.299999997,327069.299999997 174668.700000003,327083.200000003 174677.700000003,327099.799999997 174696.099999994,327113.799999997 174729.900000006,327124.700000003 174743.599999994,327135.599999994 174790.099999994,327117.299999997 174844.299999997,327085.799999997 174885.700000003,327068.700000003 174916.400000006,327069.700000003 174933.5,327073.299999997 174957.900000006,327079.400000006 174992.099999994,327102.299999997 175038.799999997,327123.400000006 175053.700000003,327136.5 175067,327173.900000006 175104.299999997,327200.200000003 175120.900000006,327229.200000003 175143.900000006,327254.200000003 175160.799999997,327263.099999994 175164.5,327292.299999997 175184.799999997,327353.599999994 175222.5,327368.200000003 175231.299999997,327388.799999997 175242,327458.799999997 175275.299999997,327481 175289.099999994,327505.200000003 175299.700000003,327553.299999997 175328.200000003,327585.700000003 175353.099999994,327605.700000003 175389.099999994,327616.700000003 175422,327647.700000003 175480.900000006,327656.700000003 175505.5,327680.5 175586.200000003,327687.099999994 175611.299999997,327699 175662.200000003,327723.599999994 175729.799999997,327745.099999994 175797,327760.700000003 175833.099999994,327771 175870.599999994,327791.599999994 175941.200000003,327818.299999997 175999.400000006,327827.099999994 176028.700000003,327838 176061,327879.099999994 176123.400000006,327912.799999997 176170,327945.099999994 176215.700000003,327959.900000006 176245.799999997,327983.799999997 176272.200000003,327977.599999994 176288.799999997,327959.099999994 176298.799999997,327927 176326.700000003,327878.400000006 176359.099999994,327787.700000003 176404.900000006,327776.900000006 176415.799999997,327741 176435.599999994,327681 176468.5,327603.299999997 176521.299999997,327576.5 176534.900000006,327535.5 176563.5,327485.599999994 176597.900000006,327427.400000006 176632,327364.799999997 176671.599999994,327325.400000006 176686.700000003,327257.799999997 176724.200000003,327223.700000003 176747.900000006,327196.200000003 176765,327155.799999997 176795.099999994,327106.599999994 176825.700000003,327001.599999994 176881.799999997,326982.099999994 176895.799999997,326945.200000003 176914.299999997,326853.799999997 176970.799999997,326834.799999997 176977.700000003,326772.700000003 177018.299999997,326734.099999994 177043.299999997,326703.700000003 177059.700000003,326622.299999997 177114.400000006,326505.400000006 177189.900000006,326408.299999997 177241.900000006,326363.700000003 177268.700000003,326329.299999997 177283,326233 177341.799999997,326200.299999997 177359.299999997,326108.799999997 177421,326027.799999997 177475.099999994,325995.299999997 177498.400000006,325858.400000006 177579.599999994,325829.299999997 177591.700000003,325740.700000003 177645,325708.799999997 177660.299999997,325616.900000006 177713.5,325489.900000006 177789.799999997,325405.099999994 177835.700000003,325367 177863.299999997,325347.200000003 177874.599999994,325303.599999994 177902.900000006,325207.799999997 177964.799999997,325159.400000006 177994.900000006,325134.200000003 178008.700000003,325106 178021.200000003,325091 178029.400000006,325040 178061.799999997,325031.200000003 178068.799999997,325021.200000003 178075.799999997,325002.5 178089,324985.099999994 178098.799999997,324959.599999994 178117,324947.400000006 178118.900000006,324904.5 178148.5,324866.5 178173.799999997,324849.700000003 178186.900000006,324749.099999994 178246.400000006,324643.299999997 178306.900000006,324595.299999997 178337.799999997,324558.400000006 178369.099999994,324518.799999997 178392.5,324491.700000003 178404.400000006,324437 178438,324403 178468.799999997,324370.200000003 178487,324325.700000003 178511.900000006,324274.599999994 178545.599999994,324225.099999994 178572.900000006,324120.200000003 178635.299999997,324058.200000003 178675.400000006,324017.5 178703,323988.599999994 178717.200000003,323901.900000006 178778.700000003,323864.099999994 178800.5,323768.200000003 178856,323744.700000003 178865.099999994,323722.299999997 178881.400000006,323689.900000006 178905.099999994,323639.5 178938.799999997,323590.799999997 178962.799999997,323551.299999997 178983.900000006,323495.5 179000.400000006,323473.700000003 179018.700000003,323449.700000003 179039,323421.700000003 179060.200000003,323396.5 179066.799999997,323370.5 179057.799999997,323357 179038.200000003,323345.099999994 179021.5,323327.700000003 179010,323307.799999997 179011.799999997,323287.799999997 179024.799999997,323241.700000003 179045,323198.299999997 179058.900000006,323160.700000003 179063.200000003,323139.5 179052.099999994,323119.099999994 179037.099999994,323100.5 179001.799999997,323084.299999997 178972.5,323075.900000006 178949.900000006,323057.799999997 178924.400000006,323028.400000006 178895.099999994,323006.299999997 178884,322976.200000003 178859,322941.599999994 178852,322892 178852.599999994,322835.400000006 178865.400000006,322813.299999997 178863.700000003,322797.599999994 178861.700000003,322774.700000003 178849.900000006,322758 178846.599999994,322723.5 178827,322709.5 178817.200000003,322624 178754.700000003,322596.700000003 178733.799999997,322576.299999997 178721,322565.799999997 178714,322542.200000003 178703.799999997,322497.200000003 178697.299999997,322476.799999997 178699.299999997,322405.5 178714.400000006,322376.700000003 178728.299999997,322332.900000006 178744.200000003,322269.299999997 178770.599999994,322226.299999997 178808.200000003,322186.599999994 178832.799999997,322137.299999997 178844.700000003,322103.5 178846.799999997,322064.599999994 178852.599999994,322049.700000003 178850.599999994,322029.400000006 178846.099999994,322009.599999994 178832.799999997,321958.799999997 178784.900000006,321895.299999997 178717.5,321860.299999997 178682.099999994,321811.5 178634.5,321783.799999997 178608,321754.5 178580.5,321729.799999997 178565.400000006,321689.900000006 178555.799999997,321675.700000003 178550.700000003,321659 178547.5,321621.799999997 178534.099999994,321579.099999994 178521.799999997,321516.599999994 178491.799999997,321475.5 178473.799999997,321436.400000006 178456,321387.599999994 178447.700000003,321360.700000003 178443.400000006,321320.700000003 178436,321290 178431,321230.400000006 178422.700000003,321116.799999997 178402,321093.599999994 178401.099999994,321071 178400.900000006,321048.799999997 178400.099999994,320998.900000006 178401.799999997,320968.200000003 178411.799999997,320903.799999997 178434.400000006,320879.299999997 178448.799999997,320824 178479.299999997,320791.799999997 178495.799999997,320751.599999994 178510.099999994,320717.700000003 178523.700000003,320676.299999997 178521.5,320604.099999994 178531.799999997,320559.599999994 178532.099999994,320508.400000006 178519.400000006,320465.400000006 178509.599999994,320435.200000003 178503.799999997,320368.400000006 178498.799999997,320306.299999997 178488,320235.099999994 178480.700000003,320218.299999997 178474.5,320201.799999997 178468.200000003,320175.400000006 178468.099999994,320157.299999997 178469.700000003,320117.5 178469.5,320103.799999997 178466,320056.299999997 178458.200000003,319968.099999994 178428.599999994,319937.599999994 178413,319901 178387.299999997,319764.799999997 178297.400000006,319694.200000003 178253.299999997,319660.200000003 178235.099999994,319639.5 178228.5,319597.099999994 178211.700000003,319577.099999994 178205.900000006,319542.099999994 178203.700000003,319521.599999994 178206.299999997,319495.900000006 178204.400000006,319467.099999994 178206.700000003,319419.799999997 178215.599999994,319396.700000003 178221.200000003,319316.5 178239.599999994,319227.700000003 178258.799999997,319149.200000003 178282.400000006,319130.099999994 178287.700000003,319028.799999997 178321.599999994,318921.700000003 178348.5,318884 178358.599999994,318780.799999997 178405.799999997,318756.400000006 178411.5,318728.799999997 178424.799999997,318669.599999994 178481.700000003,318632.400000006 178503.200000003,318567.599999994 178553.599999994,318500 178618.200000003,318456 178671.799999997,318435.400000006 178701.5,318413.200000003 178734.5,318361.200000003 178805,318335.599999994 178839.5,318308 178862.900000006,318278.900000006 178879.5,318250.599999994 178891.5,318195.900000006 178930.799999997,318170.599999994 178942.799999997,318056.900000006 178971.5,318007.900000006 178975.799999997,317957.299999997 178971.599999994,317912.700000003 178961.5,317866.5 178955.799999997,317823.599999994 178924.799999997,317736.5 178898.900000006,317684.799999997 178873.5,317656.5 178853.700000003,317617.799999997 178823.400000006,317562.900000006 178785.799999997,317523 178756.299999997,317464.299999997 178727.5,317400.299999997 178681.799999997,317360.099999994 178671.400000006,317294.099999994 178656.299999997,317215.599999994 178617.099999994,317086.200000003 178569.200000003,317021.299999997 178554.700000003,316952.799999997 178536.599999994,316870 178517.900000006,316828.299999997 178512.5,316774.400000006 178507.400000006,316697.299999997 178498.799999997,316569 178481.599999994,316419.799999997 178472.200000003,316295.099999994 178479.799999997,316204.700000003 178485.799999997,316164.299999997 178485.099999994,316101.799999997 178490.400000006,316057.900000006 178491.299999997,315974.400000006 178513.099999994,315921 178524,315852.299999997 178551.099999994,315807.200000003 178566.700000003,315774 178580.200000003,315710.700000003 178599.900000006,315610.799999997 178628.900000006,315575.5 178634.599999994,315480.700000003 178659.099999994,315437.900000006 178661.700000003,315405.799999997 178666.900000006,315351.700000003 178668.299999997,315288.599999994 178657.599999994,315223.299999997 178639.299999997,315192 178624.700000003,315157.099999994 178601.400000006,315095.299999997 178575.400000006,315039.700000003 178533.599999994,315015.599999994 178472.900000006,315003.299999997 178431.200000003,314995.299999997 178409.599999994,314978.200000003 178355.200000003,314959.299999997 178286.700000003,314917.799999997 178184.799999997,314913 178173.900000006,314894.700000003 178157.200000003,314885.099999994 178153.5,314859.400000006 178136.299999997,314832.099999994 178108,314803.400000006 178090.900000006,314768.099999994 178085.5,314770.400000006 178101.200000003,314774.599999994 178114.700000003,314774.400000006 178130.799999997,314774.799999997 178148.299999997,314775.299999997 178173,314763.900000006 178188.099999994,314765.400000006 178206.799999997,314760.599999994 178218.599999994,314763.200000003 178228.299999997,314752.799999997 178242.200000003,314742.599999994 178252.599999994,314693.400000006 178363.099999994,314677.799999997 178402.099999994,314649.599999994 178451.599999994,314603.799999997 178502.400000006,314594.599999994 178521,314581.5 178542.299999997,314570.099999994 178577.900000006,314563.099999994 178610.299999997,314539 178648.900000006,314519.5 178681.599999994,314505.400000006 178726,314498.5 178730.299999997,314491.299999997 178813.599999994,314490.099999994 178854.200000003,314486.5 178903,314478.299999997 178922.700000003,314446.299999997 178960.5,314426.400000006 178976.900000006,314394.099999994 178986.700000003,314376.200000003 178969.799999997,314352.700000003 178961.299999997,314320.400000006 178991.599999994,314312.099999994 179030.799999997,314308.5 179112.700000003,314319.200000003 179153.799999997,314337.700000003 179181.599999994,314351 179194.5,314364 179234.099999994,314362.700000003 179261.099999994,314350.5 179277.700000003,314297.299999997 179321.200000003,314279.900000006 179334.5,314252.799999997 179407.5,314254.299999997 179473.799999997,314260.799999997 179519.799999997,314271.5 179569.599999994,314278.200000003 179592.799999997,314288.799999997 179619.5,314298.799999997 179649.599999994,314318.599999994 179698.599999994,314326.5 179722.900000006,314376.5 179842.599999994,314393.200000003 179910.299999997,314391.900000006 179935.700000003,314426.799999997 180008,314436.900000006 180038.599999994,314442.299999997 180097.599999994,314458.099999994 180171.700000003,314478.900000006 180268.700000003,314502.799999997 180322.099999994,314519 180372.799999997,314527.799999997 180404.299999997,314548.799999997 180449.400000006,314563.799999997 180478.400000006,314580.599999994 180515.299999997,314597.700000003 180550.5,314606.799999997 180583.299999997,314636.400000006 180642.900000006,314694.900000006 180785.299999997,314707.400000006 180815.200000003,314725.900000006 180840.200000003,314759.299999997 180906.700000003,314771.700000003 180925.5,314793.400000006 180988.299999997,314819.099999994 181036.5,314828.5 181055.799999997,314845.400000006 181077.299999997,314868.400000006 181121.799999997,314904.200000003 181168.5,314928.700000003 181218.400000006,314961.400000006 181288.299999997,314983.599999994 181335.099999994,315024.200000003 181381.599999994,315050.5 181406.900000006,315066.700000003 181431.799999997,315096.599999994 181460,315122.299999997 181477.599999994,315149.599999994 181518.599999994,315192.400000006 181554.900000006,315227.099999994 181571.099999994,315264.299999997 181604.599999994,315332.599999994 181660.200000003,315365.299999997 181683.700000003,315394.400000006 181710.599999994,315505 181774.900000006,315550.700000003 181796.599999994,315579.400000006 181812.799999997,315617.099999994 181830.200000003,315649.5 181850.900000006,315661.299999997 181869.599999994,315675.200000003 181884.200000003,315685.200000003 181908.799999997,315714.200000003 181992.599999994,315720.299999997 182027,315723.200000003 182129.099999994,315732.099999994 182231.799999997,315741.400000006 182363.099999994,315747.5 182457.400000006,315763.5 182524.200000003,315784.700000003 182671.5,315788.700000003 182711,315793.299999997 182754,315785.900000006 182806,315767.400000006 182831.599999994,315713.299999997 182843,315703.799999997 182854.200000003,315692.799999997 182878.799999997,315678.799999997 182898.900000006,315665.599999994 182930.299999997,315651.5 182947.5,315641.900000006 182964.099999994,315623.700000003 182992.599999994,315576.099999994 183067.700000003,315556.099999994 183108.900000006,315542.799999997 183137.799999997,315537.900000006 183151.900000006,315502.5 183197.799999997,315500.099999994 183224.5,315505.599999994 183247.700000003,315520.5 183284.400000006,315535 183299.099999994,315544.400000006 183327.700000003,315552.400000006 183358.200000003,315553.799999997 183367.200000003,315550.700000003 183394.200000003,315562.900000006 183418.099999994,315591.200000003 183439.200000003,315611.299999997 183468.599999994,315620 183487.200000003,315631.400000006 183502,315642.200000003 183528.200000003,315665.700000003 183573.799999997,315673.200000003 183604.299999997,315671.700000003 183648.799999997,315670.900000006 183691.900000006,315640.299999997 183741.099999994,315640.700000003 183756.5,315644.299999997 183769.400000006,315641.299999997 183828.900000006,315648.5 183866.099999994,315651.900000006 183892.799999997,315668.900000006 183930.5,315678.299999997 183960.299999997,315695.299999997 183993.299999997,315703.599999994 184021.5,315722.5 184061.599999994,315750 184102,315787.799999997 184164.799999997,315821.400000006 184232.200000003,315856.700000003 184295.200000003,315872.700000003 184333.200000003,315893.700000003 184363,315932.099999994 184388.900000006,315958.900000006 184415.400000006,315964.5 184425.299999997,315974.299999997 184435.599999994,316014.400000006 184496.900000006,316055.299999997 184558.299999997,316091.299999997 184620.900000006,316109.799999997 184651.299999997,316147.200000003 184696.900000006,316169.299999997 184734.900000006,316183.700000003 184762.099999994,316206.5 184798.200000003,316218.599999994 184823,316237.599999994 184839.200000003,316252.400000006 184870.200000003,316291.400000006 184932.200000003,316308.400000006 184967.299999997,316333.200000003 185000,316344.200000003 185035.599999994,316362.200000003 185069,316373.799999997 185114,316391.5 185159.900000006,316423.799999997 185235.200000003,316447.900000006 185284,316459.299999997 185298.5,316467.5 185316.099999994,316469.299999997 185327.599999994,316500.900000006 185379.599999994,316523.799999997 185431.900000006,316531.200000003 185453.299999997,316556.900000006 185489.799999997,316575.599999994 185514.200000003,316596.799999997 185545.400000006,316617.200000003 185584.900000006,316620.299999997 185595.200000003,316636.599999994 185620.5,316647.599999994 185653.599999994,316662.299999997 185685.5,316666.400000006 185720.400000006,316684.299999997 185798.900000006,316703.299999997 185851,316715.200000003 185894.299999997,316714.099999994 185906.799999997,316724.099999994 185918.799999997,316751.700000003 185922.400000006,316762.799999997 185927.099999994,316757.799999997 185952.700000003,316738.099999994 185976.900000006,316724.799999997 185992.700000003,316725.700000003 186009.299999997,316734.599999994 186024.900000006,316748.099999994 186056.200000003,316752.200000003 186074.299999997,316744.200000003 186101.599999994,316756.599999994 186130.599999994,316768.099999994 186153.400000006,316782.5 186164.099999994,316797.400000006 186204.599999994,316804.099999994 186214.400000006,316821.299999997 186233.299999997,316855.599999994 186293.5,316873.5 186307.900000006,316911.400000006 186368.099999994,316940.599999994 186424.099999994,316946.599999994 186434.799999997,316961.700000003 186510.599999994,316965 186520.700000003,316979.299999997 186539,316990.599999994 186584.700000003,316994.200000003 186597.700000003,317018.400000006 186638.900000006,317038.700000003 186669.299999997,317070.599999994 186694.299999997,317085.900000006 186722.900000006,317090.400000006 186730.799999997,317089.900000006 186742.299999997,317097.799999997 186764.900000006,317121.5 186810.200000003,317140.299999997 186835.200000003,317160.299999997 186880,317168.5 186905.5,317211.900000006 186991.099999994,317257.900000006 187073.5,317297.700000003 187156,317308.700000003 187177.599999994,317342.200000003 187247.400000006,317351.200000003 187269.299999997,317388.299999997 187349.400000006,317406.700000003 187390.599999994,317474.099999994 187525.799999997,317552.799999997 187692.400000006,317577.200000003 187735.599999994,317621.700000003 187821.5,317694.400000006 187969.400000006,317716.5 188024,317743.900000006 188078.799999997,317781.599999994 188157.799999997,317816 188218.299999997,317863 188324.200000003,317921.099999994 188427.200000003,317971.099999994 188527.799999997,318036.400000006 188645.5,318060.299999997 188697.799999997,318114.5 188796,318127 188812.799999997,318128.599999994 188825.900000006,318159.299999997 188891.799999997,318180.099999994 188930.900000006,318194.200000003 189015.799999997,318211 189076.599999994,318223.299999997 189131.599999994,318239.599999994 189158.200000003,318251.299999997 189190.799999997,318268.200000003 189250.900000006,318290.099999994 189295.900000006,318314.099999994 189331.5,318326 189359.299999997,318331.599999994 189392.400000006,318331.200000003 189414.5,318321.700000003 189446.099999994,318324.400000006 189466.700000003,318348 189514.299999997,318350.900000006 189527.900000006,318347 189560.5,318353.5 189573.799999997,318368.700000003 189581.299999997,318387.299999997 189573.700000003,318412.599999994 189557.400000006,318434.900000006 189556.299999997,318453.099999994 189569.299999997,318486.700000003 189593.700000003,318527.200000003 189625.700000003,318593.799999997 189695.799999997,318624.799999997 189735,318671.599999994 189751.299999997,318712.5 189761,318740.799999997 189776.299999997,318828.400000006 189866.599999994,318846.299999997 189891.900000006,318891.400000006 189930.900000006,318971.599999994 190014.200000003,319012.299999997 190057,319067.5 190111,319094 190146,319121.900000006 190176.099999994,319181.900000006 190242.700000003,319255.200000003 190328.799999997,319268.900000006 190345.099999994,319277.200000003 190348.5,319283.5 190355.400000006,319308.299999997 190373.900000006,319339.599999994 190389.5,319402.200000003 190440.599999994,319459.799999997 190492,319490.5 190530.299999997,319526.700000003 190551.099999994,319546.900000006 190565.5,319601.099999994 190627.799999997,319628.799999997 190653.900000006,319651.200000003 190677.200000003,319665.200000003 190695.700000003,319689.599999994 190724.5,319694.700000003 190733.099999994,319727.299999997 190769,319734 190781,319734.799999997 190805.599999994,319746.900000006 190823.400000006,319765.900000006 190839.5,319777.5 190853.900000006,319788.700000003 190865.099999994,319798.200000003 190883.799999997,319827 190936.400000006,319856 190970.900000006,319880.200000003 191020.099999994,319891.5 191043.700000003,319894.799999997 191077.5,319898.299999997 191100.400000006,319897.599999994 191117.900000006,319905.599999994 191151,319916.200000003 191229.099999994,319916.200000003 191269.299999997,319912.700000003 191276.799999997,319908 191289.599999994,319909.400000006 191307.5,319907.700000003 191320.700000003,319910.900000006 191351.700000003,319914.700000003 191372.799999997,319913.200000003 191394.599999994,319907.900000006 191410.799999997,319913.299999997 191490,319912.599999994 191539.5,319908.200000003 191606.599999994,319907.599999994 191656.099999994,319909 191675.700000003,319904.799999997 191698.099999994,319906 191724.599999994,319907.5 191780.5,319905.599999994 191807,319908.799999997 191826.400000006,319898.700000003 191901.900000006,319899.400000006 191945,319898.700000003 191975.299999997,319903.400000006 192040.599999994,319902.200000003 192087.900000006,319903.5 192124.099999994,319902.200000003 192172.700000003,319905.799999997 192210.400000006,319899 192276.799999997,319904.200000003 192321.900000006,319901.200000003 192370.799999997,319903.400000006 192412,319897.599999994 192444.299999997,319900 192480.299999997,319899.700000003 192501.599999994,319896 192536.799999997,319889.5 192562.400000006,319889.900000006 192590.599999994,319889.599999994 192631.700000003,319892.5 192696.700000003,319893.799999997 192735.5,319895.599999994 192757.400000006,319895.299999997 192774.5,319892.099999994 192782.299999997,319889.5 192819.400000006,319894.5 192881.599999994,319894.700000003 192939,319893.299999997 193003.799999997,319892 193070,319903.200000003 193084,319922.5 193096.200000003,319931.299999997 193115.200000003,319927.200000003 193125.299999997,319913.200000003 193139.799999997,319914.900000006 193153.700000003,319888.799999997 193172.799999997,319889.400000006 193193.200000003,319900.099999994 193208.799999997,319913.700000003 193226.299999997,319913.400000006 193244.5,319902.200000003 193280.599999994,319901.900000006 193307.799999997,319917.400000006 193351.700000003,319931.299999997 193374.700000003,319943.5 193381.5,319980.400000006 193390.400000006,320002.200000003 193401.599999994,320026 193394.400000006,320038.099999994 193393.700000003,320075.299999997 193419.900000006,320092.099999994 193436,320088.799999997 193466.700000003,320107 193486.700000003,320128.400000006 193504.799999997,320146.5 193530.299999997,320146.599999994 193550.599999994,320156.200000003 193565.5,320188.799999997 193587.700000003,320206.900000006 193612.900000006,320218.400000006 193647.099999994,320233.299999997 193687.799999997,320237.099999994 193698.900000006,320243.599999994 193709.5,320242.900000006 193737.299999997,320260.099999994 193767.400000006,320281.900000006 193792.099999994,320291 193791.400000006,320302.900000006 193805.200000003,320306.700000003 193823.299999997,320355.099999994 193942.599999994,320382.599999994 194024.700000003,320389.5 194040.5,320392.700000003 194066.799999997,320406.5 194102.700000003,320419.900000006 194160.599999994,320421 194173.799999997,320432.200000003 194205,320438 194236.099999994,320453.700000003 194272.200000003,320506 194383.200000003,320528.5 194416.299999997,320556.299999997 194461,320569.5 194486.700000003,320625.299999997 194552.299999997,320662.5 194590.099999994,320682.200000003 194624.200000003,320686.099999994 194640,320694.299999997 194655,320701.099999994 194691.5,320706.5 194705.700000003,320717.900000006 194754.099999994,320723.799999997 194780.900000006,320741.5 194927.599999994,320757.299999997 194984.5,320766.400000006 195032.700000003,320770.400000006 195060.799999997,320785.599999994 195110.299999997,320798.799999997 195186.700000003,320806.799999997 195217.200000003,320802.700000003 195240.400000006,320809.5 195271.5,320813.200000003 195307.900000006,320824.200000003 195368,320830.900000006 195401.5,320841.700000003 195427.200000003,320867.400000006 195442.299999997,320895.200000003 195444.299999997,320937.900000006 195442.700000003,320962.5 195457,320981.799999997 195481.599999994,320995.900000006 195488.900000006,321024.5 195484.200000003,321061.400000006 195464.400000006,321080.900000006 195462.799999997,321097.5 195468.5,321106.700000003 195476.700000003,321138.900000006 195495.200000003,321161.299999997 195504.299999997,321179.099999994 195510.900000006,321193.400000006 195514.799999997,321206.099999994 195522.799999997,321231.400000006 195533.799999997,321265.900000006 195556.700000003,321273.900000006 195565.700000003,321281.900000006 195561.299999997,321293.099999994 195566.599999994,321306.400000006 195581.099999994,321322 195588.299999997,321363.599999994 195617.099999994,321376.700000003 195632.099999994,321393.299999997 195637.599999994,321428.299999997 195659.799999997,321444.200000003 195667.200000003,321471.700000003 195684.799999997,321485.900000006 195689.799999997,321500.400000006 195700.5,321548.400000006 195725.799999997,321583.900000006 195761.099999994,321622.700000003 195795.900000006,321652.599999994 195814.099999994,321698.599999994 195832.400000006,321718.200000003 195849,321747 195879.599999994,321762.700000003 195901.299999997,321816.799999997 196000.599999994,321832.5 196027.299999997,321842.700000003 196052.599999994,321896.700000003 196145.599999994,321947.400000006 196223.400000006,321956.099999994 196244.700000003,322010.900000006 196333.400000006,322035.900000006 196374.299999997,322045.599999994 196384.5,322105.700000003 196477,322127.700000003 196518.700000003,322170.400000006 196577.099999994,322196.5 196613.900000006,322229.299999997 196671.799999997,322259.900000006 196719.799999997,322351.099999994 196877.299999997,322365.099999994 196908.599999994,322404.400000006 196969.5,322422.599999994 197016.900000006,322509.5 197143.799999997,322586.400000006 197262.900000006,322602 197300,322627.5 197344.200000003,322640.799999997 197359.299999997,322664.799999997 197396.299999997,322706.799999997 197472.400000006,322726.400000006 197504.799999997,322745.5 197531.700000003,322771.5 197580.900000006,322789.200000003 197609.599999994,322807.5 197633.5,322866 197728.900000006,322892.900000006 197783.400000006,322909.599999994 197806.799999997,322970.799999997 197909.900000006,323046.400000006 198039.400000006,323070.700000003 198083.599999994,323137.200000003 198190.599999994,323148.200000003 198213.400000006,323155.200000003 198229.400000006,323160.299999997 198261.099999994,323185.5 198290.400000006,323204.799999997 198336.5,323208.299999997 198366.200000003,323203.400000006 198380.400000006,323176.099999994 198408.599999994,323165.400000006 198440.700000003,323136.299999997 198482.400000006,323128.799999997 198502.099999994,323131 198520.200000003,323144.799999997 198531.799999997,323160.400000006 198544.400000006,323189.700000003 198588,323201.099999994 198614.400000006,323200.900000006 198625.099999994,323206.700000003 198635.799999997,323209.099999994 198656.400000006,323223.299999997 198687.599999994,323243.599999994 198750.900000006,323260.799999997 198796.900000006,323265.700000003 198808.5,323289.5 198850,323299.400000006 198895.5,323308.599999994 198929.700000003,323318.099999994 198971.299999997,323341.099999994 199038.5,323350.900000006 199070.799999997,323389.900000006 199137,323407.900000006 199164.5,323425.5 199187.099999994,323436.200000003 199203.900000006,323448.700000003 199241.099999994,323455.5 199272.200000003,323477.099999994 199288.299999997,323532.900000006 199315.599999994,323578.799999997 199374.5,323607.200000003 199425.700000003,323625.900000006 199483.599999994,323660.400000006 199516.200000003,323680.799999997 199568.5,323712.299999997 199611.400000006,323757.5 199662.599999994,323802.200000003 199706.299999997,323868.900000006 199758.599999994,323903.299999997 199793.5,323912.900000006 199799.700000003,323896.799999997 199808.299999997,323911.200000003 199818.5,323952.599999994 199858.599999994,323979 199874.299999997,324057.599999994 199944.299999997,324108.599999994 199981.799999997,324141 200034.5,324157.099999994 200064.200000003,324177.099999994 200084.5,324199.5 200092.299999997,324265.5 200100.099999994,324302.099999994 200115.799999997,324361.200000003 200151.299999997,324378.799999997 200166.900000006,324413.299999997 200191.099999994,324462.799999997 200228.5,324483.799999997 200242.700000003,324527 200282.200000003,324548.599999994 200295.700000003,324580.599999994 200327.400000006,324608.5 200348.700000003,324644.200000003 200382.299999997,324700.200000003 200421.599999994,324724.099999994 200435,324764.599999994 200469.5,324803 200498.299999997,324844.099999994 200543.299999997,324863.5 200566.200000003,324914.200000003 200614.599999994,324927 200632.099999994,324963.5 200665.599999994,324992.400000006 200699.700000003,325014.200000003 200719.900000006,325016.5 200732.900000006,325017.5 200761.599999994,325007.700000003 200900.5,324997.5 200953.5,324984.700000003 200978.099999994,324975.799999997 201014.5,324944.900000006 201092.200000003,324937.400000006 201132.200000003,324922.299999997 201161.200000003,324891.700000003 201184.799999997,324866.900000006 201223.900000006,324846.099999994 201252.400000006,324826.799999997 201266,324796.400000006 201287.900000006,324782.799999997 201292.299999997,322222.099999994 202654.799999997,322209.700000003 202660.299999997,319207 204261.700000003,309929.299999997 206015.700000003,309878.599999994 206031.900000006,309837.299999997 206038,309786.700000003 206036.299999997,309767.799999997 206032.700000003,309746.400000006 206036,309732.200000003 206031.299999997,309719.700000003 206031.400000006,309692.099999994 206030.799999997,309663.900000006 206036.299999997,309619.299999997 206037.099999994,309561.799999997 206045.400000006,309519.5 206046.5,309491.900000006 206047,309468.900000006 206048.900000006,309445.299999997 206060.200000003,309422.5 206062.599999994,309374.400000006 206071.900000006,309321.900000006 206089.099999994,309234.400000006 206131.400000006,309134 206203.799999997,309086.599999994 206236,309058.099999994 206251.400000006,309026.200000003 206254.900000006,308998.299999997 206278.299999997,308979 206367.900000006,308959.700000003 206406.099999994,308926.599999994 206443.200000003,308875.700000003 206485.400000006,308779.799999997 206569.200000003,308668.599999994 206648.299999997,308625.299999997 206686.799999997,308559.299999997 206757.799999997,308514 206809.299999997,308476.900000006 206842.900000006,308406.5 206901.900000006,308349.5 206937.200000003,308324.400000006 206942.5,308312.099999994 206934.299999997,308290.599999994 206898.099999994,308276.299999997 206891.400000006,308259 206901.599999994,308246.5 206889.400000006,308235.900000006 206890.599999994,308208.599999994 206912.5,308166.5 206981,308152.200000003 207034.200000003,308149.900000006 207064.599999994,308149.200000003 207093.5,308154.5 207134.400000006,308157.400000006 207149.299999997,308170.099999994 207218,308177.799999997 207233.700000003,308175.400000006 207260.299999997,308155.900000006 207287.5,308148.400000006 207304.599999994,308154.200000003 207325.5,308151.700000003 207350,308156.5 207389.799999997,308161.099999994 207404.200000003,308152 207419.299999997,308141.900000006 207453,308141.900000006 207480.299999997,308128.900000006 207523.5,308108.799999997 207574.700000003,308100.299999997 207603.299999997,308101.5 207631.200000003,308099.099999994 207652.099999994,308101.299999997 207681.5,308110.5 207716.900000006,308084.599999994 207728.700000003,308090.599999994 207741.099999994,308093.400000006 207759.5,308085 207784.099999994,308076.099999994 207818.599999994,308074.799999997 207833.200000003,308082.799999997 207876.400000006,308087.799999997 207899.299999997,308071.200000003 207905,308073.099999994 207915.5,308063.299999997 207919.200000003,308052 207920.900000006,308053.200000003 207930.299999997,308050.200000003 207943.299999997,308038.400000006 207972.400000006,308050.200000003 208005.200000003,308048 208023.200000003,308059.700000003 208032.5,308069.5 208055.900000006,308068.900000006 208102.700000003,308054.900000006 208153.799999997,308042.299999997 208168,308044.599999994 208178,308028.700000003 208200.599999994,308024.700000003 208255.599999994,308018.599999994 208283.700000003,308004.700000003 208305.900000006,307981.200000003 208323.200000003,307984.5 208337.599999994,307978.200000003 208358.099999994,307974 208372.200000003,307963.799999997 208420.799999997,307965.900000006 208464.599999994,307965.299999997 208472.5,307954.900000006 208493.299999997,307948.099999994 208521.299999997,307944.599999994 208558.799999997,307940.400000006 208578.299999997,307955.599999994 208664.799999997,307950.200000003 208736.299999997,307948.200000003 208765.700000003,307959.299999997 208821,307968.799999997 208862.200000003,307963 208894.200000003,307961.400000006 208904.299999997,307969.299999997 208938.5,307969 208983.900000006,307981 209034.200000003,307976.599999994 209085.700000003,307971.5 209104.099999994,307960.299999997 209137.799999997,307945.599999994 209178.900000006,307943.099999994 209227.799999997,307923.599999994 209246.099999994,307922.400000006 209272.599999994,307929.400000006 209300.900000006,307925.700000003 209330.900000006,307916.200000003 209341.099999994,307906.599999994 209363.200000003,307909.599999994 209388.599999994,307882.400000006 209437.400000006,307870.099999994 209482,307876.5 209511.799999997,307896.799999997 209538,307909.599999994 209546.799999997,307912.700000003 209555.700000003,307904 209564.299999997,307883.400000006 209604.5,307880.799999997 209646,307894 209681.799999997,307889.700000003 209696.299999997,307872.700000003 209713,307862.700000003 209731.599999994,307856.299999997 209766.200000003,307844.299999997 209789.200000003,307845.900000006 209828.700000003,307842.799999997 209846.700000003,307853.5 209897,307887.799999997 209958.299999997,307923.200000003 210024.599999994,307926.700000003 210050,307925.200000003 210097.400000006,307927 210155.200000003,307928.200000003 210170.299999997,307920 210276.599999994,307913.900000006 210324.099999994,307908.700000003 210337.200000003,307887.700000003 210355.400000006,307868.799999997 210363.200000003,307853.799999997 210373.400000006,307836.599999994 210380.700000003,307823.400000006 210395.400000006,307836.5 210423.099999994,307864.5 210463.5,307875.599999994 210482.900000006,307880.599999994 210504.799999997,307888.400000006 210530.099999994,307886.5 210571,307883.099999994 210589.5,307878.299999997 210627.099999994,307861.400000006 210676.200000003,307858.099999994 210693.200000003,307879.200000003 210733.799999997,307893 210780,307893.599999994 210796,307886.700000003 210827.400000006,307899.5 210857.700000003,307930 210886.599999994,307939.099999994 210897.5,307951.200000003 210897.799999997,307962.799999997 210919.599999994,307975.099999994 210961.299999997,307983.900000006 210977.599999994,307998.400000006 211017.299999997,308001.700000003 211048.700000003,308006.900000006 211062.099999994,308018.400000006 211098.900000006,308038.799999997 211138.400000006,308064.900000006 211169,308079.5 211183.200000003,308101.700000003 211219.799999997,308119.299999997 211242.400000006,308132.099999994 211274.099999994,308143.299999997 211293.5,308140.200000003 211321.900000006,308127 211344.099999994,308114.799999997 211385.200000003,308101.700000003 211417.799999997,308085.099999994 211448,308081.599999994 211461.5,308066.799999997 211479.299999997,308060.799999997 211506.799999997,308054.5 211522.299999997,308040.599999994 211559,308037.299999997 211567.5,308028.5 211587.200000003,308021.099999994 211597.799999997,308018.299999997 211610.799999997,308010.799999997 211628.799999997,308005.099999994 211647.299999997,307992.900000006 211676.599999994,307981.799999997 211700.200000003,307957.900000006 211763,307936.200000003 211813.599999994,307926.799999997 211834.200000003,307918.299999997 211858.400000006,307902.099999994 211872.099999994,307901.599999994 211882.599999994,307895.900000006 211898.099999994,307852.400000006 211942.799999997,307829.200000003 211987.400000006,307827.5 212029.900000006,307806.900000006 212072.099999994,307799.900000006 212093.700000003,307790.599999994 212111.400000006,307775.099999994 212145.5,307763.299999997 212164.099999994,307751.599999994 212190.400000006,307726.799999997 212237.599999994,307703.099999994 212288.799999997,307707.900000006 212312.799999997,307702 212325.400000006,307658.299999997 212380.900000006,307644.599999994 212400.099999994,307620.400000006 212413.900000006,307584.299999997 212426.900000006,307574.799999997 212442.099999994,307569.799999997 212451.700000003,307564.5 212463.700000003,307563.400000006 212473.200000003,307549.200000003 212485.400000006,307498.5 212569.099999994,307486.900000006 212585.599999994,307481.099999994 212620.700000003,307471.099999994 212653.799999997,307445.5 212694.099999994,307429.799999997 212749.299999997,307421.099999994 212814.200000003,307409.599999994 212842.900000006,307406.5 212869.900000006,307398 212906,307390 212918.5,307391.299999997 212956.900000006,307391.900000006 212994.799999997,307376.400000006 213015.599999994,307366.099999994 213044.099999994,307343.400000006 213084.900000006,307302.599999994 213137.5,307280.5 213158.799999997,307244.700000003 213212.299999997,307228.700000003 213238.900000006,307182.5 213304,307161.900000006 213326.799999997,307154.599999994 213364.799999997,307146.099999994 213381.5,307130.799999997 213396.700000003,307118.599999994 213416.799999997,307096.200000003 213430.700000003,307076.200000003 213432,307068.599999994 213439.599999994,307049.400000006 213477.299999997,307031.5 213507.599999994,307019.799999997 213529.700000003,307002.5 213547.400000006,306939.299999997 213650.700000003,306895.900000006 213709.200000003,306879 213749.900000006,306860.799999997 213813.599999994,306844.200000003 213874.200000003,306833.799999997 213897.799999997,306777.900000006 213903.200000003,306750.799999997 214018.400000006,306747.400000006 214036.900000006,306715.700000003 214108.799999997,306705.099999994 214125.400000006,306685.799999997 214166.700000003,306628.599999994 214263.900000006,306604.599999994 214313.200000003,306585.400000006 214347.900000006,306553.900000006 214393.299999997,306501.900000006 214469.400000006,306470.299999997 214512.299999997,306444.5 214548.700000003,306393.099999994 214614.799999997,306306.599999994 214750.5,306228.599999994 214864.5,306122 215018.900000006,306068.200000003 215095.099999994,306000.900000006 215204.299999997,305992.700000003 215223,305969.799999997 215274.200000003,305936.299999997 215330.700000003,305919.900000006 215359.400000006,305881.900000006 215424.400000006,305849.200000003 215493.700000003,305808.599999994 215566.700000003,305796.599999994 215592.299999997,305775.799999997 215628.200000003,305738.700000003 215697.099999994,305627.299999997 215880.900000006,305598.799999997 215935.299999997,305571.700000003 215987.099999994,305534.599999994 216040.700000003,305522.5 216057.299999997,305463.599999994 216155.099999994,305429.700000003 216209,305358.099999994 216318.900000006,305314.900000006 216390,305218.099999994 216534.599999994,305191 216584,305146.5 216663,305100.5 216727.200000003,305068.400000006 216793.900000006,305030 216862.900000006,304980.400000006 216942.599999994,304943.299999997 216992.5,304866.299999997 217124,304846 217160.799999997,304817.200000003 217203.599999994,304769.5 217297.700000003,304749.299999997 217338.5,304723.299999997 217393.299999997,304681.099999994 217467.299999997,304649.799999997 217538.599999994,304590.299999997 217662.799999997,304555 217746.700000003,304495.200000003 217838.5,304409.5 217989,304368.299999997 218042.599999994,304280.799999997 218211.099999994,304251 218276.5,304207 218355.5,304182.400000006 218412.799999997,304162 218462.5,304132.099999994 218530.299999997,304103.599999994 218614.200000003,304054.400000006 218721.799999997,304030.799999997 218797.5,304017.700000003 218842.099999994,303987.200000003 218927.799999997,303956.799999997 219045.099999994,303947.200000003 219105.599999994,303931 219169.299999997,303924.5 219261.200000003,303881.400000006 219431.599999994,303864.099999994 219476.799999997,303856 219533.200000003,303839.299999997 219688.200000003,303824.299999997 219766.200000003,303819.200000003 219807.799999997,303803.200000003 219863.400000006,303782.799999997 220000.5,303757.099999994 220131.599999994,303739.900000006 220203.700000003,303692 220368.099999994,303678.200000003 220431.299999997,303636.400000006 220547.599999994,303617.099999994 220621.299999997,303599.400000006 220689,303574.5 220780.200000003,303555.200000003 220857.400000006,303543.599999994 220910,303497.799999997 221055.400000006,303466.099999994 221140.200000003,303432.200000003 221243.099999994,303407.799999997 221300.400000006,303377.599999994 221436.599999994,303362.799999997 221508.599999994,303342.200000003 221596.799999997,303330.5 221664.900000006,303305.900000006 221775.5,303295.5 221890.900000006,303273.799999997 222024.900000006,303264 222176.400000006,303260.400000006 222250.799999997,303247.5 222320.799999997,303245.799999997 222443.099999994,303247.400000006 222456.5,303248.299999997 222483,307493.099999994 222616.400000006,307496 222606.900000006,308026.200000003 222622.400000006,308050.700000003 222623.5,312441.799999997 221993.700000003,311818.200000003 217599.400000006,317924.599999994 218352.299999997,318638.900000006 218380.299999997,318654 218373.099999994,325105.799999997 218717.700000003,328449.599999994 222082.299999997,329488.799999997 222431.900000006,333400.700000003 223759.799999997,334532.5 223883.799999997,336703.700000003 223376.400000006,337699 222898.200000003,338396.099999994 223092.599999994,338259.900000006 225268.5,338267.700000003 225279.400000006,338279.5 225283.599999994,338295.700000003 225313.299999997,338327.5 225357.599999994,338350.099999994 225389.200000003,338365.599999994 225402.900000006,338375.900000006 225414.700000003,338410 225468.099999994,338458.799999997 225516.200000003,338491.900000006 225553.599999994,338501.900000006 225572.400000006,338520.599999994 225595.5,338541.299999997 225624.099999994,338561.099999994 225663.200000003,338587 225723.599999994,338605.799999997 225770.200000003,338613.700000003 225810.5,338620 225825.400000006,338632.900000006 225931.900000006,338637.900000006 226013.099999994,338643.5 226035.900000006,338652.200000003 226101.599999994,338660.299999997 226133.900000006,338667.5 226148.799999997,338676.400000006 226187.099999994,338683.400000006 226216.299999997,338701.900000006 226259.5,338733.799999997 226316.299999997,338757.799999997 226356.299999997,338796.700000003 226397.599999994,338821.5 226421.599999994,338833.900000006 226438.900000006,338924.200000003 226569.599999994,338939.200000003 226585.400000006,339013.700000003 226672.5,339080.299999997 226723.799999997,339117.900000006 226742.099999994,339142.900000006 226748.799999997,339162 226752.400000006,339186.799999997 226762,339227 226762.900000006,339270.200000003 226751.099999994,339310.900000006 226731.099999994,339358.299999997 226684,339383 226644.599999994,339411.799999997 226599.200000003,339453.200000003 226553.299999997,339504.400000006 226488.099999994,339556.700000003 226440.400000006,339630.799999997 226385.299999997,339674.799999997 226360.599999994,339688.700000003 226357.900000006,339717.400000006 226351,339730.200000003 226344.799999997,339755.5 226347.400000006,339782.099999994 226341.5,339810.700000003 226349.5,339824.599999994 226348.799999997,339865.5 226372.5,339877.599999994 226382.799999997,339894.299999997 226395,339911.5 226415.200000003,339926.200000003 226446.900000006,339935.099999994 226499.700000003,339932.099999994 226535.599999994,339915.799999997 226573.799999997,339874 226631.299999997,339829.299999997 226673.5,339802.299999997 226708.700000003,339738.400000006 226774.099999994,339695.400000006 226836.200000003,339612.799999997 226943.299999997,339587 226980.099999994,339535.900000006 227041.799999997,339499.299999997 227077.700000003,339456.700000003 227151.299999997,339447.200000003 227171.799999997,339438.700000003 227195.900000006,339429.5 227236.400000006,339438.5 227325.599999994,339456.099999994 227395.599999994,339475.099999994 227451.200000003,339496.099999994 227487.799999997,339505.799999997 227513,339559.400000006 227573,339595.099999994 227605.400000006,339663.099999994 227664.200000003,339720.299999997 227700.700000003,339756.799999997 227717,339772.799999997 227721.799999997,339793.099999994 227738,339866.599999994 227760.599999994,339893.099999994 227762.799999997,339932.400000006 227768.200000003,339980.900000006 227781.299999997,339999.799999997 227794,340042.200000003 227807.799999997,340082.400000006 227833.599999994,340098.900000006 227844.200000003,340117.900000006 227872.900000006,340144.900000006 227925.299999997,340170.299999997 227994.700000003,340182.799999997 228047.5,340195.5 228118.5,340200.900000006 228144.400000006,340200.200000003 228156.299999997,340206.900000006 228182.200000003,340209.200000003 228222.5,340222.5 228268.299999997,340236.299999997 228320.799999997,340236.900000006 228335.799999997,340235.5 228359.799999997,340234.5 228382.799999997,340256.900000006 228463.700000003,346105.400000006 229356.200000003,346132.5 229361.299999997,346156.5 229366.900000006,346255.299999997 229377.799999997,346302.299999997 229388.5,346347.200000003 229389.200000003,346376.599999994 229390.299999997,346482.5 229402,346542.299999997 229410.099999994,346737.5 229441.799999997,346783 229445.700000003,346822.299999997 229453.400000006,346873.400000006 229468.599999994,346965.299999997 229481.099999994,347007.599999994 229482.5,347127.5 229501.400000006,347233.200000003 229516.700000003,347282.700000003 229526.900000006,347319.099999994 229531.799999997,347381.5 229548.299999997,347461.900000006 229562.400000006,347551.099999994 229573,347632.599999994 229580.099999994,347725.700000003 229593.700000003,347866.799999997 229608.400000006,347889.5 229613.900000006,347991 229629.299999997,348037 229636.099999994,348078.799999997 229643.299999997,348129.200000003 229647.5,348184.799999997 229653.200000003,348258.599999994 229659,348357.5 229677.799999997,348429 229689.599999994,348475.200000003 229694.400000006,348493.200000003 229693.5,348542.200000003 229700.799999997,348615.900000006 229705.099999994,348707.5 229718,348757.099999994 229722.799999997,348909.900000006 229746.200000003,349000.5 229753.299999997,349113.5 229768.900000006,349212.5 229784.299999997,349276.400000006 229794.700000003,349386.299999997 229819.5,349515.299999997 229845.799999997,349610.599999994 229860.700000003,349692.799999997 229864.299999997,349756.799999997 229870.400000006,349816.299999997 229882.400000006,349865.099999994 229894.599999994,349920.099999994 229906.599999994,350055.599999994 229936.799999997,350098.799999997 229940.700000003,350203.900000006 229959.5,350425.599999994 229997.799999997,350458.599999994 230001.200000003,350483.400000006 230009.299999997,350550.299999997 230016.799999997,350602.299999997 230025.400000006,350649.099999994 230030.099999994,350745.599999994 230047,350769.599999994 230049.599999994,350812 230056.5,350850.099999994 230061.799999997,350899.200000003 230069.5,350935.299999997 230067.900000006,351026.099999994 230082,351084.200000003 230088.900000006,351122.900000006 230091.900000006,351147.900000006 230097,351151.200000003 230031.5,353161.400000006 230412.299999997,353177 230413.599999994,362053.700000003 231736.700000003,362062.200000003 231744))) diff -Nru geos-3.1.0/tests/unit/capi/threadtest.c geos-3.2.2/tests/unit/capi/threadtest.c --- geos-3.1.0/tests/unit/capi/threadtest.c 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/capi/threadtest.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,451 +0,0 @@ -/************************************************************************ - * - * $Id: threadtest.c 2253 2009-01-23 23:58:18Z mloskot $ - * - * Multithreaded test for C-Wrapper of GEOS library - * - * Copyright (C) 2005 Refractions Research Inc. - * - * This is free software; you can redistribute and/or modify it under - * the terms of the GNU Lesser General Public Licence as published - * by the Free Software Foundation. - * See the COPYING file for more information. - * - * Author: Sandro Santilli - * - ***********************************************************************/ - -#define _GNU_SOURCE - -#include -#include -#include -#include -#include - -#include "geos_c.h" - -#define MAXWKTLEN 1047551 - -void -usage(char *me) -{ - fprintf(stderr, "Usage: %s \n", me); - exit(1); -} - -void -notice1(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "NOTICE1: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); -} - -void -notice2(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "NOTICE2: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); -} - -void -log_and_exit(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "ERROR: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); - exit(1); -} - -void -log_and_exit1(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "ERROR1: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); - pthread_exit(NULL); -} - -void -log_and_exit2(const char *fmt, ...) { - va_list ap; - - fprintf( stdout, "ERROR2: "); - - va_start (ap, fmt); - vfprintf( stdout, fmt, ap); - va_end(ap); - fprintf( stdout, "\n" ); - pthread_exit(NULL); -} - -GEOSGeometry* -fineGrainedReconstructionTest(const GEOSGeometry* g1, - GEOSContextHandle_t handle) -{ - GEOSCoordSequence* cs; - GEOSGeometry* g2; - GEOSGeometry* shell; - const GEOSGeometry* gtmp; - GEOSGeometry**geoms; - unsigned int ngeoms, i; - int type; - - /* Geometry reconstruction from CoordSeq */ - type = GEOSGeomTypeId_r(handle, g1); - switch ( type ) - { - case GEOS_POINT: - cs = GEOSCoordSeq_clone_r(handle, - GEOSGeom_getCoordSeq_r(handle, g1)); - g2 = GEOSGeom_createPoint_r(handle, cs); - return g2; - break; - case GEOS_LINESTRING: - cs = GEOSCoordSeq_clone_r(handle, - GEOSGeom_getCoordSeq_r(handle, g1)); - g2 = GEOSGeom_createLineString_r(handle, cs); - return g2; - break; - case GEOS_LINEARRING: - cs = GEOSCoordSeq_clone_r(handle, - GEOSGeom_getCoordSeq_r(handle, g1)); - g2 = GEOSGeom_createLinearRing_r(handle, cs); - return g2; - break; - case GEOS_POLYGON: - gtmp = GEOSGetExteriorRing_r(handle, g1); - cs = GEOSCoordSeq_clone_r(handle, - GEOSGeom_getCoordSeq_r(handle, gtmp)); - shell = GEOSGeom_createLinearRing_r(handle, cs); - ngeoms = GEOSGetNumInteriorRings_r(handle, g1); - geoms = malloc(ngeoms*sizeof(GEOSGeometry*)); - for (i=0; i>4], hex[bytes[i]&0x0F]); - } -} - -int -do_all(char *inputfile, GEOSContextHandle_t handle) -{ - GEOSGeometry* g1; - GEOSGeometry* g2; - GEOSGeometry* g3; - GEOSGeometry* g4; - const GEOSGeometry **gg; - unsigned int npoints, ndims; - static char wkt[MAXWKTLEN]; - FILE *input; - char *ptr; - unsigned char* uptr; - size_t size; - double dist, area; - - input = fopen(inputfile, "r"); - if ( ! input ) { perror("fopen"); exit(1); } - - size = fread(wkt, 1, MAXWKTLEN-1, input); - fclose(input); - if ( ! size ) { perror("fread"); exit(1); } - if ( size == MAXWKTLEN-1 ) { perror("WKT input too big!"); exit(1); } - wkt[size] = '\0'; /* ensure it is null terminated */ - - /* WKT input */ - g1 = GEOSGeomFromWKT_r(handle, wkt); - - /* WKT output */ - ptr = GEOSGeomToWKT_r(handle, g1); - printf("Input (WKT): %s\n", ptr); - free(ptr); - - /* WKB output */ - uptr = GEOSGeomToWKB_buf_r(handle, g1, &size); - printf("Input (WKB): "); printHEX(stdout, uptr, size); putchar('\n'); - - /* WKB input */ - g2 = GEOSGeomFromWKB_buf_r(handle, uptr, size); free(uptr); - if ( ! GEOSEquals_r(handle, g1, g2) ) log_and_exit("Round WKB conversion failed"); - GEOSGeom_destroy_r(handle, g2); - - /* Size and dimension */ - npoints = GEOSGetNumCoordinates_r(handle, g1); - ndims = GEOSGeom_getDimensions_r(handle, g1); - printf("Geometry coordinates: %dx%d\n", npoints, ndims); - - /* Geometry fine-grained deconstruction/reconstruction test */ - g2 = fineGrainedReconstructionTest(g1, handle); - if ( ! GEOSEquals_r(handle, g1, g2) ) - { - log_and_exit("Reconstruction test failed\n"); - } - GEOSGeom_destroy_r(handle, g2); - - /* Unary predicates */ - if ( GEOSisEmpty_r(handle, g1) ) printf("isEmpty\n"); - if ( GEOSisValid_r(handle, g1) ) printf("isValid\n"); - if ( GEOSisSimple_r(handle, g1) ) printf("isSimple\n"); - if ( GEOSisRing_r(handle, g1) ) printf("isRing\n"); - - /* Convex Hull */ - g2 = GEOSConvexHull_r(handle, g1); - if ( ! g2 ) - { - log_and_exit("GEOSConvexHull() raised an exception"); - } - ptr = GEOSGeomToWKT_r(handle, g2); - printf("ConvexHull: %s\n", ptr); - free(ptr); - - /* Buffer */ - GEOSGeom_destroy_r(handle, g1); - g1 = GEOSBuffer_r(handle, g2, 100, 30); - if ( ! g1 ) - { - log_and_exit("GEOSBuffer() raised an exception"); - } - ptr = GEOSGeomToWKT_r(handle, g1); - printf("Buffer: %s\n", ptr); - free(ptr); - - - /* Intersection */ - g3 = GEOSIntersection_r(handle, g1, g2); - if ( ! GEOSEquals_r(handle, g3, g2) ) - { - GEOSGeom_destroy_r(handle, g1); - GEOSGeom_destroy_r(handle, g2); - GEOSGeom_destroy_r(handle, g3); - log_and_exit("Intersection(g, Buffer(g)) didn't return g"); - } - ptr = GEOSGeomToWKT_r(handle, g3); - printf("Intersection: %s\n", ptr); - GEOSGeom_destroy_r(handle, g3); - free(ptr); - - /* Difference */ - g3 = GEOSDifference_r(handle, g1, g2); - ptr = GEOSGeomToWKT_r(handle, g3); - printf("Difference: %s\n", ptr); - GEOSGeom_destroy_r(handle, g3); - free(ptr); - - /* SymDifference */ - g3 = GEOSSymDifference_r(handle, g1, g2); - ptr = GEOSGeomToWKT_r(handle, g3); - printf("SymDifference: %s\n", ptr); - free(ptr); - - /* Boundary */ - g4 = GEOSBoundary_r(handle, g3); - ptr = GEOSGeomToWKT_r(handle, g4); - printf("Boundary: %s\n", ptr); - GEOSGeom_destroy_r(handle, g3); - GEOSGeom_destroy_r(handle, g4); - free(ptr); - - /* Union */ - g3 = GEOSUnion_r(handle, g1, g2); - if ( ! GEOSEquals_r(handle, g3, g1) ) - { - GEOSGeom_destroy_r(handle, g1); - GEOSGeom_destroy_r(handle, g2); - GEOSGeom_destroy_r(handle, g3); - log_and_exit("Union(g, Buffer(g)) didn't return Buffer(g)"); - } - ptr = GEOSGeomToWKT_r(handle, g3); - printf("Union: %s\n", ptr); - free(ptr); - - /* PointOnSurcace */ - g4 = GEOSPointOnSurface_r(handle, g3); - ptr = GEOSGeomToWKT_r(handle, g4); - printf("PointOnSurface: %s\n", ptr); - GEOSGeom_destroy_r(handle, g3); - GEOSGeom_destroy_r(handle, g4); - free(ptr); - - /* Centroid */ - g3 = GEOSGetCentroid_r(handle, g2); - ptr = GEOSGeomToWKT_r(handle, g3); - printf("Centroid: %s\n", ptr); - GEOSGeom_destroy_r(handle, g3); - free(ptr); - - /* Relate (and RelatePattern )*/ - ptr = GEOSRelate_r(handle, g1, g2); - if ( ! GEOSRelatePattern_r(handle, g1, g2, ptr) ) - { - GEOSGeom_destroy_r(handle, g1); - GEOSGeom_destroy_r(handle, g2); - free(ptr); - log_and_exit("! RelatePattern(g1, g2, Relate(g1, g2))"); - } - printf("Relate: %s\n", ptr); - free(ptr); - - /* Polygonize */ - gg = (const GEOSGeometry**)malloc(2*sizeof(GEOSGeometry*)); - gg[0] = g1; - gg[1] = g2; - g3 = GEOSPolygonize_r(handle, gg, 2); - free(gg); - if ( ! g3 ) - { - log_and_exit("Exception running GEOSPolygonize"); - } - ptr = GEOSGeomToWKT_r(handle, g3); - GEOSGeom_destroy_r(handle, g3); - printf("Polygonize: %s\n", ptr); - free(ptr); - - /* LineMerge */ - g3 = GEOSLineMerge_r(handle, g1); - if ( ! g3 ) - { - log_and_exit("Exception running GEOSLineMerge"); - } - ptr = GEOSGeomToWKT_r(handle, g3); - printf("LineMerge: %s\n", ptr); - free(ptr); - GEOSGeom_destroy_r(handle, g3); - - /* Binary predicates */ - if ( GEOSIntersects_r(handle, g1, g2) ) printf("Intersect\n"); - if ( GEOSDisjoint_r(handle, g1, g2) ) printf("Disjoint\n"); - if ( GEOSTouches_r(handle, g1, g2) ) printf("Touches\n"); - if ( GEOSCrosses_r(handle, g1, g2) ) printf("Crosses\n"); - if ( GEOSWithin_r(handle, g1, g2) ) printf("Within\n"); - if ( GEOSContains_r(handle, g1, g2) ) printf("Contains\n"); - if ( GEOSOverlaps_r(handle, g1, g2) ) printf("Overlaps\n"); - - /* Distance */ - if ( GEOSDistance_r(handle, g1, g2, &dist) ) printf("Distance: %g\n", dist); - - /* Area */ - if ( GEOSArea_r(handle, g1, &area) ) printf("Area 1: %g\n", area); - if ( GEOSArea_r(handle, g2, &area) ) printf("Area 2: %g\n", area); - - GEOSGeom_destroy_r(handle, g2); - - /* Simplify */ - g3 = GEOSSimplify_r(handle, g1, 0.5); - ptr = GEOSGeomToWKT_r(handle, g3); - printf("Simplify: %s\n", ptr); - free(ptr); - GEOSGeom_destroy_r(handle, g3); - - /* Topology Preserve Simplify */ - g3 = GEOSTopologyPreserveSimplify_r(handle, g1, 0.5); - ptr = GEOSGeomToWKT_r(handle, g3); - printf("Simplify: %s\n", ptr); - free(ptr); - GEOSGeom_destroy_r(handle, g3); - - GEOSGeom_destroy_r(handle, g1); - - return 0; -} - -void *threadfunc1( void *arg ) -{ - GEOSContextHandle_t handle = NULL; - - handle = initGEOS_r( notice1, log_and_exit1 ); - printf("GEOS version %s\n", GEOSversion(handle)); - putc('.', stderr); fflush(stderr); - do_all((char*)arg, handle); - putc('+', stderr); fflush(stderr); - finishGEOS_r(handle); - - pthread_exit(NULL); -} - -void *threadfunc2( void *arg ) -{ - GEOSContextHandle_t handle = NULL; - - handle = initGEOS_r( notice2, log_and_exit2 ); - printf("GEOS version %s\n", GEOSversion(handle)); - putc('.', stderr); fflush(stderr); - do_all((char *)arg, handle); - putc('+', stderr); fflush(stderr); - finishGEOS_r(handle); - - pthread_exit(NULL); -} - -int -main(int argc, char **argv) -{ - pthread_t thread1, thread2; - - if ( argc < 2 ) usage(argv[0]); - pthread_create( &thread1, NULL, threadfunc1, argv[1] ); - pthread_create( &thread2, NULL, threadfunc2, argv[1] ); - pthread_join( thread1, NULL ); - pthread_join( thread2, NULL ); - - return EXIT_SUCCESS; -} - diff -Nru geos-3.1.0/tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp geos-3.2.2/tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp --- geos-3.1.0/tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/CoordinateArraySequenceFactoryTest.cpp 2009-11-23 18:17:54.000000000 +0000 @@ -1,15 +1,14 @@ -// $Id: CoordinateArraySequenceFactoryTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: CoordinateArraySequenceFactoryTest.cpp 2735 2009-11-23 18:17:54Z strk $ // // Test Suite for geos::geom::CoordinateArraySequence class. -// TUT -#include -// GEOS +#include +// geos #include #include #include #include -// STL +// std #include #include @@ -22,9 +21,9 @@ // Common data used by tests struct test_coordinatearraysequencefactory_data { - typedef geos::geom::CoordinateSequence* CoordianteSequencePtr; - typedef geos::geom::CoordinateSequenceFactory const* CoordianteFactoryCPtr; - typedef geos::geom::CoordinateArraySequenceFactory const* CoordianteArrayFactoryCPtr; + typedef geos::geom::CoordinateSequence* CoordinateSequencePtr; + typedef geos::geom::CoordinateSequenceFactory const* CoordinateFactoryCPtr; + typedef geos::geom::CoordinateArraySequenceFactory const* CoordinateArrayFactoryCPtr; test_coordinatearraysequencefactory_data() {} }; @@ -45,16 +44,16 @@ { try { - CoordianteFactoryCPtr base = geos::geom::CoordinateArraySequenceFactory::instance(); + CoordinateFactoryCPtr base = geos::geom::CoordinateArraySequenceFactory::instance(); ensure( 0 != base ); - ensure(typeid(base).name(), typeid(base) == typeid(CoordianteFactoryCPtr) ); - ensure(typeid(base).name(), typeid(base) != typeid(CoordianteArrayFactoryCPtr) ); + ensure(typeid(base).name(), typeid(base) == typeid(CoordinateFactoryCPtr) ); + ensure(typeid(base).name(), typeid(base) != typeid(CoordinateArrayFactoryCPtr) ); - CoordianteArrayFactoryCPtr derived; - derived = dynamic_cast(base); + CoordinateArrayFactoryCPtr derived; + derived = dynamic_cast(base); ensure( 0 != derived ); - ensure(typeid(derived).name(), typeid(derived) == typeid(CoordianteArrayFactoryCPtr) ); + ensure(typeid(derived).name(), typeid(derived) == typeid(CoordinateArrayFactoryCPtr) ); } catch (std::exception& e) { @@ -72,7 +71,7 @@ try { - CoordianteFactoryCPtr factory = geos::geom::CoordinateArraySequenceFactory::instance(); + CoordinateFactoryCPtr factory = geos::geom::CoordinateArraySequenceFactory::instance(); ensure( 0 != factory ); @@ -81,7 +80,7 @@ ensure( 0 != col); const size_t size0 = 0; - CoordianteSequencePtr sequence = factory->create(col); + CoordinateSequencePtr sequence = factory->create(col); ensure( 0 != sequence); ensure( sequence->isEmpty() ); @@ -105,7 +104,7 @@ try { - CoordianteFactoryCPtr factory = geos::geom::CoordinateArraySequenceFactory::instance(); + CoordinateFactoryCPtr factory = geos::geom::CoordinateArraySequenceFactory::instance(); ensure( 0 != factory ); std::vector* col = new std::vector(); @@ -116,12 +115,12 @@ col->push_back(Coordinate(5, 10, 15)); const size_t size2 = 2; - CoordianteSequencePtr sequence = factory->create(col); + CoordinateSequencePtr sequence = factory->create(col); ensure( 0 != sequence); ensure( !sequence->isEmpty() ); ensure_equals( sequence->size(), size2 ); - ensure_not_equals( sequence->getAt(0), sequence->getAt(1) ); + ensure( sequence->getAt(0) != sequence->getAt(1) ); // FREE MEMORY delete sequence; @@ -141,12 +140,12 @@ try { - CoordianteFactoryCPtr factory = geos::geom::CoordinateArraySequenceFactory::instance(); + CoordinateFactoryCPtr factory = geos::geom::CoordinateArraySequenceFactory::instance(); ensure( 0 != factory ); const size_t size1000 = 1000; - CoordianteSequencePtr sequence = factory->create(size1000, 3); + CoordinateSequencePtr sequence = factory->create(size1000, 3); ensure( 0 != sequence); ensure( !sequence->isEmpty() ); diff -Nru geos-3.1.0/tests/unit/geom/CoordinateArraySequenceTest.cpp geos-3.2.2/tests/unit/geom/CoordinateArraySequenceTest.cpp --- geos-3.1.0/tests/unit/geom/CoordinateArraySequenceTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/CoordinateArraySequenceTest.cpp 2009-08-21 10:50:58.000000000 +0100 @@ -1,16 +1,16 @@ -// $Id: CoordinateArraySequenceTest.cpp 1924 2006-12-04 09:57:51Z strk $ +// $Id: CoordinateArraySequenceTest.cpp 2622 2009-08-21 09:50:58Z mloskot $ // // Test Suite for geos::geom::CoordinateArraySequence class. -// TUT -#include -// GEOS +#include +// geos #include #include #include -// STL +// std #include #include +#include namespace tut { @@ -64,7 +64,7 @@ ensure_equals( sequence.getSize(), size ); ensure_equals( sequence.size(), size ); - ensure_not_equals( sequence.toString(), std::string("()") ); + ensure( sequence.toString() != std::string("()") ); ensure("Every coodinate in the default sequence should be same.", sequence.hasRepeatedPoints() ); @@ -96,7 +96,7 @@ ensure_equals( sequence.getSize(), size ); ensure_equals( sequence.size(), size ); - ensure_not_equals( sequence.toString(), std::string("()") ); + ensure( sequence.toString() != std::string("()") ); ensure("Coordinate sequence should contain unique coordinates.", !sequence.hasRepeatedPoints() ); } @@ -142,7 +142,7 @@ // Compare non-empty original and copy using equality operators ensure_equals( non_empty_original.getAt(0), non_empty_copy.getAt(0) ); ensure_equals( non_empty_original.getAt(1), non_empty_copy.getAt(1) ); - ensure_not_equals( non_empty_original.getAt(0), non_empty_copy.getAt(1) ); + ensure( non_empty_original.getAt(0) != non_empty_copy.getAt(1) ); } // Test of getX() and getY() @@ -186,7 +186,7 @@ ensure( !sequence.isEmpty() ); ensure_equals( sequence.size(), size ); - ensure_not_equals( sequence.getAt(0), sequence.getAt(1) ); + ensure( sequence.getAt(0) != sequence.getAt(1) ); // First version of getAt() ensure_equals( sequence.getAt(0).x, 1 ); @@ -244,7 +244,7 @@ ensure( !sequence.hasRepeatedPoints() ); // Check elements of sequence - ensure_not_equals( sequence.getAt(0), sequence.getAt(1) ); + ensure( sequence.getAt(0) != sequence.getAt(1) ); ensure_equals( sequence.getAt(0).x, 1 ); ensure_equals( sequence.getAt(0).y, 2 ); @@ -332,9 +332,9 @@ ensure( !sequence.isEmpty() ); ensure_equals( sequence.size(), sizeTwo ); - ensure_not_equals( sequence.getAt(0), sequence.getAt(1) ); + ensure( sequence.getAt(0) != sequence.getAt(1) ); ensure_equals( sequence.getAt(0), first ); - ensure_not_equals( "deleteAt() did not remove coordinate.", sequence.getAt(1), second ); + ensure( "deleteAt() did not remove coordinate.", sequence.getAt(1) != second ); ensure_equals( sequence.getAt(1), third ); } @@ -440,8 +440,8 @@ // Add a new coordinate to sequence2 sequence2.add(c3); - ensure_not_equals( sequence1, sequence2 ); - ensure_not_equals( sequence2, sequence1 ); + ensure( sequence1 != sequence2 ); + ensure( sequence2 != sequence1 ); // Add a new coordinate to sequence1 sequence1.add(c3); @@ -453,8 +453,8 @@ sequence1.add(c3); sequence2.add(c2); - ensure_not_equals( sequence1, sequence2 ); - ensure_not_equals( sequence2, sequence1 ); + ensure( sequence1 != sequence2 ); + ensure( sequence2 != sequence1 ); } @@ -558,4 +558,51 @@ } + // Test of add() in the middle + template<> + template<> + void object::test<16>() + { + using geos::geom::Coordinate; + using geos::geom::CoordinateArraySequence; + + // Create empty sequence to fill with coordinates + CoordinateArraySequence sequence; + + sequence.add(Coordinate(0,0)); + sequence.add(Coordinate(1,1)); + sequence.add(Coordinate(2,2)); + + ensure_equals( sequence.size(), std::size_t(3)); + + sequence.add(0, Coordinate(4,4), false); // don't alow repeated + ensure_equals( sequence.size(), std::size_t(4) ); + ensure_equals( sequence.getAt(0).x, std::size_t(4) ); + + // do not allow repeated + sequence.add(0, Coordinate(4,4), false); + ensure_equals( sequence.size(), std::size_t(4) ); + + // allow repeated + sequence.add(0, Coordinate(4,4), true); + ensure_equals( sequence.size(), std::size_t(5) ); + + // Now looks like this: 4,4,0,1,2 + // we'll add at position 4 a 2 (equals to the one after) + sequence.add(4, Coordinate(2,2), false); + ensure_equals( sequence.size(), std::size_t(5) ); + + // we'll add at position 4 a 1 (equals to the one before) + sequence.add(4, Coordinate(1,1), false); + ensure_equals( sequence.size(), std::size_t(5) ); + + // we'll add at position 4 a 1 (equals to the one before) + // but allowing duplicates + sequence.add(4, Coordinate(1,1), true); + ensure_equals( sequence.size(), std::size_t(6) ); + ensure_equals( sequence.getAt(3).x, 1 ); + ensure_equals( sequence.getAt(4).x, 1 ); + ensure_equals( sequence.getAt(5).x, 2 ); + } + } // namespace tut diff -Nru geos-3.1.0/tests/unit/geom/CoordinateListTest.cpp geos-3.2.2/tests/unit/geom/CoordinateListTest.cpp --- geos-3.1.0/tests/unit/geom/CoordinateListTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/CoordinateListTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,14 +1,15 @@ -// $Id: CoordinateListTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: CoordinateListTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::CoordinateList class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include -// STL +// std +#include #include #include diff -Nru geos-3.1.0/tests/unit/geom/CoordinateTest.cpp geos-3.2.2/tests/unit/geom/CoordinateTest.cpp --- geos-3.1.0/tests/unit/geom/CoordinateTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/CoordinateTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,10 +1,9 @@ -// $Id: CoordinateTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: CoordinateTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::geom::Coordinate class. -// TUT -#include -// GEOS +#include +// geos #include namespace tut @@ -23,6 +22,10 @@ test_coordinate_data() : x(1.234), y(2.345), z(3.456) {} + private: + // Declare type as noncopyable + test_coordinate_data(test_coordinate_data const& other); + test_coordinate_data& operator=(test_coordinate_data const& rhs); }; typedef test_group group; @@ -51,7 +54,7 @@ geos::geom::Coordinate coord; ensure_equals( coord.x, 0.0 ); ensure_equals( coord.y, 0.0 ); - ensure_equals( coord.z, DoubleNotANumber ); + ensure(0 != ISNAN( coord.z ) ); } // Test of copy constructor and assignment operator @@ -96,7 +99,7 @@ ensure_equals( original, copy ); copy.x += 3.14; // permutation - ensure_not_equals( original, copy ); + ensure( original != copy ); } // Test of equals() @@ -153,7 +156,7 @@ second.x += 10.0; second.y += 10.0; second.z += 10.0; - ensure_not_equals( first.distance( second ), 0 ); + ensure( first.distance( second ) != 0 ); ensure_equals( first.distance( second ), second.distance( first ) ); // TODO - mloskot - I'm not sure if this will work on every platform. // In case of any problems, just remove it. @@ -173,16 +176,16 @@ // Make it null and check not_null_coord.setNull(); - ensure_equals( not_null_coord.x, DoubleNotANumber ); - ensure_equals( not_null_coord.y, DoubleNotANumber ); - ensure_equals( not_null_coord.z, DoubleNotANumber ); + ensure( 0 != ISNAN( not_null_coord.x ) ); + ensure( 0 != ISNAN( not_null_coord.y ) ); + ensure( 0 != ISNAN( not_null_coord.z ) ); // Build in static null instance geos::geom::Coordinate null_coord; null_coord = geos::geom::Coordinate::getNull(); - ensure_equals( null_coord.x, DoubleNotANumber ); - ensure_equals( null_coord.y, DoubleNotANumber ); - ensure_equals( null_coord.z, DoubleNotANumber ); + ensure( 0 != ISNAN( null_coord.x ) ); + ensure( 0 != ISNAN( null_coord.y ) ); + ensure( 0 != ISNAN( null_coord.z ) ); } } // namespace tut diff -Nru geos-3.1.0/tests/unit/geom/DimensionTest.cpp geos-3.2.2/tests/unit/geom/DimensionTest.cpp --- geos-3.1.0/tests/unit/geom/DimensionTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/DimensionTest.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,10 +1,10 @@ -// $Id: DimensionTest.cpp 2127 2008-05-20 21:25:21Z mloskot $ +// $Id: DimensionTest.cpp 2757 2009-12-01 15:39:41Z mloskot $ // // Test Suite for geos::geom::Location class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include @@ -52,7 +52,7 @@ { // Just compile-time test geos::geom::Dimension dim; - UNREFERENCED_PARAMETER(dim); + ::geos::ignore_unused_variable_warning(dim); } // Test of toDimensionSymbol() diff -Nru geos-3.1.0/tests/unit/geom/EnvelopeTest.cpp geos-3.2.2/tests/unit/geom/EnvelopeTest.cpp --- geos-3.1.0/tests/unit/geom/EnvelopeTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/EnvelopeTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,10 @@ -// $Id: EnvelopeTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: EnvelopeTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::Envelope class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include diff -Nru geos-3.1.0/tests/unit/geom/Geometry/coversTest.cpp geos-3.2.2/tests/unit/geom/Geometry/coversTest.cpp --- geos-3.1.0/tests/unit/geom/Geometry/coversTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/Geometry/coversTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,16 +1,17 @@ -// $Id: coversTest.cpp 1820 2006-09-06 16:54:23Z mloskot $ +// $Id: coversTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for Geometry's covers() and coveredBy() functions -// TUT -#include -// STL -#include -// GEOS +// tut +#include +// geos #include #include #include #include +// std +#include +#include namespace tut { diff -Nru geos-3.1.0/tests/unit/geom/Geometry/isRectangleTest.cpp geos-3.2.2/tests/unit/geom/Geometry/isRectangleTest.cpp --- geos-3.1.0/tests/unit/geom/Geometry/isRectangleTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/Geometry/isRectangleTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,16 +1,16 @@ -// $Id: isRectangleTest.cpp 1820 2006-09-06 16:54:23Z mloskot $ +// $Id: isRectangleTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for Geometry::isRectangle() function -// TUT -#include -// STL -#include -// GEOS +// tut +#include +// geos #include #include #include #include +// std +#include namespace tut { diff -Nru geos-3.1.0/tests/unit/geom/GeometryFactoryTest.cpp geos-3.2.2/tests/unit/geom/GeometryFactoryTest.cpp --- geos-3.1.0/tests/unit/geom/GeometryFactoryTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/GeometryFactoryTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,7 +1,10 @@ -// $Id: GeometryFactoryTest.cpp 2162 2008-08-18 16:30:56Z mloskot $ +// $Id: GeometryFactoryTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::geom::GeometryFactory class. +// tut +#include +#include // geos #include #include @@ -23,9 +26,6 @@ // std #include #include // std::size_t -// tut -#include -#include /*! * \brief @@ -46,22 +46,26 @@ // // Common data used by tests - struct test_geometryfactory_data - { - // Test data - const int x_; - const int y_; - const int z_; - - const int srid_; - geos::geom::PrecisionModel pm_; - geos::geom::GeometryFactory factory_; - geos::io::WKTReader reader_; - - test_geometryfactory_data() - : x_(5), y_(10), z_(15), srid_(666), pm_(1.0), factory_(&pm_, srid_), reader_(&factory_) - {} - }; + struct test_geometryfactory_data + { + // Test data + const int x_; + const int y_; + const int z_; + + const int srid_; + geos::geom::PrecisionModel pm_; + geos::geom::GeometryFactory factory_; + geos::io::WKTReader reader_; + + test_geometryfactory_data() + : x_(5), y_(10), z_(15), srid_(666), pm_(1.0), factory_(&pm_, srid_), reader_(&factory_) + {} + private: + // Declare type as noncopyable + test_geometryfactory_data(const test_geometryfactory_data& other); + test_geometryfactory_data& operator=(const test_geometryfactory_data& rhs); + }; typedef test_group group; typedef group::object object; @@ -701,7 +705,7 @@ ensure_equals( exterior->getBoundaryDimension(), geos::geom::Dimension::False ); ensure_equals( exterior->getNumPoints(), size ); ensure_equals( exterior->getArea(), 0.0 ); - ensure_not_equals( exterior->getLength(), 0.0 ); + ensure( exterior->getLength() != 0.0 ); // Create polygon PolygonPtr poly = factory_.createPolygon(exterior, 0); @@ -712,8 +716,8 @@ ensure_equals( poly->getDimension(), geos::geom::Dimension::A ); ensure_equals( poly->getBoundaryDimension(), geos::geom::Dimension::L ); ensure_equals( poly->getNumPoints(), size ); - ensure_not_equals( poly->getArea(), 0.0 ); - ensure_not_equals( poly->getLength(), 0.0 ); + ensure( poly->getArea() != 0.0 ); + ensure( poly->getLength() != 0.0 ); // FREE MEMORY factory_.destroyGeometry(poly); @@ -750,7 +754,7 @@ ensure_equals( exterior->getBoundaryDimension(), geos::geom::Dimension::False ); ensure_equals( exterior->getNumPoints(), exteriorSize ); ensure_equals( exterior->getArea(), 0.0 ); - ensure_not_equals( exterior->getLength(), 0.0 ); + ensure( exterior->getLength() != 0.0 ); // Create collection of holes GeometryPtr geo = reader_.read(("LINEARRING(7 7, 12 7, 12 12, 7 12, 7 7)")); @@ -773,8 +777,8 @@ ensure_equals( poly->getDimension(), geos::geom::Dimension::A ); ensure_equals( poly->getBoundaryDimension(), geos::geom::Dimension::L ); ensure_equals( poly->getNumPoints(), exteriorSize + interiorSize ); - ensure_not_equals( poly->getArea(), 0.0 ); - ensure_not_equals( poly->getLength(), 0.0 ); + ensure( poly->getArea() != 0.0 ); + ensure( poly->getLength() != 0.0 ); ensure_equals( poly->getNumGeometries(), 1u ); ensure_equals( poly->getNumInteriorRing(), 1u ); diff -Nru geos-3.1.0/tests/unit/geom/IntersectionMatrixTest.cpp geos-3.2.2/tests/unit/geom/IntersectionMatrixTest.cpp --- geos-3.1.0/tests/unit/geom/IntersectionMatrixTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/IntersectionMatrixTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,13 +1,12 @@ -// $Id: IntersectionMatrixTest.cpp 1820 2006-09-06 16:54:23Z mloskot $ +// $Id: IntersectionMatrixTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::geom::IntersectionMatrix class. -// TUT -#include -// GEOS +#include +// geos #include #include -// STL +// std #include #include #include @@ -20,17 +19,21 @@ // Common data used by test cases struct test_intersectionmatrix_data - { - typedef geos::geom::IntersectionMatrix* MatrixPtr; - typedef geos::geom::IntersectionMatrix const* MatrixCPtr; + { + typedef geos::geom::IntersectionMatrix* MatrixPtr; + typedef geos::geom::IntersectionMatrix const* MatrixCPtr; - const std::string pattern_false_; - geos::geom::IntersectionMatrix im_; + const std::string pattern_false_; + geos::geom::IntersectionMatrix im_; - test_intersectionmatrix_data() - : pattern_false_("FFFFFFFFF"),im_(pattern_false_) - {} - }; + test_intersectionmatrix_data() + : pattern_false_("FFFFFFFFF"),im_(pattern_false_) + {} + private: + // Declare type as noncopyable + test_intersectionmatrix_data(const test_intersectionmatrix_data& other); + test_intersectionmatrix_data& operator=(const test_intersectionmatrix_data& rhs); + }; typedef test_group group; typedef group::object object; @@ -220,7 +223,7 @@ const std::string pattern_expected("FFF012FFF"); im_.setAtLeast(pattern_new); - ensure_not_equals( im_.toString(), pattern_false_); + ensure( im_.toString() != pattern_false_); ensure_equals( im_.toString(), pattern_expected); // 3. Set old pattern, no change expected @@ -256,7 +259,7 @@ // 1. No change expected im_.setAtLeast(0, 0, geos::geom::Dimension::A); - ensure_not_equals( im_.toString(), pattern_false_); + ensure( im_.toString() != pattern_false_); ensure_equals( im_.get(0, 0), geos::geom::Dimension::A); } @@ -502,13 +505,13 @@ template<> void object::test<27>() { - ensure_not_equals( "0*01T12F2", im_.toString() ); + ensure( im_.toString() != "0*01T12F2" ); ensure_equals( "FFFFFFFFF", im_.toString() ); std::stringstream ss; ss << im_; - ensure_not_equals( "0*01T12F2", ss.str() ); + ensure( ss.str() != "0*01T12F2" ); ensure_equals( "FFFFFFFFF", ss.str() ); } diff -Nru geos-3.1.0/tests/unit/geom/LinearRingTest.cpp geos-3.2.2/tests/unit/geom/LinearRingTest.cpp --- geos-3.1.0/tests/unit/geom/LinearRingTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/LinearRingTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,10 +1,10 @@ -// $Id: LinearRingTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: LinearRingTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::geom::LinearRing class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include @@ -13,8 +13,10 @@ #include #include #include -// STL +// std #include +#include +#include namespace tut { @@ -60,7 +62,12 @@ ~test_linearring_data() { factory_.destroyGeometry(ring_); - } + } + + private: + // Declare type as noncopyable + test_linearring_data(const test_linearring_data& other); + test_linearring_data& operator=(const test_linearring_data& rhs); }; typedef test_group group; @@ -134,7 +141,7 @@ template<> void object::test<4>() { - ensure( empty_ring_.isClosed() ); + ensure( ! empty_ring_.isClosed() ); } // Test of isRing() for empty LinearRing @@ -142,7 +149,7 @@ template<> void object::test<5>() { - ensure( empty_ring_.isRing() ); + ensure( ! empty_ring_.isRing() ); } // Test of isSimple() for empty LinearRing @@ -354,7 +361,7 @@ void object::test<26>() { ensure(ring_ != 0); - ensure_not_equals( ring_->getLength(), 0.0 ); + ensure( ring_->getLength() != 0.0 ); const double tolerance = 0.0001; const double expected = 38.284271247461902; diff -Nru geos-3.1.0/tests/unit/geom/LineSegmentTest.cpp geos-3.2.2/tests/unit/geom/LineSegmentTest.cpp --- geos-3.1.0/tests/unit/geom/LineSegmentTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/LineSegmentTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,13 +1,12 @@ -// $Id: LineSegmentTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: LineSegmentTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::LineSegment class. -// TUT -#include -// GEOS +#include +// geos #include #include - +// std #include namespace tut diff -Nru geos-3.1.0/tests/unit/geom/LineStringTest.cpp geos-3.2.2/tests/unit/geom/LineStringTest.cpp --- geos-3.1.0/tests/unit/geom/LineStringTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/LineStringTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,7 +1,10 @@ -// $Id: LineStringTest.cpp 2169 2008-08-19 17:02:09Z mloskot $ +// $Id: LineStringTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::LineString class. +// tut +#include +#include // geos #include #include @@ -13,9 +16,6 @@ #include #include #include -// tut -#include -#include // std #include #include @@ -131,7 +131,7 @@ ensure_equals( ls->getBoundaryDimension(), geos::geom::Dimension::P ); ensure_equals( ls->getNumPoints(), size3 ); ensure_equals( ls->getArea(), 0.0 ); - ensure_not_equals( ls->getLength(), 0.0 ); + ensure( ls->getLength() != 0.0 ); } // Test of incomplete LineString user's constructor throwing the IllegalArgumentException @@ -218,7 +218,7 @@ ensure_equals( copy->getBoundaryDimension(), geos::geom::Dimension::P ); ensure_equals( copy->getNumPoints(), size ); ensure_equals( copy->getArea(), 0.0 ); - ensure_not_equals( copy->getLength(), 0.0 ); + ensure( copy->getLength() != 0.0 ); } // Test of isClosed() and isRing() for empty linestring @@ -466,7 +466,7 @@ GeometryPtr geo = reader_.read("LINESTRING (0 0, 10 10, 20 0)"); ensure( geo != 0 ); - ensure_not_equals( geo->getLength(), 0.0 ); + ensure( geo->getLength() != 0.0 ); const double diff = std::fabs(geo->getLength() - expected); ensure( diff <= tolerance ); diff -Nru geos-3.1.0/tests/unit/geom/LocationTest.cpp geos-3.2.2/tests/unit/geom/LocationTest.cpp --- geos-3.1.0/tests/unit/geom/LocationTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/LocationTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,10 @@ -// $Id: LocationTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: LocationTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::Location class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include diff -Nru geos-3.1.0/tests/unit/geom/MultiLineStringTest.cpp geos-3.2.2/tests/unit/geom/MultiLineStringTest.cpp --- geos-3.1.0/tests/unit/geom/MultiLineStringTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/MultiLineStringTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,11 +1,10 @@ -// $Id: MultiLineStringTest.cpp 2162 2008-08-18 16:30:56Z mloskot $ +// $Id: MultiLineStringTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::MultiLineString class. +#include // geos #include -// tut -#include namespace tut { diff -Nru geos-3.1.0/tests/unit/geom/MultiPointTest.cpp geos-3.2.2/tests/unit/geom/MultiPointTest.cpp --- geos-3.1.0/tests/unit/geom/MultiPointTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/MultiPointTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,7 +1,10 @@ -// $Id: MultiPointTest.cpp 2162 2008-08-18 16:30:56Z mloskot $ +// $Id: MultiPointTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::geom::MultiPoint class. +// tut +#include +#include // geos #include #include @@ -12,9 +15,6 @@ #include // std #include -// tut -#include -#include namespace tut { @@ -50,6 +50,11 @@ { factory_.destroyGeometry(mp_); } + + private: + // Declare type as noncopyable + test_multipoint_data(const test_multipoint_data& other); + test_multipoint_data& operator=(const test_multipoint_data& rhs); }; typedef test_group group; @@ -84,7 +89,7 @@ { const size_t size0 = 0; MultiPointAutoPtr copy(dynamic_cast(empty_mp_->clone())); - ensure( copy.get() ); + ensure( 0 != copy.get() ); ensure( copy->isEmpty() ); ensure( copy->isSimple() ); diff -Nru geos-3.1.0/tests/unit/geom/MultiPolygonTest.cpp geos-3.2.2/tests/unit/geom/MultiPolygonTest.cpp --- geos-3.1.0/tests/unit/geom/MultiPolygonTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/MultiPolygonTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,9 @@ -// $Id: MultiPolygonTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: MultiPolygonTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::MultiPolygon class. -// TUT -#include -// GEOS +#include +// geos #include namespace tut diff -Nru geos-3.1.0/tests/unit/geom/PointTest.cpp geos-3.2.2/tests/unit/geom/PointTest.cpp --- geos-3.1.0/tests/unit/geom/PointTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/PointTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,9 @@ -// $Id: PointTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: PointTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::geom::Point class. -// TUT -#include -// GEOS +#include +// geos #include #include #include @@ -14,6 +13,10 @@ #include #include #include +// std +#include +#include + namespace tut { diff -Nru geos-3.1.0/tests/unit/geom/PolygonTest.cpp geos-3.2.2/tests/unit/geom/PolygonTest.cpp --- geos-3.1.0/tests/unit/geom/PolygonTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/PolygonTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,7 +1,9 @@ -// $Id: PolygonTest.cpp 2162 2008-08-18 16:30:56Z mloskot $ +// $Id: PolygonTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::geom::Polygon class. +#include +#include // geos #include #include @@ -17,10 +19,8 @@ #include // std #include +#include #include -// tut -#include -#include namespace tut { @@ -53,11 +53,16 @@ poly_ = static_cast(geo); } - ~test_polygon_data() - { - // FREE MEMORY - factory_.destroyGeometry(poly_); - } + ~test_polygon_data() + { + // FREE MEMORY + factory_.destroyGeometry(poly_); + } + + private: + // Declare type as noncopyable + test_polygon_data(const test_polygon_data& other); + test_polygon_data& operator=(const test_polygon_data& rhs); }; typedef test_group group; @@ -345,7 +350,7 @@ void object::test<24>() { ensure( poly_ != 0 ); - ensure_not_equals( poly_->getLength(), 0.0 ); + ensure( poly_->getLength() != 0.0 ); const double tolerance = 0.0001; const double expected = 38.284271247461902; @@ -359,7 +364,7 @@ void object::test<25>() { ensure( poly_ != 0 ); - ensure_not_equals( poly_->getArea(), 0.0 ); + ensure( poly_->getArea() != 0.0 ); } // Test of getCoordinates() for non-empty Polygon diff -Nru geos-3.1.0/tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp geos-3.2.2/tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp --- geos-3.1.0/tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/prep/PreparedGeometryFactoryTest.cpp 2009-12-01 15:39:41.000000000 +0000 @@ -1,7 +1,10 @@ -// $Id: PreparedGeometryFactoryTest.cpp 2188 2008-09-16 21:01:36Z mloskot $ +// $Id: PreparedGeometryFactoryTest.cpp 2757 2009-12-01 15:39:41Z mloskot $ // // Test Suite for geos::geom::prep::PreparedGeometryFactory class. +// tut +#include +#include // geos #include #include @@ -13,9 +16,6 @@ // std #include #include // std::size_t -// tut -#include -#include using namespace geos::geom; @@ -67,7 +67,7 @@ void object::test<1>() { prep::PreparedGeometryFactory pgf; - UNREFERENCED_PARAMETER(pgf); + ::geos::ignore_unused_variable_warning(pgf); } // Test passing null-pointer to prepare static method diff -Nru geos-3.1.0/tests/unit/geom/TriangleTest.cpp geos-3.2.2/tests/unit/geom/TriangleTest.cpp --- geos-3.1.0/tests/unit/geom/TriangleTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geom/TriangleTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,10 +1,10 @@ -// $Id: TriangleTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: TriangleTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::geom::Triangle class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include @@ -94,9 +94,9 @@ ensure_equals( copy.p0, a ); ensure_equals( copy.p1, b ); ensure_equals( copy.p2, c ); - ensure_not_equals( copy.p0, d ); - ensure_not_equals( copy.p1, e ); - ensure_not_equals( copy.p2, f ); + ensure( copy.p0 != d ); + ensure( copy.p1 != e ); + ensure( copy.p2 != f ); } // Test of inCenter() @@ -113,6 +113,6 @@ ensure( fabs(center.x - 6.0) < 1e-15 ); ensure( center.y > 4.2 ); ensure( center.y < 4.3 ); - ensure_equals( center.z, DoubleNotANumber ); + ensure( 0 != ISNAN( center.z ) ); } } // namespace tut diff -Nru geos-3.1.0/tests/unit/geos_unit.cpp geos-3.2.2/tests/unit/geos_unit.cpp --- geos-3.1.0/tests/unit/geos_unit.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/geos_unit.cpp 2009-12-04 15:58:41.000000000 +0000 @@ -1,18 +1,22 @@ +// $Id: geos_unit.cpp 2796 2009-12-04 15:58:41Z mloskot $ +// +// Test Suite Runner +// #ifdef _MSC_VER #ifdef GEOS_DEBUG_MSVC_USE_VLD #include #endif #endif -// TUT -#include -#include -// STL -#include -#include -#include -// GEOS +// tut +#include +#include +// geos #include +// std +#include +#include +#include namespace tut { @@ -21,32 +25,32 @@ void usage() { - using std::cout; - using std::endl; + using std::cout; + using std::endl; - const std::string module("geos_unit"); + const std::string module("geos_unit"); - //[list] | [ group] [test] - cout << "Usage: " << module << " [OPTION] [TARGET]\n" - << endl - << "Targets:\n" - << " run all tests in all groups\n" - << " run all tests from given group\n" - << " run single test with given number from given group\n" - << endl - << "Options:\n" - << " --list list all registered test groups\n" - << " --verbose run unit tests verbosely; displays non-error information\n" - << " --version print version information and exit\n" - << " --help print this message and exit\n" - << endl - << "Examples:\n" - << " " << module << " -v\n" - << " " << module << " list\n" - << " " << module << " geos::geom::Envelope\n" - << " " << module << " geos::geom::Envelope 2\n" - << endl - << "GEOS homepage: http://geos.refractions.net" << endl; + //[list] | [ group] [test] + cout << "Usage: " << module << " [OPTION] [TARGET]\n" + << endl + << "Targets:\n" + << " run all tests in all groups\n" + << " run all tests from given group\n" + << " run single test with given number from given group\n" + << endl + << "Options:\n" + << " --list list all registered test groups\n" + << " --verbose run unit tests verbosely; displays non-error information\n" + << " --version print version information and exit\n" + << " --help print this message and exit\n" + << endl + << "Examples:\n" + << " " << module << " -v\n" + << " " << module << " list\n" + << " " << module << " geos::geom::Envelope\n" + << " " << module << " geos::geom::Envelope 2\n" + << endl + << "GEOS homepage: http://geos.refractions.net" << endl; } int main(int argc, const char* argv[]) @@ -60,8 +64,8 @@ } std::cout << "===============================\n" - << " GEOS Test Suite Application\n" - << "===============================\n"; + << " GEOS Test Suite Application\n" + << "===============================\n"; tut::runner.get().set_callback(&visi); @@ -95,8 +99,12 @@ { // TODO - mloskot - check if test group with given name exists // TODO - mloskot - check if test case with given number exists + std::string grpname(argv[1]); + if (grpname.empty()) + throw std::runtime_error("missing test group name"); - tut::runner.get().run_test(argv[1], std::atoi(argv[2])); + tut::test_result result; + tut::runner.get().run_test(grpname, std::atoi(argv[2]), result); } } catch( const std::exception& ex ) @@ -107,18 +115,5 @@ // XXX - mloskot - this should be removed in future! geos::io::Unload::Release(); - // Check failures number and signal them the World - int failures = visi.get_failures_count(); - if (failures > 0) - { - // Return number of failures as an error code - return failures; - } - else - { - return 0; - } - -} // main - - + return (visi.all_ok() ? EXIT_SUCCESS : EXIT_FAILURE); +} diff -Nru geos-3.1.0/tests/unit/index/quadtree/DoubleBitsTest.cpp geos-3.2.2/tests/unit/index/quadtree/DoubleBitsTest.cpp --- geos-3.1.0/tests/unit/index/quadtree/DoubleBitsTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/index/quadtree/DoubleBitsTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,9 @@ -// $Id: DoubleBitsTest.cpp 1820 2006-09-06 16:54:23Z mloskot $ +// $Id: DoubleBitsTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::index::quadtree::DoubleBits class. -// TUT -#include -// GEOS +#include +// geos #include using namespace geos::index::quadtree; diff -Nru geos-3.1.0/tests/unit/io/ByteOrderValuesTest.cpp geos-3.2.2/tests/unit/io/ByteOrderValuesTest.cpp --- geos-3.1.0/tests/unit/io/ByteOrderValuesTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/io/ByteOrderValuesTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -1,12 +1,13 @@ -// $Id: ByteOrderValuesTest.cpp 1820 2006-09-06 16:54:23Z mloskot $ +// $Id: ByteOrderValuesTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ // // Test Suite for geos::io::ByteOrderValues -// TUT -#include -// GEOS +// tut +#include +// geos #include #include // for int64 +// std #include #include @@ -127,8 +128,7 @@ ensure("putLong big endian[6]", buf[6] == 0); ensure("putLong big endian[7]", buf[7] == 2); - out = ByteOrderValues::getLong(buf, - ByteOrderValues::ENDIAN_BIG); + out = static_cast(ByteOrderValues::getLong(buf, ByteOrderValues::ENDIAN_BIG)); ensure_equals("getLong big endian", out, in); ByteOrderValues::putLong(in, buf, @@ -142,8 +142,7 @@ ensure("putLong little endian[6]", buf[6] == 0); ensure("putLong little endian[7]", buf[7] == 0); - out = ByteOrderValues::getLong(buf, - ByteOrderValues::ENDIAN_LITTLE); + out = static_cast(ByteOrderValues::getLong(buf, ByteOrderValues::ENDIAN_LITTLE)); ensure_equals("getLong little endian", out, in); } diff -Nru geos-3.1.0/tests/unit/io/WKBReaderTest.cpp geos-3.2.2/tests/unit/io/WKBReaderTest.cpp --- geos-3.1.0/tests/unit/io/WKBReaderTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/io/WKBReaderTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,4 +1,4 @@ -// $Id: WKBReaderTest.cpp 1842 2006-09-07 15:28:03Z strk $ +// $Id: WKBReaderTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::io::WKBReader // Uses geos::io::WKTReader to check correctness. @@ -6,9 +6,9 @@ // Currently only tests 2D geoms of all (7) types. // Tests NDR and XDR input and output . -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include @@ -16,7 +16,9 @@ #include #include #include +// std #include +#include #include namespace tut diff -Nru geos-3.1.0/tests/unit/linearref/LengthIndexedLineTest.cpp geos-3.2.2/tests/unit/linearref/LengthIndexedLineTest.cpp --- geos-3.1.0/tests/unit/linearref/LengthIndexedLineTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/linearref/LengthIndexedLineTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,417 @@ +// $Id: LengthIndexedLineTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Ported from JTS junit/linearref/AbstractIndexedLineTest.java rev. 1.10 +// and junit/linearref/LengthIndexedLineTest.java rev. 1.10 + +#include +#include +// geos +#include +#include +#include +#include // required for use in auto_ptr +#include +#include +#include +#ifndef ISNAN +#include +#endif + +// std +#include +#include +#include + +using namespace geos::geom; +using namespace geos::linearref; +using namespace std; + +/** + * Tests the {@link LocationIndexedLine} class + */ + +namespace tut { + + typedef auto_ptr GeomPtr; + static const double TOLERANCE_DIST = 0.001; + + struct test_lengthindexedline_data { + + test_lengthindexedline_data() + : + pm(), + gf(&pm), + reader(&gf) + { + } + + PrecisionModel pm; + GeometryFactory gf; + geos::io::WKTReader reader; + + void checkExpected(Geometry* result, const string expected) + { + GeomPtr subLine(reader.read(expected)); + ensure_equals_geometry(subLine.get(), result); + } + + void checkExpected(Geometry* result, const Geometry* expected) + { + ensure_equals_geometry(expected, result); + } + + void runIndicesOfThenExtract(string inputStr, + string subLineStr) + { + GeomPtr input(reader.read(inputStr)); + GeomPtr subLine(reader.read(subLineStr)); + GeomPtr result(indicesOfThenExtract(input.get(), subLine.get())); + + checkExpected(result.get(), subLine.get()); + } + + +/* + // example of indicesOfThenLocate method + private Geometry indicesOfThenLocate(LineString input, LineString subLine) + { + LocationIndexedLine indexedLine = new LocationIndexedLine(input); + LineStringLocation[] loc = indexedLine.indicesOf(subLine); + Geometry result = indexedLine.locate(loc[0], loc[1]); + return result; + } +*/ + + bool indexOfAfterCheck(Geometry* linearGeom, Coordinate testPt) + { + LengthIndexedLine indexedLine(linearGeom); + + // check locations are consecutive + double loc1 = indexedLine.indexOf(testPt); + double loc2 = indexedLine.indexOfAfter(testPt, loc1); + if (loc2 <= loc1) return false; + + // check extracted points are the same as the input + Coordinate pt1 = indexedLine.extractPoint(loc1); + Coordinate pt2 = indexedLine.extractPoint(loc2); + if (! pt1.equals2D(testPt)) return false; + if (! pt2.equals2D(testPt)) return false; + + return true; + } + + + void runIndexOfAfterTest(string inputStr, + string testPtWKT) + { + GeomPtr input(reader.read(inputStr)); + GeomPtr testPoint(reader.read(testPtWKT)); + const Coordinate* testPt = testPoint->getCoordinate(); + bool resultOK = indexOfAfterCheck(input.get(), *testPt); + ensure(resultOK); + } + + + void runOffsetTest(const string inputWKT, + const string testPtWKT, double offsetDistance, string expectedPtWKT) + { + GeomPtr input(reader.read(inputWKT)); + GeomPtr testPoint(reader.read(testPtWKT)); + GeomPtr expectedPoint(reader.read(expectedPtWKT)); + const Coordinate* testPt = testPoint->getCoordinate(); + const Coordinate* expectedPt = expectedPoint->getCoordinate(); + Coordinate offsetPt = extractOffsetAt(input.get(), *testPt, offsetDistance); + + bool isOk = offsetPt.distance(*expectedPt) < TOLERANCE_DIST; + if (! isOk) + cout << "Expected = " << *expectedPoint << " Actual = " << offsetPt << endl; + ensure(isOk); + } + + + Coordinate extractOffsetAt(Geometry* linearGeom, Coordinate testPt, double offsetDistance) + { + LengthIndexedLine indexedLine(linearGeom); + double index = indexedLine.indexOf(testPt); + return indexedLine.extractPoint(index, offsetDistance); + } + + void checkExtractLine(const char* wkt, double start, double end, const char* expected) + { + string wktstr(wkt); + GeomPtr linearGeom(reader.read(wktstr)); + LengthIndexedLine indexedLine(linearGeom.get()); + GeomPtr result(indexedLine.extractLine(start, end)); + checkExpected(result.get(), expected); + } + + + Geometry* indicesOfThenExtract(Geometry* linearGeom, Geometry* subLine) + { + LengthIndexedLine indexedLine(linearGeom); + double* loc = indexedLine.indicesOf(subLine); + Geometry* result = indexedLine.extractLine(loc[0], loc[1]); + delete [] loc; + return result; + } + +}; + typedef test_group group; + typedef group::object object; + + group test_lengthindexedline_group( + "geos::linearref::LocationIndexedLine"); + + //1 - testML + template<> + template<> + void object::test<1>() + { + runIndicesOfThenExtract("MULTILINESTRING ((0 0, 10 10), (20 20, 30 30))", + "MULTILINESTRING ((1 1, 10 10), (20 20, 25 25))"); +} + + + //2 - testPartOfSegmentNoVertex + template<> + template<> + void object::test<2>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 10 10, 20 20)", + "LINESTRING (1 1, 9 9)"); + } + + //3 - testPartOfSegmentContainingVertex() + template<> + template<> + void object::test<3>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 10 10, 20 20)", + "LINESTRING (5 5, 10 10, 15 15)"); + } + + /** + * Tests that duplicate coordinates are handled correctly. + * + * @throws Exception + */ + // 4 - testPartOfSegmentContainingDuplicateCoords + template<> + template<> + void object::test<4>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 10 10, 10 10, 20 20)", + "LINESTRING (5 5, 10 10, 10 10, 15 15)"); + } + + /** + * Following tests check that correct portion of loop is identified. + * This requires that the correct vertex for (0,0) is selected. + */ + + //5 - testLoopWithStartSubLine + template<> + template<> + void object::test<5>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 0 10, 10 10, 10 0, 0 0)", + "LINESTRING (0 0, 0 10, 10 10)"); + } + + //6 - testLoopWithEndingSubLine() + template<> + template<> + void object::test<6>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 0 10, 10 10, 10 0, 0 0)", + "LINESTRING (10 10, 10 0, 0 0)"); + } + + // test a subline equal to the parent loop + //7 - testLoopWithIdenticalSubLine() + template<> + template<> + void object::test<7>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 0 10, 10 10, 10 0, 0 0)", + "LINESTRING (0 0, 0 10, 10 10, 10 0, 0 0)"); + } + + // test a zero-length subline equal to the start point + //8 - testZeroLenSubLineAtStart() + template<> + template<> + void object::test<8>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 0 10, 10 10, 10 0, 0 0)", + "LINESTRING (0 0, 0 0)"); + } + + // test a zero-length subline equal to a mid point + //9 - testZeroLenSubLineAtMidVertex() + template<> + template<> + void object::test<9>() + { + runIndicesOfThenExtract("LINESTRING (0 0, 0 10, 10 10, 10 0, 0 0)", + "LINESTRING (10 10, 10 10)"); + } + + //10 - testIndexOfAfterSquare() + template<> + template<> + void object::test<10>() + { + runIndexOfAfterTest("LINESTRING (0 0, 0 10, 10 10, 10 0, 0 0)", + "POINT (0 0)"); + } + + //11 - testIndexOfAfterRibbon() + template<> + template<> + void object::test<11>() + { + runIndexOfAfterTest("LINESTRING (0 0, 0 60, 50 60, 50 20, -20 20)", + "POINT (0 20)"); + } + + //12 - testOffsetStartPoint() + template<> + template<> + void object::test<12>() + { + runOffsetTest("LINESTRING (0 0, 10 10, 10 10, 20 20)", "POINT(0 0)", 1.0, "POINT (-0.7071067811865475 0.7071067811865475)"); + runOffsetTest("LINESTRING (0 0, 10 10, 10 10, 20 20)", "POINT(0 0)", -1.0, "POINT (0.7071067811865475 -0.7071067811865475)"); + runOffsetTest("LINESTRING (0 0, 10 10, 10 10, 20 20)", "POINT(10 10)", 5.0, "POINT (6.464466094067262 13.535533905932738)"); + runOffsetTest("LINESTRING (0 0, 10 10, 10 10, 20 20)", "POINT(10 10)", -5.0, "POINT (13.535533905932738 6.464466094067262)"); + } + + + //13 - testExtractLineBeyondRange() + template<> + template<> + void object::test<13>() + { + checkExtractLine("LINESTRING (0 0, 10 10)", -100, 100, "LINESTRING (0 0, 10 10)"); + } + + //14 - testExtractLineReverse() + template<> + template<> + void object::test<14>() + { + checkExtractLine("LINESTRING (0 0, 10 0)", 9, 1, "LINESTRING (9 0, 1 0)"); + } + + //15 - testExtractLineReverseMulti() + template<> + template<> + void object::test<15>() + { + checkExtractLine("MULTILINESTRING ((0 0, 10 0), (20 0, 25 0, 30 0))", + 19, 1, "MULTILINESTRING ((29 0, 25 0, 20 0), (10 0, 1 0))"); + } + + //16 - testExtractLineNegative() + template<> + template<> + void object::test<16>() + { + checkExtractLine("LINESTRING (0 0, 10 0)", -9, -1, "LINESTRING (1 0, 9 0)"); + } + + //17 - testExtractLineNegativeReverse() + template<> + template<> + void object::test<17>() + { + checkExtractLine("LINESTRING (0 0, 10 0)", -1, -9, "LINESTRING (9 0, 1 0)"); + } + + //18 - testExtractLineIndexAtEndpoint() + template<> + template<> + void object::test<18>() + { + checkExtractLine("MULTILINESTRING ((0 0, 10 0), (20 0, 25 0, 30 0))", + 10, -1, "LINESTRING (20 0, 25 0, 29 0)"); + } + + //19 - testExtractLineBothIndicesAtEndpoint() + template<> + template<> + void object::test<19>() + { + checkExtractLine("MULTILINESTRING ((0 0, 10 0), (20 0, 25 0, 30 0))", + 10, 10, "LINESTRING (20 0, 20 0)"); + } + + //20 - testExtractLineBothIndicesAtEndpointNegative() + template<> + template<> + void object::test<20>() + { + checkExtractLine("MULTILINESTRING ((0 0, 10 0), (20 0, 25 0, 30 0))", + -10, 10, "LINESTRING (20 0, 20 0)"); + } + + //21 - testExtractPointBeyondRange() + template<> + template<> + void object::test<21>() + { + GeomPtr linearGeom(reader.read("LINESTRING (0 0, 10 10)")); + LengthIndexedLine indexedLine(linearGeom.get()); + Coordinate pt = indexedLine.extractPoint(100); + ensure(pt == Coordinate(10, 10)); + + Coordinate pt2 = indexedLine.extractPoint(0); + ensure(pt2 == Coordinate(0, 0)); + } + + //22 - testProjectPointWithDuplicateCoords() + template<> + template<> + void object::test<22>() + { + GeomPtr linearGeom(reader.read("LINESTRING (0 0, 10 0, 10 0, 20 0)")); + LengthIndexedLine indexedLine(linearGeom.get()); + double projIndex = indexedLine.project(Coordinate(10, 1)); + ensure(projIndex == 10.0); + } + + /** + * Tests that z values are interpolated + * + */ + //23 - testComputeZ() + template<> + template<> + void object::test<23>() + { + GeomPtr linearGeom(reader.read("LINESTRING (0 0 0, 10 10 10)")); + LengthIndexedLine indexedLine(linearGeom.get()); + double projIndex = indexedLine.project(Coordinate(5, 5)); + Coordinate projPt = indexedLine.extractPoint(projIndex); +// System.out.println(projPt); + ensure(projPt.equals3D(Coordinate(5, 5, 5))); + } + + /** + * Tests that if the input does not have Z ordinates, neither does the output. + * + */ + //24 - testComputeZNaN() + template<> + template<> + void object::test<24>() + { + + GeomPtr linearGeom(reader.read("LINESTRING (0 0, 10 10 10)")); + LengthIndexedLine indexedLine(linearGeom.get()); + double projIndex = indexedLine.project(Coordinate(5, 5)); + Coordinate projPt = indexedLine.extractPoint(projIndex); + ensure(0 != ISNAN(projPt.z)); + } + +} diff -Nru geos-3.1.0/tests/unit/Makefile.am geos-3.2.2/tests/unit/Makefile.am --- geos-3.1.0/tests/unit/Makefile.am 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/Makefile.am 2010-04-17 22:55:53.000000000 +0100 @@ -1,17 +1,25 @@ - -INCLUDES = -I$(top_srcdir)/source/headers -I$(top_srcdir)/tests/tut -I$(top_builddir)/capi +# $Id: Makefile.am 2975 2010-04-17 21:55:53Z strk $ +# +# tests/unit builds geos_unit - unit tests runner program +# +INCLUDES = -I$(top_srcdir)/source/headers -I$(top_srcdir)/tests/unit/tut -I$(top_builddir)/capi TESTS = geos_unit EXTRA_DIST = \ - capi/brokengrammar \ - capi/test.expected \ - capi/test.wkt \ - capi/testrunner.sh + tut/tut_assert.hpp \ + tut/tut_exception.hpp \ + tut/tut.hpp \ + tut/tut_posix.hpp \ + tut/tut_console_reporter.hpp \ + tut/tut_reporter.hpp \ + tut/tut_restartable.hpp \ + tut/tut_result.hpp \ + tut/tut_runner.hpp #noinst_PROGRAMS = geos_unit -check_PROGRAMS = geos_unit geostest threadtest badthreadtest +check_PROGRAMS = geos_unit #bin_PROGRAMS = geos_tut geos_unit_LDADD = \ @@ -25,7 +33,10 @@ algorithm/CGAlgorithms/isPointInRingTest.cpp \ algorithm/CGAlgorithms/computeOrientationTest.cpp \ algorithm/ConvexHullTest.cpp \ + algorithm/distance/DiscreteHausdorffDistanceTest.cpp \ algorithm/PointLocatorTest.cpp \ + algorithm/RobustLineIntersectionTest.cpp \ + algorithm/RobustLineIntersectorTest.cpp \ geom/CoordinateArraySequenceFactoryTest.cpp \ geom/CoordinateArraySequenceTest.cpp \ geom/CoordinateListTest.cpp \ @@ -50,35 +61,37 @@ index/quadtree/DoubleBitsTest.cpp \ io/ByteOrderValuesTest.cpp \ io/WKBReaderTest.cpp \ + linearref/LengthIndexedLineTest.cpp \ + noding/BasicSegmentStringTest.cpp \ + noding/NodedSegmentStringTest.cpp \ noding/SegmentNodeTest.cpp \ noding/SegmentPointComparatorTest.cpp \ - noding/SegmentStringTest.cpp \ + operation/buffer/BufferOpTest.cpp \ operation/distance/DistanceOpTest.cpp \ operation/IsSimpleOpTest.cpp \ - operation/overlay/FuzzyPointLocatorTest.cpp \ - operation/overlay/OffsetPointGeneratorTest.cpp \ - operation/overlay/OverlayResultValidatorTest.cpp \ + operation/overlay/validate/FuzzyPointLocatorTest.cpp \ + operation/overlay/validate/OffsetPointGeneratorTest.cpp \ + operation/overlay/validate/OverlayResultValidatorTest.cpp \ + operation/overlay/snap/GeometrySnapperTest.cpp \ + operation/overlay/snap/LineStringSnapperTest.cpp \ operation/union/CascadedPolygonUnionTest.cpp \ - precision/GeometrySnapperTest.cpp \ - precision/LineStringSnapperTest.cpp \ + operation/valid/IsValidTest.cpp \ + operation/valid/ValidClosedRingTest.cpp \ + operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp \ precision/SimpleGeometryPrecisionReducerTest.cpp \ simplify/DouglasPeuckerSimplifierTest.cpp \ simplify/TopologyPreservingSimplifierTest.cpp \ util/UniqueCoordinateArrayFilterTest.cpp \ capi/GEOSCoordSeqTest.cpp \ + capi/GEOSGeomFromWKBTest.cpp \ capi/GEOSGeomToWKTTest.cpp \ + capi/GEOSContainsTest.cpp \ + capi/GEOSWithinTest.cpp \ capi/GEOSSimplifyTest.cpp \ - capi/GEOSPolygonizer_getCutEdgesTest.cpp + capi/GEOSPreparedGeometryTest.cpp \ + capi/GEOSPolygonizer_getCutEdgesTest.cpp \ + capi/GEOSGetCentroidTest.cpp \ + capi/GEOSBufferTest.cpp noinst_HEADERS = \ utility.h - -geostest_SOURCES = capi/geostest.c -geostest_LDADD = $(top_builddir)/capi/libgeos_c.la - -threadtest_SOURCES = capi/threadtest.c -threadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread - -badthreadtest_SOURCES = capi/badthreadtest.c -badthreadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread - diff -Nru geos-3.1.0/tests/unit/Makefile.in geos-3.2.2/tests/unit/Makefile.in --- geos-3.1.0/tests/unit/Makefile.in 2009-03-11 19:14:07.000000000 +0000 +++ geos-3.2.2/tests/unit/Makefile.in 2010-04-18 16:08:15.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,17 +15,12 @@ @SET_MAKE@ -SOURCES = $(badthreadtest_SOURCES) $(geos_unit_SOURCES) $(geostest_SOURCES) $(threadtest_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -39,14 +35,19 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -check_PROGRAMS = geos_unit$(EXEEXT) geostest$(EXEEXT) \ - threadtest$(EXEEXT) badthreadtest$(EXEEXT) +TESTS = geos_unit$(EXEEXT) +check_PROGRAMS = geos_unit$(EXEEXT) subdir = tests/unit DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -55,12 +56,14 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = -am_badthreadtest_OBJECTS = badthreadtest.$(OBJEXT) -badthreadtest_OBJECTS = $(am_badthreadtest_OBJECTS) -badthreadtest_DEPENDENCIES = $(top_builddir)/capi/libgeos_c.la +CONFIG_CLEAN_VPATH_FILES = am_geos_unit_OBJECTS = geos_unit.$(OBJEXT) isCCWTest.$(OBJEXT) \ isPointInRingTest.$(OBJEXT) computeOrientationTest.$(OBJEXT) \ - ConvexHullTest.$(OBJEXT) PointLocatorTest.$(OBJEXT) \ + ConvexHullTest.$(OBJEXT) \ + DiscreteHausdorffDistanceTest.$(OBJEXT) \ + PointLocatorTest.$(OBJEXT) \ + RobustLineIntersectionTest.$(OBJEXT) \ + RobustLineIntersectorTest.$(OBJEXT) \ CoordinateArraySequenceFactoryTest.$(OBJEXT) \ CoordinateArraySequenceTest.$(OBJEXT) \ CoordinateListTest.$(OBJEXT) CoordinateTest.$(OBJEXT) \ @@ -74,60 +77,54 @@ PolygonTest.$(OBJEXT) PreparedGeometryFactoryTest.$(OBJEXT) \ TriangleTest.$(OBJEXT) DoubleBitsTest.$(OBJEXT) \ ByteOrderValuesTest.$(OBJEXT) WKBReaderTest.$(OBJEXT) \ - SegmentNodeTest.$(OBJEXT) SegmentPointComparatorTest.$(OBJEXT) \ - SegmentStringTest.$(OBJEXT) DistanceOpTest.$(OBJEXT) \ - IsSimpleOpTest.$(OBJEXT) FuzzyPointLocatorTest.$(OBJEXT) \ + LengthIndexedLineTest.$(OBJEXT) \ + BasicSegmentStringTest.$(OBJEXT) \ + NodedSegmentStringTest.$(OBJEXT) SegmentNodeTest.$(OBJEXT) \ + SegmentPointComparatorTest.$(OBJEXT) BufferOpTest.$(OBJEXT) \ + DistanceOpTest.$(OBJEXT) IsSimpleOpTest.$(OBJEXT) \ + FuzzyPointLocatorTest.$(OBJEXT) \ OffsetPointGeneratorTest.$(OBJEXT) \ OverlayResultValidatorTest.$(OBJEXT) \ - CascadedPolygonUnionTest.$(OBJEXT) \ GeometrySnapperTest.$(OBJEXT) LineStringSnapperTest.$(OBJEXT) \ + CascadedPolygonUnionTest.$(OBJEXT) IsValidTest.$(OBJEXT) \ + ValidClosedRingTest.$(OBJEXT) \ + ValidSelfTouchingRingFormingHoleTest.$(OBJEXT) \ SimpleGeometryPrecisionReducerTest.$(OBJEXT) \ DouglasPeuckerSimplifierTest.$(OBJEXT) \ TopologyPreservingSimplifierTest.$(OBJEXT) \ UniqueCoordinateArrayFilterTest.$(OBJEXT) \ - GEOSCoordSeqTest.$(OBJEXT) GEOSGeomToWKTTest.$(OBJEXT) \ - GEOSSimplifyTest.$(OBJEXT) \ - GEOSPolygonizer_getCutEdgesTest.$(OBJEXT) + GEOSCoordSeqTest.$(OBJEXT) GEOSGeomFromWKBTest.$(OBJEXT) \ + GEOSGeomToWKTTest.$(OBJEXT) GEOSContainsTest.$(OBJEXT) \ + GEOSWithinTest.$(OBJEXT) GEOSSimplifyTest.$(OBJEXT) \ + GEOSPreparedGeometryTest.$(OBJEXT) \ + GEOSPolygonizer_getCutEdgesTest.$(OBJEXT) \ + GEOSGetCentroidTest.$(OBJEXT) GEOSBufferTest.$(OBJEXT) geos_unit_OBJECTS = $(am_geos_unit_OBJECTS) geos_unit_DEPENDENCIES = $(top_builddir)/source/libgeos.la \ $(top_builddir)/capi/libgeos_c.la -am_geostest_OBJECTS = geostest.$(OBJEXT) -geostest_OBJECTS = $(am_geostest_OBJECTS) -geostest_DEPENDENCIES = $(top_builddir)/capi/libgeos_c.la -am_threadtest_OBJECTS = threadtest.$(OBJEXT) -threadtest_OBJECTS = $(am_threadtest_OBJECTS) -threadtest_DEPENDENCIES = $(top_builddir)/capi/libgeos_c.la -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -SOURCES = $(badthreadtest_SOURCES) $(geos_unit_SOURCES) \ - $(geostest_SOURCES) $(threadtest_SOURCES) -DIST_SOURCES = $(badthreadtest_SOURCES) $(geos_unit_SOURCES) \ - $(geostest_SOURCES) $(threadtest_SOURCES) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(geos_unit_SOURCES) +DIST_SOURCES = $(geos_unit_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -155,21 +152,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -178,20 +171,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -212,6 +213,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -223,19 +225,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -247,43 +243,65 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ -INCLUDES = -I$(top_srcdir)/source/headers -I$(top_srcdir)/tests/tut -I$(top_builddir)/capi -TESTS = geos_unit +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# $Id: Makefile.am 2975 2010-04-17 21:55:53Z strk $ +# +# tests/unit builds geos_unit - unit tests runner program +# +INCLUDES = -I$(top_srcdir)/source/headers -I$(top_srcdir)/tests/unit/tut -I$(top_builddir)/capi EXTRA_DIST = \ - capi/brokengrammar \ - capi/test.expected \ - capi/test.wkt \ - capi/testrunner.sh + tut/tut_assert.hpp \ + tut/tut_exception.hpp \ + tut/tut.hpp \ + tut/tut_posix.hpp \ + tut/tut_console_reporter.hpp \ + tut/tut_reporter.hpp \ + tut/tut_restartable.hpp \ + tut/tut_result.hpp \ + tut/tut_runner.hpp #bin_PROGRAMS = geos_tut geos_unit_LDADD = \ @@ -296,7 +314,10 @@ algorithm/CGAlgorithms/isPointInRingTest.cpp \ algorithm/CGAlgorithms/computeOrientationTest.cpp \ algorithm/ConvexHullTest.cpp \ + algorithm/distance/DiscreteHausdorffDistanceTest.cpp \ algorithm/PointLocatorTest.cpp \ + algorithm/RobustLineIntersectionTest.cpp \ + algorithm/RobustLineIntersectorTest.cpp \ geom/CoordinateArraySequenceFactoryTest.cpp \ geom/CoordinateArraySequenceTest.cpp \ geom/CoordinateListTest.cpp \ @@ -321,51 +342,57 @@ index/quadtree/DoubleBitsTest.cpp \ io/ByteOrderValuesTest.cpp \ io/WKBReaderTest.cpp \ + linearref/LengthIndexedLineTest.cpp \ + noding/BasicSegmentStringTest.cpp \ + noding/NodedSegmentStringTest.cpp \ noding/SegmentNodeTest.cpp \ noding/SegmentPointComparatorTest.cpp \ - noding/SegmentStringTest.cpp \ + operation/buffer/BufferOpTest.cpp \ operation/distance/DistanceOpTest.cpp \ operation/IsSimpleOpTest.cpp \ - operation/overlay/FuzzyPointLocatorTest.cpp \ - operation/overlay/OffsetPointGeneratorTest.cpp \ - operation/overlay/OverlayResultValidatorTest.cpp \ + operation/overlay/validate/FuzzyPointLocatorTest.cpp \ + operation/overlay/validate/OffsetPointGeneratorTest.cpp \ + operation/overlay/validate/OverlayResultValidatorTest.cpp \ + operation/overlay/snap/GeometrySnapperTest.cpp \ + operation/overlay/snap/LineStringSnapperTest.cpp \ operation/union/CascadedPolygonUnionTest.cpp \ - precision/GeometrySnapperTest.cpp \ - precision/LineStringSnapperTest.cpp \ + operation/valid/IsValidTest.cpp \ + operation/valid/ValidClosedRingTest.cpp \ + operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp \ precision/SimpleGeometryPrecisionReducerTest.cpp \ simplify/DouglasPeuckerSimplifierTest.cpp \ simplify/TopologyPreservingSimplifierTest.cpp \ util/UniqueCoordinateArrayFilterTest.cpp \ capi/GEOSCoordSeqTest.cpp \ + capi/GEOSGeomFromWKBTest.cpp \ capi/GEOSGeomToWKTTest.cpp \ + capi/GEOSContainsTest.cpp \ + capi/GEOSWithinTest.cpp \ capi/GEOSSimplifyTest.cpp \ - capi/GEOSPolygonizer_getCutEdgesTest.cpp + capi/GEOSPreparedGeometryTest.cpp \ + capi/GEOSPolygonizer_getCutEdgesTest.cpp \ + capi/GEOSGetCentroidTest.cpp \ + capi/GEOSBufferTest.cpp noinst_HEADERS = \ utility.h -geostest_SOURCES = capi/geostest.c -geostest_LDADD = $(top_builddir)/capi/libgeos_c.la -threadtest_SOURCES = capi/threadtest.c -threadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread -badthreadtest_SOURCES = capi/badthreadtest.c -badthreadtest_LDADD = $(top_builddir)/capi/libgeos_c.la -lpthread all: all-am .SUFFIXES: -.SUFFIXES: .c .cpp .lo .o .obj +.SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(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; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/unit/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/unit/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/unit/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/unit/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -383,25 +410,19 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -badthreadtest$(EXEEXT): $(badthreadtest_OBJECTS) $(badthreadtest_DEPENDENCIES) - @rm -f badthreadtest$(EXEEXT) - $(LINK) $(badthreadtest_LDFLAGS) $(badthreadtest_OBJECTS) $(badthreadtest_LDADD) $(LIBS) + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list geos_unit$(EXEEXT): $(geos_unit_OBJECTS) $(geos_unit_DEPENDENCIES) @rm -f geos_unit$(EXEEXT) - $(CXXLINK) $(geos_unit_LDFLAGS) $(geos_unit_OBJECTS) $(geos_unit_LDADD) $(LIBS) -geostest$(EXEEXT): $(geostest_OBJECTS) $(geostest_DEPENDENCIES) - @rm -f geostest$(EXEEXT) - $(LINK) $(geostest_LDFLAGS) $(geostest_OBJECTS) $(geostest_LDADD) $(LIBS) -threadtest$(EXEEXT): $(threadtest_OBJECTS) $(threadtest_DEPENDENCIES) - @rm -f threadtest$(EXEEXT) - $(LINK) $(threadtest_LDFLAGS) $(threadtest_OBJECTS) $(threadtest_LDADD) $(LIBS) + $(CXXLINK) $(geos_unit_OBJECTS) $(geos_unit_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -409,6 +430,8 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BasicSegmentStringTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BufferOpTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ByteOrderValuesTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CascadedPolygonUnionTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConvexHullTest.Po@am__quote@ @@ -417,19 +440,28 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CoordinateListTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CoordinateTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DimensionTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DiscreteHausdorffDistanceTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DistanceOpTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DoubleBitsTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DouglasPeuckerSimplifierTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EnvelopeTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FuzzyPointLocatorTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSBufferTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSContainsTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSCoordSeqTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSGeomFromWKBTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSGeomToWKTTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSGetCentroidTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSPreparedGeometryTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSSimplifyTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GEOSWithinTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeometryFactoryTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeometrySnapperTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IntersectionMatrixTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IsSimpleOpTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/IsValidTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LengthIndexedLineTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LineSegmentTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LineStringSnapperTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LineStringTest.Po@am__quote@ @@ -438,840 +470,988 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiLineStringTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiPointTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MultiPolygonTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NodedSegmentStringTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OffsetPointGeneratorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/OverlayResultValidatorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PointLocatorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PointTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PolygonTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PreparedGeometryFactoryTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RobustLineIntersectionTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RobustLineIntersectorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentNodeTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentPointComparatorTest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentStringTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TopologyPreservingSimplifierTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TriangleTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UniqueCoordinateArrayFilterTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ValidClosedRingTest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ValidSelfTouchingRingFormingHoleTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/WKBReaderTest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/badthreadtest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/computeOrientationTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/coversTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geos_unit.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geostest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isCCWTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isPointInRingTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isRectangleTest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadtest.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -badthreadtest.o: capi/badthreadtest.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT badthreadtest.o -MD -MP -MF "$(DEPDIR)/badthreadtest.Tpo" -c -o badthreadtest.o `test -f 'capi/badthreadtest.c' || echo '$(srcdir)/'`capi/badthreadtest.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/badthreadtest.Tpo" "$(DEPDIR)/badthreadtest.Po"; else rm -f "$(DEPDIR)/badthreadtest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='capi/badthreadtest.c' object='badthreadtest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o badthreadtest.o `test -f 'capi/badthreadtest.c' || echo '$(srcdir)/'`capi/badthreadtest.c - -badthreadtest.obj: capi/badthreadtest.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT badthreadtest.obj -MD -MP -MF "$(DEPDIR)/badthreadtest.Tpo" -c -o badthreadtest.obj `if test -f 'capi/badthreadtest.c'; then $(CYGPATH_W) 'capi/badthreadtest.c'; else $(CYGPATH_W) '$(srcdir)/capi/badthreadtest.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/badthreadtest.Tpo" "$(DEPDIR)/badthreadtest.Po"; else rm -f "$(DEPDIR)/badthreadtest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='capi/badthreadtest.c' object='badthreadtest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o badthreadtest.obj `if test -f 'capi/badthreadtest.c'; then $(CYGPATH_W) 'capi/badthreadtest.c'; else $(CYGPATH_W) '$(srcdir)/capi/badthreadtest.c'; fi` - -geostest.o: capi/geostest.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geostest.o -MD -MP -MF "$(DEPDIR)/geostest.Tpo" -c -o geostest.o `test -f 'capi/geostest.c' || echo '$(srcdir)/'`capi/geostest.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/geostest.Tpo" "$(DEPDIR)/geostest.Po"; else rm -f "$(DEPDIR)/geostest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='capi/geostest.c' object='geostest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geostest.o `test -f 'capi/geostest.c' || echo '$(srcdir)/'`capi/geostest.c - -geostest.obj: capi/geostest.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geostest.obj -MD -MP -MF "$(DEPDIR)/geostest.Tpo" -c -o geostest.obj `if test -f 'capi/geostest.c'; then $(CYGPATH_W) 'capi/geostest.c'; else $(CYGPATH_W) '$(srcdir)/capi/geostest.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/geostest.Tpo" "$(DEPDIR)/geostest.Po"; else rm -f "$(DEPDIR)/geostest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='capi/geostest.c' object='geostest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geostest.obj `if test -f 'capi/geostest.c'; then $(CYGPATH_W) 'capi/geostest.c'; else $(CYGPATH_W) '$(srcdir)/capi/geostest.c'; fi` - -threadtest.o: capi/threadtest.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT threadtest.o -MD -MP -MF "$(DEPDIR)/threadtest.Tpo" -c -o threadtest.o `test -f 'capi/threadtest.c' || echo '$(srcdir)/'`capi/threadtest.c; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/threadtest.Tpo" "$(DEPDIR)/threadtest.Po"; else rm -f "$(DEPDIR)/threadtest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='capi/threadtest.c' object='threadtest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o threadtest.o `test -f 'capi/threadtest.c' || echo '$(srcdir)/'`capi/threadtest.c - -threadtest.obj: capi/threadtest.c -@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT threadtest.obj -MD -MP -MF "$(DEPDIR)/threadtest.Tpo" -c -o threadtest.obj `if test -f 'capi/threadtest.c'; then $(CYGPATH_W) 'capi/threadtest.c'; else $(CYGPATH_W) '$(srcdir)/capi/threadtest.c'; fi`; \ -@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/threadtest.Tpo" "$(DEPDIR)/threadtest.Po"; else rm -f "$(DEPDIR)/threadtest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='capi/threadtest.c' object='threadtest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o threadtest.obj `if test -f 'capi/threadtest.c'; then $(CYGPATH_W) 'capi/threadtest.c'; else $(CYGPATH_W) '$(srcdir)/capi/threadtest.c'; fi` .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< isCCWTest.o: algorithm/CGAlgorithms/isCCWTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isCCWTest.o -MD -MP -MF "$(DEPDIR)/isCCWTest.Tpo" -c -o isCCWTest.o `test -f 'algorithm/CGAlgorithms/isCCWTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/isCCWTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/isCCWTest.Tpo" "$(DEPDIR)/isCCWTest.Po"; else rm -f "$(DEPDIR)/isCCWTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isCCWTest.o -MD -MP -MF $(DEPDIR)/isCCWTest.Tpo -c -o isCCWTest.o `test -f 'algorithm/CGAlgorithms/isCCWTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/isCCWTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/isCCWTest.Tpo $(DEPDIR)/isCCWTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/CGAlgorithms/isCCWTest.cpp' object='isCCWTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isCCWTest.o `test -f 'algorithm/CGAlgorithms/isCCWTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/isCCWTest.cpp isCCWTest.obj: algorithm/CGAlgorithms/isCCWTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isCCWTest.obj -MD -MP -MF "$(DEPDIR)/isCCWTest.Tpo" -c -o isCCWTest.obj `if test -f 'algorithm/CGAlgorithms/isCCWTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/isCCWTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/isCCWTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/isCCWTest.Tpo" "$(DEPDIR)/isCCWTest.Po"; else rm -f "$(DEPDIR)/isCCWTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isCCWTest.obj -MD -MP -MF $(DEPDIR)/isCCWTest.Tpo -c -o isCCWTest.obj `if test -f 'algorithm/CGAlgorithms/isCCWTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/isCCWTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/isCCWTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/isCCWTest.Tpo $(DEPDIR)/isCCWTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/CGAlgorithms/isCCWTest.cpp' object='isCCWTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isCCWTest.obj `if test -f 'algorithm/CGAlgorithms/isCCWTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/isCCWTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/isCCWTest.cpp'; fi` isPointInRingTest.o: algorithm/CGAlgorithms/isPointInRingTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isPointInRingTest.o -MD -MP -MF "$(DEPDIR)/isPointInRingTest.Tpo" -c -o isPointInRingTest.o `test -f 'algorithm/CGAlgorithms/isPointInRingTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/isPointInRingTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/isPointInRingTest.Tpo" "$(DEPDIR)/isPointInRingTest.Po"; else rm -f "$(DEPDIR)/isPointInRingTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isPointInRingTest.o -MD -MP -MF $(DEPDIR)/isPointInRingTest.Tpo -c -o isPointInRingTest.o `test -f 'algorithm/CGAlgorithms/isPointInRingTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/isPointInRingTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/isPointInRingTest.Tpo $(DEPDIR)/isPointInRingTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/CGAlgorithms/isPointInRingTest.cpp' object='isPointInRingTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isPointInRingTest.o `test -f 'algorithm/CGAlgorithms/isPointInRingTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/isPointInRingTest.cpp isPointInRingTest.obj: algorithm/CGAlgorithms/isPointInRingTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isPointInRingTest.obj -MD -MP -MF "$(DEPDIR)/isPointInRingTest.Tpo" -c -o isPointInRingTest.obj `if test -f 'algorithm/CGAlgorithms/isPointInRingTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/isPointInRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/isPointInRingTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/isPointInRingTest.Tpo" "$(DEPDIR)/isPointInRingTest.Po"; else rm -f "$(DEPDIR)/isPointInRingTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isPointInRingTest.obj -MD -MP -MF $(DEPDIR)/isPointInRingTest.Tpo -c -o isPointInRingTest.obj `if test -f 'algorithm/CGAlgorithms/isPointInRingTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/isPointInRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/isPointInRingTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/isPointInRingTest.Tpo $(DEPDIR)/isPointInRingTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/CGAlgorithms/isPointInRingTest.cpp' object='isPointInRingTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isPointInRingTest.obj `if test -f 'algorithm/CGAlgorithms/isPointInRingTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/isPointInRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/isPointInRingTest.cpp'; fi` computeOrientationTest.o: algorithm/CGAlgorithms/computeOrientationTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT computeOrientationTest.o -MD -MP -MF "$(DEPDIR)/computeOrientationTest.Tpo" -c -o computeOrientationTest.o `test -f 'algorithm/CGAlgorithms/computeOrientationTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/computeOrientationTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/computeOrientationTest.Tpo" "$(DEPDIR)/computeOrientationTest.Po"; else rm -f "$(DEPDIR)/computeOrientationTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT computeOrientationTest.o -MD -MP -MF $(DEPDIR)/computeOrientationTest.Tpo -c -o computeOrientationTest.o `test -f 'algorithm/CGAlgorithms/computeOrientationTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/computeOrientationTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/computeOrientationTest.Tpo $(DEPDIR)/computeOrientationTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/CGAlgorithms/computeOrientationTest.cpp' object='computeOrientationTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o computeOrientationTest.o `test -f 'algorithm/CGAlgorithms/computeOrientationTest.cpp' || echo '$(srcdir)/'`algorithm/CGAlgorithms/computeOrientationTest.cpp computeOrientationTest.obj: algorithm/CGAlgorithms/computeOrientationTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT computeOrientationTest.obj -MD -MP -MF "$(DEPDIR)/computeOrientationTest.Tpo" -c -o computeOrientationTest.obj `if test -f 'algorithm/CGAlgorithms/computeOrientationTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/computeOrientationTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/computeOrientationTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/computeOrientationTest.Tpo" "$(DEPDIR)/computeOrientationTest.Po"; else rm -f "$(DEPDIR)/computeOrientationTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT computeOrientationTest.obj -MD -MP -MF $(DEPDIR)/computeOrientationTest.Tpo -c -o computeOrientationTest.obj `if test -f 'algorithm/CGAlgorithms/computeOrientationTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/computeOrientationTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/computeOrientationTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/computeOrientationTest.Tpo $(DEPDIR)/computeOrientationTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/CGAlgorithms/computeOrientationTest.cpp' object='computeOrientationTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o computeOrientationTest.obj `if test -f 'algorithm/CGAlgorithms/computeOrientationTest.cpp'; then $(CYGPATH_W) 'algorithm/CGAlgorithms/computeOrientationTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/CGAlgorithms/computeOrientationTest.cpp'; fi` ConvexHullTest.o: algorithm/ConvexHullTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConvexHullTest.o -MD -MP -MF "$(DEPDIR)/ConvexHullTest.Tpo" -c -o ConvexHullTest.o `test -f 'algorithm/ConvexHullTest.cpp' || echo '$(srcdir)/'`algorithm/ConvexHullTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ConvexHullTest.Tpo" "$(DEPDIR)/ConvexHullTest.Po"; else rm -f "$(DEPDIR)/ConvexHullTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConvexHullTest.o -MD -MP -MF $(DEPDIR)/ConvexHullTest.Tpo -c -o ConvexHullTest.o `test -f 'algorithm/ConvexHullTest.cpp' || echo '$(srcdir)/'`algorithm/ConvexHullTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ConvexHullTest.Tpo $(DEPDIR)/ConvexHullTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/ConvexHullTest.cpp' object='ConvexHullTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ConvexHullTest.o `test -f 'algorithm/ConvexHullTest.cpp' || echo '$(srcdir)/'`algorithm/ConvexHullTest.cpp ConvexHullTest.obj: algorithm/ConvexHullTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConvexHullTest.obj -MD -MP -MF "$(DEPDIR)/ConvexHullTest.Tpo" -c -o ConvexHullTest.obj `if test -f 'algorithm/ConvexHullTest.cpp'; then $(CYGPATH_W) 'algorithm/ConvexHullTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/ConvexHullTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ConvexHullTest.Tpo" "$(DEPDIR)/ConvexHullTest.Po"; else rm -f "$(DEPDIR)/ConvexHullTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConvexHullTest.obj -MD -MP -MF $(DEPDIR)/ConvexHullTest.Tpo -c -o ConvexHullTest.obj `if test -f 'algorithm/ConvexHullTest.cpp'; then $(CYGPATH_W) 'algorithm/ConvexHullTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/ConvexHullTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ConvexHullTest.Tpo $(DEPDIR)/ConvexHullTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/ConvexHullTest.cpp' object='ConvexHullTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ConvexHullTest.obj `if test -f 'algorithm/ConvexHullTest.cpp'; then $(CYGPATH_W) 'algorithm/ConvexHullTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/ConvexHullTest.cpp'; fi` +DiscreteHausdorffDistanceTest.o: algorithm/distance/DiscreteHausdorffDistanceTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DiscreteHausdorffDistanceTest.o -MD -MP -MF $(DEPDIR)/DiscreteHausdorffDistanceTest.Tpo -c -o DiscreteHausdorffDistanceTest.o `test -f 'algorithm/distance/DiscreteHausdorffDistanceTest.cpp' || echo '$(srcdir)/'`algorithm/distance/DiscreteHausdorffDistanceTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DiscreteHausdorffDistanceTest.Tpo $(DEPDIR)/DiscreteHausdorffDistanceTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/distance/DiscreteHausdorffDistanceTest.cpp' object='DiscreteHausdorffDistanceTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DiscreteHausdorffDistanceTest.o `test -f 'algorithm/distance/DiscreteHausdorffDistanceTest.cpp' || echo '$(srcdir)/'`algorithm/distance/DiscreteHausdorffDistanceTest.cpp + +DiscreteHausdorffDistanceTest.obj: algorithm/distance/DiscreteHausdorffDistanceTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DiscreteHausdorffDistanceTest.obj -MD -MP -MF $(DEPDIR)/DiscreteHausdorffDistanceTest.Tpo -c -o DiscreteHausdorffDistanceTest.obj `if test -f 'algorithm/distance/DiscreteHausdorffDistanceTest.cpp'; then $(CYGPATH_W) 'algorithm/distance/DiscreteHausdorffDistanceTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/distance/DiscreteHausdorffDistanceTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DiscreteHausdorffDistanceTest.Tpo $(DEPDIR)/DiscreteHausdorffDistanceTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/distance/DiscreteHausdorffDistanceTest.cpp' object='DiscreteHausdorffDistanceTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DiscreteHausdorffDistanceTest.obj `if test -f 'algorithm/distance/DiscreteHausdorffDistanceTest.cpp'; then $(CYGPATH_W) 'algorithm/distance/DiscreteHausdorffDistanceTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/distance/DiscreteHausdorffDistanceTest.cpp'; fi` + PointLocatorTest.o: algorithm/PointLocatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointLocatorTest.o -MD -MP -MF "$(DEPDIR)/PointLocatorTest.Tpo" -c -o PointLocatorTest.o `test -f 'algorithm/PointLocatorTest.cpp' || echo '$(srcdir)/'`algorithm/PointLocatorTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PointLocatorTest.Tpo" "$(DEPDIR)/PointLocatorTest.Po"; else rm -f "$(DEPDIR)/PointLocatorTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointLocatorTest.o -MD -MP -MF $(DEPDIR)/PointLocatorTest.Tpo -c -o PointLocatorTest.o `test -f 'algorithm/PointLocatorTest.cpp' || echo '$(srcdir)/'`algorithm/PointLocatorTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PointLocatorTest.Tpo $(DEPDIR)/PointLocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/PointLocatorTest.cpp' object='PointLocatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PointLocatorTest.o `test -f 'algorithm/PointLocatorTest.cpp' || echo '$(srcdir)/'`algorithm/PointLocatorTest.cpp PointLocatorTest.obj: algorithm/PointLocatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointLocatorTest.obj -MD -MP -MF "$(DEPDIR)/PointLocatorTest.Tpo" -c -o PointLocatorTest.obj `if test -f 'algorithm/PointLocatorTest.cpp'; then $(CYGPATH_W) 'algorithm/PointLocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/PointLocatorTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PointLocatorTest.Tpo" "$(DEPDIR)/PointLocatorTest.Po"; else rm -f "$(DEPDIR)/PointLocatorTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointLocatorTest.obj -MD -MP -MF $(DEPDIR)/PointLocatorTest.Tpo -c -o PointLocatorTest.obj `if test -f 'algorithm/PointLocatorTest.cpp'; then $(CYGPATH_W) 'algorithm/PointLocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/PointLocatorTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PointLocatorTest.Tpo $(DEPDIR)/PointLocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/PointLocatorTest.cpp' object='PointLocatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PointLocatorTest.obj `if test -f 'algorithm/PointLocatorTest.cpp'; then $(CYGPATH_W) 'algorithm/PointLocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/PointLocatorTest.cpp'; fi` +RobustLineIntersectionTest.o: algorithm/RobustLineIntersectionTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT RobustLineIntersectionTest.o -MD -MP -MF $(DEPDIR)/RobustLineIntersectionTest.Tpo -c -o RobustLineIntersectionTest.o `test -f 'algorithm/RobustLineIntersectionTest.cpp' || echo '$(srcdir)/'`algorithm/RobustLineIntersectionTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/RobustLineIntersectionTest.Tpo $(DEPDIR)/RobustLineIntersectionTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/RobustLineIntersectionTest.cpp' object='RobustLineIntersectionTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o RobustLineIntersectionTest.o `test -f 'algorithm/RobustLineIntersectionTest.cpp' || echo '$(srcdir)/'`algorithm/RobustLineIntersectionTest.cpp + +RobustLineIntersectionTest.obj: algorithm/RobustLineIntersectionTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT RobustLineIntersectionTest.obj -MD -MP -MF $(DEPDIR)/RobustLineIntersectionTest.Tpo -c -o RobustLineIntersectionTest.obj `if test -f 'algorithm/RobustLineIntersectionTest.cpp'; then $(CYGPATH_W) 'algorithm/RobustLineIntersectionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/RobustLineIntersectionTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/RobustLineIntersectionTest.Tpo $(DEPDIR)/RobustLineIntersectionTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/RobustLineIntersectionTest.cpp' object='RobustLineIntersectionTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o RobustLineIntersectionTest.obj `if test -f 'algorithm/RobustLineIntersectionTest.cpp'; then $(CYGPATH_W) 'algorithm/RobustLineIntersectionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/RobustLineIntersectionTest.cpp'; fi` + +RobustLineIntersectorTest.o: algorithm/RobustLineIntersectorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT RobustLineIntersectorTest.o -MD -MP -MF $(DEPDIR)/RobustLineIntersectorTest.Tpo -c -o RobustLineIntersectorTest.o `test -f 'algorithm/RobustLineIntersectorTest.cpp' || echo '$(srcdir)/'`algorithm/RobustLineIntersectorTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/RobustLineIntersectorTest.Tpo $(DEPDIR)/RobustLineIntersectorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/RobustLineIntersectorTest.cpp' object='RobustLineIntersectorTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o RobustLineIntersectorTest.o `test -f 'algorithm/RobustLineIntersectorTest.cpp' || echo '$(srcdir)/'`algorithm/RobustLineIntersectorTest.cpp + +RobustLineIntersectorTest.obj: algorithm/RobustLineIntersectorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT RobustLineIntersectorTest.obj -MD -MP -MF $(DEPDIR)/RobustLineIntersectorTest.Tpo -c -o RobustLineIntersectorTest.obj `if test -f 'algorithm/RobustLineIntersectorTest.cpp'; then $(CYGPATH_W) 'algorithm/RobustLineIntersectorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/RobustLineIntersectorTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/RobustLineIntersectorTest.Tpo $(DEPDIR)/RobustLineIntersectorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='algorithm/RobustLineIntersectorTest.cpp' object='RobustLineIntersectorTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o RobustLineIntersectorTest.obj `if test -f 'algorithm/RobustLineIntersectorTest.cpp'; then $(CYGPATH_W) 'algorithm/RobustLineIntersectorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/algorithm/RobustLineIntersectorTest.cpp'; fi` + CoordinateArraySequenceFactoryTest.o: geom/CoordinateArraySequenceFactoryTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceFactoryTest.o -MD -MP -MF "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo" -c -o CoordinateArraySequenceFactoryTest.o `test -f 'geom/CoordinateArraySequenceFactoryTest.cpp' || echo '$(srcdir)/'`geom/CoordinateArraySequenceFactoryTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo" "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Po"; else rm -f "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceFactoryTest.o -MD -MP -MF $(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo -c -o CoordinateArraySequenceFactoryTest.o `test -f 'geom/CoordinateArraySequenceFactoryTest.cpp' || echo '$(srcdir)/'`geom/CoordinateArraySequenceFactoryTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo $(DEPDIR)/CoordinateArraySequenceFactoryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateArraySequenceFactoryTest.cpp' object='CoordinateArraySequenceFactoryTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateArraySequenceFactoryTest.o `test -f 'geom/CoordinateArraySequenceFactoryTest.cpp' || echo '$(srcdir)/'`geom/CoordinateArraySequenceFactoryTest.cpp CoordinateArraySequenceFactoryTest.obj: geom/CoordinateArraySequenceFactoryTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceFactoryTest.obj -MD -MP -MF "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo" -c -o CoordinateArraySequenceFactoryTest.obj `if test -f 'geom/CoordinateArraySequenceFactoryTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateArraySequenceFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateArraySequenceFactoryTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo" "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Po"; else rm -f "$(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceFactoryTest.obj -MD -MP -MF $(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo -c -o CoordinateArraySequenceFactoryTest.obj `if test -f 'geom/CoordinateArraySequenceFactoryTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateArraySequenceFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateArraySequenceFactoryTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateArraySequenceFactoryTest.Tpo $(DEPDIR)/CoordinateArraySequenceFactoryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateArraySequenceFactoryTest.cpp' object='CoordinateArraySequenceFactoryTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateArraySequenceFactoryTest.obj `if test -f 'geom/CoordinateArraySequenceFactoryTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateArraySequenceFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateArraySequenceFactoryTest.cpp'; fi` CoordinateArraySequenceTest.o: geom/CoordinateArraySequenceTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceTest.o -MD -MP -MF "$(DEPDIR)/CoordinateArraySequenceTest.Tpo" -c -o CoordinateArraySequenceTest.o `test -f 'geom/CoordinateArraySequenceTest.cpp' || echo '$(srcdir)/'`geom/CoordinateArraySequenceTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateArraySequenceTest.Tpo" "$(DEPDIR)/CoordinateArraySequenceTest.Po"; else rm -f "$(DEPDIR)/CoordinateArraySequenceTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceTest.o -MD -MP -MF $(DEPDIR)/CoordinateArraySequenceTest.Tpo -c -o CoordinateArraySequenceTest.o `test -f 'geom/CoordinateArraySequenceTest.cpp' || echo '$(srcdir)/'`geom/CoordinateArraySequenceTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateArraySequenceTest.Tpo $(DEPDIR)/CoordinateArraySequenceTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateArraySequenceTest.cpp' object='CoordinateArraySequenceTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateArraySequenceTest.o `test -f 'geom/CoordinateArraySequenceTest.cpp' || echo '$(srcdir)/'`geom/CoordinateArraySequenceTest.cpp CoordinateArraySequenceTest.obj: geom/CoordinateArraySequenceTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceTest.obj -MD -MP -MF "$(DEPDIR)/CoordinateArraySequenceTest.Tpo" -c -o CoordinateArraySequenceTest.obj `if test -f 'geom/CoordinateArraySequenceTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateArraySequenceTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateArraySequenceTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateArraySequenceTest.Tpo" "$(DEPDIR)/CoordinateArraySequenceTest.Po"; else rm -f "$(DEPDIR)/CoordinateArraySequenceTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateArraySequenceTest.obj -MD -MP -MF $(DEPDIR)/CoordinateArraySequenceTest.Tpo -c -o CoordinateArraySequenceTest.obj `if test -f 'geom/CoordinateArraySequenceTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateArraySequenceTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateArraySequenceTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateArraySequenceTest.Tpo $(DEPDIR)/CoordinateArraySequenceTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateArraySequenceTest.cpp' object='CoordinateArraySequenceTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateArraySequenceTest.obj `if test -f 'geom/CoordinateArraySequenceTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateArraySequenceTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateArraySequenceTest.cpp'; fi` CoordinateListTest.o: geom/CoordinateListTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateListTest.o -MD -MP -MF "$(DEPDIR)/CoordinateListTest.Tpo" -c -o CoordinateListTest.o `test -f 'geom/CoordinateListTest.cpp' || echo '$(srcdir)/'`geom/CoordinateListTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateListTest.Tpo" "$(DEPDIR)/CoordinateListTest.Po"; else rm -f "$(DEPDIR)/CoordinateListTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateListTest.o -MD -MP -MF $(DEPDIR)/CoordinateListTest.Tpo -c -o CoordinateListTest.o `test -f 'geom/CoordinateListTest.cpp' || echo '$(srcdir)/'`geom/CoordinateListTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateListTest.Tpo $(DEPDIR)/CoordinateListTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateListTest.cpp' object='CoordinateListTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateListTest.o `test -f 'geom/CoordinateListTest.cpp' || echo '$(srcdir)/'`geom/CoordinateListTest.cpp CoordinateListTest.obj: geom/CoordinateListTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateListTest.obj -MD -MP -MF "$(DEPDIR)/CoordinateListTest.Tpo" -c -o CoordinateListTest.obj `if test -f 'geom/CoordinateListTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateListTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateListTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateListTest.Tpo" "$(DEPDIR)/CoordinateListTest.Po"; else rm -f "$(DEPDIR)/CoordinateListTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateListTest.obj -MD -MP -MF $(DEPDIR)/CoordinateListTest.Tpo -c -o CoordinateListTest.obj `if test -f 'geom/CoordinateListTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateListTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateListTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateListTest.Tpo $(DEPDIR)/CoordinateListTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateListTest.cpp' object='CoordinateListTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateListTest.obj `if test -f 'geom/CoordinateListTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateListTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateListTest.cpp'; fi` CoordinateTest.o: geom/CoordinateTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateTest.o -MD -MP -MF "$(DEPDIR)/CoordinateTest.Tpo" -c -o CoordinateTest.o `test -f 'geom/CoordinateTest.cpp' || echo '$(srcdir)/'`geom/CoordinateTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateTest.Tpo" "$(DEPDIR)/CoordinateTest.Po"; else rm -f "$(DEPDIR)/CoordinateTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateTest.o -MD -MP -MF $(DEPDIR)/CoordinateTest.Tpo -c -o CoordinateTest.o `test -f 'geom/CoordinateTest.cpp' || echo '$(srcdir)/'`geom/CoordinateTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateTest.Tpo $(DEPDIR)/CoordinateTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateTest.cpp' object='CoordinateTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateTest.o `test -f 'geom/CoordinateTest.cpp' || echo '$(srcdir)/'`geom/CoordinateTest.cpp CoordinateTest.obj: geom/CoordinateTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateTest.obj -MD -MP -MF "$(DEPDIR)/CoordinateTest.Tpo" -c -o CoordinateTest.obj `if test -f 'geom/CoordinateTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CoordinateTest.Tpo" "$(DEPDIR)/CoordinateTest.Po"; else rm -f "$(DEPDIR)/CoordinateTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CoordinateTest.obj -MD -MP -MF $(DEPDIR)/CoordinateTest.Tpo -c -o CoordinateTest.obj `if test -f 'geom/CoordinateTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CoordinateTest.Tpo $(DEPDIR)/CoordinateTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/CoordinateTest.cpp' object='CoordinateTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CoordinateTest.obj `if test -f 'geom/CoordinateTest.cpp'; then $(CYGPATH_W) 'geom/CoordinateTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/CoordinateTest.cpp'; fi` DimensionTest.o: geom/DimensionTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DimensionTest.o -MD -MP -MF "$(DEPDIR)/DimensionTest.Tpo" -c -o DimensionTest.o `test -f 'geom/DimensionTest.cpp' || echo '$(srcdir)/'`geom/DimensionTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DimensionTest.Tpo" "$(DEPDIR)/DimensionTest.Po"; else rm -f "$(DEPDIR)/DimensionTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DimensionTest.o -MD -MP -MF $(DEPDIR)/DimensionTest.Tpo -c -o DimensionTest.o `test -f 'geom/DimensionTest.cpp' || echo '$(srcdir)/'`geom/DimensionTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DimensionTest.Tpo $(DEPDIR)/DimensionTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/DimensionTest.cpp' object='DimensionTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DimensionTest.o `test -f 'geom/DimensionTest.cpp' || echo '$(srcdir)/'`geom/DimensionTest.cpp DimensionTest.obj: geom/DimensionTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DimensionTest.obj -MD -MP -MF "$(DEPDIR)/DimensionTest.Tpo" -c -o DimensionTest.obj `if test -f 'geom/DimensionTest.cpp'; then $(CYGPATH_W) 'geom/DimensionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/DimensionTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DimensionTest.Tpo" "$(DEPDIR)/DimensionTest.Po"; else rm -f "$(DEPDIR)/DimensionTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DimensionTest.obj -MD -MP -MF $(DEPDIR)/DimensionTest.Tpo -c -o DimensionTest.obj `if test -f 'geom/DimensionTest.cpp'; then $(CYGPATH_W) 'geom/DimensionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/DimensionTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DimensionTest.Tpo $(DEPDIR)/DimensionTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/DimensionTest.cpp' object='DimensionTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DimensionTest.obj `if test -f 'geom/DimensionTest.cpp'; then $(CYGPATH_W) 'geom/DimensionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/DimensionTest.cpp'; fi` EnvelopeTest.o: geom/EnvelopeTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EnvelopeTest.o -MD -MP -MF "$(DEPDIR)/EnvelopeTest.Tpo" -c -o EnvelopeTest.o `test -f 'geom/EnvelopeTest.cpp' || echo '$(srcdir)/'`geom/EnvelopeTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/EnvelopeTest.Tpo" "$(DEPDIR)/EnvelopeTest.Po"; else rm -f "$(DEPDIR)/EnvelopeTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EnvelopeTest.o -MD -MP -MF $(DEPDIR)/EnvelopeTest.Tpo -c -o EnvelopeTest.o `test -f 'geom/EnvelopeTest.cpp' || echo '$(srcdir)/'`geom/EnvelopeTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/EnvelopeTest.Tpo $(DEPDIR)/EnvelopeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/EnvelopeTest.cpp' object='EnvelopeTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o EnvelopeTest.o `test -f 'geom/EnvelopeTest.cpp' || echo '$(srcdir)/'`geom/EnvelopeTest.cpp EnvelopeTest.obj: geom/EnvelopeTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EnvelopeTest.obj -MD -MP -MF "$(DEPDIR)/EnvelopeTest.Tpo" -c -o EnvelopeTest.obj `if test -f 'geom/EnvelopeTest.cpp'; then $(CYGPATH_W) 'geom/EnvelopeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/EnvelopeTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/EnvelopeTest.Tpo" "$(DEPDIR)/EnvelopeTest.Po"; else rm -f "$(DEPDIR)/EnvelopeTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT EnvelopeTest.obj -MD -MP -MF $(DEPDIR)/EnvelopeTest.Tpo -c -o EnvelopeTest.obj `if test -f 'geom/EnvelopeTest.cpp'; then $(CYGPATH_W) 'geom/EnvelopeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/EnvelopeTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/EnvelopeTest.Tpo $(DEPDIR)/EnvelopeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/EnvelopeTest.cpp' object='EnvelopeTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o EnvelopeTest.obj `if test -f 'geom/EnvelopeTest.cpp'; then $(CYGPATH_W) 'geom/EnvelopeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/EnvelopeTest.cpp'; fi` isRectangleTest.o: geom/Geometry/isRectangleTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isRectangleTest.o -MD -MP -MF "$(DEPDIR)/isRectangleTest.Tpo" -c -o isRectangleTest.o `test -f 'geom/Geometry/isRectangleTest.cpp' || echo '$(srcdir)/'`geom/Geometry/isRectangleTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/isRectangleTest.Tpo" "$(DEPDIR)/isRectangleTest.Po"; else rm -f "$(DEPDIR)/isRectangleTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isRectangleTest.o -MD -MP -MF $(DEPDIR)/isRectangleTest.Tpo -c -o isRectangleTest.o `test -f 'geom/Geometry/isRectangleTest.cpp' || echo '$(srcdir)/'`geom/Geometry/isRectangleTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/isRectangleTest.Tpo $(DEPDIR)/isRectangleTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/Geometry/isRectangleTest.cpp' object='isRectangleTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isRectangleTest.o `test -f 'geom/Geometry/isRectangleTest.cpp' || echo '$(srcdir)/'`geom/Geometry/isRectangleTest.cpp isRectangleTest.obj: geom/Geometry/isRectangleTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isRectangleTest.obj -MD -MP -MF "$(DEPDIR)/isRectangleTest.Tpo" -c -o isRectangleTest.obj `if test -f 'geom/Geometry/isRectangleTest.cpp'; then $(CYGPATH_W) 'geom/Geometry/isRectangleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/Geometry/isRectangleTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/isRectangleTest.Tpo" "$(DEPDIR)/isRectangleTest.Po"; else rm -f "$(DEPDIR)/isRectangleTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT isRectangleTest.obj -MD -MP -MF $(DEPDIR)/isRectangleTest.Tpo -c -o isRectangleTest.obj `if test -f 'geom/Geometry/isRectangleTest.cpp'; then $(CYGPATH_W) 'geom/Geometry/isRectangleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/Geometry/isRectangleTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/isRectangleTest.Tpo $(DEPDIR)/isRectangleTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/Geometry/isRectangleTest.cpp' object='isRectangleTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o isRectangleTest.obj `if test -f 'geom/Geometry/isRectangleTest.cpp'; then $(CYGPATH_W) 'geom/Geometry/isRectangleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/Geometry/isRectangleTest.cpp'; fi` coversTest.o: geom/Geometry/coversTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT coversTest.o -MD -MP -MF "$(DEPDIR)/coversTest.Tpo" -c -o coversTest.o `test -f 'geom/Geometry/coversTest.cpp' || echo '$(srcdir)/'`geom/Geometry/coversTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/coversTest.Tpo" "$(DEPDIR)/coversTest.Po"; else rm -f "$(DEPDIR)/coversTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT coversTest.o -MD -MP -MF $(DEPDIR)/coversTest.Tpo -c -o coversTest.o `test -f 'geom/Geometry/coversTest.cpp' || echo '$(srcdir)/'`geom/Geometry/coversTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/coversTest.Tpo $(DEPDIR)/coversTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/Geometry/coversTest.cpp' object='coversTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coversTest.o `test -f 'geom/Geometry/coversTest.cpp' || echo '$(srcdir)/'`geom/Geometry/coversTest.cpp coversTest.obj: geom/Geometry/coversTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT coversTest.obj -MD -MP -MF "$(DEPDIR)/coversTest.Tpo" -c -o coversTest.obj `if test -f 'geom/Geometry/coversTest.cpp'; then $(CYGPATH_W) 'geom/Geometry/coversTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/Geometry/coversTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/coversTest.Tpo" "$(DEPDIR)/coversTest.Po"; else rm -f "$(DEPDIR)/coversTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT coversTest.obj -MD -MP -MF $(DEPDIR)/coversTest.Tpo -c -o coversTest.obj `if test -f 'geom/Geometry/coversTest.cpp'; then $(CYGPATH_W) 'geom/Geometry/coversTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/Geometry/coversTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/coversTest.Tpo $(DEPDIR)/coversTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/Geometry/coversTest.cpp' object='coversTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o coversTest.obj `if test -f 'geom/Geometry/coversTest.cpp'; then $(CYGPATH_W) 'geom/Geometry/coversTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/Geometry/coversTest.cpp'; fi` GeometryFactoryTest.o: geom/GeometryFactoryTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometryFactoryTest.o -MD -MP -MF "$(DEPDIR)/GeometryFactoryTest.Tpo" -c -o GeometryFactoryTest.o `test -f 'geom/GeometryFactoryTest.cpp' || echo '$(srcdir)/'`geom/GeometryFactoryTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GeometryFactoryTest.Tpo" "$(DEPDIR)/GeometryFactoryTest.Po"; else rm -f "$(DEPDIR)/GeometryFactoryTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometryFactoryTest.o -MD -MP -MF $(DEPDIR)/GeometryFactoryTest.Tpo -c -o GeometryFactoryTest.o `test -f 'geom/GeometryFactoryTest.cpp' || echo '$(srcdir)/'`geom/GeometryFactoryTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GeometryFactoryTest.Tpo $(DEPDIR)/GeometryFactoryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/GeometryFactoryTest.cpp' object='GeometryFactoryTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GeometryFactoryTest.o `test -f 'geom/GeometryFactoryTest.cpp' || echo '$(srcdir)/'`geom/GeometryFactoryTest.cpp GeometryFactoryTest.obj: geom/GeometryFactoryTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometryFactoryTest.obj -MD -MP -MF "$(DEPDIR)/GeometryFactoryTest.Tpo" -c -o GeometryFactoryTest.obj `if test -f 'geom/GeometryFactoryTest.cpp'; then $(CYGPATH_W) 'geom/GeometryFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/GeometryFactoryTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GeometryFactoryTest.Tpo" "$(DEPDIR)/GeometryFactoryTest.Po"; else rm -f "$(DEPDIR)/GeometryFactoryTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometryFactoryTest.obj -MD -MP -MF $(DEPDIR)/GeometryFactoryTest.Tpo -c -o GeometryFactoryTest.obj `if test -f 'geom/GeometryFactoryTest.cpp'; then $(CYGPATH_W) 'geom/GeometryFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/GeometryFactoryTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GeometryFactoryTest.Tpo $(DEPDIR)/GeometryFactoryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/GeometryFactoryTest.cpp' object='GeometryFactoryTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GeometryFactoryTest.obj `if test -f 'geom/GeometryFactoryTest.cpp'; then $(CYGPATH_W) 'geom/GeometryFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/GeometryFactoryTest.cpp'; fi` IntersectionMatrixTest.o: geom/IntersectionMatrixTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IntersectionMatrixTest.o -MD -MP -MF "$(DEPDIR)/IntersectionMatrixTest.Tpo" -c -o IntersectionMatrixTest.o `test -f 'geom/IntersectionMatrixTest.cpp' || echo '$(srcdir)/'`geom/IntersectionMatrixTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/IntersectionMatrixTest.Tpo" "$(DEPDIR)/IntersectionMatrixTest.Po"; else rm -f "$(DEPDIR)/IntersectionMatrixTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IntersectionMatrixTest.o -MD -MP -MF $(DEPDIR)/IntersectionMatrixTest.Tpo -c -o IntersectionMatrixTest.o `test -f 'geom/IntersectionMatrixTest.cpp' || echo '$(srcdir)/'`geom/IntersectionMatrixTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/IntersectionMatrixTest.Tpo $(DEPDIR)/IntersectionMatrixTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/IntersectionMatrixTest.cpp' object='IntersectionMatrixTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o IntersectionMatrixTest.o `test -f 'geom/IntersectionMatrixTest.cpp' || echo '$(srcdir)/'`geom/IntersectionMatrixTest.cpp IntersectionMatrixTest.obj: geom/IntersectionMatrixTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IntersectionMatrixTest.obj -MD -MP -MF "$(DEPDIR)/IntersectionMatrixTest.Tpo" -c -o IntersectionMatrixTest.obj `if test -f 'geom/IntersectionMatrixTest.cpp'; then $(CYGPATH_W) 'geom/IntersectionMatrixTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/IntersectionMatrixTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/IntersectionMatrixTest.Tpo" "$(DEPDIR)/IntersectionMatrixTest.Po"; else rm -f "$(DEPDIR)/IntersectionMatrixTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IntersectionMatrixTest.obj -MD -MP -MF $(DEPDIR)/IntersectionMatrixTest.Tpo -c -o IntersectionMatrixTest.obj `if test -f 'geom/IntersectionMatrixTest.cpp'; then $(CYGPATH_W) 'geom/IntersectionMatrixTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/IntersectionMatrixTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/IntersectionMatrixTest.Tpo $(DEPDIR)/IntersectionMatrixTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/IntersectionMatrixTest.cpp' object='IntersectionMatrixTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o IntersectionMatrixTest.obj `if test -f 'geom/IntersectionMatrixTest.cpp'; then $(CYGPATH_W) 'geom/IntersectionMatrixTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/IntersectionMatrixTest.cpp'; fi` LinearRingTest.o: geom/LinearRingTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LinearRingTest.o -MD -MP -MF "$(DEPDIR)/LinearRingTest.Tpo" -c -o LinearRingTest.o `test -f 'geom/LinearRingTest.cpp' || echo '$(srcdir)/'`geom/LinearRingTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LinearRingTest.Tpo" "$(DEPDIR)/LinearRingTest.Po"; else rm -f "$(DEPDIR)/LinearRingTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LinearRingTest.o -MD -MP -MF $(DEPDIR)/LinearRingTest.Tpo -c -o LinearRingTest.o `test -f 'geom/LinearRingTest.cpp' || echo '$(srcdir)/'`geom/LinearRingTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LinearRingTest.Tpo $(DEPDIR)/LinearRingTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LinearRingTest.cpp' object='LinearRingTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LinearRingTest.o `test -f 'geom/LinearRingTest.cpp' || echo '$(srcdir)/'`geom/LinearRingTest.cpp LinearRingTest.obj: geom/LinearRingTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LinearRingTest.obj -MD -MP -MF "$(DEPDIR)/LinearRingTest.Tpo" -c -o LinearRingTest.obj `if test -f 'geom/LinearRingTest.cpp'; then $(CYGPATH_W) 'geom/LinearRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LinearRingTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LinearRingTest.Tpo" "$(DEPDIR)/LinearRingTest.Po"; else rm -f "$(DEPDIR)/LinearRingTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LinearRingTest.obj -MD -MP -MF $(DEPDIR)/LinearRingTest.Tpo -c -o LinearRingTest.obj `if test -f 'geom/LinearRingTest.cpp'; then $(CYGPATH_W) 'geom/LinearRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LinearRingTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LinearRingTest.Tpo $(DEPDIR)/LinearRingTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LinearRingTest.cpp' object='LinearRingTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LinearRingTest.obj `if test -f 'geom/LinearRingTest.cpp'; then $(CYGPATH_W) 'geom/LinearRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LinearRingTest.cpp'; fi` LineSegmentTest.o: geom/LineSegmentTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineSegmentTest.o -MD -MP -MF "$(DEPDIR)/LineSegmentTest.Tpo" -c -o LineSegmentTest.o `test -f 'geom/LineSegmentTest.cpp' || echo '$(srcdir)/'`geom/LineSegmentTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LineSegmentTest.Tpo" "$(DEPDIR)/LineSegmentTest.Po"; else rm -f "$(DEPDIR)/LineSegmentTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineSegmentTest.o -MD -MP -MF $(DEPDIR)/LineSegmentTest.Tpo -c -o LineSegmentTest.o `test -f 'geom/LineSegmentTest.cpp' || echo '$(srcdir)/'`geom/LineSegmentTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LineSegmentTest.Tpo $(DEPDIR)/LineSegmentTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LineSegmentTest.cpp' object='LineSegmentTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineSegmentTest.o `test -f 'geom/LineSegmentTest.cpp' || echo '$(srcdir)/'`geom/LineSegmentTest.cpp LineSegmentTest.obj: geom/LineSegmentTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineSegmentTest.obj -MD -MP -MF "$(DEPDIR)/LineSegmentTest.Tpo" -c -o LineSegmentTest.obj `if test -f 'geom/LineSegmentTest.cpp'; then $(CYGPATH_W) 'geom/LineSegmentTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LineSegmentTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LineSegmentTest.Tpo" "$(DEPDIR)/LineSegmentTest.Po"; else rm -f "$(DEPDIR)/LineSegmentTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineSegmentTest.obj -MD -MP -MF $(DEPDIR)/LineSegmentTest.Tpo -c -o LineSegmentTest.obj `if test -f 'geom/LineSegmentTest.cpp'; then $(CYGPATH_W) 'geom/LineSegmentTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LineSegmentTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LineSegmentTest.Tpo $(DEPDIR)/LineSegmentTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LineSegmentTest.cpp' object='LineSegmentTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineSegmentTest.obj `if test -f 'geom/LineSegmentTest.cpp'; then $(CYGPATH_W) 'geom/LineSegmentTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LineSegmentTest.cpp'; fi` LineStringTest.o: geom/LineStringTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringTest.o -MD -MP -MF "$(DEPDIR)/LineStringTest.Tpo" -c -o LineStringTest.o `test -f 'geom/LineStringTest.cpp' || echo '$(srcdir)/'`geom/LineStringTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LineStringTest.Tpo" "$(DEPDIR)/LineStringTest.Po"; else rm -f "$(DEPDIR)/LineStringTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringTest.o -MD -MP -MF $(DEPDIR)/LineStringTest.Tpo -c -o LineStringTest.o `test -f 'geom/LineStringTest.cpp' || echo '$(srcdir)/'`geom/LineStringTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LineStringTest.Tpo $(DEPDIR)/LineStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LineStringTest.cpp' object='LineStringTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineStringTest.o `test -f 'geom/LineStringTest.cpp' || echo '$(srcdir)/'`geom/LineStringTest.cpp LineStringTest.obj: geom/LineStringTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringTest.obj -MD -MP -MF "$(DEPDIR)/LineStringTest.Tpo" -c -o LineStringTest.obj `if test -f 'geom/LineStringTest.cpp'; then $(CYGPATH_W) 'geom/LineStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LineStringTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LineStringTest.Tpo" "$(DEPDIR)/LineStringTest.Po"; else rm -f "$(DEPDIR)/LineStringTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringTest.obj -MD -MP -MF $(DEPDIR)/LineStringTest.Tpo -c -o LineStringTest.obj `if test -f 'geom/LineStringTest.cpp'; then $(CYGPATH_W) 'geom/LineStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LineStringTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LineStringTest.Tpo $(DEPDIR)/LineStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LineStringTest.cpp' object='LineStringTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineStringTest.obj `if test -f 'geom/LineStringTest.cpp'; then $(CYGPATH_W) 'geom/LineStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LineStringTest.cpp'; fi` LocationTest.o: geom/LocationTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LocationTest.o -MD -MP -MF "$(DEPDIR)/LocationTest.Tpo" -c -o LocationTest.o `test -f 'geom/LocationTest.cpp' || echo '$(srcdir)/'`geom/LocationTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LocationTest.Tpo" "$(DEPDIR)/LocationTest.Po"; else rm -f "$(DEPDIR)/LocationTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LocationTest.o -MD -MP -MF $(DEPDIR)/LocationTest.Tpo -c -o LocationTest.o `test -f 'geom/LocationTest.cpp' || echo '$(srcdir)/'`geom/LocationTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LocationTest.Tpo $(DEPDIR)/LocationTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LocationTest.cpp' object='LocationTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LocationTest.o `test -f 'geom/LocationTest.cpp' || echo '$(srcdir)/'`geom/LocationTest.cpp LocationTest.obj: geom/LocationTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LocationTest.obj -MD -MP -MF "$(DEPDIR)/LocationTest.Tpo" -c -o LocationTest.obj `if test -f 'geom/LocationTest.cpp'; then $(CYGPATH_W) 'geom/LocationTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LocationTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LocationTest.Tpo" "$(DEPDIR)/LocationTest.Po"; else rm -f "$(DEPDIR)/LocationTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LocationTest.obj -MD -MP -MF $(DEPDIR)/LocationTest.Tpo -c -o LocationTest.obj `if test -f 'geom/LocationTest.cpp'; then $(CYGPATH_W) 'geom/LocationTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LocationTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LocationTest.Tpo $(DEPDIR)/LocationTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/LocationTest.cpp' object='LocationTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LocationTest.obj `if test -f 'geom/LocationTest.cpp'; then $(CYGPATH_W) 'geom/LocationTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/LocationTest.cpp'; fi` MultiLineStringTest.o: geom/MultiLineStringTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiLineStringTest.o -MD -MP -MF "$(DEPDIR)/MultiLineStringTest.Tpo" -c -o MultiLineStringTest.o `test -f 'geom/MultiLineStringTest.cpp' || echo '$(srcdir)/'`geom/MultiLineStringTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MultiLineStringTest.Tpo" "$(DEPDIR)/MultiLineStringTest.Po"; else rm -f "$(DEPDIR)/MultiLineStringTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiLineStringTest.o -MD -MP -MF $(DEPDIR)/MultiLineStringTest.Tpo -c -o MultiLineStringTest.o `test -f 'geom/MultiLineStringTest.cpp' || echo '$(srcdir)/'`geom/MultiLineStringTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/MultiLineStringTest.Tpo $(DEPDIR)/MultiLineStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/MultiLineStringTest.cpp' object='MultiLineStringTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MultiLineStringTest.o `test -f 'geom/MultiLineStringTest.cpp' || echo '$(srcdir)/'`geom/MultiLineStringTest.cpp MultiLineStringTest.obj: geom/MultiLineStringTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiLineStringTest.obj -MD -MP -MF "$(DEPDIR)/MultiLineStringTest.Tpo" -c -o MultiLineStringTest.obj `if test -f 'geom/MultiLineStringTest.cpp'; then $(CYGPATH_W) 'geom/MultiLineStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiLineStringTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MultiLineStringTest.Tpo" "$(DEPDIR)/MultiLineStringTest.Po"; else rm -f "$(DEPDIR)/MultiLineStringTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiLineStringTest.obj -MD -MP -MF $(DEPDIR)/MultiLineStringTest.Tpo -c -o MultiLineStringTest.obj `if test -f 'geom/MultiLineStringTest.cpp'; then $(CYGPATH_W) 'geom/MultiLineStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiLineStringTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/MultiLineStringTest.Tpo $(DEPDIR)/MultiLineStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/MultiLineStringTest.cpp' object='MultiLineStringTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MultiLineStringTest.obj `if test -f 'geom/MultiLineStringTest.cpp'; then $(CYGPATH_W) 'geom/MultiLineStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiLineStringTest.cpp'; fi` MultiPointTest.o: geom/MultiPointTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPointTest.o -MD -MP -MF "$(DEPDIR)/MultiPointTest.Tpo" -c -o MultiPointTest.o `test -f 'geom/MultiPointTest.cpp' || echo '$(srcdir)/'`geom/MultiPointTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MultiPointTest.Tpo" "$(DEPDIR)/MultiPointTest.Po"; else rm -f "$(DEPDIR)/MultiPointTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPointTest.o -MD -MP -MF $(DEPDIR)/MultiPointTest.Tpo -c -o MultiPointTest.o `test -f 'geom/MultiPointTest.cpp' || echo '$(srcdir)/'`geom/MultiPointTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/MultiPointTest.Tpo $(DEPDIR)/MultiPointTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/MultiPointTest.cpp' object='MultiPointTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MultiPointTest.o `test -f 'geom/MultiPointTest.cpp' || echo '$(srcdir)/'`geom/MultiPointTest.cpp MultiPointTest.obj: geom/MultiPointTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPointTest.obj -MD -MP -MF "$(DEPDIR)/MultiPointTest.Tpo" -c -o MultiPointTest.obj `if test -f 'geom/MultiPointTest.cpp'; then $(CYGPATH_W) 'geom/MultiPointTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiPointTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MultiPointTest.Tpo" "$(DEPDIR)/MultiPointTest.Po"; else rm -f "$(DEPDIR)/MultiPointTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPointTest.obj -MD -MP -MF $(DEPDIR)/MultiPointTest.Tpo -c -o MultiPointTest.obj `if test -f 'geom/MultiPointTest.cpp'; then $(CYGPATH_W) 'geom/MultiPointTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiPointTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/MultiPointTest.Tpo $(DEPDIR)/MultiPointTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/MultiPointTest.cpp' object='MultiPointTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MultiPointTest.obj `if test -f 'geom/MultiPointTest.cpp'; then $(CYGPATH_W) 'geom/MultiPointTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiPointTest.cpp'; fi` MultiPolygonTest.o: geom/MultiPolygonTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPolygonTest.o -MD -MP -MF "$(DEPDIR)/MultiPolygonTest.Tpo" -c -o MultiPolygonTest.o `test -f 'geom/MultiPolygonTest.cpp' || echo '$(srcdir)/'`geom/MultiPolygonTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MultiPolygonTest.Tpo" "$(DEPDIR)/MultiPolygonTest.Po"; else rm -f "$(DEPDIR)/MultiPolygonTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPolygonTest.o -MD -MP -MF $(DEPDIR)/MultiPolygonTest.Tpo -c -o MultiPolygonTest.o `test -f 'geom/MultiPolygonTest.cpp' || echo '$(srcdir)/'`geom/MultiPolygonTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/MultiPolygonTest.Tpo $(DEPDIR)/MultiPolygonTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/MultiPolygonTest.cpp' object='MultiPolygonTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MultiPolygonTest.o `test -f 'geom/MultiPolygonTest.cpp' || echo '$(srcdir)/'`geom/MultiPolygonTest.cpp MultiPolygonTest.obj: geom/MultiPolygonTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPolygonTest.obj -MD -MP -MF "$(DEPDIR)/MultiPolygonTest.Tpo" -c -o MultiPolygonTest.obj `if test -f 'geom/MultiPolygonTest.cpp'; then $(CYGPATH_W) 'geom/MultiPolygonTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiPolygonTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MultiPolygonTest.Tpo" "$(DEPDIR)/MultiPolygonTest.Po"; else rm -f "$(DEPDIR)/MultiPolygonTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MultiPolygonTest.obj -MD -MP -MF $(DEPDIR)/MultiPolygonTest.Tpo -c -o MultiPolygonTest.obj `if test -f 'geom/MultiPolygonTest.cpp'; then $(CYGPATH_W) 'geom/MultiPolygonTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiPolygonTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/MultiPolygonTest.Tpo $(DEPDIR)/MultiPolygonTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/MultiPolygonTest.cpp' object='MultiPolygonTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MultiPolygonTest.obj `if test -f 'geom/MultiPolygonTest.cpp'; then $(CYGPATH_W) 'geom/MultiPolygonTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/MultiPolygonTest.cpp'; fi` PointTest.o: geom/PointTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointTest.o -MD -MP -MF "$(DEPDIR)/PointTest.Tpo" -c -o PointTest.o `test -f 'geom/PointTest.cpp' || echo '$(srcdir)/'`geom/PointTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PointTest.Tpo" "$(DEPDIR)/PointTest.Po"; else rm -f "$(DEPDIR)/PointTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointTest.o -MD -MP -MF $(DEPDIR)/PointTest.Tpo -c -o PointTest.o `test -f 'geom/PointTest.cpp' || echo '$(srcdir)/'`geom/PointTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PointTest.Tpo $(DEPDIR)/PointTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/PointTest.cpp' object='PointTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PointTest.o `test -f 'geom/PointTest.cpp' || echo '$(srcdir)/'`geom/PointTest.cpp PointTest.obj: geom/PointTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointTest.obj -MD -MP -MF "$(DEPDIR)/PointTest.Tpo" -c -o PointTest.obj `if test -f 'geom/PointTest.cpp'; then $(CYGPATH_W) 'geom/PointTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/PointTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PointTest.Tpo" "$(DEPDIR)/PointTest.Po"; else rm -f "$(DEPDIR)/PointTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PointTest.obj -MD -MP -MF $(DEPDIR)/PointTest.Tpo -c -o PointTest.obj `if test -f 'geom/PointTest.cpp'; then $(CYGPATH_W) 'geom/PointTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/PointTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PointTest.Tpo $(DEPDIR)/PointTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/PointTest.cpp' object='PointTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PointTest.obj `if test -f 'geom/PointTest.cpp'; then $(CYGPATH_W) 'geom/PointTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/PointTest.cpp'; fi` PolygonTest.o: geom/PolygonTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PolygonTest.o -MD -MP -MF "$(DEPDIR)/PolygonTest.Tpo" -c -o PolygonTest.o `test -f 'geom/PolygonTest.cpp' || echo '$(srcdir)/'`geom/PolygonTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PolygonTest.Tpo" "$(DEPDIR)/PolygonTest.Po"; else rm -f "$(DEPDIR)/PolygonTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PolygonTest.o -MD -MP -MF $(DEPDIR)/PolygonTest.Tpo -c -o PolygonTest.o `test -f 'geom/PolygonTest.cpp' || echo '$(srcdir)/'`geom/PolygonTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PolygonTest.Tpo $(DEPDIR)/PolygonTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/PolygonTest.cpp' object='PolygonTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PolygonTest.o `test -f 'geom/PolygonTest.cpp' || echo '$(srcdir)/'`geom/PolygonTest.cpp PolygonTest.obj: geom/PolygonTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PolygonTest.obj -MD -MP -MF "$(DEPDIR)/PolygonTest.Tpo" -c -o PolygonTest.obj `if test -f 'geom/PolygonTest.cpp'; then $(CYGPATH_W) 'geom/PolygonTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/PolygonTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PolygonTest.Tpo" "$(DEPDIR)/PolygonTest.Po"; else rm -f "$(DEPDIR)/PolygonTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PolygonTest.obj -MD -MP -MF $(DEPDIR)/PolygonTest.Tpo -c -o PolygonTest.obj `if test -f 'geom/PolygonTest.cpp'; then $(CYGPATH_W) 'geom/PolygonTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/PolygonTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PolygonTest.Tpo $(DEPDIR)/PolygonTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/PolygonTest.cpp' object='PolygonTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PolygonTest.obj `if test -f 'geom/PolygonTest.cpp'; then $(CYGPATH_W) 'geom/PolygonTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/PolygonTest.cpp'; fi` PreparedGeometryFactoryTest.o: geom/prep/PreparedGeometryFactoryTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PreparedGeometryFactoryTest.o -MD -MP -MF "$(DEPDIR)/PreparedGeometryFactoryTest.Tpo" -c -o PreparedGeometryFactoryTest.o `test -f 'geom/prep/PreparedGeometryFactoryTest.cpp' || echo '$(srcdir)/'`geom/prep/PreparedGeometryFactoryTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PreparedGeometryFactoryTest.Tpo" "$(DEPDIR)/PreparedGeometryFactoryTest.Po"; else rm -f "$(DEPDIR)/PreparedGeometryFactoryTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PreparedGeometryFactoryTest.o -MD -MP -MF $(DEPDIR)/PreparedGeometryFactoryTest.Tpo -c -o PreparedGeometryFactoryTest.o `test -f 'geom/prep/PreparedGeometryFactoryTest.cpp' || echo '$(srcdir)/'`geom/prep/PreparedGeometryFactoryTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PreparedGeometryFactoryTest.Tpo $(DEPDIR)/PreparedGeometryFactoryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/prep/PreparedGeometryFactoryTest.cpp' object='PreparedGeometryFactoryTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PreparedGeometryFactoryTest.o `test -f 'geom/prep/PreparedGeometryFactoryTest.cpp' || echo '$(srcdir)/'`geom/prep/PreparedGeometryFactoryTest.cpp PreparedGeometryFactoryTest.obj: geom/prep/PreparedGeometryFactoryTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PreparedGeometryFactoryTest.obj -MD -MP -MF "$(DEPDIR)/PreparedGeometryFactoryTest.Tpo" -c -o PreparedGeometryFactoryTest.obj `if test -f 'geom/prep/PreparedGeometryFactoryTest.cpp'; then $(CYGPATH_W) 'geom/prep/PreparedGeometryFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/prep/PreparedGeometryFactoryTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/PreparedGeometryFactoryTest.Tpo" "$(DEPDIR)/PreparedGeometryFactoryTest.Po"; else rm -f "$(DEPDIR)/PreparedGeometryFactoryTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT PreparedGeometryFactoryTest.obj -MD -MP -MF $(DEPDIR)/PreparedGeometryFactoryTest.Tpo -c -o PreparedGeometryFactoryTest.obj `if test -f 'geom/prep/PreparedGeometryFactoryTest.cpp'; then $(CYGPATH_W) 'geom/prep/PreparedGeometryFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/prep/PreparedGeometryFactoryTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/PreparedGeometryFactoryTest.Tpo $(DEPDIR)/PreparedGeometryFactoryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/prep/PreparedGeometryFactoryTest.cpp' object='PreparedGeometryFactoryTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o PreparedGeometryFactoryTest.obj `if test -f 'geom/prep/PreparedGeometryFactoryTest.cpp'; then $(CYGPATH_W) 'geom/prep/PreparedGeometryFactoryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/prep/PreparedGeometryFactoryTest.cpp'; fi` TriangleTest.o: geom/TriangleTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TriangleTest.o -MD -MP -MF "$(DEPDIR)/TriangleTest.Tpo" -c -o TriangleTest.o `test -f 'geom/TriangleTest.cpp' || echo '$(srcdir)/'`geom/TriangleTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/TriangleTest.Tpo" "$(DEPDIR)/TriangleTest.Po"; else rm -f "$(DEPDIR)/TriangleTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TriangleTest.o -MD -MP -MF $(DEPDIR)/TriangleTest.Tpo -c -o TriangleTest.o `test -f 'geom/TriangleTest.cpp' || echo '$(srcdir)/'`geom/TriangleTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/TriangleTest.Tpo $(DEPDIR)/TriangleTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/TriangleTest.cpp' object='TriangleTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TriangleTest.o `test -f 'geom/TriangleTest.cpp' || echo '$(srcdir)/'`geom/TriangleTest.cpp TriangleTest.obj: geom/TriangleTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TriangleTest.obj -MD -MP -MF "$(DEPDIR)/TriangleTest.Tpo" -c -o TriangleTest.obj `if test -f 'geom/TriangleTest.cpp'; then $(CYGPATH_W) 'geom/TriangleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/TriangleTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/TriangleTest.Tpo" "$(DEPDIR)/TriangleTest.Po"; else rm -f "$(DEPDIR)/TriangleTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TriangleTest.obj -MD -MP -MF $(DEPDIR)/TriangleTest.Tpo -c -o TriangleTest.obj `if test -f 'geom/TriangleTest.cpp'; then $(CYGPATH_W) 'geom/TriangleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/TriangleTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/TriangleTest.Tpo $(DEPDIR)/TriangleTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='geom/TriangleTest.cpp' object='TriangleTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TriangleTest.obj `if test -f 'geom/TriangleTest.cpp'; then $(CYGPATH_W) 'geom/TriangleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/geom/TriangleTest.cpp'; fi` DoubleBitsTest.o: index/quadtree/DoubleBitsTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DoubleBitsTest.o -MD -MP -MF "$(DEPDIR)/DoubleBitsTest.Tpo" -c -o DoubleBitsTest.o `test -f 'index/quadtree/DoubleBitsTest.cpp' || echo '$(srcdir)/'`index/quadtree/DoubleBitsTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DoubleBitsTest.Tpo" "$(DEPDIR)/DoubleBitsTest.Po"; else rm -f "$(DEPDIR)/DoubleBitsTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DoubleBitsTest.o -MD -MP -MF $(DEPDIR)/DoubleBitsTest.Tpo -c -o DoubleBitsTest.o `test -f 'index/quadtree/DoubleBitsTest.cpp' || echo '$(srcdir)/'`index/quadtree/DoubleBitsTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DoubleBitsTest.Tpo $(DEPDIR)/DoubleBitsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='index/quadtree/DoubleBitsTest.cpp' object='DoubleBitsTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DoubleBitsTest.o `test -f 'index/quadtree/DoubleBitsTest.cpp' || echo '$(srcdir)/'`index/quadtree/DoubleBitsTest.cpp DoubleBitsTest.obj: index/quadtree/DoubleBitsTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DoubleBitsTest.obj -MD -MP -MF "$(DEPDIR)/DoubleBitsTest.Tpo" -c -o DoubleBitsTest.obj `if test -f 'index/quadtree/DoubleBitsTest.cpp'; then $(CYGPATH_W) 'index/quadtree/DoubleBitsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/index/quadtree/DoubleBitsTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DoubleBitsTest.Tpo" "$(DEPDIR)/DoubleBitsTest.Po"; else rm -f "$(DEPDIR)/DoubleBitsTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DoubleBitsTest.obj -MD -MP -MF $(DEPDIR)/DoubleBitsTest.Tpo -c -o DoubleBitsTest.obj `if test -f 'index/quadtree/DoubleBitsTest.cpp'; then $(CYGPATH_W) 'index/quadtree/DoubleBitsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/index/quadtree/DoubleBitsTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DoubleBitsTest.Tpo $(DEPDIR)/DoubleBitsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='index/quadtree/DoubleBitsTest.cpp' object='DoubleBitsTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DoubleBitsTest.obj `if test -f 'index/quadtree/DoubleBitsTest.cpp'; then $(CYGPATH_W) 'index/quadtree/DoubleBitsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/index/quadtree/DoubleBitsTest.cpp'; fi` ByteOrderValuesTest.o: io/ByteOrderValuesTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ByteOrderValuesTest.o -MD -MP -MF "$(DEPDIR)/ByteOrderValuesTest.Tpo" -c -o ByteOrderValuesTest.o `test -f 'io/ByteOrderValuesTest.cpp' || echo '$(srcdir)/'`io/ByteOrderValuesTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ByteOrderValuesTest.Tpo" "$(DEPDIR)/ByteOrderValuesTest.Po"; else rm -f "$(DEPDIR)/ByteOrderValuesTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ByteOrderValuesTest.o -MD -MP -MF $(DEPDIR)/ByteOrderValuesTest.Tpo -c -o ByteOrderValuesTest.o `test -f 'io/ByteOrderValuesTest.cpp' || echo '$(srcdir)/'`io/ByteOrderValuesTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ByteOrderValuesTest.Tpo $(DEPDIR)/ByteOrderValuesTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='io/ByteOrderValuesTest.cpp' object='ByteOrderValuesTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ByteOrderValuesTest.o `test -f 'io/ByteOrderValuesTest.cpp' || echo '$(srcdir)/'`io/ByteOrderValuesTest.cpp ByteOrderValuesTest.obj: io/ByteOrderValuesTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ByteOrderValuesTest.obj -MD -MP -MF "$(DEPDIR)/ByteOrderValuesTest.Tpo" -c -o ByteOrderValuesTest.obj `if test -f 'io/ByteOrderValuesTest.cpp'; then $(CYGPATH_W) 'io/ByteOrderValuesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/io/ByteOrderValuesTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/ByteOrderValuesTest.Tpo" "$(DEPDIR)/ByteOrderValuesTest.Po"; else rm -f "$(DEPDIR)/ByteOrderValuesTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ByteOrderValuesTest.obj -MD -MP -MF $(DEPDIR)/ByteOrderValuesTest.Tpo -c -o ByteOrderValuesTest.obj `if test -f 'io/ByteOrderValuesTest.cpp'; then $(CYGPATH_W) 'io/ByteOrderValuesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/io/ByteOrderValuesTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ByteOrderValuesTest.Tpo $(DEPDIR)/ByteOrderValuesTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='io/ByteOrderValuesTest.cpp' object='ByteOrderValuesTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ByteOrderValuesTest.obj `if test -f 'io/ByteOrderValuesTest.cpp'; then $(CYGPATH_W) 'io/ByteOrderValuesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/io/ByteOrderValuesTest.cpp'; fi` WKBReaderTest.o: io/WKBReaderTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT WKBReaderTest.o -MD -MP -MF "$(DEPDIR)/WKBReaderTest.Tpo" -c -o WKBReaderTest.o `test -f 'io/WKBReaderTest.cpp' || echo '$(srcdir)/'`io/WKBReaderTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/WKBReaderTest.Tpo" "$(DEPDIR)/WKBReaderTest.Po"; else rm -f "$(DEPDIR)/WKBReaderTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT WKBReaderTest.o -MD -MP -MF $(DEPDIR)/WKBReaderTest.Tpo -c -o WKBReaderTest.o `test -f 'io/WKBReaderTest.cpp' || echo '$(srcdir)/'`io/WKBReaderTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/WKBReaderTest.Tpo $(DEPDIR)/WKBReaderTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='io/WKBReaderTest.cpp' object='WKBReaderTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o WKBReaderTest.o `test -f 'io/WKBReaderTest.cpp' || echo '$(srcdir)/'`io/WKBReaderTest.cpp WKBReaderTest.obj: io/WKBReaderTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT WKBReaderTest.obj -MD -MP -MF "$(DEPDIR)/WKBReaderTest.Tpo" -c -o WKBReaderTest.obj `if test -f 'io/WKBReaderTest.cpp'; then $(CYGPATH_W) 'io/WKBReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/io/WKBReaderTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/WKBReaderTest.Tpo" "$(DEPDIR)/WKBReaderTest.Po"; else rm -f "$(DEPDIR)/WKBReaderTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT WKBReaderTest.obj -MD -MP -MF $(DEPDIR)/WKBReaderTest.Tpo -c -o WKBReaderTest.obj `if test -f 'io/WKBReaderTest.cpp'; then $(CYGPATH_W) 'io/WKBReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/io/WKBReaderTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/WKBReaderTest.Tpo $(DEPDIR)/WKBReaderTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='io/WKBReaderTest.cpp' object='WKBReaderTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o WKBReaderTest.obj `if test -f 'io/WKBReaderTest.cpp'; then $(CYGPATH_W) 'io/WKBReaderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/io/WKBReaderTest.cpp'; fi` +LengthIndexedLineTest.o: linearref/LengthIndexedLineTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LengthIndexedLineTest.o -MD -MP -MF $(DEPDIR)/LengthIndexedLineTest.Tpo -c -o LengthIndexedLineTest.o `test -f 'linearref/LengthIndexedLineTest.cpp' || echo '$(srcdir)/'`linearref/LengthIndexedLineTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LengthIndexedLineTest.Tpo $(DEPDIR)/LengthIndexedLineTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='linearref/LengthIndexedLineTest.cpp' object='LengthIndexedLineTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LengthIndexedLineTest.o `test -f 'linearref/LengthIndexedLineTest.cpp' || echo '$(srcdir)/'`linearref/LengthIndexedLineTest.cpp + +LengthIndexedLineTest.obj: linearref/LengthIndexedLineTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LengthIndexedLineTest.obj -MD -MP -MF $(DEPDIR)/LengthIndexedLineTest.Tpo -c -o LengthIndexedLineTest.obj `if test -f 'linearref/LengthIndexedLineTest.cpp'; then $(CYGPATH_W) 'linearref/LengthIndexedLineTest.cpp'; else $(CYGPATH_W) '$(srcdir)/linearref/LengthIndexedLineTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LengthIndexedLineTest.Tpo $(DEPDIR)/LengthIndexedLineTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='linearref/LengthIndexedLineTest.cpp' object='LengthIndexedLineTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LengthIndexedLineTest.obj `if test -f 'linearref/LengthIndexedLineTest.cpp'; then $(CYGPATH_W) 'linearref/LengthIndexedLineTest.cpp'; else $(CYGPATH_W) '$(srcdir)/linearref/LengthIndexedLineTest.cpp'; fi` + +BasicSegmentStringTest.o: noding/BasicSegmentStringTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BasicSegmentStringTest.o -MD -MP -MF $(DEPDIR)/BasicSegmentStringTest.Tpo -c -o BasicSegmentStringTest.o `test -f 'noding/BasicSegmentStringTest.cpp' || echo '$(srcdir)/'`noding/BasicSegmentStringTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/BasicSegmentStringTest.Tpo $(DEPDIR)/BasicSegmentStringTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/BasicSegmentStringTest.cpp' object='BasicSegmentStringTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BasicSegmentStringTest.o `test -f 'noding/BasicSegmentStringTest.cpp' || echo '$(srcdir)/'`noding/BasicSegmentStringTest.cpp + +BasicSegmentStringTest.obj: noding/BasicSegmentStringTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BasicSegmentStringTest.obj -MD -MP -MF $(DEPDIR)/BasicSegmentStringTest.Tpo -c -o BasicSegmentStringTest.obj `if test -f 'noding/BasicSegmentStringTest.cpp'; then $(CYGPATH_W) 'noding/BasicSegmentStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/BasicSegmentStringTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/BasicSegmentStringTest.Tpo $(DEPDIR)/BasicSegmentStringTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/BasicSegmentStringTest.cpp' object='BasicSegmentStringTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BasicSegmentStringTest.obj `if test -f 'noding/BasicSegmentStringTest.cpp'; then $(CYGPATH_W) 'noding/BasicSegmentStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/BasicSegmentStringTest.cpp'; fi` + +NodedSegmentStringTest.o: noding/NodedSegmentStringTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NodedSegmentStringTest.o -MD -MP -MF $(DEPDIR)/NodedSegmentStringTest.Tpo -c -o NodedSegmentStringTest.o `test -f 'noding/NodedSegmentStringTest.cpp' || echo '$(srcdir)/'`noding/NodedSegmentStringTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/NodedSegmentStringTest.Tpo $(DEPDIR)/NodedSegmentStringTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/NodedSegmentStringTest.cpp' object='NodedSegmentStringTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NodedSegmentStringTest.o `test -f 'noding/NodedSegmentStringTest.cpp' || echo '$(srcdir)/'`noding/NodedSegmentStringTest.cpp + +NodedSegmentStringTest.obj: noding/NodedSegmentStringTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT NodedSegmentStringTest.obj -MD -MP -MF $(DEPDIR)/NodedSegmentStringTest.Tpo -c -o NodedSegmentStringTest.obj `if test -f 'noding/NodedSegmentStringTest.cpp'; then $(CYGPATH_W) 'noding/NodedSegmentStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/NodedSegmentStringTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/NodedSegmentStringTest.Tpo $(DEPDIR)/NodedSegmentStringTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/NodedSegmentStringTest.cpp' object='NodedSegmentStringTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o NodedSegmentStringTest.obj `if test -f 'noding/NodedSegmentStringTest.cpp'; then $(CYGPATH_W) 'noding/NodedSegmentStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/NodedSegmentStringTest.cpp'; fi` + SegmentNodeTest.o: noding/SegmentNodeTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentNodeTest.o -MD -MP -MF "$(DEPDIR)/SegmentNodeTest.Tpo" -c -o SegmentNodeTest.o `test -f 'noding/SegmentNodeTest.cpp' || echo '$(srcdir)/'`noding/SegmentNodeTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SegmentNodeTest.Tpo" "$(DEPDIR)/SegmentNodeTest.Po"; else rm -f "$(DEPDIR)/SegmentNodeTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentNodeTest.o -MD -MP -MF $(DEPDIR)/SegmentNodeTest.Tpo -c -o SegmentNodeTest.o `test -f 'noding/SegmentNodeTest.cpp' || echo '$(srcdir)/'`noding/SegmentNodeTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/SegmentNodeTest.Tpo $(DEPDIR)/SegmentNodeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/SegmentNodeTest.cpp' object='SegmentNodeTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SegmentNodeTest.o `test -f 'noding/SegmentNodeTest.cpp' || echo '$(srcdir)/'`noding/SegmentNodeTest.cpp SegmentNodeTest.obj: noding/SegmentNodeTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentNodeTest.obj -MD -MP -MF "$(DEPDIR)/SegmentNodeTest.Tpo" -c -o SegmentNodeTest.obj `if test -f 'noding/SegmentNodeTest.cpp'; then $(CYGPATH_W) 'noding/SegmentNodeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentNodeTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SegmentNodeTest.Tpo" "$(DEPDIR)/SegmentNodeTest.Po"; else rm -f "$(DEPDIR)/SegmentNodeTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentNodeTest.obj -MD -MP -MF $(DEPDIR)/SegmentNodeTest.Tpo -c -o SegmentNodeTest.obj `if test -f 'noding/SegmentNodeTest.cpp'; then $(CYGPATH_W) 'noding/SegmentNodeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentNodeTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/SegmentNodeTest.Tpo $(DEPDIR)/SegmentNodeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/SegmentNodeTest.cpp' object='SegmentNodeTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SegmentNodeTest.obj `if test -f 'noding/SegmentNodeTest.cpp'; then $(CYGPATH_W) 'noding/SegmentNodeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentNodeTest.cpp'; fi` SegmentPointComparatorTest.o: noding/SegmentPointComparatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentPointComparatorTest.o -MD -MP -MF "$(DEPDIR)/SegmentPointComparatorTest.Tpo" -c -o SegmentPointComparatorTest.o `test -f 'noding/SegmentPointComparatorTest.cpp' || echo '$(srcdir)/'`noding/SegmentPointComparatorTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SegmentPointComparatorTest.Tpo" "$(DEPDIR)/SegmentPointComparatorTest.Po"; else rm -f "$(DEPDIR)/SegmentPointComparatorTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentPointComparatorTest.o -MD -MP -MF $(DEPDIR)/SegmentPointComparatorTest.Tpo -c -o SegmentPointComparatorTest.o `test -f 'noding/SegmentPointComparatorTest.cpp' || echo '$(srcdir)/'`noding/SegmentPointComparatorTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/SegmentPointComparatorTest.Tpo $(DEPDIR)/SegmentPointComparatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/SegmentPointComparatorTest.cpp' object='SegmentPointComparatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SegmentPointComparatorTest.o `test -f 'noding/SegmentPointComparatorTest.cpp' || echo '$(srcdir)/'`noding/SegmentPointComparatorTest.cpp SegmentPointComparatorTest.obj: noding/SegmentPointComparatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentPointComparatorTest.obj -MD -MP -MF "$(DEPDIR)/SegmentPointComparatorTest.Tpo" -c -o SegmentPointComparatorTest.obj `if test -f 'noding/SegmentPointComparatorTest.cpp'; then $(CYGPATH_W) 'noding/SegmentPointComparatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentPointComparatorTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SegmentPointComparatorTest.Tpo" "$(DEPDIR)/SegmentPointComparatorTest.Po"; else rm -f "$(DEPDIR)/SegmentPointComparatorTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentPointComparatorTest.obj -MD -MP -MF $(DEPDIR)/SegmentPointComparatorTest.Tpo -c -o SegmentPointComparatorTest.obj `if test -f 'noding/SegmentPointComparatorTest.cpp'; then $(CYGPATH_W) 'noding/SegmentPointComparatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentPointComparatorTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/SegmentPointComparatorTest.Tpo $(DEPDIR)/SegmentPointComparatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/SegmentPointComparatorTest.cpp' object='SegmentPointComparatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SegmentPointComparatorTest.obj `if test -f 'noding/SegmentPointComparatorTest.cpp'; then $(CYGPATH_W) 'noding/SegmentPointComparatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentPointComparatorTest.cpp'; fi` -SegmentStringTest.o: noding/SegmentStringTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentStringTest.o -MD -MP -MF "$(DEPDIR)/SegmentStringTest.Tpo" -c -o SegmentStringTest.o `test -f 'noding/SegmentStringTest.cpp' || echo '$(srcdir)/'`noding/SegmentStringTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SegmentStringTest.Tpo" "$(DEPDIR)/SegmentStringTest.Po"; else rm -f "$(DEPDIR)/SegmentStringTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/SegmentStringTest.cpp' object='SegmentStringTest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SegmentStringTest.o `test -f 'noding/SegmentStringTest.cpp' || echo '$(srcdir)/'`noding/SegmentStringTest.cpp - -SegmentStringTest.obj: noding/SegmentStringTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SegmentStringTest.obj -MD -MP -MF "$(DEPDIR)/SegmentStringTest.Tpo" -c -o SegmentStringTest.obj `if test -f 'noding/SegmentStringTest.cpp'; then $(CYGPATH_W) 'noding/SegmentStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentStringTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SegmentStringTest.Tpo" "$(DEPDIR)/SegmentStringTest.Po"; else rm -f "$(DEPDIR)/SegmentStringTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='noding/SegmentStringTest.cpp' object='SegmentStringTest.obj' libtool=no @AMDEPBACKSLASH@ +BufferOpTest.o: operation/buffer/BufferOpTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BufferOpTest.o -MD -MP -MF $(DEPDIR)/BufferOpTest.Tpo -c -o BufferOpTest.o `test -f 'operation/buffer/BufferOpTest.cpp' || echo '$(srcdir)/'`operation/buffer/BufferOpTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/BufferOpTest.Tpo $(DEPDIR)/BufferOpTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/buffer/BufferOpTest.cpp' object='BufferOpTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BufferOpTest.o `test -f 'operation/buffer/BufferOpTest.cpp' || echo '$(srcdir)/'`operation/buffer/BufferOpTest.cpp + +BufferOpTest.obj: operation/buffer/BufferOpTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT BufferOpTest.obj -MD -MP -MF $(DEPDIR)/BufferOpTest.Tpo -c -o BufferOpTest.obj `if test -f 'operation/buffer/BufferOpTest.cpp'; then $(CYGPATH_W) 'operation/buffer/BufferOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/buffer/BufferOpTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/BufferOpTest.Tpo $(DEPDIR)/BufferOpTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/buffer/BufferOpTest.cpp' object='BufferOpTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SegmentStringTest.obj `if test -f 'noding/SegmentStringTest.cpp'; then $(CYGPATH_W) 'noding/SegmentStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/noding/SegmentStringTest.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o BufferOpTest.obj `if test -f 'operation/buffer/BufferOpTest.cpp'; then $(CYGPATH_W) 'operation/buffer/BufferOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/buffer/BufferOpTest.cpp'; fi` DistanceOpTest.o: operation/distance/DistanceOpTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DistanceOpTest.o -MD -MP -MF "$(DEPDIR)/DistanceOpTest.Tpo" -c -o DistanceOpTest.o `test -f 'operation/distance/DistanceOpTest.cpp' || echo '$(srcdir)/'`operation/distance/DistanceOpTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DistanceOpTest.Tpo" "$(DEPDIR)/DistanceOpTest.Po"; else rm -f "$(DEPDIR)/DistanceOpTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DistanceOpTest.o -MD -MP -MF $(DEPDIR)/DistanceOpTest.Tpo -c -o DistanceOpTest.o `test -f 'operation/distance/DistanceOpTest.cpp' || echo '$(srcdir)/'`operation/distance/DistanceOpTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DistanceOpTest.Tpo $(DEPDIR)/DistanceOpTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/distance/DistanceOpTest.cpp' object='DistanceOpTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DistanceOpTest.o `test -f 'operation/distance/DistanceOpTest.cpp' || echo '$(srcdir)/'`operation/distance/DistanceOpTest.cpp DistanceOpTest.obj: operation/distance/DistanceOpTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DistanceOpTest.obj -MD -MP -MF "$(DEPDIR)/DistanceOpTest.Tpo" -c -o DistanceOpTest.obj `if test -f 'operation/distance/DistanceOpTest.cpp'; then $(CYGPATH_W) 'operation/distance/DistanceOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/distance/DistanceOpTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DistanceOpTest.Tpo" "$(DEPDIR)/DistanceOpTest.Po"; else rm -f "$(DEPDIR)/DistanceOpTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DistanceOpTest.obj -MD -MP -MF $(DEPDIR)/DistanceOpTest.Tpo -c -o DistanceOpTest.obj `if test -f 'operation/distance/DistanceOpTest.cpp'; then $(CYGPATH_W) 'operation/distance/DistanceOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/distance/DistanceOpTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DistanceOpTest.Tpo $(DEPDIR)/DistanceOpTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/distance/DistanceOpTest.cpp' object='DistanceOpTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DistanceOpTest.obj `if test -f 'operation/distance/DistanceOpTest.cpp'; then $(CYGPATH_W) 'operation/distance/DistanceOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/distance/DistanceOpTest.cpp'; fi` IsSimpleOpTest.o: operation/IsSimpleOpTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IsSimpleOpTest.o -MD -MP -MF "$(DEPDIR)/IsSimpleOpTest.Tpo" -c -o IsSimpleOpTest.o `test -f 'operation/IsSimpleOpTest.cpp' || echo '$(srcdir)/'`operation/IsSimpleOpTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/IsSimpleOpTest.Tpo" "$(DEPDIR)/IsSimpleOpTest.Po"; else rm -f "$(DEPDIR)/IsSimpleOpTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IsSimpleOpTest.o -MD -MP -MF $(DEPDIR)/IsSimpleOpTest.Tpo -c -o IsSimpleOpTest.o `test -f 'operation/IsSimpleOpTest.cpp' || echo '$(srcdir)/'`operation/IsSimpleOpTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/IsSimpleOpTest.Tpo $(DEPDIR)/IsSimpleOpTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/IsSimpleOpTest.cpp' object='IsSimpleOpTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o IsSimpleOpTest.o `test -f 'operation/IsSimpleOpTest.cpp' || echo '$(srcdir)/'`operation/IsSimpleOpTest.cpp IsSimpleOpTest.obj: operation/IsSimpleOpTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IsSimpleOpTest.obj -MD -MP -MF "$(DEPDIR)/IsSimpleOpTest.Tpo" -c -o IsSimpleOpTest.obj `if test -f 'operation/IsSimpleOpTest.cpp'; then $(CYGPATH_W) 'operation/IsSimpleOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/IsSimpleOpTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/IsSimpleOpTest.Tpo" "$(DEPDIR)/IsSimpleOpTest.Po"; else rm -f "$(DEPDIR)/IsSimpleOpTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IsSimpleOpTest.obj -MD -MP -MF $(DEPDIR)/IsSimpleOpTest.Tpo -c -o IsSimpleOpTest.obj `if test -f 'operation/IsSimpleOpTest.cpp'; then $(CYGPATH_W) 'operation/IsSimpleOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/IsSimpleOpTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/IsSimpleOpTest.Tpo $(DEPDIR)/IsSimpleOpTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/IsSimpleOpTest.cpp' object='IsSimpleOpTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o IsSimpleOpTest.obj `if test -f 'operation/IsSimpleOpTest.cpp'; then $(CYGPATH_W) 'operation/IsSimpleOpTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/IsSimpleOpTest.cpp'; fi` -FuzzyPointLocatorTest.o: operation/overlay/FuzzyPointLocatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FuzzyPointLocatorTest.o -MD -MP -MF "$(DEPDIR)/FuzzyPointLocatorTest.Tpo" -c -o FuzzyPointLocatorTest.o `test -f 'operation/overlay/FuzzyPointLocatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/FuzzyPointLocatorTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FuzzyPointLocatorTest.Tpo" "$(DEPDIR)/FuzzyPointLocatorTest.Po"; else rm -f "$(DEPDIR)/FuzzyPointLocatorTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/FuzzyPointLocatorTest.cpp' object='FuzzyPointLocatorTest.o' libtool=no @AMDEPBACKSLASH@ +FuzzyPointLocatorTest.o: operation/overlay/validate/FuzzyPointLocatorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FuzzyPointLocatorTest.o -MD -MP -MF $(DEPDIR)/FuzzyPointLocatorTest.Tpo -c -o FuzzyPointLocatorTest.o `test -f 'operation/overlay/validate/FuzzyPointLocatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/validate/FuzzyPointLocatorTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/FuzzyPointLocatorTest.Tpo $(DEPDIR)/FuzzyPointLocatorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/validate/FuzzyPointLocatorTest.cpp' object='FuzzyPointLocatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FuzzyPointLocatorTest.o `test -f 'operation/overlay/FuzzyPointLocatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/FuzzyPointLocatorTest.cpp +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FuzzyPointLocatorTest.o `test -f 'operation/overlay/validate/FuzzyPointLocatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/validate/FuzzyPointLocatorTest.cpp -FuzzyPointLocatorTest.obj: operation/overlay/FuzzyPointLocatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FuzzyPointLocatorTest.obj -MD -MP -MF "$(DEPDIR)/FuzzyPointLocatorTest.Tpo" -c -o FuzzyPointLocatorTest.obj `if test -f 'operation/overlay/FuzzyPointLocatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/FuzzyPointLocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/FuzzyPointLocatorTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/FuzzyPointLocatorTest.Tpo" "$(DEPDIR)/FuzzyPointLocatorTest.Po"; else rm -f "$(DEPDIR)/FuzzyPointLocatorTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/FuzzyPointLocatorTest.cpp' object='FuzzyPointLocatorTest.obj' libtool=no @AMDEPBACKSLASH@ +FuzzyPointLocatorTest.obj: operation/overlay/validate/FuzzyPointLocatorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT FuzzyPointLocatorTest.obj -MD -MP -MF $(DEPDIR)/FuzzyPointLocatorTest.Tpo -c -o FuzzyPointLocatorTest.obj `if test -f 'operation/overlay/validate/FuzzyPointLocatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/validate/FuzzyPointLocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/validate/FuzzyPointLocatorTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/FuzzyPointLocatorTest.Tpo $(DEPDIR)/FuzzyPointLocatorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/validate/FuzzyPointLocatorTest.cpp' object='FuzzyPointLocatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FuzzyPointLocatorTest.obj `if test -f 'operation/overlay/FuzzyPointLocatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/FuzzyPointLocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/FuzzyPointLocatorTest.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o FuzzyPointLocatorTest.obj `if test -f 'operation/overlay/validate/FuzzyPointLocatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/validate/FuzzyPointLocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/validate/FuzzyPointLocatorTest.cpp'; fi` -OffsetPointGeneratorTest.o: operation/overlay/OffsetPointGeneratorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OffsetPointGeneratorTest.o -MD -MP -MF "$(DEPDIR)/OffsetPointGeneratorTest.Tpo" -c -o OffsetPointGeneratorTest.o `test -f 'operation/overlay/OffsetPointGeneratorTest.cpp' || echo '$(srcdir)/'`operation/overlay/OffsetPointGeneratorTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/OffsetPointGeneratorTest.Tpo" "$(DEPDIR)/OffsetPointGeneratorTest.Po"; else rm -f "$(DEPDIR)/OffsetPointGeneratorTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/OffsetPointGeneratorTest.cpp' object='OffsetPointGeneratorTest.o' libtool=no @AMDEPBACKSLASH@ +OffsetPointGeneratorTest.o: operation/overlay/validate/OffsetPointGeneratorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OffsetPointGeneratorTest.o -MD -MP -MF $(DEPDIR)/OffsetPointGeneratorTest.Tpo -c -o OffsetPointGeneratorTest.o `test -f 'operation/overlay/validate/OffsetPointGeneratorTest.cpp' || echo '$(srcdir)/'`operation/overlay/validate/OffsetPointGeneratorTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/OffsetPointGeneratorTest.Tpo $(DEPDIR)/OffsetPointGeneratorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/validate/OffsetPointGeneratorTest.cpp' object='OffsetPointGeneratorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OffsetPointGeneratorTest.o `test -f 'operation/overlay/OffsetPointGeneratorTest.cpp' || echo '$(srcdir)/'`operation/overlay/OffsetPointGeneratorTest.cpp +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OffsetPointGeneratorTest.o `test -f 'operation/overlay/validate/OffsetPointGeneratorTest.cpp' || echo '$(srcdir)/'`operation/overlay/validate/OffsetPointGeneratorTest.cpp -OffsetPointGeneratorTest.obj: operation/overlay/OffsetPointGeneratorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OffsetPointGeneratorTest.obj -MD -MP -MF "$(DEPDIR)/OffsetPointGeneratorTest.Tpo" -c -o OffsetPointGeneratorTest.obj `if test -f 'operation/overlay/OffsetPointGeneratorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/OffsetPointGeneratorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/OffsetPointGeneratorTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/OffsetPointGeneratorTest.Tpo" "$(DEPDIR)/OffsetPointGeneratorTest.Po"; else rm -f "$(DEPDIR)/OffsetPointGeneratorTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/OffsetPointGeneratorTest.cpp' object='OffsetPointGeneratorTest.obj' libtool=no @AMDEPBACKSLASH@ +OffsetPointGeneratorTest.obj: operation/overlay/validate/OffsetPointGeneratorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OffsetPointGeneratorTest.obj -MD -MP -MF $(DEPDIR)/OffsetPointGeneratorTest.Tpo -c -o OffsetPointGeneratorTest.obj `if test -f 'operation/overlay/validate/OffsetPointGeneratorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/validate/OffsetPointGeneratorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/validate/OffsetPointGeneratorTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/OffsetPointGeneratorTest.Tpo $(DEPDIR)/OffsetPointGeneratorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/validate/OffsetPointGeneratorTest.cpp' object='OffsetPointGeneratorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OffsetPointGeneratorTest.obj `if test -f 'operation/overlay/OffsetPointGeneratorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/OffsetPointGeneratorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/OffsetPointGeneratorTest.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OffsetPointGeneratorTest.obj `if test -f 'operation/overlay/validate/OffsetPointGeneratorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/validate/OffsetPointGeneratorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/validate/OffsetPointGeneratorTest.cpp'; fi` -OverlayResultValidatorTest.o: operation/overlay/OverlayResultValidatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OverlayResultValidatorTest.o -MD -MP -MF "$(DEPDIR)/OverlayResultValidatorTest.Tpo" -c -o OverlayResultValidatorTest.o `test -f 'operation/overlay/OverlayResultValidatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/OverlayResultValidatorTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/OverlayResultValidatorTest.Tpo" "$(DEPDIR)/OverlayResultValidatorTest.Po"; else rm -f "$(DEPDIR)/OverlayResultValidatorTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/OverlayResultValidatorTest.cpp' object='OverlayResultValidatorTest.o' libtool=no @AMDEPBACKSLASH@ +OverlayResultValidatorTest.o: operation/overlay/validate/OverlayResultValidatorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OverlayResultValidatorTest.o -MD -MP -MF $(DEPDIR)/OverlayResultValidatorTest.Tpo -c -o OverlayResultValidatorTest.o `test -f 'operation/overlay/validate/OverlayResultValidatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/validate/OverlayResultValidatorTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/OverlayResultValidatorTest.Tpo $(DEPDIR)/OverlayResultValidatorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/validate/OverlayResultValidatorTest.cpp' object='OverlayResultValidatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OverlayResultValidatorTest.o `test -f 'operation/overlay/OverlayResultValidatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/OverlayResultValidatorTest.cpp +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OverlayResultValidatorTest.o `test -f 'operation/overlay/validate/OverlayResultValidatorTest.cpp' || echo '$(srcdir)/'`operation/overlay/validate/OverlayResultValidatorTest.cpp -OverlayResultValidatorTest.obj: operation/overlay/OverlayResultValidatorTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OverlayResultValidatorTest.obj -MD -MP -MF "$(DEPDIR)/OverlayResultValidatorTest.Tpo" -c -o OverlayResultValidatorTest.obj `if test -f 'operation/overlay/OverlayResultValidatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/OverlayResultValidatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/OverlayResultValidatorTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/OverlayResultValidatorTest.Tpo" "$(DEPDIR)/OverlayResultValidatorTest.Po"; else rm -f "$(DEPDIR)/OverlayResultValidatorTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/OverlayResultValidatorTest.cpp' object='OverlayResultValidatorTest.obj' libtool=no @AMDEPBACKSLASH@ +OverlayResultValidatorTest.obj: operation/overlay/validate/OverlayResultValidatorTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT OverlayResultValidatorTest.obj -MD -MP -MF $(DEPDIR)/OverlayResultValidatorTest.Tpo -c -o OverlayResultValidatorTest.obj `if test -f 'operation/overlay/validate/OverlayResultValidatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/validate/OverlayResultValidatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/validate/OverlayResultValidatorTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/OverlayResultValidatorTest.Tpo $(DEPDIR)/OverlayResultValidatorTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/validate/OverlayResultValidatorTest.cpp' object='OverlayResultValidatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OverlayResultValidatorTest.obj `if test -f 'operation/overlay/OverlayResultValidatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/OverlayResultValidatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/OverlayResultValidatorTest.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o OverlayResultValidatorTest.obj `if test -f 'operation/overlay/validate/OverlayResultValidatorTest.cpp'; then $(CYGPATH_W) 'operation/overlay/validate/OverlayResultValidatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/validate/OverlayResultValidatorTest.cpp'; fi` + +GeometrySnapperTest.o: operation/overlay/snap/GeometrySnapperTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometrySnapperTest.o -MD -MP -MF $(DEPDIR)/GeometrySnapperTest.Tpo -c -o GeometrySnapperTest.o `test -f 'operation/overlay/snap/GeometrySnapperTest.cpp' || echo '$(srcdir)/'`operation/overlay/snap/GeometrySnapperTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GeometrySnapperTest.Tpo $(DEPDIR)/GeometrySnapperTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/snap/GeometrySnapperTest.cpp' object='GeometrySnapperTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GeometrySnapperTest.o `test -f 'operation/overlay/snap/GeometrySnapperTest.cpp' || echo '$(srcdir)/'`operation/overlay/snap/GeometrySnapperTest.cpp + +GeometrySnapperTest.obj: operation/overlay/snap/GeometrySnapperTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometrySnapperTest.obj -MD -MP -MF $(DEPDIR)/GeometrySnapperTest.Tpo -c -o GeometrySnapperTest.obj `if test -f 'operation/overlay/snap/GeometrySnapperTest.cpp'; then $(CYGPATH_W) 'operation/overlay/snap/GeometrySnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/snap/GeometrySnapperTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GeometrySnapperTest.Tpo $(DEPDIR)/GeometrySnapperTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/snap/GeometrySnapperTest.cpp' object='GeometrySnapperTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GeometrySnapperTest.obj `if test -f 'operation/overlay/snap/GeometrySnapperTest.cpp'; then $(CYGPATH_W) 'operation/overlay/snap/GeometrySnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/snap/GeometrySnapperTest.cpp'; fi` + +LineStringSnapperTest.o: operation/overlay/snap/LineStringSnapperTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringSnapperTest.o -MD -MP -MF $(DEPDIR)/LineStringSnapperTest.Tpo -c -o LineStringSnapperTest.o `test -f 'operation/overlay/snap/LineStringSnapperTest.cpp' || echo '$(srcdir)/'`operation/overlay/snap/LineStringSnapperTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LineStringSnapperTest.Tpo $(DEPDIR)/LineStringSnapperTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/snap/LineStringSnapperTest.cpp' object='LineStringSnapperTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineStringSnapperTest.o `test -f 'operation/overlay/snap/LineStringSnapperTest.cpp' || echo '$(srcdir)/'`operation/overlay/snap/LineStringSnapperTest.cpp + +LineStringSnapperTest.obj: operation/overlay/snap/LineStringSnapperTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringSnapperTest.obj -MD -MP -MF $(DEPDIR)/LineStringSnapperTest.Tpo -c -o LineStringSnapperTest.obj `if test -f 'operation/overlay/snap/LineStringSnapperTest.cpp'; then $(CYGPATH_W) 'operation/overlay/snap/LineStringSnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/snap/LineStringSnapperTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/LineStringSnapperTest.Tpo $(DEPDIR)/LineStringSnapperTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/overlay/snap/LineStringSnapperTest.cpp' object='LineStringSnapperTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineStringSnapperTest.obj `if test -f 'operation/overlay/snap/LineStringSnapperTest.cpp'; then $(CYGPATH_W) 'operation/overlay/snap/LineStringSnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/overlay/snap/LineStringSnapperTest.cpp'; fi` CascadedPolygonUnionTest.o: operation/union/CascadedPolygonUnionTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CascadedPolygonUnionTest.o -MD -MP -MF "$(DEPDIR)/CascadedPolygonUnionTest.Tpo" -c -o CascadedPolygonUnionTest.o `test -f 'operation/union/CascadedPolygonUnionTest.cpp' || echo '$(srcdir)/'`operation/union/CascadedPolygonUnionTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CascadedPolygonUnionTest.Tpo" "$(DEPDIR)/CascadedPolygonUnionTest.Po"; else rm -f "$(DEPDIR)/CascadedPolygonUnionTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CascadedPolygonUnionTest.o -MD -MP -MF $(DEPDIR)/CascadedPolygonUnionTest.Tpo -c -o CascadedPolygonUnionTest.o `test -f 'operation/union/CascadedPolygonUnionTest.cpp' || echo '$(srcdir)/'`operation/union/CascadedPolygonUnionTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CascadedPolygonUnionTest.Tpo $(DEPDIR)/CascadedPolygonUnionTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/union/CascadedPolygonUnionTest.cpp' object='CascadedPolygonUnionTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CascadedPolygonUnionTest.o `test -f 'operation/union/CascadedPolygonUnionTest.cpp' || echo '$(srcdir)/'`operation/union/CascadedPolygonUnionTest.cpp CascadedPolygonUnionTest.obj: operation/union/CascadedPolygonUnionTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CascadedPolygonUnionTest.obj -MD -MP -MF "$(DEPDIR)/CascadedPolygonUnionTest.Tpo" -c -o CascadedPolygonUnionTest.obj `if test -f 'operation/union/CascadedPolygonUnionTest.cpp'; then $(CYGPATH_W) 'operation/union/CascadedPolygonUnionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/union/CascadedPolygonUnionTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/CascadedPolygonUnionTest.Tpo" "$(DEPDIR)/CascadedPolygonUnionTest.Po"; else rm -f "$(DEPDIR)/CascadedPolygonUnionTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT CascadedPolygonUnionTest.obj -MD -MP -MF $(DEPDIR)/CascadedPolygonUnionTest.Tpo -c -o CascadedPolygonUnionTest.obj `if test -f 'operation/union/CascadedPolygonUnionTest.cpp'; then $(CYGPATH_W) 'operation/union/CascadedPolygonUnionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/union/CascadedPolygonUnionTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/CascadedPolygonUnionTest.Tpo $(DEPDIR)/CascadedPolygonUnionTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/union/CascadedPolygonUnionTest.cpp' object='CascadedPolygonUnionTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o CascadedPolygonUnionTest.obj `if test -f 'operation/union/CascadedPolygonUnionTest.cpp'; then $(CYGPATH_W) 'operation/union/CascadedPolygonUnionTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/union/CascadedPolygonUnionTest.cpp'; fi` -GeometrySnapperTest.o: precision/GeometrySnapperTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometrySnapperTest.o -MD -MP -MF "$(DEPDIR)/GeometrySnapperTest.Tpo" -c -o GeometrySnapperTest.o `test -f 'precision/GeometrySnapperTest.cpp' || echo '$(srcdir)/'`precision/GeometrySnapperTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GeometrySnapperTest.Tpo" "$(DEPDIR)/GeometrySnapperTest.Po"; else rm -f "$(DEPDIR)/GeometrySnapperTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='precision/GeometrySnapperTest.cpp' object='GeometrySnapperTest.o' libtool=no @AMDEPBACKSLASH@ +IsValidTest.o: operation/valid/IsValidTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IsValidTest.o -MD -MP -MF $(DEPDIR)/IsValidTest.Tpo -c -o IsValidTest.o `test -f 'operation/valid/IsValidTest.cpp' || echo '$(srcdir)/'`operation/valid/IsValidTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/IsValidTest.Tpo $(DEPDIR)/IsValidTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/valid/IsValidTest.cpp' object='IsValidTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o IsValidTest.o `test -f 'operation/valid/IsValidTest.cpp' || echo '$(srcdir)/'`operation/valid/IsValidTest.cpp + +IsValidTest.obj: operation/valid/IsValidTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT IsValidTest.obj -MD -MP -MF $(DEPDIR)/IsValidTest.Tpo -c -o IsValidTest.obj `if test -f 'operation/valid/IsValidTest.cpp'; then $(CYGPATH_W) 'operation/valid/IsValidTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/valid/IsValidTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/IsValidTest.Tpo $(DEPDIR)/IsValidTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/valid/IsValidTest.cpp' object='IsValidTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o IsValidTest.obj `if test -f 'operation/valid/IsValidTest.cpp'; then $(CYGPATH_W) 'operation/valid/IsValidTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/valid/IsValidTest.cpp'; fi` + +ValidClosedRingTest.o: operation/valid/ValidClosedRingTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ValidClosedRingTest.o -MD -MP -MF $(DEPDIR)/ValidClosedRingTest.Tpo -c -o ValidClosedRingTest.o `test -f 'operation/valid/ValidClosedRingTest.cpp' || echo '$(srcdir)/'`operation/valid/ValidClosedRingTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ValidClosedRingTest.Tpo $(DEPDIR)/ValidClosedRingTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/valid/ValidClosedRingTest.cpp' object='ValidClosedRingTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GeometrySnapperTest.o `test -f 'precision/GeometrySnapperTest.cpp' || echo '$(srcdir)/'`precision/GeometrySnapperTest.cpp +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ValidClosedRingTest.o `test -f 'operation/valid/ValidClosedRingTest.cpp' || echo '$(srcdir)/'`operation/valid/ValidClosedRingTest.cpp -GeometrySnapperTest.obj: precision/GeometrySnapperTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GeometrySnapperTest.obj -MD -MP -MF "$(DEPDIR)/GeometrySnapperTest.Tpo" -c -o GeometrySnapperTest.obj `if test -f 'precision/GeometrySnapperTest.cpp'; then $(CYGPATH_W) 'precision/GeometrySnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/precision/GeometrySnapperTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GeometrySnapperTest.Tpo" "$(DEPDIR)/GeometrySnapperTest.Po"; else rm -f "$(DEPDIR)/GeometrySnapperTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='precision/GeometrySnapperTest.cpp' object='GeometrySnapperTest.obj' libtool=no @AMDEPBACKSLASH@ +ValidClosedRingTest.obj: operation/valid/ValidClosedRingTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ValidClosedRingTest.obj -MD -MP -MF $(DEPDIR)/ValidClosedRingTest.Tpo -c -o ValidClosedRingTest.obj `if test -f 'operation/valid/ValidClosedRingTest.cpp'; then $(CYGPATH_W) 'operation/valid/ValidClosedRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/valid/ValidClosedRingTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ValidClosedRingTest.Tpo $(DEPDIR)/ValidClosedRingTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/valid/ValidClosedRingTest.cpp' object='ValidClosedRingTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GeometrySnapperTest.obj `if test -f 'precision/GeometrySnapperTest.cpp'; then $(CYGPATH_W) 'precision/GeometrySnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/precision/GeometrySnapperTest.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ValidClosedRingTest.obj `if test -f 'operation/valid/ValidClosedRingTest.cpp'; then $(CYGPATH_W) 'operation/valid/ValidClosedRingTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/valid/ValidClosedRingTest.cpp'; fi` -LineStringSnapperTest.o: precision/LineStringSnapperTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringSnapperTest.o -MD -MP -MF "$(DEPDIR)/LineStringSnapperTest.Tpo" -c -o LineStringSnapperTest.o `test -f 'precision/LineStringSnapperTest.cpp' || echo '$(srcdir)/'`precision/LineStringSnapperTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LineStringSnapperTest.Tpo" "$(DEPDIR)/LineStringSnapperTest.Po"; else rm -f "$(DEPDIR)/LineStringSnapperTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='precision/LineStringSnapperTest.cpp' object='LineStringSnapperTest.o' libtool=no @AMDEPBACKSLASH@ +ValidSelfTouchingRingFormingHoleTest.o: operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ValidSelfTouchingRingFormingHoleTest.o -MD -MP -MF $(DEPDIR)/ValidSelfTouchingRingFormingHoleTest.Tpo -c -o ValidSelfTouchingRingFormingHoleTest.o `test -f 'operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp' || echo '$(srcdir)/'`operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ValidSelfTouchingRingFormingHoleTest.Tpo $(DEPDIR)/ValidSelfTouchingRingFormingHoleTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp' object='ValidSelfTouchingRingFormingHoleTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineStringSnapperTest.o `test -f 'precision/LineStringSnapperTest.cpp' || echo '$(srcdir)/'`precision/LineStringSnapperTest.cpp +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ValidSelfTouchingRingFormingHoleTest.o `test -f 'operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp' || echo '$(srcdir)/'`operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp -LineStringSnapperTest.obj: precision/LineStringSnapperTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT LineStringSnapperTest.obj -MD -MP -MF "$(DEPDIR)/LineStringSnapperTest.Tpo" -c -o LineStringSnapperTest.obj `if test -f 'precision/LineStringSnapperTest.cpp'; then $(CYGPATH_W) 'precision/LineStringSnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/precision/LineStringSnapperTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/LineStringSnapperTest.Tpo" "$(DEPDIR)/LineStringSnapperTest.Po"; else rm -f "$(DEPDIR)/LineStringSnapperTest.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='precision/LineStringSnapperTest.cpp' object='LineStringSnapperTest.obj' libtool=no @AMDEPBACKSLASH@ +ValidSelfTouchingRingFormingHoleTest.obj: operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ValidSelfTouchingRingFormingHoleTest.obj -MD -MP -MF $(DEPDIR)/ValidSelfTouchingRingFormingHoleTest.Tpo -c -o ValidSelfTouchingRingFormingHoleTest.obj `if test -f 'operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp'; then $(CYGPATH_W) 'operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/ValidSelfTouchingRingFormingHoleTest.Tpo $(DEPDIR)/ValidSelfTouchingRingFormingHoleTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp' object='ValidSelfTouchingRingFormingHoleTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o LineStringSnapperTest.obj `if test -f 'precision/LineStringSnapperTest.cpp'; then $(CYGPATH_W) 'precision/LineStringSnapperTest.cpp'; else $(CYGPATH_W) '$(srcdir)/precision/LineStringSnapperTest.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ValidSelfTouchingRingFormingHoleTest.obj `if test -f 'operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp'; then $(CYGPATH_W) 'operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp'; else $(CYGPATH_W) '$(srcdir)/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp'; fi` SimpleGeometryPrecisionReducerTest.o: precision/SimpleGeometryPrecisionReducerTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SimpleGeometryPrecisionReducerTest.o -MD -MP -MF "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo" -c -o SimpleGeometryPrecisionReducerTest.o `test -f 'precision/SimpleGeometryPrecisionReducerTest.cpp' || echo '$(srcdir)/'`precision/SimpleGeometryPrecisionReducerTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo" "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Po"; else rm -f "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SimpleGeometryPrecisionReducerTest.o -MD -MP -MF $(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo -c -o SimpleGeometryPrecisionReducerTest.o `test -f 'precision/SimpleGeometryPrecisionReducerTest.cpp' || echo '$(srcdir)/'`precision/SimpleGeometryPrecisionReducerTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo $(DEPDIR)/SimpleGeometryPrecisionReducerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='precision/SimpleGeometryPrecisionReducerTest.cpp' object='SimpleGeometryPrecisionReducerTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SimpleGeometryPrecisionReducerTest.o `test -f 'precision/SimpleGeometryPrecisionReducerTest.cpp' || echo '$(srcdir)/'`precision/SimpleGeometryPrecisionReducerTest.cpp SimpleGeometryPrecisionReducerTest.obj: precision/SimpleGeometryPrecisionReducerTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SimpleGeometryPrecisionReducerTest.obj -MD -MP -MF "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo" -c -o SimpleGeometryPrecisionReducerTest.obj `if test -f 'precision/SimpleGeometryPrecisionReducerTest.cpp'; then $(CYGPATH_W) 'precision/SimpleGeometryPrecisionReducerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/precision/SimpleGeometryPrecisionReducerTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo" "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Po"; else rm -f "$(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SimpleGeometryPrecisionReducerTest.obj -MD -MP -MF $(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo -c -o SimpleGeometryPrecisionReducerTest.obj `if test -f 'precision/SimpleGeometryPrecisionReducerTest.cpp'; then $(CYGPATH_W) 'precision/SimpleGeometryPrecisionReducerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/precision/SimpleGeometryPrecisionReducerTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/SimpleGeometryPrecisionReducerTest.Tpo $(DEPDIR)/SimpleGeometryPrecisionReducerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='precision/SimpleGeometryPrecisionReducerTest.cpp' object='SimpleGeometryPrecisionReducerTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SimpleGeometryPrecisionReducerTest.obj `if test -f 'precision/SimpleGeometryPrecisionReducerTest.cpp'; then $(CYGPATH_W) 'precision/SimpleGeometryPrecisionReducerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/precision/SimpleGeometryPrecisionReducerTest.cpp'; fi` DouglasPeuckerSimplifierTest.o: simplify/DouglasPeuckerSimplifierTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DouglasPeuckerSimplifierTest.o -MD -MP -MF "$(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo" -c -o DouglasPeuckerSimplifierTest.o `test -f 'simplify/DouglasPeuckerSimplifierTest.cpp' || echo '$(srcdir)/'`simplify/DouglasPeuckerSimplifierTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo" "$(DEPDIR)/DouglasPeuckerSimplifierTest.Po"; else rm -f "$(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DouglasPeuckerSimplifierTest.o -MD -MP -MF $(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo -c -o DouglasPeuckerSimplifierTest.o `test -f 'simplify/DouglasPeuckerSimplifierTest.cpp' || echo '$(srcdir)/'`simplify/DouglasPeuckerSimplifierTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo $(DEPDIR)/DouglasPeuckerSimplifierTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='simplify/DouglasPeuckerSimplifierTest.cpp' object='DouglasPeuckerSimplifierTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DouglasPeuckerSimplifierTest.o `test -f 'simplify/DouglasPeuckerSimplifierTest.cpp' || echo '$(srcdir)/'`simplify/DouglasPeuckerSimplifierTest.cpp DouglasPeuckerSimplifierTest.obj: simplify/DouglasPeuckerSimplifierTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DouglasPeuckerSimplifierTest.obj -MD -MP -MF "$(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo" -c -o DouglasPeuckerSimplifierTest.obj `if test -f 'simplify/DouglasPeuckerSimplifierTest.cpp'; then $(CYGPATH_W) 'simplify/DouglasPeuckerSimplifierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/simplify/DouglasPeuckerSimplifierTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo" "$(DEPDIR)/DouglasPeuckerSimplifierTest.Po"; else rm -f "$(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DouglasPeuckerSimplifierTest.obj -MD -MP -MF $(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo -c -o DouglasPeuckerSimplifierTest.obj `if test -f 'simplify/DouglasPeuckerSimplifierTest.cpp'; then $(CYGPATH_W) 'simplify/DouglasPeuckerSimplifierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/simplify/DouglasPeuckerSimplifierTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/DouglasPeuckerSimplifierTest.Tpo $(DEPDIR)/DouglasPeuckerSimplifierTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='simplify/DouglasPeuckerSimplifierTest.cpp' object='DouglasPeuckerSimplifierTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DouglasPeuckerSimplifierTest.obj `if test -f 'simplify/DouglasPeuckerSimplifierTest.cpp'; then $(CYGPATH_W) 'simplify/DouglasPeuckerSimplifierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/simplify/DouglasPeuckerSimplifierTest.cpp'; fi` TopologyPreservingSimplifierTest.o: simplify/TopologyPreservingSimplifierTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TopologyPreservingSimplifierTest.o -MD -MP -MF "$(DEPDIR)/TopologyPreservingSimplifierTest.Tpo" -c -o TopologyPreservingSimplifierTest.o `test -f 'simplify/TopologyPreservingSimplifierTest.cpp' || echo '$(srcdir)/'`simplify/TopologyPreservingSimplifierTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/TopologyPreservingSimplifierTest.Tpo" "$(DEPDIR)/TopologyPreservingSimplifierTest.Po"; else rm -f "$(DEPDIR)/TopologyPreservingSimplifierTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TopologyPreservingSimplifierTest.o -MD -MP -MF $(DEPDIR)/TopologyPreservingSimplifierTest.Tpo -c -o TopologyPreservingSimplifierTest.o `test -f 'simplify/TopologyPreservingSimplifierTest.cpp' || echo '$(srcdir)/'`simplify/TopologyPreservingSimplifierTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/TopologyPreservingSimplifierTest.Tpo $(DEPDIR)/TopologyPreservingSimplifierTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='simplify/TopologyPreservingSimplifierTest.cpp' object='TopologyPreservingSimplifierTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TopologyPreservingSimplifierTest.o `test -f 'simplify/TopologyPreservingSimplifierTest.cpp' || echo '$(srcdir)/'`simplify/TopologyPreservingSimplifierTest.cpp TopologyPreservingSimplifierTest.obj: simplify/TopologyPreservingSimplifierTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TopologyPreservingSimplifierTest.obj -MD -MP -MF "$(DEPDIR)/TopologyPreservingSimplifierTest.Tpo" -c -o TopologyPreservingSimplifierTest.obj `if test -f 'simplify/TopologyPreservingSimplifierTest.cpp'; then $(CYGPATH_W) 'simplify/TopologyPreservingSimplifierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/simplify/TopologyPreservingSimplifierTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/TopologyPreservingSimplifierTest.Tpo" "$(DEPDIR)/TopologyPreservingSimplifierTest.Po"; else rm -f "$(DEPDIR)/TopologyPreservingSimplifierTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT TopologyPreservingSimplifierTest.obj -MD -MP -MF $(DEPDIR)/TopologyPreservingSimplifierTest.Tpo -c -o TopologyPreservingSimplifierTest.obj `if test -f 'simplify/TopologyPreservingSimplifierTest.cpp'; then $(CYGPATH_W) 'simplify/TopologyPreservingSimplifierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/simplify/TopologyPreservingSimplifierTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/TopologyPreservingSimplifierTest.Tpo $(DEPDIR)/TopologyPreservingSimplifierTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='simplify/TopologyPreservingSimplifierTest.cpp' object='TopologyPreservingSimplifierTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TopologyPreservingSimplifierTest.obj `if test -f 'simplify/TopologyPreservingSimplifierTest.cpp'; then $(CYGPATH_W) 'simplify/TopologyPreservingSimplifierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/simplify/TopologyPreservingSimplifierTest.cpp'; fi` UniqueCoordinateArrayFilterTest.o: util/UniqueCoordinateArrayFilterTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UniqueCoordinateArrayFilterTest.o -MD -MP -MF "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo" -c -o UniqueCoordinateArrayFilterTest.o `test -f 'util/UniqueCoordinateArrayFilterTest.cpp' || echo '$(srcdir)/'`util/UniqueCoordinateArrayFilterTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo" "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Po"; else rm -f "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UniqueCoordinateArrayFilterTest.o -MD -MP -MF $(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo -c -o UniqueCoordinateArrayFilterTest.o `test -f 'util/UniqueCoordinateArrayFilterTest.cpp' || echo '$(srcdir)/'`util/UniqueCoordinateArrayFilterTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo $(DEPDIR)/UniqueCoordinateArrayFilterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='util/UniqueCoordinateArrayFilterTest.cpp' object='UniqueCoordinateArrayFilterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UniqueCoordinateArrayFilterTest.o `test -f 'util/UniqueCoordinateArrayFilterTest.cpp' || echo '$(srcdir)/'`util/UniqueCoordinateArrayFilterTest.cpp UniqueCoordinateArrayFilterTest.obj: util/UniqueCoordinateArrayFilterTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UniqueCoordinateArrayFilterTest.obj -MD -MP -MF "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo" -c -o UniqueCoordinateArrayFilterTest.obj `if test -f 'util/UniqueCoordinateArrayFilterTest.cpp'; then $(CYGPATH_W) 'util/UniqueCoordinateArrayFilterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/util/UniqueCoordinateArrayFilterTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo" "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Po"; else rm -f "$(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT UniqueCoordinateArrayFilterTest.obj -MD -MP -MF $(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo -c -o UniqueCoordinateArrayFilterTest.obj `if test -f 'util/UniqueCoordinateArrayFilterTest.cpp'; then $(CYGPATH_W) 'util/UniqueCoordinateArrayFilterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/util/UniqueCoordinateArrayFilterTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/UniqueCoordinateArrayFilterTest.Tpo $(DEPDIR)/UniqueCoordinateArrayFilterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='util/UniqueCoordinateArrayFilterTest.cpp' object='UniqueCoordinateArrayFilterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o UniqueCoordinateArrayFilterTest.obj `if test -f 'util/UniqueCoordinateArrayFilterTest.cpp'; then $(CYGPATH_W) 'util/UniqueCoordinateArrayFilterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/util/UniqueCoordinateArrayFilterTest.cpp'; fi` GEOSCoordSeqTest.o: capi/GEOSCoordSeqTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSCoordSeqTest.o -MD -MP -MF "$(DEPDIR)/GEOSCoordSeqTest.Tpo" -c -o GEOSCoordSeqTest.o `test -f 'capi/GEOSCoordSeqTest.cpp' || echo '$(srcdir)/'`capi/GEOSCoordSeqTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSCoordSeqTest.Tpo" "$(DEPDIR)/GEOSCoordSeqTest.Po"; else rm -f "$(DEPDIR)/GEOSCoordSeqTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSCoordSeqTest.o -MD -MP -MF $(DEPDIR)/GEOSCoordSeqTest.Tpo -c -o GEOSCoordSeqTest.o `test -f 'capi/GEOSCoordSeqTest.cpp' || echo '$(srcdir)/'`capi/GEOSCoordSeqTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSCoordSeqTest.Tpo $(DEPDIR)/GEOSCoordSeqTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSCoordSeqTest.cpp' object='GEOSCoordSeqTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSCoordSeqTest.o `test -f 'capi/GEOSCoordSeqTest.cpp' || echo '$(srcdir)/'`capi/GEOSCoordSeqTest.cpp GEOSCoordSeqTest.obj: capi/GEOSCoordSeqTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSCoordSeqTest.obj -MD -MP -MF "$(DEPDIR)/GEOSCoordSeqTest.Tpo" -c -o GEOSCoordSeqTest.obj `if test -f 'capi/GEOSCoordSeqTest.cpp'; then $(CYGPATH_W) 'capi/GEOSCoordSeqTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSCoordSeqTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSCoordSeqTest.Tpo" "$(DEPDIR)/GEOSCoordSeqTest.Po"; else rm -f "$(DEPDIR)/GEOSCoordSeqTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSCoordSeqTest.obj -MD -MP -MF $(DEPDIR)/GEOSCoordSeqTest.Tpo -c -o GEOSCoordSeqTest.obj `if test -f 'capi/GEOSCoordSeqTest.cpp'; then $(CYGPATH_W) 'capi/GEOSCoordSeqTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSCoordSeqTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSCoordSeqTest.Tpo $(DEPDIR)/GEOSCoordSeqTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSCoordSeqTest.cpp' object='GEOSCoordSeqTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSCoordSeqTest.obj `if test -f 'capi/GEOSCoordSeqTest.cpp'; then $(CYGPATH_W) 'capi/GEOSCoordSeqTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSCoordSeqTest.cpp'; fi` +GEOSGeomFromWKBTest.o: capi/GEOSGeomFromWKBTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGeomFromWKBTest.o -MD -MP -MF $(DEPDIR)/GEOSGeomFromWKBTest.Tpo -c -o GEOSGeomFromWKBTest.o `test -f 'capi/GEOSGeomFromWKBTest.cpp' || echo '$(srcdir)/'`capi/GEOSGeomFromWKBTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSGeomFromWKBTest.Tpo $(DEPDIR)/GEOSGeomFromWKBTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSGeomFromWKBTest.cpp' object='GEOSGeomFromWKBTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSGeomFromWKBTest.o `test -f 'capi/GEOSGeomFromWKBTest.cpp' || echo '$(srcdir)/'`capi/GEOSGeomFromWKBTest.cpp + +GEOSGeomFromWKBTest.obj: capi/GEOSGeomFromWKBTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGeomFromWKBTest.obj -MD -MP -MF $(DEPDIR)/GEOSGeomFromWKBTest.Tpo -c -o GEOSGeomFromWKBTest.obj `if test -f 'capi/GEOSGeomFromWKBTest.cpp'; then $(CYGPATH_W) 'capi/GEOSGeomFromWKBTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSGeomFromWKBTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSGeomFromWKBTest.Tpo $(DEPDIR)/GEOSGeomFromWKBTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSGeomFromWKBTest.cpp' object='GEOSGeomFromWKBTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSGeomFromWKBTest.obj `if test -f 'capi/GEOSGeomFromWKBTest.cpp'; then $(CYGPATH_W) 'capi/GEOSGeomFromWKBTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSGeomFromWKBTest.cpp'; fi` + GEOSGeomToWKTTest.o: capi/GEOSGeomToWKTTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGeomToWKTTest.o -MD -MP -MF "$(DEPDIR)/GEOSGeomToWKTTest.Tpo" -c -o GEOSGeomToWKTTest.o `test -f 'capi/GEOSGeomToWKTTest.cpp' || echo '$(srcdir)/'`capi/GEOSGeomToWKTTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSGeomToWKTTest.Tpo" "$(DEPDIR)/GEOSGeomToWKTTest.Po"; else rm -f "$(DEPDIR)/GEOSGeomToWKTTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGeomToWKTTest.o -MD -MP -MF $(DEPDIR)/GEOSGeomToWKTTest.Tpo -c -o GEOSGeomToWKTTest.o `test -f 'capi/GEOSGeomToWKTTest.cpp' || echo '$(srcdir)/'`capi/GEOSGeomToWKTTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSGeomToWKTTest.Tpo $(DEPDIR)/GEOSGeomToWKTTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSGeomToWKTTest.cpp' object='GEOSGeomToWKTTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSGeomToWKTTest.o `test -f 'capi/GEOSGeomToWKTTest.cpp' || echo '$(srcdir)/'`capi/GEOSGeomToWKTTest.cpp GEOSGeomToWKTTest.obj: capi/GEOSGeomToWKTTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGeomToWKTTest.obj -MD -MP -MF "$(DEPDIR)/GEOSGeomToWKTTest.Tpo" -c -o GEOSGeomToWKTTest.obj `if test -f 'capi/GEOSGeomToWKTTest.cpp'; then $(CYGPATH_W) 'capi/GEOSGeomToWKTTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSGeomToWKTTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSGeomToWKTTest.Tpo" "$(DEPDIR)/GEOSGeomToWKTTest.Po"; else rm -f "$(DEPDIR)/GEOSGeomToWKTTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGeomToWKTTest.obj -MD -MP -MF $(DEPDIR)/GEOSGeomToWKTTest.Tpo -c -o GEOSGeomToWKTTest.obj `if test -f 'capi/GEOSGeomToWKTTest.cpp'; then $(CYGPATH_W) 'capi/GEOSGeomToWKTTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSGeomToWKTTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSGeomToWKTTest.Tpo $(DEPDIR)/GEOSGeomToWKTTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSGeomToWKTTest.cpp' object='GEOSGeomToWKTTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSGeomToWKTTest.obj `if test -f 'capi/GEOSGeomToWKTTest.cpp'; then $(CYGPATH_W) 'capi/GEOSGeomToWKTTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSGeomToWKTTest.cpp'; fi` +GEOSContainsTest.o: capi/GEOSContainsTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSContainsTest.o -MD -MP -MF $(DEPDIR)/GEOSContainsTest.Tpo -c -o GEOSContainsTest.o `test -f 'capi/GEOSContainsTest.cpp' || echo '$(srcdir)/'`capi/GEOSContainsTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSContainsTest.Tpo $(DEPDIR)/GEOSContainsTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSContainsTest.cpp' object='GEOSContainsTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSContainsTest.o `test -f 'capi/GEOSContainsTest.cpp' || echo '$(srcdir)/'`capi/GEOSContainsTest.cpp + +GEOSContainsTest.obj: capi/GEOSContainsTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSContainsTest.obj -MD -MP -MF $(DEPDIR)/GEOSContainsTest.Tpo -c -o GEOSContainsTest.obj `if test -f 'capi/GEOSContainsTest.cpp'; then $(CYGPATH_W) 'capi/GEOSContainsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSContainsTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSContainsTest.Tpo $(DEPDIR)/GEOSContainsTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSContainsTest.cpp' object='GEOSContainsTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSContainsTest.obj `if test -f 'capi/GEOSContainsTest.cpp'; then $(CYGPATH_W) 'capi/GEOSContainsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSContainsTest.cpp'; fi` + +GEOSWithinTest.o: capi/GEOSWithinTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSWithinTest.o -MD -MP -MF $(DEPDIR)/GEOSWithinTest.Tpo -c -o GEOSWithinTest.o `test -f 'capi/GEOSWithinTest.cpp' || echo '$(srcdir)/'`capi/GEOSWithinTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSWithinTest.Tpo $(DEPDIR)/GEOSWithinTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSWithinTest.cpp' object='GEOSWithinTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSWithinTest.o `test -f 'capi/GEOSWithinTest.cpp' || echo '$(srcdir)/'`capi/GEOSWithinTest.cpp + +GEOSWithinTest.obj: capi/GEOSWithinTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSWithinTest.obj -MD -MP -MF $(DEPDIR)/GEOSWithinTest.Tpo -c -o GEOSWithinTest.obj `if test -f 'capi/GEOSWithinTest.cpp'; then $(CYGPATH_W) 'capi/GEOSWithinTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSWithinTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSWithinTest.Tpo $(DEPDIR)/GEOSWithinTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSWithinTest.cpp' object='GEOSWithinTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSWithinTest.obj `if test -f 'capi/GEOSWithinTest.cpp'; then $(CYGPATH_W) 'capi/GEOSWithinTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSWithinTest.cpp'; fi` + GEOSSimplifyTest.o: capi/GEOSSimplifyTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSSimplifyTest.o -MD -MP -MF "$(DEPDIR)/GEOSSimplifyTest.Tpo" -c -o GEOSSimplifyTest.o `test -f 'capi/GEOSSimplifyTest.cpp' || echo '$(srcdir)/'`capi/GEOSSimplifyTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSSimplifyTest.Tpo" "$(DEPDIR)/GEOSSimplifyTest.Po"; else rm -f "$(DEPDIR)/GEOSSimplifyTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSSimplifyTest.o -MD -MP -MF $(DEPDIR)/GEOSSimplifyTest.Tpo -c -o GEOSSimplifyTest.o `test -f 'capi/GEOSSimplifyTest.cpp' || echo '$(srcdir)/'`capi/GEOSSimplifyTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSSimplifyTest.Tpo $(DEPDIR)/GEOSSimplifyTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSSimplifyTest.cpp' object='GEOSSimplifyTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSSimplifyTest.o `test -f 'capi/GEOSSimplifyTest.cpp' || echo '$(srcdir)/'`capi/GEOSSimplifyTest.cpp GEOSSimplifyTest.obj: capi/GEOSSimplifyTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSSimplifyTest.obj -MD -MP -MF "$(DEPDIR)/GEOSSimplifyTest.Tpo" -c -o GEOSSimplifyTest.obj `if test -f 'capi/GEOSSimplifyTest.cpp'; then $(CYGPATH_W) 'capi/GEOSSimplifyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSSimplifyTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSSimplifyTest.Tpo" "$(DEPDIR)/GEOSSimplifyTest.Po"; else rm -f "$(DEPDIR)/GEOSSimplifyTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSSimplifyTest.obj -MD -MP -MF $(DEPDIR)/GEOSSimplifyTest.Tpo -c -o GEOSSimplifyTest.obj `if test -f 'capi/GEOSSimplifyTest.cpp'; then $(CYGPATH_W) 'capi/GEOSSimplifyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSSimplifyTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSSimplifyTest.Tpo $(DEPDIR)/GEOSSimplifyTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSSimplifyTest.cpp' object='GEOSSimplifyTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSSimplifyTest.obj `if test -f 'capi/GEOSSimplifyTest.cpp'; then $(CYGPATH_W) 'capi/GEOSSimplifyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSSimplifyTest.cpp'; fi` +GEOSPreparedGeometryTest.o: capi/GEOSPreparedGeometryTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSPreparedGeometryTest.o -MD -MP -MF $(DEPDIR)/GEOSPreparedGeometryTest.Tpo -c -o GEOSPreparedGeometryTest.o `test -f 'capi/GEOSPreparedGeometryTest.cpp' || echo '$(srcdir)/'`capi/GEOSPreparedGeometryTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSPreparedGeometryTest.Tpo $(DEPDIR)/GEOSPreparedGeometryTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSPreparedGeometryTest.cpp' object='GEOSPreparedGeometryTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSPreparedGeometryTest.o `test -f 'capi/GEOSPreparedGeometryTest.cpp' || echo '$(srcdir)/'`capi/GEOSPreparedGeometryTest.cpp + +GEOSPreparedGeometryTest.obj: capi/GEOSPreparedGeometryTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSPreparedGeometryTest.obj -MD -MP -MF $(DEPDIR)/GEOSPreparedGeometryTest.Tpo -c -o GEOSPreparedGeometryTest.obj `if test -f 'capi/GEOSPreparedGeometryTest.cpp'; then $(CYGPATH_W) 'capi/GEOSPreparedGeometryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSPreparedGeometryTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSPreparedGeometryTest.Tpo $(DEPDIR)/GEOSPreparedGeometryTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSPreparedGeometryTest.cpp' object='GEOSPreparedGeometryTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSPreparedGeometryTest.obj `if test -f 'capi/GEOSPreparedGeometryTest.cpp'; then $(CYGPATH_W) 'capi/GEOSPreparedGeometryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSPreparedGeometryTest.cpp'; fi` + GEOSPolygonizer_getCutEdgesTest.o: capi/GEOSPolygonizer_getCutEdgesTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSPolygonizer_getCutEdgesTest.o -MD -MP -MF "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo" -c -o GEOSPolygonizer_getCutEdgesTest.o `test -f 'capi/GEOSPolygonizer_getCutEdgesTest.cpp' || echo '$(srcdir)/'`capi/GEOSPolygonizer_getCutEdgesTest.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo" "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Po"; else rm -f "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSPolygonizer_getCutEdgesTest.o -MD -MP -MF $(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo -c -o GEOSPolygonizer_getCutEdgesTest.o `test -f 'capi/GEOSPolygonizer_getCutEdgesTest.cpp' || echo '$(srcdir)/'`capi/GEOSPolygonizer_getCutEdgesTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo $(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSPolygonizer_getCutEdgesTest.cpp' object='GEOSPolygonizer_getCutEdgesTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSPolygonizer_getCutEdgesTest.o `test -f 'capi/GEOSPolygonizer_getCutEdgesTest.cpp' || echo '$(srcdir)/'`capi/GEOSPolygonizer_getCutEdgesTest.cpp GEOSPolygonizer_getCutEdgesTest.obj: capi/GEOSPolygonizer_getCutEdgesTest.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSPolygonizer_getCutEdgesTest.obj -MD -MP -MF "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo" -c -o GEOSPolygonizer_getCutEdgesTest.obj `if test -f 'capi/GEOSPolygonizer_getCutEdgesTest.cpp'; then $(CYGPATH_W) 'capi/GEOSPolygonizer_getCutEdgesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSPolygonizer_getCutEdgesTest.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo" "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Po"; else rm -f "$(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSPolygonizer_getCutEdgesTest.obj -MD -MP -MF $(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo -c -o GEOSPolygonizer_getCutEdgesTest.obj `if test -f 'capi/GEOSPolygonizer_getCutEdgesTest.cpp'; then $(CYGPATH_W) 'capi/GEOSPolygonizer_getCutEdgesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSPolygonizer_getCutEdgesTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Tpo $(DEPDIR)/GEOSPolygonizer_getCutEdgesTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSPolygonizer_getCutEdgesTest.cpp' object='GEOSPolygonizer_getCutEdgesTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSPolygonizer_getCutEdgesTest.obj `if test -f 'capi/GEOSPolygonizer_getCutEdgesTest.cpp'; then $(CYGPATH_W) 'capi/GEOSPolygonizer_getCutEdgesTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSPolygonizer_getCutEdgesTest.cpp'; fi` +GEOSGetCentroidTest.o: capi/GEOSGetCentroidTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGetCentroidTest.o -MD -MP -MF $(DEPDIR)/GEOSGetCentroidTest.Tpo -c -o GEOSGetCentroidTest.o `test -f 'capi/GEOSGetCentroidTest.cpp' || echo '$(srcdir)/'`capi/GEOSGetCentroidTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSGetCentroidTest.Tpo $(DEPDIR)/GEOSGetCentroidTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSGetCentroidTest.cpp' object='GEOSGetCentroidTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSGetCentroidTest.o `test -f 'capi/GEOSGetCentroidTest.cpp' || echo '$(srcdir)/'`capi/GEOSGetCentroidTest.cpp + +GEOSGetCentroidTest.obj: capi/GEOSGetCentroidTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSGetCentroidTest.obj -MD -MP -MF $(DEPDIR)/GEOSGetCentroidTest.Tpo -c -o GEOSGetCentroidTest.obj `if test -f 'capi/GEOSGetCentroidTest.cpp'; then $(CYGPATH_W) 'capi/GEOSGetCentroidTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSGetCentroidTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSGetCentroidTest.Tpo $(DEPDIR)/GEOSGetCentroidTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSGetCentroidTest.cpp' object='GEOSGetCentroidTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSGetCentroidTest.obj `if test -f 'capi/GEOSGetCentroidTest.cpp'; then $(CYGPATH_W) 'capi/GEOSGetCentroidTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSGetCentroidTest.cpp'; fi` + +GEOSBufferTest.o: capi/GEOSBufferTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSBufferTest.o -MD -MP -MF $(DEPDIR)/GEOSBufferTest.Tpo -c -o GEOSBufferTest.o `test -f 'capi/GEOSBufferTest.cpp' || echo '$(srcdir)/'`capi/GEOSBufferTest.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSBufferTest.Tpo $(DEPDIR)/GEOSBufferTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSBufferTest.cpp' object='GEOSBufferTest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSBufferTest.o `test -f 'capi/GEOSBufferTest.cpp' || echo '$(srcdir)/'`capi/GEOSBufferTest.cpp + +GEOSBufferTest.obj: capi/GEOSBufferTest.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GEOSBufferTest.obj -MD -MP -MF $(DEPDIR)/GEOSBufferTest.Tpo -c -o GEOSBufferTest.obj `if test -f 'capi/GEOSBufferTest.cpp'; then $(CYGPATH_W) 'capi/GEOSBufferTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSBufferTest.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/GEOSBufferTest.Tpo $(DEPDIR)/GEOSBufferTest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='capi/GEOSBufferTest.cpp' object='GEOSBufferTest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GEOSBufferTest.obj `if test -f 'capi/GEOSBufferTest.cpp'; then $(CYGPATH_W) 'capi/GEOSBufferTest.cpp'; else $(CYGPATH_W) '$(srcdir)/capi/GEOSBufferTest.cpp'; fi` + 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -1279,7 +1459,8 @@ check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ @@ -1288,49 +1469,63 @@ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ + *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ + col=$$red; res=XPASS; \ ;; \ *) \ - echo "PASS: $$tst"; \ + col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ + *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ + col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ + col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ + col=$$blu; res=SKIP; \ fi; \ + echo "$${col}$$res$${std}: $$tst"; \ done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ + banner="$$All$$all $$tests passed"; \ else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ + banner="$$failed of $$all $$tests failed"; \ else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ @@ -1341,39 +1536,45 @@ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ + echo "$$dashes$$std"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/capi - @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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -1403,6 +1604,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -1416,7 +1618,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -1424,18 +1626,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -1456,19 +1678,24 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-checkPROGRAMS clean-generic clean-libtool 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 \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am 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 + tags uninstall uninstall-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. diff -Nru geos-3.1.0/tests/unit/noding/BasicSegmentStringTest.cpp geos-3.2.2/tests/unit/noding/BasicSegmentStringTest.cpp --- geos-3.1.0/tests/unit/noding/BasicSegmentStringTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/noding/BasicSegmentStringTest.cpp 2009-12-03 18:56:25.000000000 +0000 @@ -0,0 +1,211 @@ +// $Id: BasicSegmentStringTest.cpp 2761 2009-12-03 18:56:25Z mloskot $ +// +// Test Suite for geos::noding::BasicSegmentString class. + +#include +// geos +#include +#include +#include +#include +#include +// std +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used by tests + struct test_basicsegmentstring_data + { + + typedef std::auto_ptr \ + CoordinateSequenceAutoPtr; + + typedef std::auto_ptr \ + SegmentStringAutoPtr; + + const geos::geom::CoordinateSequenceFactory* csFactory; + + SegmentStringAutoPtr + makeSegmentString(geos::geom::CoordinateSequence* cs, void *d = 0) + { + return SegmentStringAutoPtr( + new geos::noding::BasicSegmentString(cs, d) + ); + } + + test_basicsegmentstring_data() + : + csFactory(geos::geom::CoordinateArraySequenceFactory::instance()) + { + } + + ~test_basicsegmentstring_data() + { + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_basicsegmentstring_group("geos::noding::BasicSegmentString"); + + // + // Test Cases + // + + // test constructor with 2 equal points + template<> + template<> + void object::test<1>() + { + CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); + + ensure(0 != cs.get()); + + geos::geom::Coordinate c0(0, 0); + geos::geom::Coordinate c1(0, 0); + + cs->add(c0); + cs->add(c1); + + ensure_equals(cs->size(), 2u); + + SegmentStringAutoPtr ss(makeSegmentString(cs.get())); + ensure(0 != ss.get()); + + ensure_equals(ss->size(), 2u); + + ensure_equals(ss->getData(), (void*)0); + + ensure_equals(ss->getCoordinates(), cs.get()); + + ensure_equals(ss->getCoordinate(0), c0); + + ensure_equals(ss->getCoordinate(1), c1); + + ensure_equals(ss->isClosed(), true); + + // this would throw an exception + bool octant_failed=false; + try { + ss->getSegmentOctant(0); + } catch (...) { + octant_failed=true; + } + ensure(octant_failed); + + } + + // test constructor with 2 different points + template<> + template<> + void object::test<2>() + { + CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); + + ensure(0 != cs.get()); + + geos::geom::Coordinate c0(0, 0); + geos::geom::Coordinate c1(1, 0); + + cs->add(c0); + cs->add(c1); + + ensure_equals(cs->size(), 2u); + + SegmentStringAutoPtr ss(makeSegmentString(cs.get())); + ensure(0 != ss.get()); + + ensure_equals(ss->size(), 2u); + + ensure_equals(ss->getData(), (void*)0); + + ensure_equals(ss->getCoordinates(), cs.get()); + + ensure_equals(ss->getCoordinate(0), c0); + + ensure_equals(ss->getCoordinate(1), c1); + + ensure_equals(ss->isClosed(), false); + + ensure_equals(ss->getSegmentOctant(0), 0); + + } + + // test constructor with 4 different points forming a ring + template<> + template<> + void object::test<3>() + { + CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); + + ensure(0 != cs.get()); + + geos::geom::Coordinate c0(0, 0); + geos::geom::Coordinate c1(1, 0); + geos::geom::Coordinate c2(1, 1); + + cs->add(c0); + cs->add(c1); + cs->add(c2); + cs->add(c0); + + ensure_equals(cs->size(), 4u); + + SegmentStringAutoPtr ss(makeSegmentString(cs.get())); + ensure(0 != ss.get()); + + ensure_equals(ss->size(), 4u); + + ensure_equals(ss->getData(), (void*)0); + + ensure_equals(ss->getCoordinates(), cs.get()); + + ensure_equals(ss->getCoordinate(0), c0); + + ensure_equals(ss->getCoordinate(1), c1); + + ensure_equals(ss->getCoordinate(2), c2); + + ensure_equals(ss->getCoordinate(3), c0); + + ensure_equals(ss->isClosed(), true); + + ensure_equals(ss->getSegmentOctant(2), 4); + + ensure_equals(ss->getSegmentOctant(1), 1); + + ensure_equals(ss->getSegmentOctant(0), 0); + + } + + // test Octant class + template<> + template<> + void object::test<4>() + { + geos::geom::Coordinate p0(0, 0); + geos::geom::Coordinate p1(5,-5); + int octant_rc1 = 0; + int octant_rc2 = 0; + int testPassed = true; + try { + octant_rc1 = geos::noding::Octant::octant(p0,p1); + octant_rc2 = geos::noding::Octant::octant(&p0,&p1); + testPassed = (octant_rc1 == octant_rc2); + } + catch (...) { + testPassed = false; + } + ensure( 0 != testPassed); + } + + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/noding/NodedSegmentStringTest.cpp geos-3.2.2/tests/unit/noding/NodedSegmentStringTest.cpp --- geos-3.1.0/tests/unit/noding/NodedSegmentStringTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/noding/NodedSegmentStringTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,285 @@ +// $Id@ +// +// Test Suite for geos::noding::NodedSegmentString class. + +#include +// geos +#include +#include +#include +#include +#include +// std +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used by tests + struct test_nodedsegmentstring_data + { + + typedef std::auto_ptr \ + CoordinateSequenceAutoPtr; + + typedef std::auto_ptr \ + SegmentStringAutoPtr; + + const geos::geom::CoordinateSequenceFactory* csFactory; + + SegmentStringAutoPtr + makeSegmentString(geos::geom::CoordinateSequence* cs, void *d = 0) + { + return SegmentStringAutoPtr( + new geos::noding::NodedSegmentString(cs, d) + ); + } + + test_nodedsegmentstring_data() + : + csFactory(geos::geom::CoordinateArraySequenceFactory::instance()) + { + } + + ~test_nodedsegmentstring_data() + { + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_nodedsegmentstring_group("geos::noding::NodedSegmentString"); + + // + // Test Cases + // + + // test constructor with 2 equal points + template<> + template<> + void object::test<1>() + { + CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); + + ensure(0 != cs.get()); + + geos::geom::Coordinate c0(0, 0); + geos::geom::Coordinate c1(0, 0); + + cs->add(c0); + cs->add(c1); + + ensure_equals(cs->size(), 2u); + + SegmentStringAutoPtr ss(makeSegmentString(cs.get())); + ensure(0 != ss.get()); + + ensure_equals(ss->size(), 2u); + + ensure_equals(ss->getData(), (void*)0); + + ensure_equals(ss->getCoordinates(), cs.get()); + + ensure_equals(ss->getCoordinate(0), c0); + + ensure_equals(ss->getCoordinate(1), c1); + + ensure_equals(ss->isClosed(), true); + + ensure_equals(ss->getNodeList().size(), 0u); + + // this would throw an exception + bool octant_failed=false; + try + { + ss->getSegmentOctant(0); + } + catch (...) + { + octant_failed=true; + } + ensure(octant_failed); + } + + // test constructor with 2 different points + template<> + template<> + void object::test<2>() + { + CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); + + ensure(0 != cs.get()); + + geos::geom::Coordinate c0(0, 0); + geos::geom::Coordinate c1(1, 0); + + cs->add(c0); + cs->add(c1); + + ensure_equals(cs->size(), 2u); + + SegmentStringAutoPtr ss(makeSegmentString(cs.get())); + ensure(0 != ss.get()); + + ensure_equals(ss->size(), 2u); + + ensure_equals(ss->getData(), (void*)0); + + ensure_equals(ss->getCoordinates(), cs.get()); + + ensure_equals(ss->getCoordinate(0), c0); + + ensure_equals(ss->getCoordinate(1), c1); + + ensure_equals(ss->isClosed(), false); + + ensure_equals(ss->getSegmentOctant(0), 0); + + ensure_equals(ss->getNodeList().size(), 0u); + } + + // test constructor with 4 different points forming a ring + template<> + template<> + void object::test<3>() + { + CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); + + ensure(0 != cs.get()); + + geos::geom::Coordinate c0(0, 0); + geos::geom::Coordinate c1(1, 0); + geos::geom::Coordinate c2(1, 1); + + cs->add(c0); + cs->add(c1); + cs->add(c2); + cs->add(c0); + + ensure_equals(cs->size(), 4u); + + SegmentStringAutoPtr ss(makeSegmentString(cs.get())); + ensure(0 != ss.get()); + + ensure_equals(ss->size(), 4u); + + ensure_equals(ss->getData(), (void*)0); + + ensure_equals(ss->getCoordinates(), cs.get()); + + ensure_equals(ss->getCoordinate(0), c0); + + ensure_equals(ss->getCoordinate(1), c1); + + ensure_equals(ss->getCoordinate(2), c2); + + ensure_equals(ss->getCoordinate(3), c0); + + ensure_equals(ss->isClosed(), true); + + ensure_equals(ss->getSegmentOctant(2), 4); + + ensure_equals(ss->getSegmentOctant(1), 1); + + ensure_equals(ss->getSegmentOctant(0), 0); + + ensure_equals(ss->getNodeList().size(), 0u); + } + + // test Octant class + template<> + template<> + void object::test<4>() + { + geos::geom::Coordinate p0(0, 0); + geos::geom::Coordinate p1(5,-5); + int octant_rc1 = 0; + int octant_rc2 = 0; + int testPassed = true; + try { + octant_rc1 = geos::noding::Octant::octant(p0,p1); + octant_rc2 = geos::noding::Octant::octant(&p0,&p1); + testPassed = (octant_rc1 == octant_rc2); + } + catch (...) { + testPassed = false; + } + ensure( 0 != testPassed); + } + + // test adding intersections + template<> + template<> + void object::test<5>() + { + geos::geom::Coordinate p0(0, 0); + geos::geom::Coordinate p1(10, 0); + + + CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); + cs->add(p0); + cs->add(p1); + + SegmentStringAutoPtr ss(makeSegmentString(cs.get())); + + ensure_equals(ss->getNodeList().size(), 0u); + + // the intersection is invalid, but SegmentString trusts us + ss->addIntersection(p0, 0); + ensure_equals(ss->getNodeList().size(), 1u); + + // This node is already present, so shouldn't be + // accepted as a new one + ss->addIntersection(p0, 0); + ensure_equals(ss->getNodeList().size(), 1u); + + ss->addIntersection(p1, 0); + ensure_equals(ss->getNodeList().size(), 2u); + + ss->addIntersection(p1, 0); + ensure_equals(ss->getNodeList().size(), 2u); + + ss->addIntersection(p0, 0); + ensure_equals(ss->getNodeList().size(), 2u); + + } + + // TODO: test getting noded substrings +// template<> +// template<> +// void object::test<6>() +// { +// geos::geom::Coordinate cs1p0(0, 0); +// geos::geom::Coordinate cs1p1(10, 0); +// CoordinateSequenceAutoPtr cs1(csFactory->create(0, 2)); +// cs1->add(cs1p0); +// cs1->add(cs1p1); +// +// geos::geom::Coordinate cs2p0(5, -5); +// geos::geom::Coordinate cs2p1(5, 5); +// CoordinateSequenceAutoPtr cs2(csFactory->create(0, 2)); +// cs2->add(cs2p0); +// cs2->add(cs2p1); +// +// using geos::noding::SegmentString; +// using geos::noding::NodedSegmentString; +// +// SegmentString::NonConstVect inputStrings; +// inputStrings.push_back(makeSegmentString(cs2.get()).get()); +// +// std::auto_ptr nodedStrings( +// NodedSegmentString::getNodedSubstrings(inputStrings) +// ); +// +// ensure_equals(nodedStrings->size(), 0u); +// } + + + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/noding/SegmentNodeTest.cpp geos-3.2.2/tests/unit/noding/SegmentNodeTest.cpp --- geos-3.1.0/tests/unit/noding/SegmentNodeTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/noding/SegmentNodeTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,15 +1,15 @@ -// $Id: SegmentNodeTest.cpp 1820 2006-09-06 16:54:23Z mloskot $ +// $Id: SegmentNodeTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::noding::SegmentNode class. -// TUT -#include -// GEOS +#include +// geos #include -#include +#include #include #include #include +// std #include namespace tut @@ -50,7 +50,7 @@ void object::test<1>() { using geos::geom::Coordinate; - using geos::noding::SegmentString; + using geos::noding::NodedSegmentString; using geos::noding::SegmentNode; // Create coordinates sequence @@ -68,18 +68,19 @@ // Create SegmentString instance - SegmentString segment(cs.get(), 0); + NodedSegmentString segment(cs.get(), 0); ensure_equals( segment.size(), coords_size ); - // Construct a node on the given SegmentString + // Construct a node on the given NodedSegmentString { const size_t segment_index = 0; - Coordinate cint(3, 3); - SegmentNode node( segment, cint, segment_index, + SegmentNode node( segment, Coordinate(3,3), segment_index, segment.getSegmentOctant(segment_index) ); ensure_equals( node.segmentIndex, segment_index ); + + // only first endpoint is considered interior ensure( node.isInterior() ); // @@ -89,6 +90,133 @@ // } + + } + + template<> + template<> + void object::test<2>() + { + using geos::geom::Coordinate; + using geos::noding::NodedSegmentString; + using geos::noding::SegmentNode; + + // Create coordinates sequence + const size_t coords_size = 2; + CoordSeqPtr cs( factory_->create(0, coords_size) ); + + ensure( 0 != cs.get() ); + + Coordinate c0(0, 0); + Coordinate c1(3, 3); + cs->add(c0); + cs->add(c1); + + ensure_equals( cs->size(), coords_size ); + + // Create SegmentString instance + + NodedSegmentString segment(cs.get(), 0); + + ensure_equals( segment.size(), coords_size ); + + // Construct an interior node on the given NodedSegmentString + { + const size_t segment_index = 0; + SegmentNode node( segment, Coordinate(0,0), segment_index, + segment.getSegmentOctant(segment_index) ); + + ensure_equals( node.segmentIndex, segment_index ); + + // on first endpoint ... + ensure( ! node.isInterior() ); + + } + + } + + template<> + template<> + void object::test<3>() + { + using geos::geom::Coordinate; + using geos::noding::NodedSegmentString; + using geos::noding::SegmentNode; + + // Create coordinates sequence + const size_t coords_size = 2; + CoordSeqPtr cs( factory_->create(0, coords_size) ); + + ensure( 0 != cs.get() ); + + Coordinate c0(0, 0); + Coordinate c1(3, 3); + cs->add(c0); + cs->add(c1); + + ensure_equals( cs->size(), coords_size ); + + // Create SegmentString instance + + NodedSegmentString segment(cs.get(), 0); + + ensure_equals( segment.size(), coords_size ); + + // Construct an interior node on the given NodedSegmentString + { + const size_t segment_index = 0; + SegmentNode node( segment, Coordinate(2,2), segment_index, + segment.getSegmentOctant(segment_index) ); + + ensure_equals( node.segmentIndex, segment_index ); + + // on first endpoint ... + ensure( node.isInterior() ); + + } + + } + + template<> + template<> + void object::test<4>() + { + using geos::geom::Coordinate; + using geos::noding::NodedSegmentString; + using geos::noding::SegmentNode; + + // Create coordinates sequence + const size_t coords_size = 2; + CoordSeqPtr cs( factory_->create(0, coords_size) ); + + ensure( 0 != cs.get() ); + + Coordinate c0(0, 0); + Coordinate c1(3, 3); + cs->add(c0); + cs->add(c1); + + ensure_equals( cs->size(), coords_size ); + + // Create SegmentString instance + + NodedSegmentString segment(cs.get(), 0); + + ensure_equals( segment.size(), coords_size ); + + // Construct a node that doesn't even intersect !! + { + const size_t segment_index = 0; + SegmentNode node( segment, Coordinate(1,2), segment_index, + segment.getSegmentOctant(segment_index) ); + + ensure_equals( node.segmentIndex, segment_index ); + + // on first endpoint ... + ensure( node.isInterior() ); + + } + } } // namespace tut diff -Nru geos-3.1.0/tests/unit/noding/SegmentPointComparatorTest.cpp geos-3.2.2/tests/unit/noding/SegmentPointComparatorTest.cpp --- geos-3.1.0/tests/unit/noding/SegmentPointComparatorTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/noding/SegmentPointComparatorTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,14 +1,15 @@ -// $Id: SegmentPointComparatorTest.cpp 1820 2006-09-06 16:54:23Z mloskot $ +// $Id: SegmentPointComparatorTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::noding::SegmentPointComparator class. -// TUT -#include -// GEOS +#include +// geos #include +#include #include #include #include +// std #include namespace tut diff -Nru geos-3.1.0/tests/unit/noding/SegmentStringTest.cpp geos-3.2.2/tests/unit/noding/SegmentStringTest.cpp --- geos-3.1.0/tests/unit/noding/SegmentStringTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/noding/SegmentStringTest.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,263 +0,0 @@ -// $Id: SegmentStringTest.cpp 2229 2008-11-26 19:41:44Z pramsey $ -// -// Test Suite for geos::noding::SegmentString class. - -// TUT -#include -// GEOS -#include -#include -#include -#include -#include -#include - -namespace tut -{ - // - // Test Group - // - - // Common data used by tests - struct test_segmentstring_data - { - - typedef std::auto_ptr \ - CoordinateSequenceAutoPtr; - - typedef std::auto_ptr \ - SegmentStringAutoPtr; - - const geos::geom::CoordinateSequenceFactory* csFactory; - - SegmentStringAutoPtr - makeSegmentString(geos::geom::CoordinateSequence* cs, void *d = 0) - { - return SegmentStringAutoPtr( - new geos::noding::SegmentString(cs, d) - ); - } - - test_segmentstring_data() - : - csFactory(geos::geom::CoordinateArraySequenceFactory::instance()) - { - } - - ~test_segmentstring_data() - { - } - - }; - - typedef test_group group; - typedef group::object object; - - group test_segmentstring_group("geos::noding::SegmentString"); - - // - // Test Cases - // - - // test constructor with 2 equal points - template<> - template<> - void object::test<1>() - { - CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); - - ensure(cs.get()); - - geos::geom::Coordinate c0(0, 0); - geos::geom::Coordinate c1(0, 0); - - cs->add(c0); - cs->add(c1); - - ensure_equals(cs->size(), 2u); - - SegmentStringAutoPtr ss(makeSegmentString(cs.get())); - ensure(ss.get()); - - ensure_equals(ss->size(), 2u); - - ensure_equals(ss->getData(), (void*)0); - - ensure_equals(ss->getCoordinates(), cs.get()); - - ensure_equals(ss->getCoordinate(0), c0); - - ensure_equals(ss->getCoordinate(1), c1); - - ensure_equals(ss->isIsolated(), false); - - ensure_equals(ss->isClosed(), true); - - // this would throw an exception - bool octant_failed=false; - try { - ss->getSegmentOctant(0); - } catch (...) { - octant_failed=true; - } - ensure(octant_failed); - - ensure_equals(ss->getNodeList().size(), 0u); - - ss->testInvariant(); - } - - // test constructor with 2 different points - template<> - template<> - void object::test<2>() - { - CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); - - ensure(cs.get()); - - geos::geom::Coordinate c0(0, 0); - geos::geom::Coordinate c1(1, 0); - - cs->add(c0); - cs->add(c1); - - ensure_equals(cs->size(), 2u); - - SegmentStringAutoPtr ss(makeSegmentString(cs.get())); - ensure(ss.get()); - - ensure_equals(ss->size(), 2u); - - ensure_equals(ss->getData(), (void*)0); - - ensure_equals(ss->getCoordinates(), cs.get()); - - ensure_equals(ss->getCoordinate(0), c0); - - ensure_equals(ss->getCoordinate(1), c1); - - ensure_equals(ss->isIsolated(), false); - - ensure_equals(ss->isClosed(), false); - - ensure_equals(ss->getSegmentOctant(0), 0); - - ensure_equals(ss->getNodeList().size(), 0u); - - ss->testInvariant(); - } - - // test constructor with 4 different points forming a ring - template<> - template<> - void object::test<3>() - { - CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); - - ensure(cs.get()); - - geos::geom::Coordinate c0(0, 0); - geos::geom::Coordinate c1(1, 0); - geos::geom::Coordinate c2(1, 1); - - cs->add(c0); - cs->add(c1); - cs->add(c2); - cs->add(c0); - - ensure_equals(cs->size(), 4u); - - SegmentStringAutoPtr ss(makeSegmentString(cs.get())); - ensure(ss.get()); - - ensure_equals(ss->size(), 4u); - - ensure_equals(ss->getData(), (void*)0); - - ensure_equals(ss->getCoordinates(), cs.get()); - - ensure_equals(ss->getCoordinate(0), c0); - - ensure_equals(ss->getCoordinate(1), c1); - - ensure_equals(ss->getCoordinate(2), c2); - - ensure_equals(ss->getCoordinate(3), c0); - - ensure_equals(ss->isIsolated(), false); - - ensure_equals(ss->isClosed(), true); - - ensure_equals(ss->getSegmentOctant(2), 4); - - ensure_equals(ss->getSegmentOctant(1), 1); - - ensure_equals(ss->getSegmentOctant(0), 0); - - ensure_equals(ss->getNodeList().size(), 0u); - - ss->testInvariant(); - } - - // test adding intersections - template<> - template<> - void object::test<4>() - { - geos::geom::Coordinate p0(0, 0); - geos::geom::Coordinate p1(10, 0); - - - CoordinateSequenceAutoPtr cs(csFactory->create(0, 2)); - cs->add(p0); - cs->add(p1); - - SegmentStringAutoPtr ss(makeSegmentString(cs.get())); - - ensure_equals(ss->getNodeList().size(), 0u); - - // the intersection is invalid, but SegmentString trusts us - ss->addIntersection(p0, 0); - ensure_equals(ss->getNodeList().size(), 1u); - - // This node is already present, so shouldn't be - // accepted as a new one - ss->addIntersection(p0, 0); - ensure_equals(ss->getNodeList().size(), 1u); - - ss->addIntersection(p1, 0); - ensure_equals(ss->getNodeList().size(), 2u); - - ss->addIntersection(p1, 0); - ensure_equals(ss->getNodeList().size(), 2u); - - ss->addIntersection(p0, 0); - ensure_equals(ss->getNodeList().size(), 2u); - - } - - // test Octant class - template<> - template<> - void object::test<5>() - { - geos::geom::Coordinate p0(0, 0); - geos::geom::Coordinate p1(5,-5); - int octant_rc1 = 0; - int octant_rc2 = 0; - int testPassed = true; - try { - octant_rc1 = geos::noding::Octant::octant(p0,p1); - octant_rc2 = geos::noding::Octant::octant(&p0,&p1); - testPassed = (octant_rc1 == octant_rc2); - } - catch (...) { - testPassed = false; - } - ensure(testPassed); - } - - -} // namespace tut - diff -Nru geos-3.1.0/tests/unit/operation/buffer/BufferOpTest.cpp geos-3.2.2/tests/unit/operation/buffer/BufferOpTest.cpp --- geos-3.1.0/tests/unit/operation/buffer/BufferOpTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/buffer/BufferOpTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,274 @@ +// $Id: BufferOpTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Test Suite for geos::operation::buffer::BufferOp class. + +// tut +#include +// geos +#include +#include +#include +#include +#include +#include +#include +#include +#include +// std +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used by tests + struct test_bufferop_data + { + geos::geom::GeometryFactory gf; + geos::io::WKTReader wktreader; + int const default_quadrant_segments; + + typedef geos::geom::Geometry::AutoPtr GeomPtr; + typedef std::auto_ptr CSPtr; + + test_bufferop_data() + : gf(), wktreader(&gf), default_quadrant_segments(geos::operation::buffer::BufferParameters::DEFAULT_QUADRANT_SEGMENTS) + { + ensure_equals(default_quadrant_segments, int(8)); + } + private: + // noncopyable + test_bufferop_data(test_bufferop_data const& other); + test_bufferop_data& operator=(test_bufferop_data const& rhs); + }; + + typedef test_group group; + typedef group::object object; + + group test_bufferop_group("geos::operation::buffer::BufferOp"); + + // + // Test Cases + // + template<> + template<> + void object::test<1>() + { + using geos::operation::buffer::BufferOp; + + std::string wkt0("POINT(0 0)"); + GeomPtr g0(wktreader.read(wkt0)); + + double const distance = 0.0; + BufferOp op(g0.get()); + GeomPtr gBuffer(op.getResultGeometry(distance)); + + ensure(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure_equals(gBuffer->getNumPoints(), std::size_t(0)); + } + + template<> + template<> + void object::test<2>() + { + using geos::operation::buffer::BufferOp; + + std::string wkt0("POINT(0 0)"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with default buffering parameters + double const distance = 1.0; + BufferOp op(g0.get()); + GeomPtr gBuffer(op.getResultGeometry(distance)); + + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() > std::size_t(32)); + } + + template<> + template<> + void object::test<3>() + { + using geos::operation::buffer::BufferOp; + using geos::operation::buffer::BufferParameters; + + std::string wkt0("POINT(0 0)"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with custom parameters: 32 quadrant segments + int const segments = 32; + BufferParameters params(segments); + + BufferOp op(g0.get(), params); + + double const distance = 1.0; + GeomPtr gBuffer(op.getResultGeometry(distance)); + + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() > std::size_t(129)); + } + + template<> + template<> + void object::test<4>() + { + using geos::operation::buffer::BufferOp; + using geos::operation::buffer::BufferParameters; + + // Geometry from XMLTester's buffer.xml, test case #25 + std::string wkt0("MULTIPOLYGON(((708258.754920656 2402197.91172757,708257.029447455 2402206.56901508,708652.961095455 2402312.65463437,708657.068786251 2402304.6356364,708258.754920656 2402197.91172757)),((708653.498611049 2402311.54647056,708708.895756966 2402203.47250014,708280.326454234 2402089.6337791,708247.896591321 2402252.48269854,708367.379593851 2402324.00761653,708248.882609455 2402253.07294874,708249.523621829 2402244.3124463,708261.854734465 2402182.39086576,708262.818392579 2402183.35452387,708653.498611049 2402311.54647056)))"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with custom parameters: 24 quadrant segments + { + int const segments = default_quadrant_segments * 3; + BufferParameters params(segments); + BufferOp op(g0.get(), params); + double const distance = 0.0001; + GeomPtr gBuffer(op.getResultGeometry(distance)); + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() >= std::size_t(245)); + } + + // Buffer point with custom parameters: 32 quadrant segments + { + int const segments = default_quadrant_segments * 4; + BufferParameters params(segments); + BufferOp op(g0.get(), params); + double const distance = 0.0001; + GeomPtr gBuffer(op.getResultGeometry(distance)); + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() >= std::size_t(318)); + } + } + + template<> + template<> + void object::test<5>() + { + using geos::operation::buffer::BufferOp; + using geos::operation::buffer::BufferParameters; + + // Geometry from XMLTester's TestBufferExternal2.xml, test case #31 + std::string wkt0("POLYGON((167187.935985 527215.129985,167246.663985 527205.580985,167280.107985 527210.602985,167314.083985 527213.149985,167354.196985 527218.563985,167363.609985 527204.834985,167358.459985 527177.204985,167344.405985 527172.240985,167323.325985 527164.793985,167304.557985 527167.748985,167285.789985 527170.703985,167260.854985 527176.007985,167211.198985 527149.591985,167165.408985 527140.439985,167141.660985 527146.308985,167119.062985 527137.503985,167119.967985 527139.010985,167078.296985 527188.560985,167105.238985 527267.140985,167090.957985 527316.213985,167094.770985 527321.819985,167082.593985 527377.599985,167065.952985 527417.668985,167056.312985 527449.383985,167043.546985 527485.510985,167019.927985 527525.916985,166982.769985 527539.710985,166961.717985 527606.388985,166933.263985 527657.009985,166899.206985 527710.191985,166916.325985 527722.287985,166973.067985 527744.810985,166978.160985 527695.099985,167043.308985 527684.770985,167080.550985 527644.941985,167101.716985 527610.077985,167109.672985 527576.692985,167099.068985 527561.394985,167097.537985 527527.027985,167105.044985 527510.384985,167137.888985 527502.771985,167160.386985 527500.228985,167174.041985 527468.108985,167205.365985 527466.936985,167200.090985 527446.692985,167182.286985 527416.893985,167214.905985 527399.163985,167245.980985 527379.346985,167258.755985 527325.736985,167261.469985 527296.920985,167237.119985 527273.314985,167201.524985 527264.407985,167192.491985 527252.494985,167172.090985 527216.630985,167187.935985 527215.129985))"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with quadrant segments value (x4) + BufferParameters params(default_quadrant_segments * 4); + BufferOp op(g0.get(), params); + double const distance = -75.0; + GeomPtr gBuffer(op.getResultGeometry(distance)); + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() >= std::size_t(8)); + } + + template<> + template<> + void object::test<6>() + { + using geos::operation::buffer::BufferOp; + using geos::operation::buffer::BufferParameters; + + // Geometry from XMLTester's TestBufferExternal2.xml, test case #41 + std::string wkt0("POLYGON((148410.699985 522834.902985,148442.757985 522825.725985,148460.309985 522827.514985,148487.864985 522844.888985,148500.821985 522849.224985,148522.555985 522842.060985,148549.245985 522836.360985,148568.572985 522826.852985,148584.252985 522812.743985,148609.816985 522787.145985,148614.009985 522767.881985,148612.795985 522752.758985,148612.563985 522743.189985,148618.720985 522735.053985,148625.781585 522726.296485,148618.662985 522724.739985,148612.278985 522723.775985,148605.112985 522714.525985,148611.687985 522677.987985,148611.797985 522647.963985,148594.739985 522625.727985,148584.565985 522622.805985,148562.730985 522628.324985,148543.283985 522615.292985,148536.597985 522557.684985,148536.223985 522555.223985,148534.274985 522546.378985,148533.665985 522541.970985,148533.794985 522540.094985,148535.172985 522535.741985,148538.094985 522529.403985,148538.611985 522526.777985,148539.936985 522513.990985,148540.169985 522509.496985,148540.192985 522500.589985,148540.851985 522495.877985,148540.474985 522491.607985,148539.391985 522489.734985,148536.121985 522486.259985,148532.239985 522483.953985,148529.487985 522487.690985,148527.557985 522489.161985,148523.269985 522490.157985,148512.547985 522491.130985,148508.089985 522491.855985,148503.708985 522492.860985,148499.171985 522494.926985,148493.577985 522498.401985,148488.746985 522500.495985,148483.626985 522501.803985,148480.736985 522503.655985,148464.117985 522534.086985,148427.843985 522552.590985,148408.790985 522571.476985,148398.223985 522596.340985,148407.833985 522615.400985,148416.753985 522662.875985,148420.236985 522689.856985,148421.081985 522713.013985,148415.508985 522722.819985,148391.177985 522725.213985,148358.228985 522724.834985,148355.953985 522741.826985,148341.696985 522767.846985,148328.778985 522795.425985,148312.269985 522806.114985,148322.213985 522836.436985,148339.137985 522884.626985,148351.181985 522896.189985,148376.682985 522893.652985,148389.158985 522851.634985,148410.699985 522834.902985))"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with quadrant segments value (x4) + int const segments = default_quadrant_segments * 4; + BufferParameters params(segments); + BufferOp op(g0.get(), params); + double const distance = -75.0; + GeomPtr gBuffer(op.getResultGeometry(distance)); + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() >= std::size_t(51)); + } + + template<> + template<> + void object::test<7>() + { + using geos::operation::buffer::BufferOp; + using geos::operation::buffer::BufferParameters; + + // Geometry from XMLTester's TestBufferExternal2.xml, test case #42 + std::string wkt0("POLYGON((150213.068985 524020.273985,150226.206985 524020.218985,150245.019985 524022.421985,150248.570985 524017.633985,150243.628985 523991.402985,150233.942985 523969.968985,150203.852985 523929.546985,150189.509985 523905.746985,150179.578985 523905.795985,150163.996985 523891.573985,150150.529985 523872.591985,150158.960985 523848.710985,150150.727985 523827.265985,150129.075985 523796.394985,150110.126985 523782.119985,150064.853985 523787.149985,150051.774985 523791.993985,150035.273985 523796.784985,150034.124985 523803.948985,150047.317985 523842.088985,150048.538985 523846.850985,150048.758985 523856.362985,150044.002985 523858.774985,150033.285985 523861.216985,150022.584985 523866.044985,150013.239985 523875.626985,150010.897985 523882.801985,150007.322985 523904.295985,150015.725985 523913.798985,150028.883985 523920.894985,150036.292985 523937.604985,150033.171985 523964.012985,150028.264985 524013.973985,150020.417985 524042.804985,150014.532985 524064.428985,150004.476985 524083.491985,149987.717985 524115.262985,149981.881985 524139.242985,149991.382985 524146.196985,150012.547985 524165.288985,150017.553385 524169.126585,150024.575985 524166.982985,150037.645985 524157.385985,150054.301985 524147.777985,150067.231985 524142.754985,150080.313985 524135.548985,150096.808985 524132.911985,150108.662985 524120.938985,150113.586985 524111.551985,150113.285985 524097.054985,150114.403985 524085.116985,150121.501985 524075.543985,150134.308985 524061.036985,150143.802985 524053.844985,150159.042985 524051.270985,150177.151985 524046.558985,150188.764985 524039.234985,150195.842985 524027.285985,150213.068985 524020.273985))"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with quadrant segments value (x4) + int const segments = default_quadrant_segments * 4; + BufferParameters params(segments); + BufferOp op(g0.get(), params); + double const distance = -75.0; + GeomPtr gBuffer(op.getResultGeometry(distance)); + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() >= std::size_t(24)); + } + + template<> + template<> + void object::test<8>() + { + using geos::operation::buffer::BufferOp; + using geos::operation::buffer::BufferParameters; + + // Geometry from XMLTester's TestBufferExternal2.xml, test case #98 + std::string wkt0("POLYGON((146978.395985 514128.105985,146993.088985 514109.724985,146990.935985 514109.919985,146986.515985 514108.676985,146984.834985 514107.491985,146981.559985 514104.355985,146978.605985 514100.856985,146976.054985 514097.475985,146971.011985 514090.004985,146967.745985 514085.474985,146964.701985 514082.154985,146959.542985 514075.969985,146956.337985 514072.894985,146952.680985 514071.027985,146947.749985 514069.211985,146939.485985 514065.648985,146927.297985 514062.022985,146919.855985 514059.063985,146915.584985 514057.875985,146911.533985 514057.834985,146907.047985 514058.932985,146902.995985 514060.801985,146899.081985 514063.093985,146893.310985 514066.882985,146889.708985 514069.594985,146885.365985 514073.314985,146874.977985 514084.255985,146871.396985 514088.322985,146864.758985 514096.561985,146858.269985 514103.545985,146851.525985 514109.507985,146845.834985 514113.792985,146843.682985 514115.048985,146833.562985 514120.296985,146827.089985 514122.419985,146822.686985 514123.116985,146818.808985 514122.219985,146814.499985 514120.648985,146810.509985 514118.510985,146805.983985 514115.339985,146799.004985 514109.608985,146789.184985 514100.497985,146782.878985 514094.071985,146773.731985 514084.130985,146772.704985 514082.828985,146770.140985 514078.765985,146767.239985 514075.730985,146765.038985 514075.353985,146760.639985 514077.133985,146756.696985 514093.552985,146755.166985 514104.428985,146754.236985 514107.679985,146747.054985 514128.282985,146745.452985 514132.485985,146740.637985 514142.592985,146736.292985 514152.151985,146732.113985 514160.830985,146729.632985 514165.603985,146720.451985 514182.099985,146718.255985 514185.582985,146715.669985 514189.265985,146708.041985 514198.572985,146700.623985 514208.288985,146697.764985 514212.325985,146695.357985 514216.136985,146693.225985 514220.099985,146691.843985 514223.389985,146688.846985 514231.402985,146687.411985 514235.659985,146686.889985 514238.098985,146686.285985 514244.852985,146686.270985 514253.857985,146686.450985 514255.277985,146686.301985 514260.300985,146683.033985 514264.144985,146683.155985 514265.983985,146682.338985 514271.113985,146682.374985 514276.109985,146680.337985 514280.147985,146677.579985 514283.544985,146668.796985 514293.186985,146665.431985 514297.393985,146661.798985 514300.600985,146659.382985 514304.403985,146657.401985 514310.058985,146656.451985 514315.110985,146657.862985 514320.479985,146660.328985 514325.311985,146664.346985 514327.493985,146671.146985 514330.078985,146674.727985 514332.813985,146678.721985 514337.242985,146681.490985 514340.795985,146686.032985 514347.673985,146690.888985 514355.863985,146692.808985 514359.916985,146693.698985 514363.305985,146695.616985 514373.416985,146698.231985 514382.035985,146699.836985 514386.527985,146701.571985 514390.707985,146703.974985 514394.998985,146706.750985 514398.590985,146710.002985 514401.691985,146712.889985 514403.299985,146717.072985 514405.089985,146726.061985 514410.373985,146734.615985 514414.500985,146745.317985 514418.731985,146749.574985 514420.166985,146751.177985 514420.590985,146755.638985 514421.241985,146756.964985 514414.062985,146760.786985 514395.658985,146762.453985 514390.190985,146763.644985 514384.449985,146765.274985 514379.265985,146767.350985 514375.290985,146772.077985 514367.066985,146782.052985 514344.326985,146787.377985 514332.973985,146796.553985 514316.678985,146800.956985 514309.903985,146805.131985 514302.406985,146810.612985 514294.080985,146815.038985 514286.445985,146817.815985 514282.583985,146823.033985 514277.958985,146826.565985 514274.275985,146829.279985 514270.683985,146831.879985 514268.007985,146838.691985 514261.283985,146846.154985 514255.376985,146849.511985 514252.379985,146854.426985 514246.995985,146866.975985 514234.461985,146873.174985 514227.718985,146875.892985 514224.130985,146883.032985 514216.049985,146888.426985 514211.137985,146895.661985 514205.813985,146898.228985 514203.079985,146900.862985 514199.416985,146903.718985 514196.294985,146910.227985 514189.724985,146918.475985 514180.160985,146921.638985 514177.199985,146925.123985 514174.344985,146929.916985 514170.920985,146942.656985 514162.441985,146948.828985 514158.846985,146952.598985 514156.414985,146955.585985 514153.824985,146964.483985 514144.873985,146967.826985 514140.249985,146969.666985 514137.975985,146978.395985 514128.105985))"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with quadrant segments value (x4) + int const segments = default_quadrant_segments * 4; + BufferParameters params(segments); + BufferOp op(g0.get(), params); + double const distance = -75.0; + GeomPtr gBuffer(op.getResultGeometry(distance)); + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() >= std::size_t(7)); + } + + template<> + template<> + void object::test<9>() + { + using geos::operation::buffer::BufferOp; + using geos::operation::buffer::BufferParameters; + + // Geometry from XMLTester's TestBufferExternal2.xml, test case #99 + std::string wkt0("POLYGON((144130.790985 514542.589985,144136.106985 514541.268985,144140.618985 514541.819985,144146.580985 514542.271985,144155.308985 514545.689985,144159.779985 514546.073985,144165.774985 514546.027985,144170.614985 514545.336985,144174.457985 514542.248985,144180.591985 514535.602985,144185.031985 514531.945985,144188.930985 514529.699985,144202.240985 514526.170985,144204.522985 514525.434985,144208.647985 514523.675985,144209.506985 514523.064985,144212.582985 514519.733985,144214.710985 514516.736985,144217.305985 514512.269985,144225.821985 514492.742985,144230.222985 514479.998985,144238.048985 514458.756985,144239.749985 514453.779985,144242.237985 514445.130985,144246.840985 514428.052985,144247.696985 514425.401985,144249.538985 514420.578985,144253.385985 514411.927985,144260.058985 514394.218985,144264.745985 514384.187985,144266.213985 514379.927985,144267.402985 514375.585985,144266.909985 514372.870985,144264.565985 514368.375985,144255.527985 514363.949985,144249.852985 514362.074985,144245.934985 514359.844985,144246.620985 514355.223985,144248.164985 514351.697985,144250.544985 514347.859985,144251.479985 514346.801985,144258.417985 514340.953985,144264.816985 514336.013985,144266.807985 514330.309985,144266.470985 514325.834985,144264.754985 514315.479985,144263.754985 514311.093985,144261.914985 514304.532985,144260.268985 514300.367985,144258.258985 514296.998985,144255.314985 514293.564985,144253.224985 514291.582985,144249.714985 514288.669985,144245.918985 514286.308985,144244.887985 514285.843985,144240.548985 514284.624985,144234.199985 514283.756985,144225.189985 514283.542985,144216.921985 514283.099985,144200.074985 514283.128985,144195.587985 514283.291985,144186.779985 514284.886985,144177.834985 514285.878985,144169.973985 514286.948985,144165.504985 514287.444985,144158.597985 514287.500985,144150.714985 514288.363985,144146.268985 514289.065985,144138.749985 514290.519985,144129.998985 514292.618985,144122.836985 514294.931985,144118.663985 514296.619985,144116.254985 514315.702985,144113.154985 514338.329985,144110.932985 514350.449985,144109.642985 514359.358985,144103.633985 514384.235985,144100.698985 514392.568985,144099.732985 514399.419985,144098.307985 514417.516985,144097.345985 514425.834985,144096.877985 514434.147985,144095.446985 514450.289985,144095.470985 514467.498985,144095.977985 514472.854985,144095.698985 514478.235985,144090.849985 514512.499985,144086.867985 514532.967985,144086.837985 514540.297985,144083.986985 514558.486985,144082.564985 514573.165985,144082.617985 514579.549985,144083.019985 514582.853985,144084.070985 514587.218985,144088.382985 514601.055985,144090.700985 514599.014985,144094.407985 514596.448985,144099.296985 514594.867985,144103.775985 514594.417985,144104.772985 514593.932985,144108.205985 514590.960985,144109.332985 514588.480985,144110.651985 514584.097985,144115.058985 514573.308985,144115.953985 514570.340985,144117.115985 514565.480985,144117.981985 514561.064985,144120.043985 514555.351985,144121.899985 514551.257985,144123.475985 514548.300985,144126.738985 514544.570985,144130.790985 514542.589985))"); + GeomPtr g0(wktreader.read(wkt0)); + + // Buffer point with quadrant segments value (x4) + int const segments = default_quadrant_segments * 4; + BufferParameters params(segments); + BufferOp op(g0.get(), params); + double const distance = -75.0; + GeomPtr gBuffer(op.getResultGeometry(distance)); + ensure_not(gBuffer->isEmpty()); + ensure(gBuffer->isValid()); + ensure_equals(gBuffer->getGeometryTypeId(), geos::geom::GEOS_POLYGON); + ensure(gBuffer->getNumPoints() >= std::size_t(5)); + } + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/operation/distance/DistanceOpTest.cpp geos-3.2.2/tests/unit/operation/distance/DistanceOpTest.cpp --- geos-3.1.0/tests/unit/operation/distance/DistanceOpTest.cpp 2009-03-11 19:13:00.000000000 +0000 +++ geos-3.2.2/tests/unit/operation/distance/DistanceOpTest.cpp 2009-06-06 22:14:51.000000000 +0100 @@ -1,10 +1,10 @@ -// $Id: DistanceOpTest.cpp 2276 2009-03-11 12:51:20Z mloskot $ +// $Id: DistanceOpTest.cpp 2554 2009-06-06 21:14:51Z strk $ // // Test Suite for geos::operation::distance::DistanceOp class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include @@ -13,7 +13,9 @@ #include #include #include +// std #include +#include #include namespace tut @@ -29,6 +31,7 @@ geos::io::WKTReader wktreader; typedef geos::geom::Geometry::AutoPtr GeomPtr; + typedef std::auto_ptr CSPtr; test_distanceop_data() : gf(), wktreader(&gf) @@ -48,6 +51,7 @@ void object::test<1>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(0 0)"); std::string wkt1("POINT(10 0)"); @@ -58,10 +62,9 @@ ensure_equals(dist.distance(), 10); - // TODO: test closestPoints() and - // closestLocations() - geos::geom::CoordinateSequence* coords = dist.closestPoints(); - ensure(0 != coords); + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(0, 0)); + ensure_equals(cs->getAt(1), Coordinate(10, 0)); } template<> @@ -69,6 +72,7 @@ void object::test<2>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(0 0)"); std::string wkt1("MULTIPOINT(10 0, 50 30)"); @@ -79,8 +83,9 @@ ensure_equals(dist.distance(), 10); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(0, 0)); + ensure_equals(cs->getAt(1), Coordinate(10, 0)); } @@ -89,6 +94,7 @@ void object::test<3>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(3 0)"); std::string wkt1("LINESTRING(0 10, 50 10, 100 50)"); @@ -99,8 +105,9 @@ ensure_equals(dist.distance(), 10); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(3, 0)); + ensure_equals(cs->getAt(1), Coordinate(3, 10)); } @@ -109,6 +116,7 @@ void object::test<4>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(3 0)"); std::string wkt1("MULTILINESTRING((34 54, 60 34),(0 10, 50 10, 100 50))"); @@ -119,8 +127,9 @@ ensure_equals(dist.distance(), 10); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(3, 0)); + ensure_equals(cs->getAt(1), Coordinate(3, 10)); } @@ -129,6 +138,7 @@ void object::test<5>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(35 60)"); std::string wkt1("POLYGON((34 54, 60 34, 60 54, 34 54),(50 50, 52 50, 52 48, 50 48, 50 50))"); @@ -139,8 +149,9 @@ ensure_equals(dist.distance(), 6); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(35, 60)); + ensure_equals(cs->getAt(1), Coordinate(35, 54)); } @@ -149,6 +160,7 @@ void object::test<6>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(35 60)"); std::string wkt1("MULTIPOLYGON(((34 54, 60 34, 60 54, 34 54),(50 50, 52 50, 52 48, 50 48, 50 50)),( (100 100, 150 100, 150 150, 100 150, 100 100),(120 120, 120 130, 130 130, 130 120, 120 120)) ))"); @@ -159,8 +171,9 @@ ensure_equals(dist.distance(), 6); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(35, 60)); + ensure_equals(cs->getAt(1), Coordinate(35, 54)); } @@ -169,6 +182,7 @@ void object::test<7>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(35 60)"); @@ -182,9 +196,9 @@ ensure_equals(dist.distance(), 6); - // TODO: test closestPoints() and - // closestLocations() - + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(35, 60)); + ensure_equals(cs->getAt(1), Coordinate(35, 54)); } template<> @@ -192,6 +206,7 @@ void object::test<8>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POINT(35 60)"); @@ -203,11 +218,9 @@ DistanceOp dist(g0.get(), g1.get()); - ensure_equals(dist.distance(), DoubleInfinity); - - // TODO: test closestPoints() and - // closestLocations() + ensure_equals(dist.distance(), DoubleMax); + ensure_equals(dist.closestPoints(), (void*)0); } template<> @@ -215,6 +228,7 @@ void object::test<9>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(10 0, 50 30)"); std::string wkt1("POINT(10 0)"); @@ -225,8 +239,9 @@ ensure_equals(dist.distance(), 0); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(10, 0)); + ensure_equals(cs->getAt(1), Coordinate(10, 0)); } @@ -235,6 +250,7 @@ void object::test<10>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(10 0, 50 30)"); std::string wkt1("MULTIPOINT(0 0, 150 30)"); @@ -245,8 +261,9 @@ ensure_equals(dist.distance(), 10); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(10, 0)); + ensure_equals(cs->getAt(1), Coordinate(0, 0)); } @@ -255,6 +272,7 @@ void object::test<11>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(3 0, 200 30)"); std::string wkt1("LINESTRING(0 10, 50 10, 100 50)"); @@ -265,8 +283,9 @@ ensure_equals(dist.distance(), 10); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(3, 0)); + ensure_equals(cs->getAt(1), Coordinate(3, 10)); } @@ -275,6 +294,7 @@ void object::test<12>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(3 0, -50 30)"); std::string wkt1("MULTILINESTRING((34 54, 60 34),(0 10, 50 10, 100 50))"); @@ -285,8 +305,9 @@ ensure_equals(dist.distance(), 10); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(3, 0)); + ensure_equals(cs->getAt(1), Coordinate(3, 10)); } @@ -295,6 +316,7 @@ void object::test<13>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(-100 0, 35 60)"); std::string wkt1("POLYGON((34 54, 60 34, 60 54, 34 54),(50 50, 52 50, 52 48, 50 48, 50 50))"); @@ -305,8 +327,9 @@ ensure_equals(dist.distance(), 6); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(35, 60)); + ensure_equals(cs->getAt(1), Coordinate(35, 54)); } @@ -315,6 +338,7 @@ void object::test<14>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(-100 0, 35 60)"); std::string wkt1("MULTIPOLYGON(((34 54, 60 34, 60 54, 34 54),(50 50, 52 50, 52 48, 50 48, 50 50)),( (100 100, 150 100, 150 150, 100 150, 100 100),(120 120, 120 130, 130 130, 130 120, 120 120)) ))"); @@ -325,9 +349,9 @@ ensure_equals(dist.distance(), 6); - // TODO: test closestPoints() and - // closestLocations() - + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(35, 60)); + ensure_equals(cs->getAt(1), Coordinate(35, 54)); } template<> @@ -335,6 +359,7 @@ void object::test<15>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(-100 0, 35 60)"); @@ -348,8 +373,9 @@ ensure_equals(dist.distance(), 6); - // TODO: test closestPoints() and - // closestLocations() + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(35, 60)); + ensure_equals(cs->getAt(1), Coordinate(35, 54)); } @@ -358,6 +384,7 @@ void object::test<16>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("MULTIPOINT(-100 0, 35 60)"); @@ -369,10 +396,9 @@ DistanceOp dist(g0.get(), g1.get()); - ensure_equals(dist.distance(), DoubleInfinity); + ensure_equals(dist.distance(), DoubleMax); - // TODO: test closestPoints() and - // closestLocations() + ensure_equals(dist.closestPoints(), (void*)0); } @@ -383,6 +409,7 @@ void object::test<17>() { using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; std::string wkt0("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))"); std::string wkt1("POLYGON((1.25 0.25, 1.25 0.75, 1.75 0.75, 1.75 0.25, 1.25 0.25))"); @@ -393,9 +420,39 @@ DistanceOp dist(g0.get(), g1.get()); ensure_equals(dist.distance(), 0.25); - // FIXME: This operation crashes becasue of both GeometryLocation's are NULL - // in DistanceOp::closestPoints() - //geos::geom::CoordinateSequence* cs dist.closestPoints(); + CSPtr cs ( dist.closestPoints()); + ensure_equals(cs->getAt(0), Coordinate(1, 0.25)); + ensure_equals(cs->getAt(1), Coordinate(1.25, 0.25)); + } + + // Test for isWithinDistance + template<> + template<> + void object::test<18>() + { + using geos::operation::distance::DistanceOp; + using geos::geom::Coordinate; + + std::string wkt0("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))"); + std::string wkt1("POLYGON((1.25 0.25, 1.25 0.75, 1.75 0.75, 1.75 0.25, 1.25 0.25))"); + + GeomPtr g0(wktreader.read(wkt0)); + GeomPtr g1(wktreader.read(wkt1)); + + ensure_equals(DistanceOp::distance(*g0, *g1), 0.25); + ensure(DistanceOp::isWithinDistance(*g0, *g1, 0.26)); + ensure(!DistanceOp::isWithinDistance(*g0, *g1, 0.24)); + + wkt0 = "LINESTRING(0 0, 0 1, 1 1, 1 0, 0 0)"; + wkt1 = "LINESTRING(2 0, 10 1, 10 10)"; + g0.reset(wktreader.read(wkt0)); + g1.reset(wktreader.read(wkt1)); + + ensure_equals(DistanceOp::distance(*g0, *g1), 1); + ensure(DistanceOp::isWithinDistance(*g0, *g1, 2)); + ensure(!DistanceOp::isWithinDistance(*g0, *g1, 0.8)); + + // TODO: test closestPoints } // TODO: finish the tests by adding: diff -Nru geos-3.1.0/tests/unit/operation/IsSimpleOpTest.cpp geos-3.2.2/tests/unit/operation/IsSimpleOpTest.cpp --- geos-3.1.0/tests/unit/operation/IsSimpleOpTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/operation/IsSimpleOpTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,9 @@ -// $Id: IsSimpleOpTest.cpp 2156 2008-08-12 00:23:44Z mloskot $ +// $Id: IsSimpleOpTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::operation::IsSimpleOp class // Ported from JTS junit/operation/IsSimpleTest.java -// tut -#include +#include // geos #include #include diff -Nru geos-3.1.0/tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp geos-3.2.2/tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/operation/overlay/FuzzyPointLocatorTest.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,198 +0,0 @@ -// $Id: FuzzyPointLocatorTest.cpp 1982 2007-06-01 13:43:59Z mloskot $ -// -// Test Suite for geos::operation::overlay::FuzzyPointLocator class. - - -// TUT -#include -// GEOS -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace tut -{ - // - // Test Group - // - - // Common data used by tests - struct test_fuzzypointlocator_data - { - geos::geom::GeometryFactory gf; - geos::io::WKTReader wktreader; - geos::io::WKBReader wkbreader; - - typedef geos::geom::Geometry::AutoPtr GeomPtr; - - GeomPtr g; - - test_fuzzypointlocator_data() - : - gf(), - wktreader(&gf), - wkbreader(gf) - { - std::string wkt("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - g.reset(wktreader.read(wkt)); - } - }; - - - typedef test_group group; - typedef group::object object; - - group test_fuzzypointlocator_group("geos::operation::overlay::FuzzyPointLocator"); - - // - // Test Cases - // - - template<> - template<> - void object::test<1>() - { - using geos::operation::overlay::FuzzyPointLocator; - using geos::geom::Location; - using geos::geom::Coordinate; - - FuzzyPointLocator locator(*g, 10); - - ensure_equals(locator.getLocation(Coordinate(10, 0)), - Location::BOUNDARY); - - // 8 units away from boundary - ensure_equals(locator.getLocation(Coordinate(18, 5)), - Location::BOUNDARY); - } - - template<> - template<> - void object::test<2>() - { - using geos::operation::overlay::FuzzyPointLocator; - using geos::geom::Location; - using geos::geom::Coordinate; - - FuzzyPointLocator locator(*g, 10); - - // - // These are corner cases. I think they should - // return Location::BOUNDARY, but need to discuss - // this with Martin Davis - // - - // 10 units away from boundary - ensure_equals(locator.getLocation(Coordinate(20, 2)), - Location::EXTERIOR); - - // 10 units away from boundary - ensure_equals(locator.getLocation(Coordinate(-10, 5)), - Location::EXTERIOR); - } - - template<> - template<> - void object::test<3>() - { - using geos::operation::overlay::FuzzyPointLocator; - using geos::geom::Location; - using geos::geom::Coordinate; - - FuzzyPointLocator locator(*g, 8); - - // 5 units away from boundary - ensure_equals(locator.getLocation(Coordinate(5, 5)), - Location::BOUNDARY); - - // 2 units away from boundary - ensure_equals(locator.getLocation(Coordinate(2, 8)), - Location::BOUNDARY); - } - - template<> - template<> - void object::test<4>() - { - using geos::operation::overlay::FuzzyPointLocator; - using geos::geom::Location; - using geos::geom::Coordinate; - - FuzzyPointLocator locator(*g, 2); - - // 5 units away from boundary - ensure_equals(locator.getLocation(Coordinate(5, 5)), - Location::INTERIOR); - - // 3 units away from boundary - ensure_equals(locator.getLocation(Coordinate(3, 7)), - Location::INTERIOR); - } - - - template<> - template<> - void object::test<5>() - { - using geos::operation::overlay::FuzzyPointLocator; - using geos::geom::Location; - geos::geom::Coordinate pt(160.000000125, 119.500004998); - - std::string wkt0("POLYGON((20 40,20 200,180 200,180 120,140 120,180 119,180 40,20 40),(140 160,80 120,140 80,140 160))"); - GeomPtr g0(wktreader.read(wkt0)); - - FuzzyPointLocator locator(*g0, 0.00001); - - // On the boundary ? - ensure_equals(locator.getLocation(pt), Location::BOUNDARY); - - } - - template<> - template<> - void object::test<6>() - { - using geos::operation::overlay::FuzzyPointLocator; - using geos::geom::Location; - // this would return the expected result - //geos::geom::Coordinate pt(160, 120); - geos::geom::Coordinate pt(160, 120.000005); - - std::stringstream wkb0("0103000000020000000800000000000000000034400000000000004440000000000000344000000000000069400000000000806640000000000000694000000000008066400000000000005E4000000000008061400000000000005E4000000000008066400000000000C05D400000000000806640000000000000444000000000000034400000000000004440040000000000000000806140000000000000644000000000000054400000000000005E400000000000806140000000000000544000000000008061400000000000006440"); - GeomPtr g0(wkbreader.readHEX(wkb0)); - - FuzzyPointLocator locator(*g0, 0.000001); - - // On the boundary ? - ensure_equals(locator.getLocation(pt), Location::INTERIOR); - - } - - template<> - template<> - void object::test<7>() - { - using geos::operation::overlay::FuzzyPointLocator; - using geos::geom::Location; - // this would return the expected result - //geos::geom::Coordinate pt(160, 120); - geos::geom::Coordinate pt(160, 120.000005); - - std::stringstream wkb0("0106000000020000000103000000020000000A000000000000000000344000000000000044400000000000003440000000000000694000000000008066400000000000006940000000000080664000000000000064400000000000C0624000000000000064400000000000C062400000000000005E400000000000C0624000000000000054400000000000806640000000000000544000000000008066400000000000004440000000000000344000000000000044400500000000000000000054400000000000005E400000000000806140000000000000544000000000008061400000000000005E400000000000806140000000000000644000000000000054400000000000005E40010300000001000000080000000000000000C062400000000000005E4000000000008066400000000000005E400000000000806640000000000000644000000000000069400000000000006440000000000000694000000000000054400000000000806640000000000000544000000000008066400000000000C05D400000000000C062400000000000005E40"); - GeomPtr g0(wkbreader.readHEX(wkb0)); - - FuzzyPointLocator locator(*g0, 0.000001); - - // On the boundary ? - ensure_equals(locator.getLocation(pt), Location::EXTERIOR); - - } - -} // namespace tut - diff -Nru geos-3.1.0/tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp geos-3.2.2/tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/operation/overlay/OffsetPointGeneratorTest.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,203 +0,0 @@ -// $Id: OffsetPointGeneratorTest.cpp 1982 2007-06-01 13:43:59Z mloskot $ -// -// Test Suite for geos::operation::overlay::OffsetPointGenerator class. - -// TUT -#include -// GEOS -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace tut -{ - using namespace std; - using namespace geos::geom; - - // - // Test Group - // - - // Common data used by tests - struct test_offsetpointgenerator_data - { - geos::geom::GeometryFactory gf; - geos::io::WKTReader wktreader; - geos::algorithm::PointLocator locator; - - typedef geos::geom::Geometry::AutoPtr GeomPtr; - - GeomPtr g; - - test_offsetpointgenerator_data() - : - gf(), - wktreader(&gf) - { - } - - bool - pointsWithinDistance(vector& coords, double dist) - { - // we expect some numerical instability here - // OffsetPointGenerator could produce points - // at *slightly* farther locations then - // requested - // - dist *= 1.0000001; - - for (size_t i=0, n=coords.size(); i pg(gf.createPoint(c)); - double rdist = g->distance(pg.get()); - if ( rdist > dist ) - { - return false; - } - } - return true; - } - - }; - - - typedef test_group group; - typedef group::object object; - - group test_offsetpointgenerator_group("geos::operation::overlay::OffsetPointGenerator"); - - // - // Test Cases - // - - template<> - template<> - void object::test<1>() - { - using geos::operation::overlay::OffsetPointGenerator; - using geos::geom::Coordinate; - using geos::algorithm::PointLocator; - using std::auto_ptr; - using std::vector; - - std::string wkt("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - g.reset(wktreader.read(wkt)); - - double dist = 10; - OffsetPointGenerator gen(*g, dist); - - auto_ptr< vector > coords(gen.getPoints()); - - ensure_equals(coords->size(), (g->getNumPoints()-1)*2); - - ensure(pointsWithinDistance(*coords, dist)); - - } - - template<> - template<> - void object::test<2>() - { - using geos::operation::overlay::OffsetPointGenerator; - using geos::geom::Location; - using geos::geom::Coordinate; - using std::auto_ptr; - using std::vector; - - std::string wkt("POLYGON((0 0, 10 0, 10 5, 10 10, 0 10, 0 0))"); - g.reset(wktreader.read(wkt)); - - double dist = 0.0003; - - OffsetPointGenerator gen(*g, dist); - - auto_ptr< vector > coords(gen.getPoints()); - - ensure_equals(coords->size(), 10u); - - ensure(pointsWithinDistance(*coords, dist)); - } - - template<> - template<> - void object::test<3>() - { - using geos::operation::overlay::OffsetPointGenerator; - using geos::geom::Location; - using geos::geom::Coordinate; - using std::auto_ptr; - using std::vector; - - std::string wkt("POINT(10 -10)"); - g.reset(wktreader.read(wkt)); - - double dist = 0.0003; - - OffsetPointGenerator gen(*g, dist); - - auto_ptr< vector > coords(gen.getPoints()); - - ensure_equals(coords->size(), 0u); - - //ensure(pointsWithinDistance(*coords, dist)); - } - - template<> - template<> - void object::test<4>() - { - using geos::operation::overlay::OffsetPointGenerator; - using geos::geom::Location; - using geos::geom::Coordinate; - using std::auto_ptr; - using std::vector; - - std::string wkt("LINESTRING(10 -10, 5 600)"); - g.reset(wktreader.read(wkt)); - - double dist = 0.03; - - OffsetPointGenerator gen(*g, dist); - - auto_ptr< vector > coords(gen.getPoints()); - - ensure_equals(coords->size(), 2u); - - ensure(pointsWithinDistance(*coords, dist)); - } - - template<> - template<> - void object::test<5>() - { - using geos::operation::overlay::OffsetPointGenerator; - using geos::geom::Location; - using geos::geom::Coordinate; - using std::auto_ptr; - using std::vector; - - std::string wkt("MULTILINESTRING((10 -10, 5 600), (1045 -12, 0 0, -435 34))"); - g.reset(wktreader.read(wkt)); - - double dist = 0.2; - - OffsetPointGenerator gen(*g, dist); - - auto_ptr< vector > coords(gen.getPoints()); - - ensure_equals(coords->size(), 6u); - - ensure(pointsWithinDistance(*coords, dist)); - } - - - -} // namespace tut - diff -Nru geos-3.1.0/tests/unit/operation/overlay/OverlayResultValidatorTest.cpp geos-3.2.2/tests/unit/operation/overlay/OverlayResultValidatorTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/OverlayResultValidatorTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/operation/overlay/OverlayResultValidatorTest.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,181 +0,0 @@ -// $Id: OverlayResultValidatorTest.cpp 1982 2007-06-01 13:43:59Z mloskot $ -// -// Test Suite for geos::operation::overlay::OverlayResultValidator class. - -// TUT -#include -// GEOS -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace tut -{ - using namespace geos::operation::overlay; - - // - // Test Group - // - - // Common data used by tests - struct test_overlayresultvalidator_data - { - geos::geom::GeometryFactory gf; - geos::io::WKTReader wktreader; - geos::algorithm::PointLocator locator; - - typedef geos::geom::Geometry::AutoPtr GeomPtr; - - GeomPtr g0, g1, gres; - - test_overlayresultvalidator_data() - : - gf(), - wktreader(&gf) - { - } - - }; - - - typedef test_group group; - typedef group::object object; - - group test_overlayresultvalidator_group("geos::operation::overlay::OverlayResultValidator"); - - // - // Test Cases - // - - template<> - template<> - void object::test<1>() - { - - std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g0(wktreader.read(wkt0)); - - std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g1(wktreader.read(wkt1)); - - std::string wktres("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr gres(wktreader.read(wkt1)); - - OverlayResultValidator validator(*g0, *g1, *gres); - - ensure( validator.isValid(OverlayOp::opUNION) ); - } - - template<> - template<> - void object::test<2>() - { - - std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g0(wktreader.read(wkt0)); - - std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g1(wktreader.read(wkt1)); - - std::string wktres("POLYGON((0 0, 10.001 0, 10 10, 0 10, 0 0))"); - GeomPtr gres(wktreader.read(wktres)); - - OverlayResultValidator validator(*g0, *g1, *gres); - - ensure (! validator.isValid(OverlayOp::opUNION) ); - } - - template<> - template<> - void object::test<3>() - { - - std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g0(wktreader.read(wkt0)); - - std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g1(wktreader.read(wkt1)); - - std::string wktres("POLYGON((0 0, 9.999 0, 10 10, 0 10, 0 0))"); - GeomPtr gres(wktreader.read(wktres)); - - OverlayResultValidator validator(*g0, *g1, *gres); - - ensure (! validator.isValid(OverlayOp::opUNION) ); - } - - // Result of union has an hole not in input - template<> - template<> - void object::test<4>() - { - - std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g0(wktreader.read(wkt0)); - - std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g1(wktreader.read(wkt1)); - - std::string wktres("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(5 5, 5 6, 6 6, 5 5))"); - GeomPtr gres(wktreader.read(wktres)); - - OverlayResultValidator validator(*g0, *g1, *gres); - - ensure (! validator.isValid(OverlayOp::opUNION) ); - } - - - template<> - template<> - void object::test<5>() - { - - std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); - GeomPtr g0(wktreader.read(wkt0)); - - std::string wkt1("POLYGON((5 0, 1500 0, 1500 10, 5 10, 5 0))"); - GeomPtr g1(wktreader.read(wkt1)); - - // small shift - std::string wktres("POLYGON((0 0, 750 0.0001, 150 0, 150 10, 0 10, 0 0))"); - GeomPtr gres(wktreader.read(wktres)); - - OverlayResultValidator validator(*g0, *g1, *gres); - - ensure (! validator.isValid(OverlayOp::opUNION) ); - } - - template<> - template<> - void object::test<6>() - { - - std::string wkt0("POLYGON ((20.0 40.0, 20.0 200.0, 180.0 200.0, 180.0 120.0, 140.0 120.0, 180.0 119.0, 180.0 40.0, 20.0 40.0), (140.0 160.0, 80.0 120.0, 140.0 80.0, 140.0 160.0))"); - GeomPtr g0(wktreader.read(wkt0)); - - std::string wkt1("POLYGON ((200.0 160.0, 150.0 160.0, 150.0 80.0, 200.0 80.0, 200.0 160.0))"); - GeomPtr g1(wktreader.read(wkt1)); - - std::string wktres("MULTIPOLYGON (((20.0 40.0, 20.0 200.0, 180.0 200.0, 180.0 160.0, 150.0 160.0, 150.0 120.0, 150.0 80.0, 180.0 80.0, 180.0 40.0, 20.0 40.0), (80.0 120.0, 140.0 80.0, 140.0 120.0, 140.0 160.0, 80.0 120.0)), ((150.0 120.0, 180.0 120.0, 180.0 160.0, 200.0 160.0, 200.0 80.0, 180.0 80.0, 180.0 119.0, 150.0 120.0)))"); - GeomPtr gres(wktreader.read(wktres)); - - OverlayResultValidator validator(*g0, *g1, *gres); - - ensure ( ! validator.isValid(OverlayOp::opSYMDIFFERENCE) ); - } - - - // - // TODO: add tests for other operations - // and other geometry types (IFF we drop the limit of the - // class to only work with areal geoms) - - -} // namespace tut - diff -Nru geos-3.1.0/tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp geos-3.2.2/tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/overlay/snap/GeometrySnapperTest.cpp 2009-05-05 11:14:39.000000000 +0100 @@ -0,0 +1,97 @@ +// $Id: GeometrySnapperTest.cpp 2468 2009-05-05 10:14:39Z strk $ +// +// Test Suite for geos::operation::overlay::snap::GeometrySnapper class. + +// tut +#include +// geos +#include +#include +#include +#include +// std +#include +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used by tests + struct test_geometrysnapper_data + { + typedef std::auto_ptr GeomAutoPtr; + + geos::geom::GeometryFactory factory; + + geos::io::WKTReader reader; + + GeomAutoPtr src; + + geos::operation::overlay::snap::GeometrySnapper snapper; + + test_geometrysnapper_data() + : + factory(), // initialize before use! + reader(&factory), + src(reader.read( + "POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))" + )), + snapper( *(src.get()) ) + + { + } + }; + + typedef test_group group; + typedef group::object object; + + group test_geometrysnapper_group("geos::operation::overlay::snap::GeometrySnapper"); + + // + // Test Cases + // + + // Test vertices snapping + template<> + template<> + void object::test<1>() + { + GeomAutoPtr snap(reader.read( + "MULTIPOINT ((0 0), (0 100.0000001), (100 100), (100 0))" + )); + + GeomAutoPtr expected(reader.read( + "POLYGON ((0 0, 0 100.0000001, 100 100, 100 0, 0 0))" + )); + + GeomAutoPtr ret(snapper.snapTo( *(snap.get()), 0.000001 )); + + ensure( ret->equalsExact(expected.get(),0) ); + + } + + // Test vertices snapping + template<> + template<> + void object::test<2>() + { + GeomAutoPtr snap(reader.read( + "MULTIPOINT ((0.0000001 50))" + )); + + GeomAutoPtr expected(reader.read( + "POLYGON ((0 0, 0.0000001 50, 0 100, 100 100, 100 0, 0 0))" + )); + + GeomAutoPtr ret(snapper.snapTo( *(snap.get()), 0.000001 )); + + ensure( ret->equalsExact(expected.get(),0) ); + } + + + +} // namespace tut diff -Nru geos-3.1.0/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp geos-3.2.2/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp 2009-05-05 11:14:39.000000000 +0100 @@ -0,0 +1,115 @@ +// $Id: LineStringSnapperTest.cpp 2468 2009-05-05 10:14:39Z strk $ +// +// Test Suite for geos::operation::overlay::snap::LineStringSnapper class. + +// tut +#include +// geos +#include +#include +#include +#include +// std +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used by tests + struct test_linestringsnapper_data + { + + test_linestringsnapper_data() {} + }; + + typedef test_group group; + typedef group::object object; + + group test_linestringsnapper_group("geos::operation::overlay::snap::LineStringSnapper"); + + // + // Test Cases + // + + // Test vertices snapping + template<> + template<> + void object::test<1>() + { + using geos::geom::Coordinate; + using geos::operation::overlay::snap::LineStringSnapper; + + typedef std::auto_ptr CoordsVectAptr; + + + // source coordinates + Coordinate src_a(0, 0); + Coordinate src_b(10, 10); + + // snap coordinates + Coordinate snp_a(0.1, 0); + Coordinate snp_b(10, 10.1); + + Coordinate::Vect srcCoords; + srcCoords.push_back( src_a ); + srcCoords.push_back( src_b ); + + Coordinate::ConstVect snpCoords; + snpCoords.push_back( &snp_a ); + snpCoords.push_back( &snp_b ); + + LineStringSnapper snapper(srcCoords, 0.4); + + CoordsVectAptr ret(snapper.snapTo(snpCoords)); + + // both points should have been snapped + ensure_equals(ret->operator[](0), snp_a); + ensure_equals(ret->operator[](1), snp_b); + + } + + // Test segment snapping + template<> + template<> + void object::test<2>() + { + using geos::geom::Coordinate; + using geos::operation::overlay::snap::LineStringSnapper; + + typedef std::auto_ptr CoordsVectAptr; + + + // source coordinates + Coordinate src_a(0, 0); + Coordinate src_b(10, 10); + + // snap coordinates + Coordinate snp_a(0.4, 0); + Coordinate snp_b(10, 10.4); + + Coordinate::Vect srcCoords; + srcCoords.push_back( src_a ); + srcCoords.push_back( src_b ); + + Coordinate::ConstVect snpCoords; + snpCoords.push_back( &snp_a ); + snpCoords.push_back( &snp_b ); + + LineStringSnapper snapper(srcCoords, 0.3); + + CoordsVectAptr ret(snapper.snapTo(snpCoords)); + + // snap point a should be inserted + ensure_equals(ret->size(), 3u); + ensure_equals(ret->operator[](0), src_a); + ensure_equals(ret->operator[](1), snp_a); + ensure_equals(ret->operator[](2), src_b); + + } + + +} // namespace tut diff -Nru geos-3.1.0/tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp geos-3.2.2/tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/overlay/validate/FuzzyPointLocatorTest.cpp 2009-05-04 22:28:26.000000000 +0100 @@ -0,0 +1,199 @@ +// $Id: FuzzyPointLocatorTest.cpp 2462 2009-05-04 21:28:26Z strk $ +// +// Test Suite for geos::operation::overlay::validate::FuzzyPointLocator class. + + +// tut +#include +// geos +#include +#include +#include +#include +#include +#include +#include +// std +#include +#include + +namespace tut +{ + // + // Test Group + // + + // Common data used by tests + struct test_fuzzypointlocator_data + { + geos::geom::GeometryFactory gf; + geos::io::WKTReader wktreader; + geos::io::WKBReader wkbreader; + + typedef geos::geom::Geometry::AutoPtr GeomPtr; + + GeomPtr g; + + test_fuzzypointlocator_data() + : + gf(), + wktreader(&gf), + wkbreader(gf) + { + std::string wkt("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + g.reset(wktreader.read(wkt)); + } + }; + + + typedef test_group group; + typedef group::object object; + + group test_fuzzypointlocator_group("geos::operation::overlay::validate::FuzzyPointLocator"); + + // + // Test Cases + // + + template<> + template<> + void object::test<1>() + { + using geos::operation::overlay::validate::FuzzyPointLocator; + using geos::geom::Location; + using geos::geom::Coordinate; + + FuzzyPointLocator locator(*g, 10); + + ensure_equals(locator.getLocation(Coordinate(10, 0)), + Location::BOUNDARY); + + // 8 units away from boundary + ensure_equals(locator.getLocation(Coordinate(18, 5)), + Location::BOUNDARY); + } + + template<> + template<> + void object::test<2>() + { + using geos::operation::overlay::validate::FuzzyPointLocator; + using geos::geom::Location; + using geos::geom::Coordinate; + + FuzzyPointLocator locator(*g, 10); + + // + // These are corner cases. I think they should + // return Location::BOUNDARY, but need to discuss + // this with Martin Davis + // + + // 10 units away from boundary + ensure_equals(locator.getLocation(Coordinate(20, 2)), + Location::EXTERIOR); + + // 10 units away from boundary + ensure_equals(locator.getLocation(Coordinate(-10, 5)), + Location::EXTERIOR); + } + + template<> + template<> + void object::test<3>() + { + using geos::operation::overlay::validate::FuzzyPointLocator; + using geos::geom::Location; + using geos::geom::Coordinate; + + FuzzyPointLocator locator(*g, 8); + + // 5 units away from boundary + ensure_equals(locator.getLocation(Coordinate(5, 5)), + Location::BOUNDARY); + + // 2 units away from boundary + ensure_equals(locator.getLocation(Coordinate(2, 8)), + Location::BOUNDARY); + } + + template<> + template<> + void object::test<4>() + { + using geos::operation::overlay::validate::FuzzyPointLocator; + using geos::geom::Location; + using geos::geom::Coordinate; + + FuzzyPointLocator locator(*g, 2); + + // 5 units away from boundary + ensure_equals(locator.getLocation(Coordinate(5, 5)), + Location::INTERIOR); + + // 3 units away from boundary + ensure_equals(locator.getLocation(Coordinate(3, 7)), + Location::INTERIOR); + } + + + template<> + template<> + void object::test<5>() + { + using geos::operation::overlay::validate::FuzzyPointLocator; + using geos::geom::Location; + geos::geom::Coordinate pt(160.000000125, 119.500004998); + + std::string wkt0("POLYGON((20 40,20 200,180 200,180 120,140 120,180 119,180 40,20 40),(140 160,80 120,140 80,140 160))"); + GeomPtr g0(wktreader.read(wkt0)); + + FuzzyPointLocator locator(*g0, 0.00001); + + // On the boundary ? + ensure_equals(locator.getLocation(pt), Location::BOUNDARY); + + } + + template<> + template<> + void object::test<6>() + { + using geos::operation::overlay::validate::FuzzyPointLocator; + using geos::geom::Location; + // this would return the expected result + //geos::geom::Coordinate pt(160, 120); + geos::geom::Coordinate pt(160, 120.000005); + + std::stringstream wkb0("0103000000020000000800000000000000000034400000000000004440000000000000344000000000000069400000000000806640000000000000694000000000008066400000000000005E4000000000008061400000000000005E4000000000008066400000000000C05D400000000000806640000000000000444000000000000034400000000000004440040000000000000000806140000000000000644000000000000054400000000000005E400000000000806140000000000000544000000000008061400000000000006440"); + GeomPtr g0(wkbreader.readHEX(wkb0)); + + FuzzyPointLocator locator(*g0, 0.000001); + + // On the boundary ? + ensure_equals(locator.getLocation(pt), Location::INTERIOR); + + } + + template<> + template<> + void object::test<7>() + { + using geos::operation::overlay::validate::FuzzyPointLocator; + using geos::geom::Location; + // this would return the expected result + //geos::geom::Coordinate pt(160, 120); + geos::geom::Coordinate pt(160, 120.000005); + + std::stringstream wkb0("0106000000020000000103000000020000000A000000000000000000344000000000000044400000000000003440000000000000694000000000008066400000000000006940000000000080664000000000000064400000000000C0624000000000000064400000000000C062400000000000005E400000000000C0624000000000000054400000000000806640000000000000544000000000008066400000000000004440000000000000344000000000000044400500000000000000000054400000000000005E400000000000806140000000000000544000000000008061400000000000005E400000000000806140000000000000644000000000000054400000000000005E40010300000001000000080000000000000000C062400000000000005E4000000000008066400000000000005E400000000000806640000000000000644000000000000069400000000000006440000000000000694000000000000054400000000000806640000000000000544000000000008066400000000000C05D400000000000C062400000000000005E40"); + GeomPtr g0(wkbreader.readHEX(wkb0)); + + FuzzyPointLocator locator(*g0, 0.000001); + + // On the boundary ? + ensure_equals(locator.getLocation(pt), Location::EXTERIOR); + + } + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp geos-3.2.2/tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/overlay/validate/OffsetPointGeneratorTest.cpp 2009-05-04 22:28:26.000000000 +0100 @@ -0,0 +1,204 @@ +// $Id: OffsetPointGeneratorTest.cpp 2462 2009-05-04 21:28:26Z strk $ +// +// Test Suite for geos::operation::overlay::validate::OffsetPointGenerator class. + +// tut +#include +// geos +#include +#include +#include +#include +#include +#include +#include +// std +#include +#include + +namespace tut +{ + using namespace std; + using namespace geos::geom; + + // + // Test Group + // + + // Common data used by tests + struct test_offsetpointgenerator_data + { + geos::geom::GeometryFactory gf; + geos::io::WKTReader wktreader; + geos::algorithm::PointLocator locator; + + typedef geos::geom::Geometry::AutoPtr GeomPtr; + + GeomPtr g; + + test_offsetpointgenerator_data() + : + gf(), + wktreader(&gf) + { + } + + bool + pointsWithinDistance(vector& coords, double dist) + { + // we expect some numerical instability here + // OffsetPointGenerator could produce points + // at *slightly* farther locations then + // requested + // + dist *= 1.0000001; + + for (size_t i=0, n=coords.size(); i pg(gf.createPoint(c)); + double rdist = g->distance(pg.get()); + if ( rdist > dist ) + { + return false; + } + } + return true; + } + + }; + + + typedef test_group group; + typedef group::object object; + + group test_offsetpointgenerator_group("geos::operation::overlay::validate::OffsetPointGenerator"); + + // + // Test Cases + // + + template<> + template<> + void object::test<1>() + { + using geos::operation::overlay::validate::OffsetPointGenerator; + using geos::geom::Coordinate; + using geos::algorithm::PointLocator; + using std::auto_ptr; + using std::vector; + + std::string wkt("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + g.reset(wktreader.read(wkt)); + + double dist = 10; + OffsetPointGenerator gen(*g, dist); + + auto_ptr< vector > coords(gen.getPoints()); + + ensure_equals(coords->size(), (g->getNumPoints()-1)*2); + + ensure(pointsWithinDistance(*coords, dist)); + + } + + template<> + template<> + void object::test<2>() + { + using geos::operation::overlay::validate::OffsetPointGenerator; + using geos::geom::Location; + using geos::geom::Coordinate; + using std::auto_ptr; + using std::vector; + + std::string wkt("POLYGON((0 0, 10 0, 10 5, 10 10, 0 10, 0 0))"); + g.reset(wktreader.read(wkt)); + + double dist = 0.0003; + + OffsetPointGenerator gen(*g, dist); + + auto_ptr< vector > coords(gen.getPoints()); + + ensure_equals(coords->size(), 10u); + + ensure(pointsWithinDistance(*coords, dist)); + } + + template<> + template<> + void object::test<3>() + { + using geos::operation::overlay::validate::OffsetPointGenerator; + using geos::geom::Location; + using geos::geom::Coordinate; + using std::auto_ptr; + using std::vector; + + std::string wkt("POINT(10 -10)"); + g.reset(wktreader.read(wkt)); + + double dist = 0.0003; + + OffsetPointGenerator gen(*g, dist); + + auto_ptr< vector > coords(gen.getPoints()); + + ensure_equals(coords->size(), 0u); + + //ensure(pointsWithinDistance(*coords, dist)); + } + + template<> + template<> + void object::test<4>() + { + using geos::operation::overlay::validate::OffsetPointGenerator; + using geos::geom::Location; + using geos::geom::Coordinate; + using std::auto_ptr; + using std::vector; + + std::string wkt("LINESTRING(10 -10, 5 600)"); + g.reset(wktreader.read(wkt)); + + double dist = 0.03; + + OffsetPointGenerator gen(*g, dist); + + auto_ptr< vector > coords(gen.getPoints()); + + ensure_equals(coords->size(), 2u); + + ensure(pointsWithinDistance(*coords, dist)); + } + + template<> + template<> + void object::test<5>() + { + using geos::operation::overlay::validate::OffsetPointGenerator; + using geos::geom::Location; + using geos::geom::Coordinate; + using std::auto_ptr; + using std::vector; + + std::string wkt("MULTILINESTRING((10 -10, 5 600), (1045 -12, 0 0, -435 34))"); + g.reset(wktreader.read(wkt)); + + double dist = 0.2; + + OffsetPointGenerator gen(*g, dist); + + auto_ptr< vector > coords(gen.getPoints()); + + ensure_equals(coords->size(), 6u); + + ensure(pointsWithinDistance(*coords, dist)); + } + + + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cpp geos-3.2.2/tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cpp --- geos-3.1.0/tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/overlay/validate/OverlayResultValidatorTest.cpp 2009-05-04 22:28:26.000000000 +0100 @@ -0,0 +1,183 @@ +// $Id: OverlayResultValidatorTest.cpp 2462 2009-05-04 21:28:26Z strk $ +// +// Test Suite for geos::operation::overlay::validate::OverlayResultValidator class. + +// tut +#include +// geos +#include +#include +#include +#include +#include +#include +#include +// std +#include +#include + +namespace tut +{ + using namespace geos::operation::overlay; + using namespace geos::operation::overlay::validate; + + // + // Test Group + // + + // Common data used by tests + struct test_overlayresultvalidator_data + { + geos::geom::GeometryFactory gf; + geos::io::WKTReader wktreader; + geos::algorithm::PointLocator locator; + + typedef geos::geom::Geometry::AutoPtr GeomPtr; + + GeomPtr g0, g1, gres; + + test_overlayresultvalidator_data() + : + gf(), + wktreader(&gf) + { + } + + }; + + + typedef test_group group; + typedef group::object object; + + group test_overlayresultvalidator_group("geos::operation::overlay::validate::OverlayResultValidator"); + + // + // Test Cases + // + + template<> + template<> + void object::test<1>() + { + + std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g0(wktreader.read(wkt0)); + + std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g1(wktreader.read(wkt1)); + + std::string wktres("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr gres(wktreader.read(wkt1)); + + OverlayResultValidator validator(*g0, *g1, *gres); + + ensure( validator.isValid(OverlayOp::opUNION) ); + } + + template<> + template<> + void object::test<2>() + { + + std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g0(wktreader.read(wkt0)); + + std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g1(wktreader.read(wkt1)); + + std::string wktres("POLYGON((0 0, 10.001 0, 10 10, 0 10, 0 0))"); + GeomPtr gres(wktreader.read(wktres)); + + OverlayResultValidator validator(*g0, *g1, *gres); + + ensure (! validator.isValid(OverlayOp::opUNION) ); + } + + template<> + template<> + void object::test<3>() + { + + std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g0(wktreader.read(wkt0)); + + std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g1(wktreader.read(wkt1)); + + std::string wktres("POLYGON((0 0, 9.999 0, 10 10, 0 10, 0 0))"); + GeomPtr gres(wktreader.read(wktres)); + + OverlayResultValidator validator(*g0, *g1, *gres); + + ensure (! validator.isValid(OverlayOp::opUNION) ); + } + + // Result of union has an hole not in input + template<> + template<> + void object::test<4>() + { + + std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g0(wktreader.read(wkt0)); + + std::string wkt1("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g1(wktreader.read(wkt1)); + + std::string wktres("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(5 5, 5 6, 6 6, 5 5))"); + GeomPtr gres(wktreader.read(wktres)); + + OverlayResultValidator validator(*g0, *g1, *gres); + + ensure (! validator.isValid(OverlayOp::opUNION) ); + } + + + template<> + template<> + void object::test<5>() + { + + std::string wkt0("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"); + GeomPtr g0(wktreader.read(wkt0)); + + std::string wkt1("POLYGON((5 0, 1500 0, 1500 10, 5 10, 5 0))"); + GeomPtr g1(wktreader.read(wkt1)); + + // small shift + std::string wktres("POLYGON((0 0, 750 0.0001, 150 0, 150 10, 0 10, 0 0))"); + GeomPtr gres(wktreader.read(wktres)); + + OverlayResultValidator validator(*g0, *g1, *gres); + + ensure (! validator.isValid(OverlayOp::opUNION) ); + } + + template<> + template<> + void object::test<6>() + { + + std::string wkt0("POLYGON ((20.0 40.0, 20.0 200.0, 180.0 200.0, 180.0 120.0, 140.0 120.0, 180.0 119.0, 180.0 40.0, 20.0 40.0), (140.0 160.0, 80.0 120.0, 140.0 80.0, 140.0 160.0))"); + GeomPtr g0(wktreader.read(wkt0)); + + std::string wkt1("POLYGON ((200.0 160.0, 150.0 160.0, 150.0 80.0, 200.0 80.0, 200.0 160.0))"); + GeomPtr g1(wktreader.read(wkt1)); + + std::string wktres("MULTIPOLYGON (((20.0 40.0, 20.0 200.0, 180.0 200.0, 180.0 160.0, 150.0 160.0, 150.0 120.0, 150.0 80.0, 180.0 80.0, 180.0 40.0, 20.0 40.0), (80.0 120.0, 140.0 80.0, 140.0 120.0, 140.0 160.0, 80.0 120.0)), ((150.0 120.0, 180.0 120.0, 180.0 160.0, 200.0 160.0, 200.0 80.0, 180.0 80.0, 180.0 119.0, 150.0 120.0)))"); + GeomPtr gres(wktreader.read(wktres)); + + OverlayResultValidator validator(*g0, *g1, *gres); + + ensure ( ! validator.isValid(OverlayOp::opSYMDIFFERENCE) ); + } + + + // + // TODO: add tests for other operations + // and other geometry types (IFF we drop the limit of the + // class to only work with areal geoms) + + +} // namespace tut + diff -Nru geos-3.1.0/tests/unit/operation/union/CascadedPolygonUnionTest.cpp geos-3.2.2/tests/unit/operation/union/CascadedPolygonUnionTest.cpp --- geos-3.1.0/tests/unit/operation/union/CascadedPolygonUnionTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/operation/union/CascadedPolygonUnionTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,10 @@ -// $Id: CascadedPolygonUnionTest.cpp 2253 2009-01-23 23:58:18Z mloskot $ +// $Id: CascadedPolygonUnionTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::operation::geounion::CascadedPolygonUnion class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include @@ -12,6 +12,10 @@ #include #include #include +// std +#include +#include +#include namespace tut { @@ -47,11 +51,14 @@ std::auto_ptr unionAll; iterator end = geoms->end(); - for (iterator i = geoms->begin(); i != end; ++i) { - if (!unionAll.get()) { + for (iterator i = geoms->begin(); i != end; ++i) + { + if (!unionAll.get()) + { unionAll.reset((*i)->clone()); } - else { + else + { unionAll.reset(unionAll->Union(*i)); } } diff -Nru geos-3.1.0/tests/unit/operation/valid/IsValidTest.cpp geos-3.2.2/tests/unit/operation/valid/IsValidTest.cpp --- geos-3.1.0/tests/unit/operation/valid/IsValidTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/valid/IsValidTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,79 @@ +// $Id: IsValidTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Test Suite for geos::operation::valid::IsValidOp class +// Ported from JTS junit/operation/valid/IsValidTest.java rev. 1.1 + +#include +// geos +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for ISNAN +// std +#include +#include + +using namespace geos::geom; +//using namespace geos::operation; +using namespace geos::operation::valid; + +namespace tut +{ + // + // Test Group + // + + struct test_isvalidop_data + { + typedef std::auto_ptr GeomPtr; + + geos::geom::PrecisionModel pm_; + geos::geom::GeometryFactory factory_; + + test_isvalidop_data() + : pm_(1), factory_(&pm_, 0) + {} + }; + + typedef test_group group; + typedef group::object object; + + group test_isvalidop_group("geos::operation::valid::IsValidOp"); + + // + // Test Cases + // + + // 1 - testInvalidCoordinate + template<> + template<> + void object::test<1>() + { + CoordinateSequence* cs = new CoordinateArraySequence(); + cs->add(Coordinate(0.0, 0.0)); + cs->add(Coordinate(1.0, DoubleNotANumber)); + GeomPtr line ( factory_.createLineString(cs) ); + + + IsValidOp isValidOp(line.get()); + bool valid = isValidOp.isValid(); + + TopologyValidationError* err = isValidOp.getValidationError(); + ensure(0 != err); + const Coordinate& errCoord = err->getCoordinate(); + + ensure_equals( err->getErrorType(), + TopologyValidationError::eInvalidCoordinate ); + + ensure(0 != ISNAN(errCoord.y)); + ensure_equals(valid, false); + } + + +} // namespace tut diff -Nru geos-3.1.0/tests/unit/operation/valid/ValidClosedRingTest.cpp geos-3.2.2/tests/unit/operation/valid/ValidClosedRingTest.cpp --- geos-3.1.0/tests/unit/operation/valid/ValidClosedRingTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/valid/ValidClosedRingTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,163 @@ +// $Id: ValidClosedRingTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Test Suite for geos::operation::valid::IsValidOp class +// Ported from JTS junit/operation/valid/ValidClosedRingTest.java rev. 1.1 + +#include +// geos +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for ISNAN +// std +#include +#include +#include + +using namespace geos::geom; +//using namespace geos::operation; +using namespace geos::operation::valid; +using namespace geos::util; +using namespace std; + +namespace tut +{ + // + // Test Group + // + + struct test_validclosedring_data + { + typedef std::auto_ptr GeomPtr; + + geos::geom::PrecisionModel pm_; + geos::geom::GeometryFactory factory_; + geos::io::WKTReader rdr; + + test_validclosedring_data() + : pm_(1), factory_(&pm_, 0), rdr(&factory_) + {} + + GeomPtr fromWKT(const std::string& wkt) + { + GeomPtr geom; + try { + geom.reset( rdr.read(wkt) ); + } + catch (const GEOSException& ex) { + cerr << ex.what() << endl; + } + return geom; + } + + void updateNonClosedRing(LinearRing& ring) + { + CoordinateSequence& pts = *(const_cast( + ring.getCoordinatesRO() + )); + Coordinate c = pts[0]; + c.x += 0.0001; + pts.setAt(c, 0); + } + + void checkIsValid(Geometry& geom, bool expected) + { + IsValidOp validator(&geom); + bool isValid = validator.isValid(); + ensure_equals(isValid, expected); + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_validclosedring_group("geos::operation::valid::ValidClosedRing"); + + // + // Test Cases + // + + // 1 - testBadLinearRing + template<> + template<> + void object::test<1>() + { + GeomPtr geom = fromWKT("LINEARRING (0 0, 0 10, 10 10, 10 0, 0 0)"); + LinearRing* ring_chk = dynamic_cast(geom.get()); + ensure(0 != ring_chk); + LinearRing& ring = *ring_chk; + //cout << ring.toString() << endl; + updateNonClosedRing(ring); + //cout << ring.toString() << endl; + checkIsValid(*geom, false); + } + + // 2 - testGoodLinearRing + template<> + template<> + void object::test<2>() + { + GeomPtr geom = fromWKT("LINEARRING (0 0, 0 10, 10 10, 10 0, 0 0)"); + checkIsValid(*geom, true); + } + + // 3 - testBadPolygonShell + template<> + template<> + void object::test<3>() + { + GeomPtr geom = fromWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1) ))"); + Polygon* poly = dynamic_cast(geom.get()); + ensure(0 != poly); + const LineString* ring = poly->getExteriorRing(); + + const LinearRing* lr = dynamic_cast(ring); + ensure(0 != lr); + + LinearRing* nclr = const_cast(lr); + + updateNonClosedRing(*nclr); + checkIsValid(*geom, false); + } + + // 4 - testBadPolygonHole + template<> + template<> + void object::test<4>() + { + GeomPtr geom = fromWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1) ))"); + Polygon* poly = dynamic_cast(geom.get()); + ensure(0 != poly); + const LineString* ring = poly->getInteriorRingN(0); + + const LinearRing* lr = dynamic_cast(ring); + ensure(0 != lr); + + LinearRing* nclr = const_cast(lr); + + updateNonClosedRing(*nclr); + checkIsValid(*geom, false); + } + + // 5 - testGoodPolygon + template<> + template<> + void object::test<5>() + { + GeomPtr geom = fromWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))"); + checkIsValid(*geom, true); + } + + +} // namespace tut diff -Nru geos-3.1.0/tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp geos-3.2.2/tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp --- geos-3.1.0/tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/operation/valid/ValidSelfTouchingRingFormingHoleTest.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,188 @@ +// $Id: ValidSelfTouchingRingFormingHoleTest.cpp 2809 2009-12-06 01:05:24Z mloskot $ +// +// Test Suite for geos::operation::valid::IsValidOp class +// Ported from JTS junit/operation/valid/ValidSelfTouchingRingFormingHoleTest.java rev. 1.4 + +#include +// geos +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for ISNAN +// std +#include +#include +#include + +using namespace geos::geom; +//using namespace geos::operation; +using namespace geos::operation::valid; +using namespace geos::util; +using namespace std; + +namespace tut +{ + // + // Test Group + // + + struct test_ValidSelfTouchingRingFormingHole_data + { + typedef std::auto_ptr GeomPtr; + + geos::geom::PrecisionModel pm_; + geos::geom::GeometryFactory factory_; + geos::io::WKTReader rdr; + + test_ValidSelfTouchingRingFormingHole_data() + : pm_(1), factory_(&pm_, 0), rdr(&factory_) + {} + + GeomPtr fromWKT(const std::string& wkt) + { + GeomPtr geom; + try { + geom.reset( rdr.read(wkt) ); + } + catch (const GEOSException& ex) { + cerr << ex.what() << endl; + } + return geom; + } + + void checkIsValidDefault(const std::string& wkt, bool expected) + { + GeomPtr geom = fromWKT(wkt); + IsValidOp validator(geom.get()); + bool isValid = validator.isValid(); + ensure(isValid == expected); + } + + void checkIsValidSTR(const std::string& wkt, bool expected) + { + GeomPtr geom = fromWKT(wkt); + IsValidOp validator(geom.get()); + validator.setSelfTouchingRingFormingHoleValid(true); + bool isValid = validator.isValid(); + ensure(isValid == expected); + } + + }; + + typedef test_group group; + typedef group::object object; + + group test_ValidSelfTouchingRingFormingHole_group("geos::operation::valid::ValidSelfTouchingRingFormingHole"); + + // + // Test Cases + // + + // 1 - testShellAndHoleSelfTouch + // + // Tests a geometry with both a shell self-touch and a hole self=touch. + // This is valid if STR is allowed, but invalid in OGC + // + template<> + template<> + void object::test<1>() + { + string wkt = "POLYGON ((0 0, 0 340, 320 340, 320 0, 120 0, 180 100, 60 100, 120 0, 0 0), (80 300, 80 180, 200 180, 200 240, 280 200, 280 280, 200 240, 200 300, 80 300))"; + checkIsValidSTR(wkt, true); + checkIsValidDefault(wkt, false); + } + + /* + * 2 - testShellHoleAndHoleHoleTouch + * + * Tests a geometry representing the same area as in + * {@link #testShellAndHoleSelfTouch} + * but using a shell-hole touch and a hole-hole touch. + * This is valid in OGC. + */ + template<> + template<> + void object::test<2>() + { + string wkt = "POLYGON ((0 0, 0 340, 320 340, 320 0, 120 0, 0 0), (120 0, 180 100, 60 100, 120 0), (80 300, 80 180, 200 180, 200 240, 200 300, 80 300), (200 240, 280 200, 280 280, 200 240))"; + checkIsValidSTR(wkt, true); + checkIsValidDefault(wkt, true); + } + + /* + * 3 - testShellSelfTouchHoleOverlappingHole + * + * Tests an overlapping hole condition, where one of the holes is + * created by a shell self-touch. + * This is never valid. + */ + template<> + template<> + void object::test<3>() + { + string wkt = "POLYGON ((0 0, 220 0, 220 200, 120 200, 140 100, 80 100, 120 200, 0 200, 0 0), (200 80, 20 80, 120 200, 200 80))"; + checkIsValidSTR(wkt, false); + checkIsValidDefault(wkt, false); + } + + /* + * 4 - testDisconnectedInteriorShellSelfTouchAtNonVertex + * + * Ensure that the Disconnected Interior condition is not validated + */ + template<> + template<> + void object::test<4>() + { + string wkt = "POLYGON ((40 180, 40 60, 240 60, 240 180, 140 60, 40 180))"; + checkIsValidSTR(wkt, false); + checkIsValidDefault(wkt, false); + } + + /* + * 5 - testDisconnectedInteriorShellSelfTouchAtVertex + * + * Ensure that the Disconnected Interior condition is not validated + */ + template<> + template<> + void object::test<5>() + { + string wkt = "POLYGON ((20 20, 20 100, 140 100, 140 180, 260 180, 260 100, 140 100, 140 20, 20 20))"; + checkIsValidSTR(wkt, false); + checkIsValidDefault(wkt, false); + } + + /// 6 - testShellCross() + template<> + template<> + void object::test<6>() + { + string wkt = "POLYGON ((20 20, 120 20, 120 220, 240 220, 240 120, 20 120, 20 20))"; + checkIsValidSTR(wkt, false); + checkIsValidDefault(wkt, false); + } + + /// 7 - testShellCrossAndSTR + template<> + template<> + void object::test<7>() + { + string wkt = "POLYGON ((20 20, 120 20, 120 220, 180 220, 140 160, 200 160, 180 220, 240 220, 240 120, 20 120, 20 20))"; + checkIsValidSTR(wkt, false); + checkIsValidDefault(wkt, false); + } + + + +} // namespace tut diff -Nru geos-3.1.0/tests/unit/precision/GeometrySnapperTest.cpp geos-3.2.2/tests/unit/precision/GeometrySnapperTest.cpp --- geos-3.1.0/tests/unit/precision/GeometrySnapperTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/precision/GeometrySnapperTest.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,97 +0,0 @@ -// $Id: GeometrySnapperTest.cpp 1823 2006-09-06 17:48:09Z strk $ -// -// Test Suite for geos::precision::GeometrySnapper class. - -// TUT -#include -// GEOS -#include -#include -#include -#include - -// STL -#include -#include - -namespace tut -{ - // - // Test Group - // - - // Common data used by tests - struct test_geometrysnapper_data - { - typedef std::auto_ptr GeomAutoPtr; - - geos::geom::GeometryFactory factory; - - geos::io::WKTReader reader; - - GeomAutoPtr src; - - geos::precision::GeometrySnapper snapper; - - test_geometrysnapper_data() - : - factory(), // initialize before use! - reader(&factory), - src(reader.read( - "POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))" - )), - snapper( *(src.get()) ) - - { - } - }; - - typedef test_group group; - typedef group::object object; - - group test_geometrysnapper_group("geos::precision::GeometrySnapper"); - - // - // Test Cases - // - - // Test vertices snapping - template<> - template<> - void object::test<1>() - { - GeomAutoPtr snap(reader.read( - "MULTIPOINT ((0 0), (0 100.0000001), (100 100), (100 0))" - )); - - GeomAutoPtr expected(reader.read( - "POLYGON ((0 0, 0 100.0000001, 100 100, 100 0, 0 0))" - )); - - GeomAutoPtr ret(snapper.snapTo( *(snap.get()), 0.000001 )); - - ensure( ret->equalsExact(expected.get(),0) ); - - } - - // Test vertices snapping - template<> - template<> - void object::test<2>() - { - GeomAutoPtr snap(reader.read( - "MULTIPOINT ((0.0000001 50))" - )); - - GeomAutoPtr expected(reader.read( - "POLYGON ((0 0, 0.0000001 50, 0 100, 100 100, 100 0, 0 0))" - )); - - GeomAutoPtr ret(snapper.snapTo( *(snap.get()), 0.000001 )); - - ensure( ret->equalsExact(expected.get(),0) ); - } - - - -} // namespace tut diff -Nru geos-3.1.0/tests/unit/precision/LineStringSnapperTest.cpp geos-3.2.2/tests/unit/precision/LineStringSnapperTest.cpp --- geos-3.1.0/tests/unit/precision/LineStringSnapperTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/precision/LineStringSnapperTest.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,115 +0,0 @@ -// $Id: LineStringSnapperTest.cpp 1842 2006-09-07 15:28:03Z strk $ -// -// Test Suite for geos::precision::LineStringSnapper class. - -// TUT -#include -// GEOS -#include -#include -#include -#include -// STL -#include -#include - -namespace tut -{ - // - // Test Group - // - - // Common data used by tests - struct test_linestringsnapper_data - { - - test_linestringsnapper_data() {} - }; - - typedef test_group group; - typedef group::object object; - - group test_linestringsnapper_group("geos::precision::LineStringSnapper"); - - // - // Test Cases - // - - // Test vertices snapping - template<> - template<> - void object::test<1>() - { - using geos::geom::Coordinate; - using geos::precision::LineStringSnapper; - - typedef std::auto_ptr CoordsVectAptr; - - - // source coordinates - Coordinate src_a(0, 0); - Coordinate src_b(10, 10); - - // snap coordinates - Coordinate snp_a(0.1, 0); - Coordinate snp_b(10, 10.1); - - Coordinate::Vect srcCoords; - srcCoords.push_back( src_a ); - srcCoords.push_back( src_b ); - - Coordinate::ConstVect snpCoords; - snpCoords.push_back( &snp_a ); - snpCoords.push_back( &snp_b ); - - LineStringSnapper snapper(srcCoords, 0.4); - - CoordsVectAptr ret(snapper.snapTo(snpCoords)); - - // both points should have been snapped - ensure_equals(ret->operator[](0), snp_a); - ensure_equals(ret->operator[](1), snp_b); - - } - - // Test segment snapping - template<> - template<> - void object::test<2>() - { - using geos::geom::Coordinate; - using geos::precision::LineStringSnapper; - - typedef std::auto_ptr CoordsVectAptr; - - - // source coordinates - Coordinate src_a(0, 0); - Coordinate src_b(10, 10); - - // snap coordinates - Coordinate snp_a(0.4, 0); - Coordinate snp_b(10, 10.4); - - Coordinate::Vect srcCoords; - srcCoords.push_back( src_a ); - srcCoords.push_back( src_b ); - - Coordinate::ConstVect snpCoords; - snpCoords.push_back( &snp_a ); - snpCoords.push_back( &snp_b ); - - LineStringSnapper snapper(srcCoords, 0.3); - - CoordsVectAptr ret(snapper.snapTo(snpCoords)); - - // snap point a should be inserted - ensure_equals(ret->size(), 3u); - ensure_equals(ret->operator[](0), src_a); - ensure_equals(ret->operator[](1), snp_a); - ensure_equals(ret->operator[](2), src_b); - - } - - -} // namespace tut diff -Nru geos-3.1.0/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp geos-3.2.2/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp --- geos-3.1.0/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/precision/SimpleGeometryPrecisionReducerTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,17 +1,16 @@ -// $Id: SimpleGeometryPrecisionReducerTest.cpp 2136 2008-07-25 20:56:30Z mloskot $ +// $Id: SimpleGeometryPrecisionReducerTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::precision::SimpleGeometryPrecisionReducer class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include #include #include - -// STL +// std #include #include diff -Nru geos-3.1.0/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp geos-3.2.2/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp --- geos-3.1.0/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,16 +1,15 @@ -// $Id: DouglasPeuckerSimplifierTest.cpp 1988 2007-06-08 17:13:36Z mloskot $ +// $Id: DouglasPeuckerSimplifierTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::simplify::DouglasPeuckerSimplifierTest -// TUT -#include -// GEOS +#include +// geos #include #include #include #include #include - +// std #include #include diff -Nru geos-3.1.0/tests/unit/simplify/TopologyPreservingSimplifierTest.cpp geos-3.2.2/tests/unit/simplify/TopologyPreservingSimplifierTest.cpp --- geos-3.1.0/tests/unit/simplify/TopologyPreservingSimplifierTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/simplify/TopologyPreservingSimplifierTest.cpp 2009-04-09 22:46:30.000000000 +0100 @@ -1,7 +1,9 @@ -// $Id: TopologyPreservingSimplifierTest.cpp 2162 2008-08-18 16:30:56Z mloskot $ +// $Id: TopologyPreservingSimplifierTest.cpp 2344 2009-04-09 21:46:30Z mloskot $ // // Test Suite for geos::simplify::TopologyPreservingSimplifier +#include +#include // geos #include #include @@ -12,9 +14,6 @@ // std #include #include -// tut -#include -#include namespace tut { diff -Nru geos-3.1.0/tests/unit/tut/tut_assert.hpp geos-3.2.2/tests/unit/tut/tut_assert.hpp --- geos-3.1.0/tests/unit/tut/tut_assert.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_assert.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,201 @@ +#ifndef TUT_ASSERT_H_GUARD +#define TUT_ASSERT_H_GUARD + +#include "tut_exception.hpp" +#include +#include + +#if defined(TUT_USE_POSIX) +#include +#include +#endif + +namespace tut +{ + + namespace detail + { + template + std::ostream &msg_prefix(std::ostream &str, const M &msg) + { + std::stringstream ss; + ss << msg; + + if(!ss.str().empty()) + { + str << ss.rdbuf() << ": "; + } + + return str; + } + } + + +namespace +{ + +/** + * Tests provided condition. + * Throws if false. + */ +void ensure(bool cond) +{ + if (!cond) + { + // TODO: default ctor? + throw failure(""); + } +} + +/** + * Tests provided condition. + * Throws if true. + */ +void ensure_not(bool cond) +{ + ensure(!cond); +} + +/** + * Tests provided condition. + * Throws if false. + */ +template +void ensure(const M& msg, bool cond) +{ + if (!cond) + { + throw failure(msg); + } +} + +/** + * Tests provided condition. + * Throws if true. + */ +template +void ensure_not(const M& msg, bool cond) +{ + ensure(msg, !cond); +} + +/** + * Tests two objects for being equal. + * Throws if false. + * + * NB: both T and Q must have operator << defined somewhere, or + * client code will not compile at all! + */ +template +void ensure_equals(const M& msg, const LHS& actual, const RHS& expected) +{ + if (expected != actual) + { + std::stringstream ss; + detail::msg_prefix(ss,msg) + << "expected '" + << expected + << "' actual '" + << actual + << '\''; + throw failure(ss.str()); + } +} + +template +void ensure_equals(const LHS& actual, const RHS& expected) +{ + ensure_equals("Values are not equal", actual, expected); +} + +template +void ensure_equals(const M& msg, const double& actual, const double& expected, + const double& epsilon = std::numeric_limits::epsilon()) +{ + const double diff = actual - expected; + + if ( !((diff <= epsilon) && (diff >= -epsilon )) ) + { + std::stringstream ss; + detail::msg_prefix(ss,msg) + << std::scientific + << std::showpoint + << std::setprecision(16) + << "expected " << expected + << " actual " << actual + << " with precision " << epsilon; + throw failure(ss.str()); + } +} +/** + * Tests two objects for being at most in given distance one from another. + * Borders are excluded. + * Throws if false. + * + * NB: T must have operator << defined somewhere, or + * client code will not compile at all! Also, T shall have + * operators + and -, and be comparable. + * + * TODO: domains are wrong, T - T might not yield T, but Q + */ +template +void ensure_distance(const M& msg, const T& actual, const T& expected, const T& distance) +{ + if (expected-distance >= actual || expected+distance <= actual) + { + std::stringstream ss; + detail::msg_prefix(ss,msg) + << " expected (" + << expected-distance + << " - " + << expected+distance + << ") actual '" + << actual + << '\''; + throw failure(ss.str()); + } +} + +template +void ensure_distance(const T& actual, const T& expected, const T& distance) +{ + ensure_distance<>("Distance is wrong", actual, expected, distance); +} + +template +void ensure_errno(const M& msg, bool cond) +{ + if(!cond) + { +#if defined(TUT_USE_POSIX) + char e[512]; + std::stringstream ss; + detail::msg_prefix(ss,msg) + << strerror_r(errno, e, sizeof(e)); + throw failure(ss.str()); +#else + throw failure(msg); +#endif + } +} + +/** + * Unconditionally fails with message. + */ +void fail(const char* msg = "") +{ + throw failure(msg); +} + +template +void fail(const M& msg) +{ + throw failure(msg); +} + +} // end of namespace + +} + +#endif + diff -Nru geos-3.1.0/tests/unit/tut/tut_console_reporter.hpp geos-3.2.2/tests/unit/tut/tut_console_reporter.hpp --- geos-3.1.0/tests/unit/tut/tut_console_reporter.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_console_reporter.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,241 @@ +#ifndef TUT_CONSOLE_REPORTER +#define TUT_CONSOLE_REPORTER + +#include +#include + +/** + * Template Unit Tests Framework for C++. + * http://tut.dozen.ru + * + * @author Vladimir Dyuzhev, Vladimir.Dyuzhev@gmail.com + */ +namespace +{ + +std::ostream& operator<<(std::ostream& os, const tut::test_result& tr) +{ + switch(tr.result) + { + case tut::test_result::ok: + os << '.'; + break; + case tut::test_result::fail: + os << '[' << tr.test << "=F]"; + break; + case tut::test_result::ex_ctor: + os << '[' << tr.test << "=C]"; + break; + case tut::test_result::ex: + os << '[' << tr.test << "=X]"; + break; + case tut::test_result::warn: + os << '[' << tr.test << "=W]"; + break; + case tut::test_result::term: + os << '[' << tr.test << "=T]"; + break; + case tut::test_result::rethrown: + os << '[' << tr.test << "=P]"; + break; + case tut::test_result::dummy: + assert(!"Should never be called"); + } + + return os; +} + +} // end of namespace + +namespace tut +{ + +/** + * Default TUT callback handler. + */ +class console_reporter : public tut::callback +{ + std::string current_group; + typedef std::vector not_passed_list; + not_passed_list not_passed; + std::ostream& os; + +public: + + int ok_count; + int exceptions_count; + int failures_count; + int terminations_count; + int warnings_count; + + console_reporter() + : os(std::cout) + { + init(); + } + + console_reporter(std::ostream& out) + : os(out) + { + init(); + } + + void run_started() + { + init(); + } + + void test_completed(const tut::test_result& tr) + { + if (tr.group != current_group) + { + os << std::endl << tr.group << ": " << std::flush; + current_group = tr.group; + } + + os << tr << std::flush; + + // update global statistics + switch (tr.result) { + case test_result::ok: + ok_count++; + break; + case test_result::fail: + case test_result::rethrown: + failures_count++; + break; + case test_result::ex: + case test_result::ex_ctor: + exceptions_count++; + break; + case test_result::warn: + warnings_count++; + break; + case test_result::term: + terminations_count++; + break; + case tut::test_result::dummy: + assert(!"Should never be called"); + } // switch + + if (tr.result != tut::test_result::ok) + { + not_passed.push_back(tr); + } + } + + void run_completed() + { + os << std::endl; + + if (not_passed.size() > 0) + { + not_passed_list::const_iterator i = not_passed.begin(); + while (i != not_passed.end()) + { + tut::test_result tr = *i; + + os << std::endl; + + os << "---> " << "group: " << tr.group + << ", test: test<" << tr.test << ">" + << (!tr.name.empty() ? (std::string(" : ") + tr.name) : std::string()) + << std::endl; + +#if defined(TUT_USE_POSIX) + if(tr.pid != getpid()) + { + os << " child pid: " << tr.pid << std::endl; + } +#endif + os << " problem: "; + switch(tr.result) + { + case test_result::rethrown: + os << "assertion failed in child" << std::endl; + break; + case test_result::fail: + os << "assertion failed" << std::endl; + break; + case test_result::ex: + case test_result::ex_ctor: + os << "unexpected exception" << std::endl; + if( tr.exception_typeid != "" ) + { + os << " exception typeid: " + << tr.exception_typeid << std::endl; + } + break; + case test_result::term: + os << "would be terminated" << std::endl; + break; + case test_result::warn: + os << "test passed, but cleanup code (destructor) raised" + " an exception" << std::endl; + break; + default: + break; + } + + if (!tr.message.empty()) + { + if (tr.result == test_result::fail) + { + os << " failed assertion: \"" << tr.message << "\"" + << std::endl; + } + else + { + os << " message: \"" << tr.message << "\"" + << std::endl; + } + } + + ++i; + } + } + + os << std::endl; + + os << "tests summary:"; + if (terminations_count > 0) + { + os << " terminations:" << terminations_count; + } + if (exceptions_count > 0) + { + os << " exceptions:" << exceptions_count; + } + if (failures_count > 0) + { + os << " failures:" << failures_count; + } + if (warnings_count > 0) + { + os << " warnings:" << warnings_count; + } + os << " ok:" << ok_count; + os << std::endl; + } + + bool all_ok() const + { + return not_passed.empty(); + } + +private: + + void init() + { + ok_count = 0; + exceptions_count = 0; + failures_count = 0; + terminations_count = 0; + warnings_count = 0; + not_passed.clear(); + } +}; + +} + +#endif diff -Nru geos-3.1.0/tests/unit/tut/tut_exception.hpp geos-3.2.2/tests/unit/tut/tut_exception.hpp --- geos-3.1.0/tests/unit/tut/tut_exception.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_exception.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,159 @@ +#ifndef TUT_EXCEPTION_H_GUARD +#define TUT_EXCEPTION_H_GUARD + +#include +#include "tut_result.hpp" + +namespace tut +{ + +/** + * The base for all TUT exceptions. + */ +struct tut_error : public std::exception +{ + tut_error(const std::string& msg) + : err_msg(msg) + { + } + + virtual test_result::result_type result() const + { + return test_result::ex; + } + + const char* what() const throw() + { + return err_msg.c_str(); + } + + ~tut_error() throw() + { + } + +private: + tut_error& operator=(const tut_error&); + std::string err_msg; +}; + +/** + * Group not found exception. + */ +struct no_such_group : public tut_error +{ + no_such_group(const std::string& grp) + : tut_error(grp) + { + } + + ~no_such_group() throw() + { + } +}; + +/** + * Internal exception to be throwed when + * test constructor has failed. + */ +struct bad_ctor : public tut_error +{ + bad_ctor(const std::string& msg) + : tut_error(msg) + { + } + + test_result::result_type result() const + { + return test_result::ex_ctor; + } + + ~bad_ctor() throw() + { + } +}; + +/** + * Exception to be throwed when ensure() fails or fail() called. + */ +struct failure : public tut_error +{ + failure(const std::string& msg) + : tut_error(msg) + { + } + + test_result::result_type result() const + { + return test_result::fail; + } + + ~failure() throw() + { + } +}; + +/** + * Exception to be throwed when test desctructor throwed an exception. + */ +struct warning : public tut_error +{ + warning(const std::string& msg) + : tut_error(msg) + { + } + + test_result::result_type result() const + { + return test_result::warn; + } + + ~warning() throw() + { + } +}; + +/** + * Exception to be throwed when test issued SEH (Win32) + */ +struct seh : public tut_error +{ + seh(const std::string& msg) + : tut_error(msg) + { + } + + virtual test_result::result_type result() const + { + return test_result::term; + } + + ~seh() throw() + { + } +}; + +/** + * Exception to be throwed when child processes fail. + */ +struct rethrown : public failure +{ + explicit rethrown(const test_result &result) + : failure(result.message), tr(result) + { + } + + virtual test_result::result_type result() const + { + return test_result::rethrown; + } + + ~rethrown() throw() + { + } + + const test_result tr; +}; + +} + +#endif diff -Nru geos-3.1.0/tests/unit/tut/tut.hpp geos-3.2.2/tests/unit/tut/tut.hpp --- geos-3.1.0/tests/unit/tut/tut.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,535 @@ +#ifndef TUT_H_GUARD +#define TUT_H_GUARD + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(linux) +#define TUT_USE_POSIX +#endif + +#include "tut_exception.hpp" +#include "tut_result.hpp" +#include "tut_posix.hpp" +#include "tut_assert.hpp" +#include "tut_runner.hpp" + +#if defined(TUT_USE_SEH) +#include +#include +#endif + +/** + * Template Unit Tests Framework for C++. + * http://tut.dozen.ru + * + * @author Vladimir Dyuzhev, Vladimir.Dyuzhev@gmail.com + */ +namespace tut +{ + +/** + * Test object. Contains data test run upon and default test method + * implementation. Inherited from Data to allow tests to + * access test data as members. + */ +template +class test_object : public Data, public test_object_posix +{ +public: + + /** + * Default constructor + */ + test_object() + { + } + + void set_test_name(const std::string& current_test_name) + { + current_test_name_ = current_test_name; + } + + const std::string& get_test_name() const + { + return current_test_name_; + } + + void set_test_id(int current_test_id) + { + current_test_id_ = current_test_id; + } + + int get_test_id() const + { + return current_test_id_; + } + + /** + * Default do-nothing test. + */ + template + void test() + { + called_method_was_a_dummy_test_ = true; + } + + /** + * The flag is set to true by default (dummy) test. + * Used to detect usused test numbers and avoid unnecessary + * test object creation which may be time-consuming depending + * on operations described in Data::Data() and Data::~Data(). + * TODO: replace with throwing special exception from default test. + */ + bool called_method_was_a_dummy_test_; + +private: + int current_test_id_; + std::string current_test_name_; +}; + + +/** + * Walks through test tree and stores address of each + * test method in group. Instantiation stops at 0. + */ +template +struct tests_registerer +{ + static void reg(Group& group) + { + group.reg(n, &Test::template test); + tests_registerer::reg(group); + } +}; + +template +struct tests_registerer +{ + static void reg(Group&) + { + } +}; + +/** + * Test group; used to recreate test object instance for + * each new test since we have to have reinitialized + * Data base class. + */ +template +class test_group : public group_base, public test_group_posix +{ + const char* name_; + + typedef void (test_object::*testmethod)(); + typedef std::map tests; + typedef typename tests::iterator tests_iterator; + typedef typename tests::const_iterator tests_const_iterator; + typedef typename tests::const_reverse_iterator + tests_const_reverse_iterator; + typedef typename tests::size_type size_type; + + tests tests_; + tests_iterator current_test_; + + enum seh_result + { + SEH_OK, + SEH_CTOR, + SEH_TEST, + SEH_DUMMY + }; + + /** + * Exception-in-destructor-safe smart-pointer class. + */ + template + class safe_holder + { + T* p_; + bool permit_throw_in_dtor; + + safe_holder(const safe_holder&); + safe_holder& operator=(const safe_holder&); + + public: + safe_holder() + : p_(0), + permit_throw_in_dtor(false) + { + } + + ~safe_holder() + { + release(); + } + + T* operator->() const + { + return p_; + } + + T* get() const + { + return p_; + } + + /** + * Tell ptr it can throw from destructor. Right way is to + * use std::uncaught_exception(), but some compilers lack + * correct implementation of the function. + */ + void permit_throw() + { + permit_throw_in_dtor = true; + } + + /** + * Specially treats exceptions in test object destructor; + * if test itself failed, exceptions in destructor + * are ignored; if test was successful and destructor failed, + * warning exception throwed. + */ + void release() + { + try + { + if (delete_obj() == false) + { + throw warning("destructor of test object raised" + " an SEH exception"); + } + } + catch (const std::exception& ex) + { + if (permit_throw_in_dtor) + { + std::string msg = "destructor of test object raised" + " exception: "; + msg += ex.what(); + throw warning(msg); + } + } + catch( ... ) + { + if (permit_throw_in_dtor) + { + throw warning("destructor of test object raised an" + " exception"); + } + } + } + + /** + * Re-init holder to get brand new object. + */ + void reset() + { + release(); + permit_throw_in_dtor = false; + p_ = new T(); + } + + bool delete_obj() + { +#if defined(TUT_USE_SEH) + __try + { +#endif + T* p = p_; + p_ = 0; + delete p; +#if defined(TUT_USE_SEH) + } + __except(handle_seh_(::GetExceptionCode())) + { + if (permit_throw_in_dtor) + { + return false; + } + } +#endif + return true; + } + }; + +public: + + typedef test_object object; + + /** + * Creates and registers test group with specified name. + */ + test_group(const char* name) + : name_(name) + { + // register itself + runner.get().register_group(name_,this); + + // register all tests + tests_registerer::reg(*this); + } + + /** + * This constructor is used in self-test run only. + */ + test_group(const char* name, test_runner& another_runner) + : name_(name) + { + // register itself + another_runner.register_group(name_, this); + + // register all tests + tests_registerer, test_group, + MaxTestsInGroup>::reg(*this); + }; + + /** + * Registers test method under given number. + */ + void reg(int n, testmethod tm) + { + tests_[n] = tm; + } + + /** + * Reset test position before first test. + */ + void rewind() + { + current_test_ = tests_.begin(); + } + + /** + * Runs next test. + */ + bool run_next(test_result &tr) + { + if (current_test_ == tests_.end()) + { + return false; + } + + // find next user-specialized test + safe_holder obj; + while (current_test_ != tests_.end()) + { + tests_iterator current_test = current_test_++; + + if(run_test_(current_test, obj, tr) && tr.result != test_result::dummy) + { + return true; + } + } + + return false; + } + + /** + * Runs one test by position. + */ + bool run_test(int n, test_result &tr) + { + if (tests_.rbegin() == tests_.rend() || + tests_.rbegin()->first < n) + { + return false; + } + + // withing scope; check if given test exists + tests_iterator ti = tests_.find(n); + if (ti == tests_.end()) + { + return false; + } + + safe_holder obj; + return run_test_(ti, obj, tr); + } + + /** + * VC allows only one exception handling type per function, + * so I have to split the method. + */ + bool run_test_(const tests_iterator& ti, safe_holder& obj, test_result &tr) + { + std::string current_test_name; + + tr = test_result(name_, ti->first, current_test_name, test_result::ok); + + try + { + switch (run_test_seh_(ti->second, obj, current_test_name, ti->first)) + { + case SEH_CTOR: + throw bad_ctor("seh"); + break; + + case SEH_TEST: + throw seh("seh"); + break; + + case SEH_DUMMY: + tr.result = test_result::dummy; + break; + + case SEH_OK: + // ok + break; + } + } + catch (const rethrown& ex) + { + tr = ex.tr; + tr.result = test_result::rethrown; + } + catch (const tut_error& ex) + { + tr.result = ex.result(); + tr.exception_typeid = typeid(ex).name(); + tr.message = ex.what(); + } + catch (const std::exception& ex) + { + tr.result = test_result::ex; + tr.exception_typeid = typeid(ex).name(); + tr.message = ex.what(); + } + catch (...) + { + // test failed with unknown exception + tr.result = test_result::ex; + } + + if (obj.get()) + { + tr.name = obj->get_test_name(); + + // try to report to parent, if exists + send_result_(obj.get(), tr); + } + else + { + tr.name = current_test_name; + } + + return true; + } + + /** + * Runs one under SEH if platform supports it. + */ + seh_result run_test_seh_(testmethod tm, safe_holder& obj, + std::string& current_test_name, int current_test_id) + { +#if defined(TUT_USE_SEH) + __try + { +#endif + if (obj.get() == 0) + { + reset_holder_(obj); + } + + obj->called_method_was_a_dummy_test_ = false; + +#if defined(TUT_USE_SEH) + + __try + { +#endif + obj.get()->set_test_id(current_test_id); + (obj.get()->*tm)(); +#if defined(TUT_USE_SEH) + } + __except(handle_seh_(::GetExceptionCode())) + { + current_test_name = obj->get_test_name(); + return SEH_TEST; + } +#endif + + if (obj->called_method_was_a_dummy_test_) + { + // do not call obj.release(); reuse object + return SEH_DUMMY; + } + + current_test_name = obj->get_test_name(); + obj.permit_throw(); + obj.release(); +#if defined(TUT_USE_SEH) + } + __except(handle_seh_(::GetExceptionCode())) + { + return SEH_CTOR; + } +#endif + return SEH_OK; + } + + void reset_holder_(safe_holder& obj) + { + try + { + obj.reset(); + } + catch (const std::exception& ex) + { + throw bad_ctor(ex.what()); + } + catch (...) + { + throw bad_ctor("test constructor has generated an exception;" + " group execution is terminated"); + } + } +}; + +#if defined(TUT_USE_SEH) +/** + * Decides should we execute handler or ignore SE. + */ +inline int handle_seh_(DWORD excode) +{ + switch(excode) + { + case EXCEPTION_ACCESS_VIOLATION: + case EXCEPTION_DATATYPE_MISALIGNMENT: + case EXCEPTION_BREAKPOINT: + case EXCEPTION_SINGLE_STEP: + case EXCEPTION_ARRAY_BOUNDS_EXCEEDED: + case EXCEPTION_FLT_DENORMAL_OPERAND: + case EXCEPTION_FLT_DIVIDE_BY_ZERO: + case EXCEPTION_FLT_INEXACT_RESULT: + case EXCEPTION_FLT_INVALID_OPERATION: + case EXCEPTION_FLT_OVERFLOW: + case EXCEPTION_FLT_STACK_CHECK: + case EXCEPTION_FLT_UNDERFLOW: + case EXCEPTION_INT_DIVIDE_BY_ZERO: + case EXCEPTION_INT_OVERFLOW: + case EXCEPTION_PRIV_INSTRUCTION: + case EXCEPTION_IN_PAGE_ERROR: + case EXCEPTION_ILLEGAL_INSTRUCTION: + case EXCEPTION_NONCONTINUABLE_EXCEPTION: + case EXCEPTION_STACK_OVERFLOW: + case EXCEPTION_INVALID_DISPOSITION: + case EXCEPTION_GUARD_PAGE: + case EXCEPTION_INVALID_HANDLE: + return EXCEPTION_EXECUTE_HANDLER; + }; + + return EXCEPTION_CONTINUE_SEARCH; +} +#endif +} + +#endif + diff -Nru geos-3.1.0/tests/unit/tut/tut_posix.hpp geos-3.2.2/tests/unit/tut/tut_posix.hpp --- geos-3.1.0/tests/unit/tut/tut_posix.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_posix.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,472 @@ +#ifndef TUT_FORK_H_GUARD +#define TUT_FORK_H_GUARD + +#if defined(TUT_USE_POSIX) +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "tut_result.hpp" +#include "tut_assert.hpp" +#include "tut_runner.hpp" + +namespace tut +{ + +template +class test_group; + +template +class test_object; + +class test_group_posix +{ +private: + template + friend class test_group; + + template + void send_result_(const T *obj, const test_result &tr) + { + if(obj->get_pipe_() == -1) + { + return; + } + + if(tr.result != test_result::ok) + { + std::stringstream ss; + ss << int(tr.result) << "\n" + << tr.group << "\n" + << tr.test << "\n" + << tr.name << "\n" + << tr.exception_typeid << "\n"; + std::copy( tr.message.begin(), tr.message.end(), std::ostreambuf_iterator(ss.rdbuf()) ); + + int size = ss.str().length(); + int w = write(obj->get_pipe_(), ss.str().c_str(), size); + ensure_errno("write() failed", w == size); + } + } +}; + +template +struct tut_posix +{ + pid_t fork() + { + test_object *self = dynamic_cast< tut::test_object* >(this); + ensure("trying to call 'tut_fork' in ctor of test object", self != NULL); + + return self->fork_(); + } + + pid_t waitpid(pid_t pid, int *status, int flags = 0) + { + test_object *self = dynamic_cast< tut::test_object* >(this); + ensure("trying to call 'tut_waitpid' in ctor of test object", self != NULL); + + return self->waitpid_(pid, status, flags); + } + + void ensure_child_exit(pid_t pid, int exit_status = 0) + { + test_object *self = dynamic_cast< tut::test_object* >(this); + ensure("trying to call 'ensure_child_exit' in ctor of test object", self != NULL); + + int status; + self->waitpid_(pid, &status); + + self->ensure_child_exit_(status, exit_status); + } + + + void ensure_child_signal(pid_t pid, int signal = SIGTERM) + { + test_object *self = dynamic_cast< tut::test_object* >(this); + ensure("trying to call 'ensure_child_signal' in ctor of test object", self != NULL); + + int status; + self->waitpid_(pid, &status); + + self->ensure_child_signal_(status, signal); + } + + std::set get_pids() const + { + using namespace std; + + const test_object *self = dynamic_cast< const tut::test_object* >(this); + ensure("trying to call 'get_pids' in ctor of test object", self != NULL); + + return self->get_pids_(); + } + + virtual ~tut_posix() + { + } + +}; + +class test_object_posix +{ +public: + typedef std::map pid_map; + + /** + * Default constructor + */ + test_object_posix() + : pipe_(-1) + { + } + + + virtual ~test_object_posix() + { + // we have forked + if(pipe_ != -1) + { + // in child, force exit + std::exit(0); + } + + if(!pids_.empty()) + { + std::stringstream ss; + + // in parent, reap children + for(std::map::iterator i = pids_.begin(); i != pids_.end(); ++i) + { + try { + kill_child_(i->first); + } catch(const rethrown &ex) { + ss << std::endl << "child " << ex.tr.pid << " has thrown an exception: " << ex.what(); + } catch(const failure &ex) { + ss << std::endl << ex.what(); + } + } + + if(!ss.str().empty()) + { + fail(ss.str().c_str()); + } + } + } + +private: + template + friend class tut_posix; + + friend class test_group_posix; + + int get_pipe_() const + { + return pipe_; + } + + + pid_t fork_() + { + // create pipe + int fds[2]; + ensure_errno("pipe() failed", ::pipe(fds) == 0); + + pid_t pid = ::fork(); + + ensure_errno("fork() failed", pid >= 0); + + if(pid != 0) + { + // in parent, register pid + ensure("duplicated child", pids_.insert( std::make_pair(pid, fds[0]) ).second); + + // close writing side + close(fds[1]); + } + else + { + // in child, shutdown reporter + tut::runner.get().clear_callbacks(); + + // close reading side + close(fds[0]); + pipe_ = fds[1]; + } + + return pid; + } + + void kill_child_(pid_t pid) + { + int status; + + if(waitpid_(pid, &status, WNOHANG) == pid) + { + ensure_child_exit_(status, 0); + return; + } + + if(::kill(pid, SIGTERM) != 0) + { + if(errno == ESRCH) + { + // no such process + return; + } + else + { + // cannot kill, we are in trouble + std::stringstream ss; + char e[1024]; + ss << "child " << pid << " could not be killed with SIGTERM, " << strerror_r(errno, e, sizeof(e)) << std::endl; + fail(ss.str()); + } + } + + if(waitpid_(pid, &status, WNOHANG) == pid) + { + // child killed, check signal + ensure_child_signal_(status, SIGTERM); + + ensure_equals("child process exists after SIGTERM", ::kill(pid, 0), -1); + return; + } + + // child seems to be still exiting, give it some time + sleep(2); + + if(waitpid_(pid, &status, WNOHANG) != pid) + { + // child is still running, kill it + if(::kill(pid, SIGKILL) != 0) + { + if(errno == ESRCH) + { + // no such process + return; + } + else + { + std::stringstream ss; + char e[1024]; + ss << "child " << pid << " could not be killed with SIGKILL, " << strerror_r(errno, e, sizeof(e)) << std::endl; + fail(ss.str()); + } + } + + ensure_equals("wait after SIGKILL", waitpid_(pid, &status), pid); + ensure_child_signal_(status, SIGKILL); + + ensure_equals("child process exists after SIGKILL", ::kill(pid, 0), -1); + + std::stringstream ss; + ss << "child " << pid << " had to be killed with SIGKILL"; + fail(ss.str()); + } + } + + test_result receive_result_(std::istream &ss, pid_t pid) + { + test_result tr; + + int type; + ss >> type; + tr.result = test_result::result_type(type); + ss.ignore(1024, '\n'); + + std::getline(ss, tr.group); + ss >> tr.test; + ss.ignore(1024, '\n'); + std::getline(ss, tr.name); + std::getline(ss, tr.exception_typeid); + std::copy( std::istreambuf_iterator(ss.rdbuf()), + std::istreambuf_iterator(), + std::back_inserter(tr.message) ); + + tr.pid = pid; + + return tr; + } + + struct fdclose + { + fdclose(int fd): fd_(fd) { } + ~fdclose() + { + close(fd_); + } + private: + int fd_; + }; + + pid_t waitpid_(pid_t pid, int *status, int flags = 0) + { + + ensure("trying to wait for unknown pid", pids_.count(pid) > 0); + + pid_t p = ::waitpid(pid, status, flags); + if( (flags & WNOHANG) && (p != pid) ) + { + return p; + } + + // read child result from pipe + fd_set fdset; + timeval tv; + tv.tv_sec = 0; + tv.tv_usec = 0; + + FD_ZERO(&fdset); + + int pipe = pids_[pid]; + fdclose guard(pipe); + + FD_SET(pipe, &fdset); + + int result = select(pipe+1, &fdset, NULL, NULL, &tv); + ensure_errno("sanity check on select() failed", result >= 0); + + if(result > 0) + { + ensure("sanity check on FD_ISSET() failed", FD_ISSET(pipe, &fdset) ); + + std::stringstream ss; + + //TODO: max failure length + char buffer[1024]; + int r = read(pipe, buffer, sizeof(buffer)); + ensure_errno("sanity check on read() failed", r >= 0); + + if(r > 0) + { + ss.write(buffer, r); + throw rethrown( receive_result_(ss, pid) ); + } + } + + return pid; + } + + void ensure_child_exit_(int status, int exit_status) + { + if(WIFSIGNALED(status)) + { + std::stringstream ss; + ss << "child killed by signal " << WTERMSIG(status) + << ": expected exit with code " << exit_status; + + throw failure(ss.str().c_str()); + } + + if(WIFEXITED(status)) + { + if(WEXITSTATUS(status) != exit_status) + { + std::stringstream ss; + ss << "child exited, expected '" + << exit_status + << "' actual '" + << WEXITSTATUS(status) + << '\''; + + throw failure(ss.str().c_str()); + } + } + + if(WIFSTOPPED(status)) + { + std::stringstream ss; + ss << "child stopped by signal " << WTERMSIG(status) + << ": expected exit with code " << exit_status; + throw failure(ss.str().c_str()); + } + } + + void ensure_child_signal_(int status, int signal) + { + if(WIFSIGNALED(status)) + { + if(WTERMSIG(status) != signal) + { + std::stringstream ss; + ss << "child killed by signal, expected '" + << signal + << "' actual '" + << WTERMSIG(status) + << '\''; + throw failure(ss.str().c_str()); + } + } + + if(WIFEXITED(status)) + { + std::stringstream ss; + ss << "child exited with code " << WEXITSTATUS(status) + << ": expected signal " << signal; + + throw failure(ss.str().c_str()); + } + + if(WIFSTOPPED(status)) + { + std::stringstream ss; + ss << "child stopped by signal " << WTERMSIG(status) + << ": expected kill by signal " << signal; + + throw failure(ss.str().c_str()); + } + } + + std::set get_pids_() const + { + using namespace std; + + set pids; + for(pid_map::const_iterator i = pids_.begin(); i != pids_.end(); ++i) + { + pids.insert( i->first ); + } + + return pids; + } + + pid_map pids_; + int pipe_; +}; + +} // namespace tut + +#else + +namespace tut +{ + +struct test_object_posix +{ +}; + +struct test_group_posix +{ + template + void send_result_(const T*, const test_result &) + { + } +}; + +} // namespace tut + +#endif + + +#endif + diff -Nru geos-3.1.0/tests/unit/tut/tut_reporter.hpp geos-3.2.2/tests/unit/tut/tut_reporter.hpp --- geos-3.1.0/tests/unit/tut/tut_reporter.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_reporter.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,11 @@ +#ifndef TUT_REPORTER +#define TUT_REPORTER + +#include + +namespace tut +{ + typedef console_reporter reporter; +} + +#endif diff -Nru geos-3.1.0/tests/unit/tut/tut_restartable.hpp geos-3.2.2/tests/unit/tut/tut_restartable.hpp --- geos-3.1.0/tests/unit/tut/tut_restartable.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_restartable.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,409 @@ +#ifndef TUT_RESTARTABLE_H_GUARD +#define TUT_RESTARTABLE_H_GUARD + +#include +#include +#include +#include +#include + +/** + * Optional restartable wrapper for test_runner. + * + * Allows to restart test runs finished due to abnormal + * test application termination (such as segmentation + * fault or math error). + * + * @author Vladimir Dyuzhev, Vladimir.Dyuzhev@gmail.com + */ + +namespace tut +{ + +namespace util +{ + +/** + * Escapes non-alphabetical characters in string. + */ +std::string escape(const std::string& orig) +{ + std::string rc; + std::string::const_iterator i,e; + i = orig.begin(); + e = orig.end(); + + while (i != e) + { + if ((*i >= 'a' && *i <= 'z') || + (*i >= 'A' && *i <= 'Z') || + (*i >= '0' && *i <= '9') ) + { + rc += *i; + } + else + { + rc += '\\'; + rc += ('a'+(((unsigned int)*i) >> 4)); + rc += ('a'+(((unsigned int)*i) & 0xF)); + } + + ++i; + } + return rc; +} + +/** + * Un-escapes string. + */ +std::string unescape(const std::string& orig) +{ + std::string rc; + std::string::const_iterator i,e; + i = orig.begin(); + e = orig.end(); + + while (i != e) + { + if (*i != '\\') + { + rc += *i; + } + else + { + ++i; + if (i == e) + { + throw std::invalid_argument("unexpected end of string"); + } + unsigned int c1 = *i; + ++i; + if (i == e) + { + throw std::invalid_argument("unexpected end of string"); + } + unsigned int c2 = *i; + rc += (((c1 - 'a') << 4) + (c2 - 'a')); + } + + ++i; + } + return rc; +} + +/** + * Serialize test_result avoiding interfering with operator <<. + */ +void serialize(std::ostream& os, const tut::test_result& tr) +{ + os << escape(tr.group) << std::endl; + os << tr.test << ' '; + switch(tr.result) + { + case test_result::ok: + os << 0; + break; + case test_result::fail: + os << 1; + break; + case test_result::ex: + os << 2; + break; + case test_result::warn: + os << 3; + break; + case test_result::term: + os << 4; + break; + case test_result::rethrown: + os << 5; + break; + case test_result::ex_ctor: + os << 6; + break; + case test_result::dummy: + assert(!"Should never be called"); + default: + throw std::logic_error("operator << : bad result_type"); + } + os << ' ' << escape(tr.message) << std::endl; +} + +/** + * deserialization for test_result + */ +bool deserialize(std::istream& is, tut::test_result& tr) +{ + std::getline(is,tr.group); + if (is.eof()) + { + return false; + } + tr.group = unescape(tr.group); + + tr.test = -1; + is >> tr.test; + if (tr.test < 0) + { + throw std::logic_error("operator >> : bad test number"); + } + + int n = -1; + is >> n; + switch(n) + { + case 0: + tr.result = test_result::ok; + break; + case 1: + tr.result = test_result::fail; + break; + case 2: + tr.result = test_result::ex; + break; + case 3: + tr.result = test_result::warn; + break; + case 4: + tr.result = test_result::term; + break; + case 5: + tr.result = test_result::rethrown; + break; + case 6: + tr.result = test_result::ex_ctor; + break; + default: + throw std::logic_error("operator >> : bad result_type"); + } + + is.ignore(1); // space + std::getline(is,tr.message); + tr.message = unescape(tr.message); + if (!is.good()) + { + throw std::logic_error("malformed test result"); + } + return true; +} +}; + +/** + * Restartable test runner wrapper. + */ +class restartable_wrapper +{ + test_runner& runner_; + callbacks callbacks_; + + std::string dir_; + std::string log_; // log file: last test being executed + std::string jrn_; // journal file: results of all executed tests + +public: + /** + * Default constructor. + * @param dir Directory where to search/put log and journal files + */ + restartable_wrapper(const std::string& dir = ".") + : runner_(runner.get()), + dir_(dir) + { + // dozen: it works, but it would be better to use system path separator + jrn_ = dir_ + '/' + "journal.tut"; + log_ = dir_ + '/' + "log.tut"; + } + + /** + * Stores another group for getting by name. + */ + void register_group(const std::string& name, group_base* gr) + { + runner_.register_group(name,gr); + } + + /** + * Stores callback object. + */ + void set_callback(callback* cb) + { + callbacks_.clear(); + callbacks_.insert(cb); + } + + void insert_callback(callback* cb) + { + callbacks_.insert(cb); + } + + void erase_callback(callback* cb) + { + callbacks_.erase(cb); + } + + void set_callbacks(const callbacks& cb) + { + callbacks_ = cb; + } + + const callbacks& get_callbacks() const + { + return runner_.get_callbacks(); + } + + /** + * Returns list of known test groups. + */ + groupnames list_groups() const + { + return runner_.list_groups(); + } + + /** + * Runs all tests in all groups. + */ + void run_tests() const + { + // where last run was failed + std::string fail_group; + int fail_test; + read_log_(fail_group,fail_test); + bool fail_group_reached = (fail_group == ""); + + // iterate over groups + tut::groupnames gn = list_groups(); + tut::groupnames::const_iterator gni,gne; + gni = gn.begin(); + gne = gn.end(); + while (gni != gne) + { + // skip all groups before one that failed + if (!fail_group_reached) + { + if (*gni != fail_group) + { + ++gni; + continue; + } + fail_group_reached = true; + } + + // first or restarted run + int test = (*gni == fail_group && fail_test >= 0) ? fail_test + 1 : 1; + while(true) + { + // last executed test pos + register_execution_(*gni,test); + + tut::test_result tr; + if( !runner_.run_test(*gni,test, tr) || tr.result == test_result::dummy ) + { + break; + } + register_test_(tr); + + ++test; + } + + ++gni; + } + + // show final results to user + invoke_callback_(); + + // truncate files as mark of successful finish + truncate_(); + } + +private: + /** + * Shows results from journal file. + */ + void invoke_callback_() const + { + runner_.set_callbacks(callbacks_); + runner_.cb_run_started_(); + + std::string current_group; + std::ifstream ijournal(jrn_.c_str()); + while (ijournal.good()) + { + tut::test_result tr; + if( !util::deserialize(ijournal,tr) ) + { + break; + } + runner_.cb_test_completed_(tr); + } + + runner_.cb_run_completed_(); + } + + /** + * Register test into journal. + */ + void register_test_(const test_result& tr) const + { + std::ofstream ojournal(jrn_.c_str(), std::ios::app); + util::serialize(ojournal, tr); + ojournal << std::flush; + if (!ojournal.good()) + { + throw std::runtime_error("unable to register test result in file " + + jrn_); + } + } + + /** + * Mark the fact test going to be executed + */ + void register_execution_(const std::string& grp, int test) const + { + // last executed test pos + std::ofstream olog(log_.c_str()); + olog << util::escape(grp) << std::endl << test << std::endl << std::flush; + if (!olog.good()) + { + throw std::runtime_error("unable to register execution in file " + + log_); + } + } + + /** + * Truncate tests. + */ + void truncate_() const + { + std::ofstream olog(log_.c_str()); + std::ofstream ojournal(jrn_.c_str()); + } + + /** + * Read log file + */ + void read_log_(std::string& fail_group, int& fail_test) const + { + // read failure point, if any + std::ifstream ilog(log_.c_str()); + std::getline(ilog,fail_group); + fail_group = util::unescape(fail_group); + ilog >> fail_test; + if (!ilog.good()) + { + fail_group = ""; + fail_test = -1; + truncate_(); + } + else + { + // test was terminated... + tut::test_result tr(fail_group, fail_test, "", tut::test_result::term); + register_test_(tr); + } + } +}; + +} + +#endif + diff -Nru geos-3.1.0/tests/unit/tut/tut_result.hpp geos-3.2.2/tests/unit/tut/tut_result.hpp --- geos-3.1.0/tests/unit/tut/tut_result.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_result.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,129 @@ +#ifndef TUT_RESULT_H_GUARD +#define TUT_RESULT_H_GUARD + +#include + +namespace tut +{ + +#if defined(TUT_USE_POSIX) +struct test_result_posix +{ + test_result_posix() + : pid(getpid()) + { + } + + pid_t pid; +}; +#else +struct test_result_posix +{ +}; +#endif + +/** + * Return type of runned test/test group. + * + * For test: contains result of test and, possible, message + * for failure or exception. + */ +struct test_result : public test_result_posix +{ + /** + * Test group name. + */ + std::string group; + + /** + * Test number in group. + */ + int test; + + /** + * Test name (optional) + */ + std::string name; + + /** + * ok - test finished successfully + * fail - test failed with ensure() or fail() methods + * ex - test throwed an exceptions + * warn - test finished successfully, but test destructor throwed + * term - test forced test application to terminate abnormally + */ + enum result_type + { + ok, + fail, + ex, + warn, + term, + ex_ctor, + rethrown, + dummy + }; + + result_type result; + + /** + * Exception message for failed test. + */ + std::string message; + std::string exception_typeid; + + /** + * Default constructor. + */ + test_result() + : test(0), + result(ok) + { + } + + /** + * Constructor. + */ + test_result(const std::string& grp, int pos, + const std::string& test_name, result_type res) + : group(grp), + test(pos), + name(test_name), + result(res) + { + } + + /** + * Constructor with exception. + */ + test_result(const std::string& grp,int pos, + const std::string& test_name, result_type res, + const std::exception& ex) + : group(grp), + test(pos), + name(test_name), + result(res), + message(ex.what()), + exception_typeid(typeid(ex).name()) + { + } + + /** Constructor with typeid. + */ + test_result(const std::string& grp,int pos, + const std::string& test_name, result_type res, + const std::string& ex_typeid, + const std::string& msg) + : group(grp), + test(pos), + name(test_name), + result(res), + message(msg), + exception_typeid(ex_typeid) + { + } +}; + +} + +#endif diff -Nru geos-3.1.0/tests/unit/tut/tut_runner.hpp geos-3.2.2/tests/unit/tut/tut_runner.hpp --- geos-3.1.0/tests/unit/tut/tut_runner.hpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/unit/tut/tut_runner.hpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,359 @@ +#ifndef TUT_RUNNER_H_GUARD +#define TUT_RUNNER_H_GUARD + +#include +#include +#include +#include "tut_exception.hpp" + +namespace tut +{ + +/** + * Interface. + * Test group operations. + */ +struct group_base +{ + virtual ~group_base() + { + } + + // execute tests iteratively + virtual void rewind() = 0; + virtual bool run_next(test_result &) = 0; + + // execute one test + virtual bool run_test(int n, test_result &tr) = 0; +}; + + +/** + * Test runner callback interface. + * Can be implemented by caller to update + * tests results in real-time. User can implement + * any of callback methods, and leave unused + * in default implementation. + */ +struct callback +{ + /** + * Default constructor. + */ + callback() + { + } + + /** + * Virtual destructor is a must for subclassed types. + */ + virtual ~callback() + { + } + + /** + * Called when new test run started. + */ + virtual void run_started() + { + } + + /** + * Called when a group started + * @param name Name of the group + */ + virtual void group_started(const std::string& /*name*/) + { + } + + /** + * Called when a test finished. + * @param tr Test results. + */ + virtual void test_completed(const test_result& /*tr*/) + { + } + + /** + * Called when a group is completed + * @param name Name of the group + */ + virtual void group_completed(const std::string& /*name*/) + { + } + + /** + * Called when all tests in run completed. + */ + virtual void run_completed() + { + } +private: + callback(const callback &); + void operator=(const callback&); +}; + +/** + * Typedef for runner::list_groups() + */ +typedef std::vector groupnames; +typedef std::set callbacks; + +/** + * Test runner. + */ +class test_runner +{ + +public: + + /** + * Constructor + */ + test_runner() + { + } + + /** + * Stores another group for getting by name. + */ + void register_group(const std::string& name, group_base* gr) + { + if (gr == 0) + { + throw tut_error("group shall be non-null"); + } + + if (groups_.find(name) != groups_.end()) + { + std::string msg("attempt to add already existent group " + name); + // this exception terminates application so we use cerr also + // TODO: should this message appear in stream? + std::cerr << msg << std::endl; + throw tut_error(msg); + } + + groups_.insert( std::make_pair(name, gr) ); + } + + void set_callback(callback *cb) + { + clear_callbacks(); + insert_callback(cb); + } + + /** + * Stores callback object. + */ + void insert_callback(callback* cb) + { + if(cb != NULL) + { + callbacks_.insert(cb); + } + } + + void erase_callback(callback* cb) + { + callbacks_.erase(cb); + } + + void clear_callbacks() + { + callbacks_.clear(); + } + + /** + * Returns callback list. + */ + const callbacks &get_callbacks() const + { + return callbacks_; + } + + void set_callbacks(const callbacks &cb) + { + callbacks_ = cb; + } + + /** + * Returns list of known test groups. + */ + const groupnames list_groups() const + { + groupnames ret; + const_iterator i = groups_.begin(); + const_iterator e = groups_.end(); + while (i != e) + { + ret.push_back(i->first); + ++i; + } + return ret; + } + + /** + * Runs all tests in all groups. + * @param callback Callback object if exists; null otherwise + */ + void run_tests() const + { + cb_run_started_(); + + const_iterator i = groups_.begin(); + const_iterator e = groups_.end(); + while (i != e) + { + cb_group_started_(i->first); + run_all_tests_in_group_(i); + cb_group_completed_(i->first); + + ++i; + } + + cb_run_completed_(); + } + + /** + * Runs all tests in specified group. + */ + void run_tests(const std::string& group_name) const + { + cb_run_started_(); + + const_iterator i = groups_.find(group_name); + if (i == groups_.end()) + { + cb_run_completed_(); + throw no_such_group(group_name); + } + + cb_group_started_(group_name); + run_all_tests_in_group_(i); + cb_group_completed_(group_name); + cb_run_completed_(); + } + + /** + * Runs one test in specified group. + */ + bool run_test(const std::string& group_name, int n, test_result &tr) const + { + cb_run_started_(); + + const_iterator i = groups_.find(group_name); + if (i == groups_.end()) + { + cb_run_completed_(); + throw no_such_group(group_name); + } + + cb_group_started_(group_name); + + bool t = i->second->run_test(n, tr); + + if(t && tr.result != test_result::dummy) + { + cb_test_completed_(tr); + } + + cb_group_completed_(group_name); + cb_run_completed_(); + + return t; + } + +protected: + + typedef std::map groups; + typedef groups::iterator iterator; + typedef groups::const_iterator const_iterator; + groups groups_; + + callbacks callbacks_; + +private: + friend class restartable_wrapper; + + void cb_run_started_() const + { + for(callbacks::const_iterator i = callbacks_.begin(); i != callbacks_.end(); ++i) + { + (*i)->run_started(); + } + } + + void cb_run_completed_() const + { + for(callbacks::const_iterator i = callbacks_.begin(); i != callbacks_.end(); ++i) + { + (*i)->run_completed(); + } + } + + void cb_group_started_(const std::string &group_name) const + { + for(callbacks::const_iterator i = callbacks_.begin(); i != callbacks_.end(); ++i) + { + (*i)->group_started(group_name); + } + } + + void cb_group_completed_(const std::string &group_name) const + { + for(callbacks::const_iterator i = callbacks_.begin(); i != callbacks_.end(); ++i) + { + (*i)->group_completed(group_name); + } + } + + void cb_test_completed_(const test_result &tr) const + { + for(callbacks::const_iterator i = callbacks_.begin(); i != callbacks_.end(); ++i) + { + (*i)->test_completed(tr); + } + } + + void run_all_tests_in_group_(const_iterator i) const + { + i->second->rewind(); + + test_result tr; + while(i->second->run_next(tr)) + { + if(tr.result != test_result::dummy) + { + cb_test_completed_(tr); + } + + if (tr.result == test_result::ex_ctor) + { + // test object ctor failed, skip whole group + break; + } + } + } +}; + +/** + * Singleton for test_runner implementation. + * Instance with name runner_singleton shall be implemented + * by user. + */ +class test_runner_singleton +{ +public: + + static test_runner& get() + { + static test_runner tr; + return tr; + } +}; + +extern test_runner_singleton runner; + +} + +#endif diff -Nru geos-3.1.0/tests/unit/util/UniqueCoordinateArrayFilterTest.cpp geos-3.2.2/tests/unit/util/UniqueCoordinateArrayFilterTest.cpp --- geos-3.1.0/tests/unit/util/UniqueCoordinateArrayFilterTest.cpp 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/util/UniqueCoordinateArrayFilterTest.cpp 2009-04-15 11:18:16.000000000 +0100 @@ -1,18 +1,20 @@ -// $Id: UniqueCoordinateArrayFilterTest.cpp 1934 2006-12-05 11:02:52Z mloskot $ +// $Id: UniqueCoordinateArrayFilterTest.cpp 2369 2009-04-15 10:18:16Z strk $ // // Test Suite for geos::util::UniqueCoordinateArrayFilter class. -// TUT -#include -// GEOS +// tut +#include +// geos #include #include #include +#include #include #include #include -// STL +// std #include +#include namespace tut { @@ -56,7 +58,9 @@ GeometryPtr geo(reader_.read(wkt)); ensure_equals( geo->getGeometryTypeId(), geos::geom::GEOS_MULTIPOINT ); - ensure_equals( geo->getCoordinates()->getSize(), size5 ); + std::auto_ptr cs; + cs.reset(geo->getCoordinates()); + ensure_equals(cs->getSize(), size5 ); // Create collection buffer for filtered coordinates const Coordinate::ConstVect::size_type size0 = 0; @@ -71,7 +75,8 @@ const Coordinate::ConstVect::size_type size3 = 3; geo->apply_ro(&filter); - ensure_equals( geo->getCoordinates()->getSize(), size5 ); + cs.reset(geo->getCoordinates()); + ensure_equals( cs->getSize(), size5 ); ensure_equals( coords.size(), size3 ); ensure_equals( coords.at(0)->x, 10 ); ensure_equals( coords.at(0)->y, 10 ); diff -Nru geos-3.1.0/tests/unit/utility.h geos-3.2.2/tests/unit/utility.h --- geos-3.1.0/tests/unit/utility.h 2009-03-10 16:18:01.000000000 +0000 +++ geos-3.2.2/tests/unit/utility.h 2009-04-09 22:46:30.000000000 +0100 @@ -1,10 +1,12 @@ -// $Id: utility.h 2162 2008-08-18 16:30:56Z mloskot $ +// $Id: utility.h 2344 2009-04-09 21:46:30Z mloskot $ // // GEOS Unit Test utilities, extension of TUT Framework namespace // #ifndef GEOS_TUT_UTILITY_H_INCLUDED #define GEOS_TUT_UTILITY_H_INCLUDED +// tut +#include // geos #include #include @@ -28,8 +30,8 @@ #include #include #include -// tut -#include +#include +#include namespace tut { @@ -215,6 +217,30 @@ ensure_equals_geometry(lhs, &pg); } +// +// Utility functions +// + +// Decodes hex-encoded WKB/EWKB to raw binary. +struct wkb_hex_decoder +{ + typedef std::vector binary_type; + + // bytes [out] - buffer for binary output + static void decode(std::string const& hexstr, binary_type& bytes) + { + bytes.clear(); + for(std::string::size_type i = 0; i < hexstr.size() / 2; ++i) + { + std::istringstream iss(hexstr.substr(i * 2, 2)); + unsigned int n; + iss >> std::hex >> n; + bytes.push_back(static_cast(n)); + } + } +}; + + } // namespace tut #endif // #ifndef GEOS_TUT_UTILITY_H_INCLUDED diff -Nru geos-3.1.0/tests/xmltester/badguy3.xml geos-3.2.2/tests/xmltester/badguy3.xml --- geos-3.1.0/tests/xmltester/badguy3.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/badguy3.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,56 +0,0 @@ - - - - - - -Extreme simplification of the Big Bad Nasty buffer. -If the first element is reordered backward, things are fine !! - - - -MULTIPOLYGON((( -3135840 10098400, - 3135702 10098200, - 3135830 10098461, -3135840 10098400 -)) , (( -3129627 10098250, -3130490 10098813, -3130663 10098320, -3130263 10097448, -3129627 10098250 -),( -3130240 10098310, -3130210 10098340, -3130193 10098318, -3130240 10098310 -))) - - - - - - -MULTIPOLYGON((( -3135840 10098400, -3135702 10098200, -3135830 10098461, -3135840 10098400 -)) , (( -3129627 10098250, -3130490 10098813, -3130663 10098320, -3130263 10097448, -3129627 10098250 -),( -3130240 10098310, -3130210 10098340, -3130193 10098318, -3130240 10098310 -))) - - - - - diff -Nru geos-3.1.0/tests/xmltester/BufferResultMatcher.cpp geos-3.2.2/tests/xmltester/BufferResultMatcher.cpp --- geos-3.1.0/tests/xmltester/BufferResultMatcher.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/BufferResultMatcher.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,133 @@ +/********************************************************************** + * $Id: BufferResultMatcher.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: jtstest/testrunner/BufferResultMatcher.java rev rev 1.6 (JTS-1.11) + * + **********************************************************************/ + +#include "BufferResultMatcher.h" + +#include +#include +#include +#include + +#include + +namespace geos { +namespace xmltester { + +double BufferResultMatcher::MAX_RELATIVE_AREA_DIFFERENCE = 1.0E-3; +double BufferResultMatcher::MIN_DISTANCE_TOLERANCE = 1.0e-8; +double BufferResultMatcher::MAX_HAUSDORFF_DISTANCE_FACTOR = 100; + +bool +BufferResultMatcher::isBufferResultMatch(const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, + double distance) +{ + if (actualBuffer.isEmpty() && expectedBuffer.isEmpty()) + return true; + + /** + * MD - need some more checks here - symDiffArea won't catch + * very small holes ("tears") + * near the edge of computed buffers (which can happen + * in current version of JTS (1.8)). + * This can probably be handled by testing + * that every point of the actual buffer is at least a certain + * distance away from the geometry boundary. + */ + if (! isSymDiffAreaInTolerance(actualBuffer, expectedBuffer)) + { +std::cerr << "isSymDiffAreaInTolerance failed" << std::endl; + return false; + } + + if (! isBoundaryHausdorffDistanceInTolerance(actualBuffer, + expectedBuffer, distance)) + { +std::cerr << "isBoundaryHasudorffDistanceInTolerance failed" << std::endl; + return false; + } + + return true; +} + +bool +BufferResultMatcher::isSymDiffAreaInTolerance( + const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer) +{ + typedef std::auto_ptr GeomPtr; + + using namespace operation::overlay; + using geos::geom::BinaryOp; + + double area = expectedBuffer.getArea(); + GeomPtr diff = BinaryOp(&actualBuffer, &expectedBuffer, + overlayOp(OverlayOp::opSYMDIFFERENCE)); + + double areaDiff = diff->getArea(); + + // can't get closer than difference area = 0 ! + // This also handles case when symDiff is empty + if (areaDiff <= 0.0) return true; + + if (area <= 0) return false; + double frac = areaDiff / area; + + bool ret = frac < MAX_RELATIVE_AREA_DIFFERENCE; + if ( ! ret ) + { +std::cerr << "symDiffArea frac: " << frac << " tolerated " << MAX_RELATIVE_AREA_DIFFERENCE << std::endl; + } + return ret; +} + +bool +BufferResultMatcher::isBoundaryHausdorffDistanceInTolerance( + const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, double distance) +{ + typedef std::auto_ptr GeomPtr; + + using geos::algorithm::distance::DiscreteHausdorffDistance; + + GeomPtr actualBdy ( actualBuffer.getBoundary() ); + GeomPtr expectedBdy ( expectedBuffer.getBoundary() ); + + DiscreteHausdorffDistance haus(*actualBdy, *expectedBdy); + haus.setDensifyFraction(0.25); + + double maxDistanceFound = haus.orientedDistance(); + + double expectedDistanceTol = fabs(distance) / MAX_HAUSDORFF_DISTANCE_FACTOR; + if (expectedDistanceTol < MIN_DISTANCE_TOLERANCE) + { + expectedDistanceTol = MIN_DISTANCE_TOLERANCE; + } + + if (maxDistanceFound > expectedDistanceTol) + { +std::cerr << "maxDistanceFound: " << maxDistanceFound << " tolerated " << expectedDistanceTol << std::endl; + return false; + } + + return true; +} + +} // namespace geos::xmltester +} // namespace geos diff -Nru geos-3.1.0/tests/xmltester/BufferResultMatcher.h geos-3.2.2/tests/xmltester/BufferResultMatcher.h --- geos-3.1.0/tests/xmltester/BufferResultMatcher.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/BufferResultMatcher.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,65 @@ +/********************************************************************** + * $Id: BufferResultMatcher.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: jtstest/testrunner/BufferResultMatcher.java rev rev 1.6 (JTS-1.11) + * + **********************************************************************/ + +#ifndef XMLTESTER_BUFFERRESULTMATCHER_H +#define XMLTESTER_BUFFERRESULTMATCHER_H + +// Forward declarations +namespace geos { + namespace geom { + class Geometry; + } +} + +namespace geos { +namespace xmltester { + +class BufferResultMatcher +{ +public: + bool isBufferResultMatch(const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, + double distance); + +private: + + static double MAX_RELATIVE_AREA_DIFFERENCE; + + static double MAX_HAUSDORFF_DISTANCE_FACTOR; + + /* + * The minimum distance tolerance which will be used. + * This is required because densified vertices do no lie + * precisely on their parent segment. + */ + static double MIN_DISTANCE_TOLERANCE; + + bool isSymDiffAreaInTolerance(const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer); + + bool isBoundaryHausdorffDistanceInTolerance( + const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, + double distance); +}; + +} // namespace geos::xmltester +} // namespace geos + +#endif // XMLTESTER_BUFFERRESULTMATCHER_H diff -Nru geos-3.1.0/tests/xmltester/fme.xml geos-3.2.2/tests/xmltester/fme.xml --- geos-3.1.0/tests/xmltester/fme.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/fme.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,20 +0,0 @@ - - - - - - Big Bad Nasty buffer - - POLYGON((377888.21875 5686717.5,377888.09375 5686717.5,377886.46875 5686721,377885.25 5686725,377884.40625 5686730.5,377883.59375 5686735,377883.5625 5686737,377883.5 5686743.5,377883.09375 5686747,377883.03125 5686752.5,377883 5686758,377883.75 5686762,377884.46875 5686767.5,377885.25 5686771.5,377885.21875 5686775,377887.53125 5686781,377891.8125 5686788,377895.4375 5686792,377896.5 5686793,377900.03125 5686797,377905.5 5686802.5,377908.65625 5686804.5,377911.40625 5686807.5,377915.34375 5686809,377918.6875 5686810.5,377920.90625 5686806.5,377923.3125 5686801,377926.09375 5686797.5,377928.21875 5686794.5,377928.90625 5686793.5,377932.09375 5686790.5,377935.6875 5686786,377939.28125 5686782,377944.46875 5686776,377948.0625 5686773,377953.625 5686769,377958.8125 5686765.5,377962.75 5686763.5,377964.0625 5686763,377964.59375 5686762,377965.0625 5686761,377965.5625 5686760,377965.625 5686759,377965.65625 5686759,377966.125 5686758,377967.03125 5686757,377967.46875 5686756.5,377968.46875 5686754.5,377969.71875 5686753.5,377970.625 5686752.5,377971.125 5686751.5,377971.53125 5686751.5,377971.5625 5686751,377973.125 5686751,377975.6875 5686749.5,377978.15625 5686748.5,377978.9375 5686748.5,377979.75 5686748.5,377980.15625 5686748.5,377980.96875 5686748,377981.75 5686748,377982.96875 5686748,377984.15625 5686748,377986.625 5686747,377989 5686747,377990.1875 5686747,377990.96875 5686747,377991.84375 5686746.5,377992.25 5686746,377993.03125 5686746,377993.84375 5686746,377994.65625 5686746,377995.4375 5686746,377996.625 5686746,377997.40625 5686746,377998.59375 5686746.5,377999.375 5686746.5,378000.9375 5686746.5,378001.71875 5686746.5,378002.90625 5686746.5,378003.6875 5686747,378004.46875 5686747,378004.875 5686747,378005.71875 5686746,378006.125 5686746,378007.40625 5686745,378008.21875 5686745,378009.03125 5686745,378009.09375 5686744,378010.375 5686743,378012.40625 5686742.5,378013.6875 5686742,378014.53125 5686741,378015.3125 5686741,378015.34375 5686741,378016.1875 5686740.5,378017.59375 5686738.5,378018.0625 5686737.5,378018.125 5686736.5,378018.59375 5686736,378018.78125 5686734,378018.90625 5686733,378019.03125 5686731,378019.1875 5686729.5,378019.28125 5686729,378019.34375 5686728,378019.40625 5686727.5,378019.5 5686726.5,378019.6875 5686724.5,378020.9375 5686724,378021.40625 5686723,378021.5 5686722,378021.5625 5686721.5,378021.6875 5686720,378021.78125 5686719,378022.5625 5686719.5,378022.625 5686718.5,378022.71875 5686717.5,378022.84375 5686716,378023.3125 5686715.5,378023.4375 5686714,378023.5 5686713.5,378023.65625 5686712,378024.53125 5686711,378025.4375 5686710,378025.46875 5686709.5,378025.96875 5686708.5,378026.78125 5686708,378027.71875 5686706.5,378028.9375 5686706.5,378029.40625 5686705.5,378030.28125 5686705,378031.09375 5686704.5,378031.5625 5686704,378032.84375 5686703,378034.0625 5686702.5,378034.96875 5686701.5,378035.8125 5686701,378036.25 5686700.5,378036.6875 5686700,378037.53125 5686699.5,378037.9375 5686699.5,378038.78125 5686698.5,378039.1875 5686698.5,378040.0625 5686698,378040.875 5686697.5,378042.125 5686697,378042.5625 5686696.5,378043.78125 5686696.5,378044.5625 5686696.5,378045.34375 5686696.5,378046.125 5686696.5,378047.40625 5686695.5,378049.03125 5686695.5,378049.84375 5686695,378050.65625 5686694.5,378051.5 5686694.5,378052.3125 5686694,378053.59375 5686693,378054.8125 5686692.5,378055.59375 5686693,378055.6875 5686692,378056.15625 5686691.5,378057.78125 5686690.5,378059 5686690.5,378059.84375 5686690,378060.25 5686689.5,378060.65625 5686690,378061.4375 5686690,378061.84375 5686690,378062.6875 5686689,378063.46875 5686689.5,378064.65625 5686689.5,378065.0625 5686689.5,378066.28125 5686689,378067.0625 5686689,378067.84375 5686689.5,378069.40625 5686689.5,378070.96875 5686689.5,378071.375 5686689.5,378071.78125 5686689.5,378072.5625 5686690,378073.34375 5686690,378074.40625 5686691,378075.5 5686692,378076.25 5686692.5,378076.96875 5686693.5,378077.6875 5686694.5,378078.4375 5686694.5,378079.15625 5686695,378079.125 5686695.5,378079.53125 5686695.5,378079.4375 5686696.5,378080.4375 5686698.5,378080.71875 5686699.5,378080.5625 5686701.5,378081.21875 5686703,378081.0625 5686704.5,378080.9375 5686705.5,378080.84375 5686707,378081.5 5686708,378082.1875 5686709.5,378082.90625 5686710.5,378083.21875 5686711,378083.125 5686712,378083.5 5686712.5,378083.40625 5686713,378084.59375 5686713,378085.6875 5686714,378086.4375 5686714.5,378088.8125 5686715,378091.46875 5686716,378093.78125 5686716.5,378094.59375 5686716.5,378095.28125 5686717.5,378095.6875 5686717.5,378096.0625 5686717.5,378096.875 5686717.5,378097.65625 5686717.5,378098.8125 5686718,378100.1875 5686716,378102.3125 5686714.5,378102.78125 5686714,378102.84375 5686713,378104.03125 5686713,378105.34375 5686712,378107.4375 5686711,378108.65625 5686710.5,378109.0625 5686710,378109.875 5686710,378110.65625 5686710.5,378111.90625 5686709.5,378113.0625 5686710,378115.125 5686709,378116.6875 5686709.5,378117.53125 5686708.5,378117.96875 5686708.5,378118.8125 5686708,378119.28125 5686707,378120.1875 5686705.5,378121.46875 5686705,378122.34375 5686704,378122.84375 5686703,378123.71875 5686702,378124.15625 5686701.5,378125.09375 5686700,378125.5 5686700,378127.28125 5686698,378128.96875 5686697,378129.8125 5686696.5,378130.6875 5686695.5,378131.46875 5686695.5,378132.28125 5686695.5,378133.0625 5686695.5,378134.625 5686695.5,378135.8125 5686696,378137.78125 5686696,378139.34375 5686696,378140.1875 5686696,378140.96875 5686696,378141.0625 5686694.5,378142.3125 5686694,378142.84375 5686693,378144.09375 5686692,378144.9375 5686691.5,378145.84375 5686690.5,378146.28125 5686690,378147.125 5686689.5,378147.96875 5686689,378149.1875 5686689,378150.8125 5686688,378152.4375 5686688,378153.59375 5686688,378154 5686688,378155.1875 5686688,378155.96875 5686688.5,378156.34375 5686688.5,378156.75 5686688.5,378156.84375 5686687,378156.15625 5686686.5,378155.90625 5686684.5,378155.1875 5686684,378155.28125 5686683,378154.46875 5686683,378153.5 5686681,378152.0625 5686679,378151.71875 5686678.5,378151.75 5686678.5,378150.96875 5686678,378150.625 5686678,378149.5 5686677,378148.375 5686676.5,378148.09375 5686675,378146.9375 5686674.5,378146.5625 5686674.5,378146.625 5686674,378146.65625 5686673.5,378145.875 5686673.5,378146.0625 5686671.5,378145.4375 5686669.5,378145.125 5686669,378145.1875 5686668,378145.28125 5686667.5,378145.34375 5686666.5,378145.375 5686666,378145.53125 5686664.5,378146.375 5686664,378146.9375 5686662.5,378147.03125 5686661,378147.90625 5686660.5,378147.96875 5686659.5,378148.46875 5686658.5,378149.34375 5686658,378149.8125 5686657,378149.84375 5686656.5,378149.875 5686656.5,378150.65625 5686656.5,378151.53125 5686655.5,378152.3125 5686655.5,378153.09375 5686656,378154 5686654.5,378155.65625 5686654,378156.46875 5686654,378157.34375 5686653,378158.15625 5686652.5,378158.59375 5686652.5,378159.84375 5686651.5,378161.0625 5686651.5,378161.875 5686651,378162.75 5686650.5,378163.5625 5686650,378164.40625 5686649.5,378165.65625 5686648.5,378167.28125 5686648.5,378168.53125 5686648,378169.40625 5686647,378169.78125 5686647,378169.875 5686646.5,378170.65625 5686646.5,378171.0625 5686646,378171.15625 5686645.5,378171.96875 5686645,378172.15625 5686643,378172.28125 5686642,378172.375 5686640.5,378172.84375 5686640,378172.96875 5686638.5,378173.4375 5686638,378173.9375 5686637,378174 5686636,378174.9375 5686634.5,378175.03125 5686634,378175.0625 5686633.5,378175.09375 5686633,378176 5686632,378176.03125 5686631.5,378176.1875 5686630,378176.25 5686629,378176.34375 5686628.5,378176.375 5686628,378176.59375 5686628,378182.875 5686630.5,378186.8125 5686632,378193.09375 5686633.5,378194.34375 5686630,378194.78125 5686625.5,378194.46875 5686618,378193.6875 5686614,378192.96875 5686607.5,378192.21875 5686604,378191.0625 5686599.5,378189.9375 5686593.5,378188.78125 5686588,378187.6875 5686580,378187.71875 5686575.5,378187.71875 5686574,378187.75 5686571,378186.59375 5686567.5,378186.65625 5686563,378187.5 5686557,378188.3125 5686553.5,378189.90625 5686550.5,378192.3125 5686546.5,378195.125 5686543,378196.5 5686541.5,378196.6875 5686539.5,378197.625 5686538,378198.09375 5686537,378198.21875 5686536,378198.25 5686535.5,378198.71875 5686535,378198.8125 5686533.5,378198.90625 5686533,378199.6875 5686533,378199.84375 5686531.5,378201.5625 5686530,378202.8125 5686529.5,378203.3125 5686528,378203.6875 5686528,378203.78125 5686527.5,378204.15625 5686527.5,378205.03125 5686526.5,378206.21875 5686527,378206.71875 5686525.5,378207.5625 5686525,378208 5686524.5,378208.46875 5686524,378209.4375 5686522,378211.09375 5686521.5,378212.40625 5686520,378213.71875 5686519,378214.5625 5686518,378215.03125 5686517.5,378215.875 5686517,378216.28125 5686517,378217.15625 5686516,378217.59375 5686515.5,378218.4375 5686515,378219.65625 5686514.5,378220.46875 5686514.5,378220.5625 5686513.5,378221.375 5686513.5,378221.78125 5686513.5,378222.59375 5686513,378223.09375 5686512,378223.90625 5686511.5,378225.28125 5686509.5,378226.96875 5686508.5,378227.84375 5686508,378228.25 5686507.5,378228.71875 5686507,378228.75 5686506.5,378229.21875 5686505.5,378230.09375 5686505,378230.125 5686504.5,378231.0625 5686503,378231.9375 5686502.5,378232.4375 5686501.5,378233.34375 5686500,378234.21875 5686499,378235.09375 5686498.5,378235.9375 5686497.5,378236.40625 5686497,378237.3125 5686496,378237.8125 5686494.5,378238.71875 5686493.5,378239.21875 5686492.5,378240.125 5686491.5,378241.0625 5686490,378241.5625 5686488.5,378242.46875 5686487.5,378242.875 5686487.5,378243.34375 5686486.5,378243.8125 5686486,378244.65625 5686485.5,378245.53125 5686484.5,378246.78125 5686483.5,378247.3125 5686482.5,378247.84375 5686481,378248.3125 5686480.5,378248.4375 5686479,378248.5 5686478.5,378248.96875 5686477.5,378249.8125 5686477,378249.90625 5686476,378250.09375 5686474,378251 5686473,378251.53125 5686471.5,378251.65625 5686470.5,378251.75 5686469,378252.21875 5686468.5,378252.71875 5686467,378252.75 5686467,378252.84375 5686466,378253.09375 5686463.5,378254.4375 5686462,378255.3125 5686460.5,378255.4375 5686459.5,378255.5 5686458.5,378255.90625 5686459,378257 5686455.5,378258.40625 5686453.5,378258.5 5686452.5,378259.0625 5686450.5,378259.125 5686450,378260.78125 5686447,378262.78125 5686443.5,378265.59375 5686439,378266.9375 5686437,378269.1875 5686434,378270.28125 5686433,378270.625 5686432.5,378271.15625 5686432,378271.34375 5686429.5,378272.28125 5686428,378272.75 5686427.5,378272.84375 5686426.5,378272.875 5686426.5,378273.25 5686426.5,378274.15625 5686425.5,378274.25 5686424.5,378274.375 5686423,378275.71875 5686421.5,378276.625 5686420.5,378276.71875 5686419,378277.15625 5686419,378277.21875 5686418,378278 5686418,378278.5625 5686416.5,378279.5 5686415,378279.5625 5686414.5,378279.65625 5686413.5,378280.15625 5686412.5,378280.5625 5686412,378281.5 5686410.5,378282.375 5686410,378282.40625 5686409.5,378282.4375 5686409,378282.96875 5686408,378284.21875 5686407,378284.75 5686405.5,378284.78125 5686405.5,378284.8125 5686405,378285.25 5686404.5,378286.0625 5686404,378286.46875 5686404,378287 5686402.5,378288.6875 5686401.5,378289.125 5686401.5,378290 5686400.5,378290.375 5686400.5,378291.1875 5686400.5,378292 5686400.5,378293.15625 5686400.5,378293.9375 5686400.5,378295.53125 5686401,378295.90625 5686401,378296.6875 5686401,378297.09375 5686401,378298.15625 5686402.5,378299.3125 5686403,378299.96875 5686404,378301.03125 5686405.5,378302.09375 5686406.5,378302.78125 5686408,378303.53125 5686408.5,378303.84375 5686409,378304.15625 5686410,378304.09375 5686411,378304.84375 5686411.5,378305.625 5686411.5,378306.6875 5686412.5,378307.03125 5686413,378308.15625 5686414,378309.28125 5686414.5,378309.96875 5686416,378310.65625 5686416.5,378311.375 5686417.5,378312.09375 5686418.5,378313.21875 5686419,378313.1875 5686419.5,378313.9375 5686419.5,378314.34375 5686420,378315.40625 5686421,378316.9375 5686421.5,378319.9375 5686423.5,378322.21875 5686424.5,378323.3125 5686425.5,378324.03125 5686426.5,378325.15625 5686427,378325.53125 5686427.5,378326.3125 5686427.5,378326.625 5686428,378327.75 5686428.5,378328.15625 5686428.5,378329.25 5686429.5,378330.03125 5686429.5,378331.09375 5686431,378332.65625 5686431.5,378333.71875 5686433,378334.375 5686434,378335.4375 5686435.5,378336.15625 5686436.5,378337.25 5686437,378337.9375 5686438.5,378338.65625 5686439.5,378339.34375 5686440,378340.09375 5686440.5,378340.46875 5686441,378341.15625 5686442,378342.3125 5686442.5,378343.8125 5686443.5,378344.90625 5686444.5,378345.25 5686445,378345.21875 5686445,378345.96875 5686445.5,378346.75 5686445.5,378348.1875 5686447.5,378350.09375 5686448,378350.8125 5686449,378351.5625 5686449.5,378352.34375 5686449.5,378353.0625 5686450.5,378353.46875 5686450.5,378354.5625 5686451.5,378354.90625 5686451.5,378355.625 5686452.5,378356.375 5686453,378357.84375 5686454.5,378359.375 5686455,378360.46875 5686456,378361.1875 5686456.5,378362.28125 5686457.5,378363 5686458.5,378364.125 5686459,378364.5 5686459.5,378365.5625 5686460.5,378366.3125 5686461,378367.09375 5686461.5,378367 5686462,378368.59375 5686462,378370.46875 5686463,378372.4375 5686463.5,378373.21875 5686463.5,378374.375 5686464,378375.9375 5686464,378378.6875 5686464.5,378379.84375 5686464.5,378380.65625 5686464.5,378381.4375 5686464.5,378381.8125 5686465,378382.25 5686464.5,378384.25 5686464,378385.5 5686463.5,378386.6875 5686463.5,378387.875 5686464,378387.90625 5686463.5,378388.71875 5686463,378389.5 5686463,378391.15625 5686462.5,378393.125 5686462.5,378394.375 5686462,378395.1875 5686461.5,378395.625 5686461.5,378395.65625 5686461,378396.4375 5686461,378396.59375 5686459.5,378397.40625 5686459,378398.3125 5686458,378398.40625 5686457.5,378399.28125 5686456,378399.75 5686455.5,378399.90625 5686454,378400.03125 5686452.5,378400.09375 5686452,378400.21875 5686450.5,378400.34375 5686449,378400.46875 5686448,378400.59375 5686447,378400.71875 5686445,378401.1875 5686444.5,378401.3125 5686443.5,378401.4375 5686442,378401.5 5686441.5,378401.625 5686440,378401.6875 5686439.5,378401.75 5686438.5,378401.5625 5686436.5,378401.71875 5686435,378401.8125 5686434,378402.09375 5686431,378402.21875 5686429.5,378402.40625 5686427.5,378402.65625 5686425,378402.78125 5686423.5,378402.9375 5686422,378403.0625 5686421,378403.15625 5686419.5,378402.84375 5686419,378402.65625 5686417,378402.78125 5686415,378402.9375 5686413.5,378403.03125 5686413,378402.6875 5686412,378402.78125 5686411,378402.84375 5686410.5,378402.96875 5686409.5,378403.03125 5686408.5,378402 5686407,378402.125 5686405.5,378402.1875 5686405,378401.875 5686404,378401.5625 5686403,378400.875 5686402,378401.0625 5686400,378400.03125 5686398.5,378399.4375 5686396,378398.84375 5686394,378398.5625 5686393,378398.6875 5686392,378397.96875 5686391,378398.09375 5686389.5,378398.15625 5686389,378397.84375 5686388,378397.59375 5686386.5,378396.9375 5686385,378397.125 5686383.5,378397.34375 5686381,378397.0625 5686379.5,378396.8125 5686378,378396.5 5686377,378396.53125 5686377,378396.65625 5686375.5,378396.71875 5686375,378396.9375 5686372.5,378396.6875 5686371,378396.96875 5686368,378398.3125 5686366.5,378398.75 5686366,378398.84375 5686365,378398.90625 5686364.5,378400.90625 5686364,378401.8125 5686363,378402.625 5686363,378403.4375 5686362.5,378403.5 5686362,378403.59375 5686361,378404.8125 5686360.5,378405.59375 5686360.5,378406.46875 5686360,378408.09375 5686359.5,378409.03125 5686358,378410.3125 5686357,378411.09375 5686357,378411.15625 5686356.5,378411.96875 5686356,378412.78125 5686356,378414.0625 5686355,378415.6875 5686354.5,378416.53125 5686354,378416.5625 5686354,378416.96875 5686354,378417.75 5686354,378419 5686353.5,378420.21875 5686353,378420.59375 5686353,378421.375 5686353,378422.5625 5686353,378424.59375 5686352.5,378425.8125 5686352.5,378426.59375 5686352.5,378426.65625 5686352,378429 5686352.5,378430.40625 5686351.5,378430.6875 5686351.5,378432.28125 5686351,378433.0625 5686351,378433.46875 5686351,378434.25 5686351,378434.65625 5686351.5,378436.21875 5686351.5,378437.40625 5686351.5,378438.1875 5686351.5,378438.5625 5686351.5,378440.15625 5686352,378441.3125 5686352,378442.0625 5686352.5,378442.46875 5686352.5,378443.65625 5686352.5,378444.8125 5686352.5,378446 5686353,378446.40625 5686353,378447.1875 5686353,378447.96875 5686353,378448.8125 5686352.5,378451.21875 5686352,378452.5 5686351,378453.375 5686350.5,378453.75 5686350.5,378453.84375 5686349.5,378454.625 5686349.5,378454.71875 5686348.5,378455.59375 5686348,378456.5 5686346.5,378456.96875 5686346,378457.0625 5686345,378457.15625 5686344,378457.25 5686343,378457.34375 5686342,378457.59375 5686339.5,378458.125 5686338,378458.3125 5686336,378458.5625 5686333.5,378458.625 5686332.5,378458.75 5686331.5,378458.84375 5686330.5,378458.875 5686330,378459.03125 5686328.5,378458.6875 5686328,378457.625 5686326.5,378457.65625 5686326,378457.25 5686326,378456.6875 5686323.5,378452.53125 5686321.5,378451.09375 5686320,378450.4375 5686318.5,378449.65625 5686318.5,378448.9375 5686318,378448.59375 5686317.5,378447.90625 5686316,378446.8125 5686315,378446.15625 5686313.5,378445.53125 5686312,378445.28125 5686310,378445.4375 5686308.5,378445.5625 5686307.5,378445.25 5686306.5,378445.3125 5686306,378445.375 5686305,378445.625 5686302.5,378445.71875 5686301.5,378445.875 5686300,378446.03125 5686298.5,378446.09375 5686297.5,378446.1875 5686297,378446.28125 5686295.5,378446.3125 5686295,378447.1875 5686294.5,378447.21875 5686294,378447.625 5686294,378448 5686294,378448.09375 5686293.5,378448.125 5686293,378448.15625 5686292.5,378450.5 5686293,378451.8125 5686292,378452.28125 5686291,378452.6875 5686290.5,378452.75 5686290.5,378453.53125 5686290.5,378454.09375 5686288.5,378456.1875 5686287.5,378456.71875 5686286,378457.65625 5686284.5,378457.6875 5686284,378458.125 5686283.5,378458.53125 5686284,378459.3125 5686284,378460.59375 5686283,378462.28125 5686282,378463.0625 5686282,378463.125 5686281,378464.03125 5686280,378464.84375 5686279.5,378466.625 5686278,378467.875 5686277,378468.71875 5686276.5,378469.1875 5686275.5,378469.625 5686275.5,378470.0625 5686275,378470.90625 5686274.5,378471.75 5686274,378473.0625 5686272.5,378474.3125 5686272,378474.78125 5686271,378475.65625 5686270.5,378476.5 5686269.5,378477.40625 5686268.5,378477.84375 5686268,378478.6875 5686267.5,378480 5686266.5,378481.25 5686266,378481.75 5686265.5,378482.0625 5686265.5,378482.5 5686265,378483.4375 5686263.5,378485.875 5686263,378487.59375 5686261.5,378489.34375 5686260,378490.1875 5686259,378491.09375 5686258,378491.96875 5686257.5,378492.375 5686257,378493.25 5686256.5,378493.6875 5686256,378494.5625 5686255,378496.21875 5686254,378497.5625 5686252.5,378498.875 5686251.5,378499.75 5686250.5,378500.625 5686249.5,378501.0625 5686249,378501.9375 5686248.5,378502.78125 5686247.5,378503.21875 5686247.5,378504.0625 5686246.5,378504.90625 5686246.5,378505.8125 5686245,378506.625 5686245,378507.46875 5686244,378507.9375 5686243.5,378508.5 5686242,378510.125 5686241.5,378511.4375 5686240,378511.9375 5686239,378512.78125 5686238.5,378513.65625 5686237.5,378514.90625 5686237,378515.8125 5686236,378516.65625 5686235,378517.90625 5686234.5,378518.75 5686234,378519.59375 5686233.5,378520 5686233.5,378520.78125 5686233.5,378521.625 5686233,378522.5 5686232,378524.15625 5686231.5,378525.75 5686231.5,378526.65625 5686230.5,378527.90625 5686229.5,378528.71875 5686229.5,378529.59375 5686228.5,378530.8125 5686228.5,378531.625 5686228,378532.875 5686227.5,378534.09375 5686227,378534.875 5686227,378535.75 5686226.5,378536.5625 5686226,378537.46875 5686225,378539.0625 5686225,378539.9375 5686224,378539.96875 5686223.5,378540.78125 5686223.5,378541.6875 5686222,378542.5625 5686221.5,378543.84375 5686220.5,378545.0625 5686220,378546.34375 5686219,378547.21875 5686218.5,378548.0625 5686217.5,378548.9375 5686217,378549.78125 5686216.5,378550.21875 5686216,378551.0625 5686215,378551.90625 5686215,378552.71875 5686214.5,378553.59375 5686214,378554.4375 5686213,378556.0625 5686213,378557.3125 5686212.5,378558.15625 5686211.5,378559.375 5686211.5,378559.8125 5686211,378560.59375 5686211,378560.6875 5686210.5,378561.46875 5686210.5,378561.5 5686210,378561.6875 5686208,378563.84375 5686206,378564.90625 5686203,378566 5686200,378566.5 5686199,378567 5686198,378567.46875 5686197,378567.5625 5686196.5,378567.59375 5686196,378567.65625 5686195,378568.0625 5686195,378569.0625 5686193,378570.03125 5686191,378570.9375 5686190,378571.40625 5686189,378571.875 5686188.5,378572.3125 5686188,378572.8125 5686187,378573.6875 5686186,378575.40625 5686184.5,378577.0625 5686183.5,378578.375 5686182.5,378578.875 5686181.5,378579.6875 5686181,378579.78125 5686180.5,378580.25 5686179.5,378580.375 5686178,378581.21875 5686178,378582.53125 5686176.5,378583.4375 5686175,378583.90625 5686174.5,378584.8125 5686173.5,378585.28125 5686172.5,378585.34375 5686172,378586.3125 5686170,378587.21875 5686169,378588.0625 5686168,378588.59375 5686167,378589.03125 5686166,378589.5 5686165.5,378590.40625 5686164.5,378591.65625 5686163.5,378592.09375 5686163.5,378592.15625 5686162.5,378593 5686162.5,378593.0625 5686161.5,378593.09375 5686161,378593.53125 5686160.5,378593.96875 5686160,378598.0625 5686158,378601.25 5686156.5,378604.40625 5686156.5,378609.15625 5686154,378615.125 5686151.5,378618.28125 5686151.5,378622.65625 5686149.5,378625.84375 5686146,378628.21875 5686143.5,378628.25 5686140,378628.25 5686139.5,378629.46875 5686136,378630.3125 5686132,378631.90625 5686129,378635.53125 5686123.5,378640.65625 5686123,378645 5686122.5,378649.5 5686122,378649.5625 5686122,378650.40625 5686121.5,378651.3125 5686120,378651.84375 5686119,378651.875 5686118.5,378652.6875 5686118,378653.1875 5686117,378654.84375 5686116.5,378655.75 5686115.5,378656.25 5686114,378657.09375 5686113.5,378657.5625 5686113,378658.4375 5686112,378658.90625 5686111.5,378659.8125 5686110,378659.84375 5686110,378660.8125 5686108,378661.65625 5686107,378662.1875 5686106,378662.25 5686105.5,378663.0625 5686105,378663.15625 5686104,378663.25 5686103,378664.5625 5686102,378665.4375 5686101,378665.53125 5686100,378665.59375 5686099.5,378666.0625 5686098.5,378666.65625 5686096.5,378666.71875 5686096,378666.78125 5686095,378666.84375 5686094.5,378666.90625 5686094,378667.15625 5686091,378667.28125 5686090,378667.34375 5686089,378667.40625 5686088.5,378667.46875 5686088,378667.65625 5686086,378666.59375 5686084.5,378665.96875 5686083,378665.28125 5686082,378664.96875 5686081,378665.03125 5686080,378663.875 5686080,378662.59375 5686076.5,378660.5 5686073.5,378659.78125 5686073,378659.46875 5686072,378659.0625 5686072,378659.15625 5686071,378658.375 5686071,378658.4375 5686070.5,378656.9375 5686069.5,378656.21875 5686068.5,378654.84375 5686066.5,378654.1875 5686065,378653.90625 5686064,378653.53125 5686063.5,378653.5625 5686063,378652.90625 5686062,378652.96875 5686061,378652.34375 5686059.5,378651.625 5686058.5,378651.375 5686057,378651.53125 5686055.5,378651.5625 5686055,378651.625 5686054.5,378651.71875 5686053.5,378651.75 5686053,378651.84375 5686052,378651.90625 5686051.5,378651.9375 5686051,378652.84375 5686050,378652.9375 5686049,378653 5686048.5,378653.03125 5686048,378653.4375 5686048,378654.375 5686046.5,378654.84375 5686045.5,378654.875 5686045.5,378654.90625 5686045,378655.3125 5686045,378656.1875 5686044,378657.0625 5686043,378657.4375 5686043,378657.84375 5686043.5,378658.625 5686043.5,378659.40625 5686043.5,378660.625 5686043,378661.03125 5686043,378662.1875 5686043.5,378662.59375 5686043.5,378663.78125 5686043.5,378664.15625 5686043.5,378665.34375 5686043.5,378666.125 5686043.5,378666.90625 5686044,378668.09375 5686044,378668.875 5686044,378669.65625 5686044,378670.4375 5686044,378671.21875 5686044,378672.40625 5686044.5,378673.1875 5686044.5,378674.4375 5686043.5,378675.25 5686044,378676.8125 5686044,378677.1875 5686044,378678 5686044,378679.15625 5686044,378679.5625 5686044.5,378680.78125 5686044,378681.5625 5686044,378681.9375 5686044,378682.75 5686044,378683.90625 5686044.5,378686.34375 5686044,378687.90625 5686044,378688.75 5686043.5,378689.53125 5686043.5,378690.84375 5686042,378691.71875 5686041.5,378692.15625 5686041,378693.40625 5686040.5,378693.78125 5686040.5,378695.03125 5686040,378695.90625 5686039,378696.84375 5686037.5,378697.28125 5686037.5,378698.1875 5686036,378699.0625 5686035,378699.96875 5686034,378700.03125 5686033,378700.9375 5686032,378701.40625 5686031.5,378701.90625 5686030,378702.03125 5686029,378702.875 5686028.5,378703 5686027,378703.125 5686025.5,378704 5686025,378704.53125 5686023.5,378704.65625 5686022,378704.78125 5686021,378704.875 5686020,378705 5686018.5,378705.0625 5686018,378705.1875 5686016.5,378705.21875 5686016.5,378705.375 5686014.5,378704.6875 5686013.5,378703.28125 5686011.5,378702.40625 5686008.5,378701.71875 5686007,378701.84375 5686006,378702.03125 5686004,378702.21875 5686002,378702.28125 5686001.5,378702.3125 5686001,378703.09375 5686001,378703.15625 5686000.5,378703.71875 5685994.5,378704.15625 5685990,378704.21875 5685989,378704.3125 5685988.5,378704.40625 5685987,378705.3125 5685986,378705.5625 5685983.5,378705.6875 5685982,378705.75 5685981.5,378705.8125 5685981,378706.1875 5685981,378706.3125 5685980,378707.5625 5685979,378708.5625 5685977,378709.5 5685975.5,378709.53125 5685975,378709.59375 5685974.5,378709.96875 5685974.5,378710.125 5685973,378712.21875 5685971.5,378713.0625 5685971.5,378713.09375 5685971,378713.21875 5685970,378714.03125 5685969.5,378715.4375 5685967,378716.75 5685966,378717.1875 5685965.5,378717.25 5685964.5,378718.0625 5685964.5,378718.59375 5685963,378720.65625 5685962,378722.03125 5685960.5,378723.28125 5685959.5,378723.75 5685959,378724.21875 5685958,378724.625 5685958,378724.65625 5685958,378725.46875 5685957.5,378726.375 5685956.5,378727.1875 5685956,378728.5625 5685954.5,378730.25 5685953,378731.09375 5685952.5,378731.625 5685951.5,378732.46875 5685950.5,378733.375 5685949.5,378733.8125 5685949,378733.875 5685948.5,378735.09375 5685948,378736 5685947,378736.8125 5685946.5,378738.09375 5685945.5,378739.34375 5685945,378740.1875 5685944.5,378740.59375 5685944.5,378741.46875 5685943.5,378741.875 5685943.5,378743.15625 5685942.5,378744.375 5685942.5,378745.15625 5685942.5,378746 5685941.5,378746.84375 5685941.5,378748.09375 5685940.5,378748.46875 5685941,378749.6875 5685940.5,378750.09375 5685940.5,378751.75 5685940,378752.53125 5685940,378753.8125 5685939,378755.53125 5685939,378758.5 5685935.5,378761.6875 5685932.5,378766.875 5685927.5,378770.46875 5685924,378774.84375 5685920,378778.8125 5685917,378783.21875 5685913,378787.96875 5685909.5,378793.53125 5685906.5,378796.71875 5685904.5,378799.5 5685903.5,378802.65625 5685903,378806.25 5685899.5,378808.09375 5685898,378808.65625 5685896,378809.9375 5685895,378810.4375 5685894,378810.59375 5685892,378811.40625 5685892,378811.5 5685891,378812.4375 5685889.5,378813.28125 5685889,378813.75 5685888,378813.875 5685887,378813.9375 5685886,378814.4375 5685885,378815.40625 5685883,378816.28125 5685882.5,378816.78125 5685881.5,378816.90625 5685880,378816.96875 5685879.5,378817 5685879,378817.125 5685878,378817.96875 5685877,378819.09375 5685873.5,378819.25 5685872,378819.40625 5685870.5,378819.5625 5685869,378819.625 5685868,378819.75 5685867,378819.84375 5685865.5,378819.96875 5685864.5,378820.1875 5685862,378820.3125 5685861,378820.5 5685859,378820.53125 5685858.5,378820.6875 5685857,378820.8125 5685855.5,378820.9375 5685854.5,378821 5685853.5,378821.0625 5685853,378821.46875 5685849,378821.0625 5685845,378821.1875 5685843,378821.3125 5685842,378821.375 5685841.5,378821.46875 5685840.5,378821.5 5685840,378820.78125 5685839,378820.59375 5685837,378820.3125 5685836,378820.375 5685835,378820.5 5685834,378820.21875 5685833,378817.96875 5685831.5,378817.3125 5685825.5,378814.8125 5685822.5,378813.875 5685820,378813.28125 5685818,378812.5625 5685817.5,378812.28125 5685816,378811.9375 5685815.5,378812 5685815,378809.25 5685814.5,378806.71875 5685812,378803.8125 5685809.5,378801.96875 5685808,378801.25 5685807,378800.0625 5685807,378799.75 5685806,378799.375 5685806,378798.625 5685805.5,378797.84375 5685805.5,378794.28125 5685805,378792.71875 5685805,378790.75 5685805,378789.59375 5685804.5,378789.1875 5685804.5,378788.40625 5685804.5,378787.625 5685804.5,378786.84375 5685804.5,378785.65625 5685804.5,378784.09375 5685804,378782.03125 5685804.5,378780.875 5685804.5,378780.09375 5685804.5,378779.28125 5685804.5,378778.90625 5685804.5,378777.6875 5685804.5,378775.34375 5685804.5,378773.65625 5685805.5,378772.4375 5685805.5,378771.21875 5685806,378770.40625 5685806.5,378769.59375 5685806,378768.8125 5685806,378767.65625 5685806,378767.25 5685806,378766.0625 5685806,378765.6875 5685806,378764.53125 5685805.5,378763.75 5685805,378762.6875 5685804,378761.1875 5685803,378760 5685803,378759.28125 5685802.5,378758.09375 5685802.5,378757.3125 5685802,378756.125 5685802,378755.90625 5685802,378754.9375 5685802,378752.1875 5685801.5,378750.625 5685801.5,378749.84375 5685801.5,378748.65625 5685801.5,378747.875 5685801,378746.65625 5685801.5,378745.46875 5685801.5,378745.0625 5685801.5,378744.1875 5685802.5,378743.375 5685803,378742.125 5685803.5,378740.875 5685804,378740 5685805,378739.15625 5685805.5,378738.28125 5685806,378737.8125 5685807,378737.03125 5685807,378737 5685807.5,378736.21875 5685807,378734.8125 5685809.5,378731.875 5685811,378730.625 5685812,378730.53125 5685812.5,378729.375 5685812.5,378727.59375 5685814.5,378723.90625 5685815.5,378723.0625 5685816,378722.625 5685816.5,378721.84375 5685816.5,378721.03125 5685817,378720.59375 5685817,378719.65625 5685818.5,378717.65625 5685819,378716.375 5685820,378715.46875 5685821,378714.65625 5685821.5,378714.59375 5685821.5,378713.75 5685822.5,378713.3125 5685823,378712.375 5685824.5,378711.90625 5685825,378711.84375 5685826,378711.75 5685826.5,378711.6875 5685827.5,378710.8125 5685828,378710.25 5685830,378709.75 5685831,378709.59375 5685832.5,378709.46875 5685834,378709.375 5685835,378708.46875 5685836,378707.96875 5685837.5,378707.875 5685838,378707 5685839,378706.90625 5685840,378705.90625 5685842.5,378705.03125 5685843,378704.5 5685844.5,378704.34375 5685846,378703.53125 5685846.5,378703.46875 5685847,378702.5625 5685848.5,378702.09375 5685849,378700.75 5685850.5,378699.90625 5685851,378699.03125 5685852,378698.1875 5685852.5,378697.3125 5685853.5,378696.84375 5685854,378696 5685855,378695.53125 5685855.5,378694.65625 5685856.5,378694.1875 5685857,378692.90625 5685858,378691.21875 5685859,378690.375 5685860,378689.875 5685861,378689.03125 5685861,378688.59375 5685861.5,378687.75 5685862.5,378686.9375 5685862.5,378686.125 5685862.5,378685.75 5685862.5,378684.84375 5685863.5,378683.625 5685864,378681.9375 5685865,378680.34375 5685865,378679.5625 5685865,378678.78125 5685865,378677.90625 5685865.5,378676.71875 5685865.5,378674.3125 5685866,378672.34375 5685866,378671.15625 5685866,378670.375 5685865.5,378669.125 5685866.5,378668.34375 5685866.5,378667.09375 5685867,378665.90625 5685867,378665.03125 5685867.5,378664.1875 5685868.5,378663.34375 5685868.5,378662.90625 5685869.5,378662.46875 5685869.5,378661.6875 5685869.5,378660.375 5685870.5,378658.78125 5685871,378657.96875 5685871,378657.125 5685871.5,378656.6875 5685872,378655.875 5685872,378654.125 5685874,378652.46875 5685874.5,378651.1875 5685875.5,378650.3125 5685876.5,378649.46875 5685877,378648.625 5685877.5,378648.1875 5685878,378647.75 5685878.5,378646.90625 5685879,378646.4375 5685879.5,378645.59375 5685880.5,378643.9375 5685881,378643.46875 5685881.5,378642.65625 5685882,378641.78125 5685882.5,378640.9375 5685883.5,378639.71875 5685883.5,378638.84375 5685884.5,378638.375 5685885,378637.5625 5685885.5,378636.75 5685886,378636.3125 5685886,378635.46875 5685887,378635.0625 5685887,378633.6875 5685888.5,378632.0625 5685889.5,378630.8125 5685890,378630.28125 5685891,378629.4375 5685892,378629 5685892,378628.5625 5685892.5,378628.5 5685893.5,378627.625 5685894,378627.21875 5685894.5,378626.28125 5685896,378625.03125 5685896.5,378624.5 5685897.5,378624.03125 5685898.5,378623.15625 5685899.5,378622.65625 5685900.5,378622.34375 5685901,378623.25 5685903,378626.75 5685907.5,378629.09375 5685910.5,378631.03125 5685914.5,378633.375 5685918.5,378636.125 5685922.5,378637.65625 5685928,378638.40625 5685931.5,378638.34375 5685938,378636.34375 5685941.5,378634.3125 5685945.5,378628.34375 5685951.5,378627.09375 5685951.5,378627.4375 5685954.5,378629.5625 5685957,378630.5625 5685959,378631.125 5685961.5,378631.4375 5685962.5,378631.375 5685963,378632.125 5685963.5,378632.09375 5685964,378632.40625 5685965,378632.65625 5685966.5,378633.34375 5685967.5,378634.3125 5685970,378634.96875 5685971,378634.9375 5685971.5,378634.875 5685972,378635.53125 5685973.5,378635.90625 5685974,378636.53125 5685975.5,378637.25 5685976.5,378637.15625 5685977,378637.09375 5685978,378637.0625 5685978.5,378638.9375 5685979.5,378639.375 5685983,378640.375 5685985,378640.65625 5685986.5,378640.5 5685988,378640.46875 5685988.5,378641.65625 5685988.5,378642.53125 5685991.5,378643.875 5685994,378644.15625 5685995.5,378644.09375 5685996,378644.46875 5685996,378644.59375 5685999,378644.8125 5686001,378644.75 5686002,378644.65625 5686002.5,378644.5625 5686004,378644.46875 5686004.5,378644.375 5686005.5,378644.25 5686007,378643.65625 5686009,378642.78125 5686010,378640.71875 5686015,378640.25 5686015.5,378639.78125 5686016.5,378638.8125 5686018.5,378637.53125 5686019.5,378637 5686020.5,378636.875 5686022,378636.03125 5686022.5,378636 5686023,378635.875 5686024,378634.28125 5686024,378633.125 5686028,378632.15625 5686030,378632.0625 5686030.5,378631.5625 5686032,378631.53125 5686032.5,378631.09375 5686032.5,378630.25 5686033.5,378629.78125 5686034,378628.40625 5686036,378626.71875 5686037,378625.78125 5686038.5,378624.84375 5686040,378624.8125 5686040.5,378624.78125 5686040.5,378623.90625 5686041.5,378623.4375 5686042,378623.0625 5686042,378622.15625 5686043,378620.90625 5686044,378620 5686045,378618.75 5686045.5,378617.90625 5686046.5,378617 5686047.5,378616.1875 5686048,378615.71875 5686048.5,378614.875 5686049,378614.0625 5686049,378612.8125 5686050,378611.15625 5686050.5,378609.90625 5686051,378609.0625 5686052,378608.1875 5686052.5,378608.15625 5686053,378607.34375 5686053,378606.875 5686054,378605.59375 5686054.5,378604.78125 5686055,378604.40625 5686055,378603.21875 5686055,378601.65625 5686054.5,378599.28125 5686054.5,378598.5 5686054.5,378598.1875 5686053.5,378597.40625 5686053.5,378597 5686053.5,378595.9375 5686052,378594.40625 5686051.5,378593.3125 5686050.5,378592.1875 5686049.5,378591.09375 5686049,378590 5686048,378588.9375 5686046.5,378587.8125 5686045.5,378586.71875 5686045,378586 5686044,378584.90625 5686043,378584.1875 5686042,378583.4375 5686041.5,378582.75 5686041,378582.375 5686040.5,378581.625 5686040,378580.96875 5686038.5,378579.8125 5686038,378579.46875 5686037.5,378579.125 5686037.5,378578.4375 5686036,378577.28125 5686035.5,378576.625 5686034,378575.90625 5686033.5,378575.65625 5686032,378575 5686030.5,378574.40625 5686028.5,378573 5686026.5,378572.46875 5686024,378571.84375 5686022,378571.21875 5686020,378570.625 5686018,378570 5686016.5,378569.3125 5686015,378568.625 5686014,378568.3125 5686013,378567.625 5686012.5,378567.65625 5686012,378566.9375 5686011,378566.96875 5686010.5,378565.875 5686009.5,378565.53125 5686009.5,378564.40625 5686008.5,378563.3125 5686007.5,378562.5625 5686007,378562.21875 5686006.5,378561.5 5686005.5,378560.75 5686005,378559.28125 5686004,378557.78125 5686003,378556.71875 5686001.5,378556.0625 5686000.5,378555 5685999,378554.3125 5685998,378553.21875 5685997,378552.53125 5685995.5,378551.84375 5685995,378551.65625 5685994.5,378551.5 5685994,378551.15625 5685993.5,378551.1875 5685993,378550 5685993,378549.46875 5685990.5,378546.90625 5685988.5,378546.21875 5685987,378545.96875 5685985.5,378545.625 5685985,378545.65625 5685984.5,378544.9375 5685984,378544.59375 5685983.5,378543.96875 5685981.5,378543.59375 5685981,378542.5625 5685979.5,378541.8125 5685979,378541.5 5685978,378541.1875 5685977.5,378540.5625 5685976,378539.0625 5685975,378538.375 5685973.5,378537.3125 5685972.5,378536.59375 5685971.5,378535.875 5685971,378535.15625 5685970,378534.78125 5685969.5,378534.03125 5685969,378532.875 5685969,378531.875 5685967,378530.46875 5685965,378529.75 5685964.5,378529.78125 5685964,378529.375 5685964,378528.6875 5685963,378527.90625 5685963,378525.96875 5685962.5,378524.40625 5685962,378523.625 5685962,378522.8125 5685962,378522.03125 5685962,378521.65625 5685962,378520.46875 5685962,378519.6875 5685961.5,378518.5 5685961.5,378517.71875 5685961.5,378516.53125 5685961.5,378515.75 5685961.5,378514.25 5685960.5,378512.34375 5685960,378511.21875 5685959,378510.53125 5685958,378509.78125 5685957.5,378509.8125 5685957,378508.65625 5685956.5,378508.28125 5685956.5,378507.21875 5685955.5,378506.90625 5685954.5,378506.09375 5685954.5,378506.21875 5685953,378505.46875 5685952.5,378503.71875 5685950,378502.65625 5685949,378502.0625 5685947,378502.21875 5685945.5,378501.53125 5685944,378501.65625 5685943,378501.78125 5685941.5,378501.5 5685940.5,378501.125 5685940,378501.21875 5685939,378500.4375 5685939,378499.40625 5685937.5,378498.34375 5685936,378497.53125 5685936,378497.59375 5685935.5,378496.0625 5685935,378495.21875 5685935,378494.46875 5685935,378493.78125 5685934,378492.96875 5685934,378492.1875 5685934,378491.40625 5685934,378490.21875 5685933.5,378488.65625 5685933.5,378487.46875 5685933.5,378486.3125 5685933.5,378485.15625 5685933,378484.78125 5685933,378484.03125 5685932.5,378483.25 5685932,378482.53125 5685931.5,378481.375 5685931,378479.84375 5685930.5,378478.6875 5685930,378477.9375 5685929.5,378477.53125 5685929.5,378477.21875 5685929,378476.875 5685928.5,378476.21875 5685926.5,378475.125 5685926,378474.4375 5685924.5,378473.78125 5685923.5,378473.40625 5685923,378473.46875 5685922.5,378473.6875 5685920,378473.125 5685917.5,378473.3125 5685915.5,378473.53125 5685913.5,378473.65625 5685912,378473.75 5685911,378473.875 5685910,378473.9375 5685909,378474.0625 5685908,378474.15625 5685906.5,378474.34375 5685904.5,378474.53125 5685902.5,378474.6875 5685901,378474.84375 5685899.5,378475 5685898,378475.15625 5685896.5,378475.25 5685895.5,378474.53125 5685894.5,378473.84375 5685893.5,378473.875 5685893,378473.15625 5685892.5,378472.09375 5685891,378471.4375 5685889.5,378470.75 5685888.5,378470.875 5685887.5,378469.75 5685886.5,378469.46875 5685885,378468.84375 5685883.5,378467.8125 5685882,378467.1875 5685880,378466.5 5685879,378466.65625 5685877.5,378465.9375 5685876.5,378466.03125 5685875.5,378465.28125 5685875,378465.3125 5685875,378464.53125 5685874.5,378463.84375 5685873.5,378461.96875 5685872.5,378461.21875 5685872,378461 5685872,378460.46875 5685871.5,378459.6875 5685871.5,378458.53125 5685871,378457.4375 5685870,378454.6875 5685869.5,378453.1875 5685869,378451.6875 5685868,378450.53125 5685867.5,378449.71875 5685867.5,378448.625 5685866.5,378448.28125 5685866.5,378447.09375 5685866,378446.3125 5685866,378445.125 5685866,378444.75 5685866,378443.5625 5685866,378442.78125 5685865.5,378442 5685865.5,378441.59375 5685865.5,378440.40625 5685865.5,378439.625 5685865.5,378438.46875 5685865.5,378438.25 5685865.5,378437.28125 5685865,378435.25 5685866,378432.4375 5685866,378430.875 5685865.5,378429.28125 5685866,378428.09375 5685866,378426.84375 5685866.5,378425.28125 5685866.5,378424.09375 5685866,378422.84375 5685867,378422 5685867,378421.21875 5685867,378420.84375 5685867,378419.96875 5685868,378419.125 5685868.5,378417.46875 5685869,378415.46875 5685869.5,378414.21875 5685870,378413.71875 5685871,378412.875 5685871.5,378412.46875 5685872,378411.5625 5685873,378410.125 5685873,378410.09375 5685873.5,378408.8125 5685882.5,378405.96875 5685892.5,378403.53125 5685899.5,378401.53125 5685904,378399.28125 5685908,378399.46875 5685908,378399.875 5685912.5,378400.34375 5685916,378400.15625 5685918,378399.96875 5685920,378399.875 5685920.5,378399.8125 5685921.5,378399.75 5685922,378399.625 5685923.5,378399.5 5685924.5,378398.0625 5685927,378397.0625 5685929.5,378395.625 5685932,378395.15625 5685933,378395.03125 5685934,378394.90625 5685935.5,378390.84375 5685936.5,378389.15625 5685937.5,378387.90625 5685938,378387.09375 5685938.5,378386.21875 5685939,378385.8125 5685939.5,378384.96875 5685940,378384.15625 5685940,378382.9375 5685940.5,378381.25 5685941.5,378378.875 5685941.5,378377.25 5685942,378376 5685942.5,378374.78125 5685942.5,378373.53125 5685943.5,378371.9375 5685943.5,378371.09375 5685944,378369.9375 5685944,378369.53125 5685944,378368.71875 5685944,378367.9375 5685944,378366.34375 5685944,378365.5625 5685944,378364.3125 5685944.5,378363.125 5685944.5,378362.75 5685944.5,378361.875 5685945,378361.09375 5685945,378359.90625 5685945,378359.125 5685944.5,378357.84375 5685946,378357.0625 5685945.5,378355.40625 5685946.5,378353.84375 5685946,378352.96875 5685947,378352.15625 5685947,378351.34375 5685947.5,378350.90625 5685948,378349.625 5685949,378348 5685949,378346.75 5685950,378345.5 5685950.5,378344.28125 5685950.5,378343.0625 5685951,378341.84375 5685951.5,378341.03125 5685951.5,378340.25 5685951.5,378339.84375 5685951.5,378339.1875 5685950,378339.28125 5685949,378339.3125 5685948.5,378338.6875 5685947,378338.71875 5685946.5,378338.0625 5685945.5,378337.5 5685943,378337.59375 5685941.5,378337.71875 5685940.5,378337.78125 5685940,378337.84375 5685939.5,378337.5625 5685938,378337.28125 5685937,378336.09375 5685937,378335.3125 5685936.5,378334.15625 5685936,378333.375 5685936,378333 5685936,378331.8125 5685936,378331.40625 5685936,378329.84375 5685936,378329.0625 5685935.5,378328.28125 5685935.5,378327.5 5685935.5,378326.3125 5685935.5,378325.53125 5685935.5,378323.96875 5685935,378323.15625 5685935,378321.59375 5685935,378320.03125 5685935,378319.25 5685934.5,378318.0625 5685934.5,378316.84375 5685935,378316.03125 5685935,378315.15625 5685936,378313.9375 5685936,378313.15625 5685936,378312.375 5685936,378311.53125 5685936.5,378311.0625 5685937.5,378309.75 5685938.5,378308.9375 5685939,378308.4375 5685940,378307.9375 5685941,378307.46875 5685942,378306.5625 5685943,378306.09375 5685943.5,378306.03125 5685944.5,378305.53125 5685945.5,378305.09375 5685946,378304.1875 5685947,378303.375 5685947.5,378302.5 5685948,378302.03125 5685949,378301.5625 5685949.5,378301.53125 5685950,378301.46875 5685951,378300.65625 5685950.5,378300.3125 5685950.5,378299.53125 5685950,378299.125 5685950,378299.09375 5685950.5,378298.28125 5685951,378297.5 5685951,378296.59375 5685952,378294.53125 5685953,378293.6875 5685953,378293.28125 5685953.5,378292.875 5685953.5,378292.8125 5685954.5,378291.59375 5685954.5,378291.1875 5685954.5,378291.125 5685955.5,378289.53125 5685955,378288.59375 5685956.5,378287.34375 5685957.5,378286.5 5685958,378285.625 5685958.5,378285.21875 5685959,378284.75 5685960,378283.90625 5685960,378283.125 5685960,378282.21875 5685961,378280.59375 5685962,378279.34375 5685962.5,378278.46875 5685963,378277.625 5685964,378277.1875 5685964,378276.3125 5685965,378275.9375 5685965,378274.6875 5685965.5,378274.28125 5685965.5,378273.03125 5685966,378272.625 5685966,378271 5685967,378270.59375 5685966.5,378269.3125 5685968,378268.5 5685968,378267.21875 5685969,378265.96875 5685969.5,378265.1875 5685969.5,378264.40625 5685969.5,378263.15625 5685970,378262.375 5685970,378260.8125 5685969.5,378260 5685969.5,378259.15625 5685970.5,378258.375 5685970.5,378257.59375 5685970,378256.375 5685970.5,378255.1875 5685970.5,378253.21875 5685970,378251.65625 5685970,378250.875 5685970,378250.46875 5685970,378249.6875 5685970,378248.90625 5685969.5,378247.71875 5685969.5,378246.90625 5685970,378245.25 5685970.5,378244.46875 5685970.5,378243.6875 5685970.5,378243.28125 5685970.5,378242.03125 5685971,378241.21875 5685971.5,378239.5625 5685972,378239.15625 5685972.5,378238.75 5685972.5,378237.84375 5685973.5,378237.03125 5685973.5,378235.78125 5685974.5,378235.28125 5685975.5,378235.1875 5685976.5,378235.15625 5685976.5,378234.8125 5685980,378233.375 5685983,378233.3125 5685983.5,378233.28125 5685984,378233.1875 5685985,378233.15625 5685985,378233.03125 5685986.5,378232.5625 5685987,378231.53125 5685990,378231.375 5685991.5,378231.21875 5685993,378231.09375 5685994.5,378231.03125 5685995,378231 5685995.5,378230.90625 5685996.5,378230.8125 5685997.5,378230.71875 5685998.5,378230.625 5685999.5,378230.46875 5686001,378230.4375 5686001,378230.28125 5686003,378230.1875 5686004,378230.0625 5686005,378230 5686006,378229.34375 5686008.5,378228.40625 5686010,378228.25 5686011.5,378228.15625 5686013,378227.6875 5686013.5,378227.59375 5686014.5,378227.21875 5686014.5,378226.40625 5686014.5,378225.8125 5686016.5,378225.625 5686018.5,378224.84375 5686018.5,378223.90625 5686020,378222.5625 5686021.5,378222.1875 5686021.5,378220.96875 5686021.5,378220.0625 5686023,378219.25 5686023,378218.78125 5686024,378218.34375 5686024,378217.5625 5686024,378216.78125 5686024,378215.96875 5686024,378215.1875 5686024,378214.03125 5686024,378213.25 5686023.5,378212.0625 5686023.5,378212.125 5686023,378211.34375 5686022.5,378211.03125 5686022,378210.3125 5686021,378210.40625 5686020.5,378209.65625 5686020,378209.71875 5686019,378209.375 5686018.5,378209.09375 5686017.5,378209.125 5686017,378208.03125 5686016,378208.0625 5686015.5,378208.15625 5686014.5,378205.9375 5686013,378204.96875 5686010.5,378203.90625 5686009.5,378203.59375 5686008.5,378203.65625 5686007.5,378202.875 5686007.5,378201.6875 5686007.5,378200.53125 5686007.5,378199.71875 5686007.5,378198.9375 5686007,378197.78125 5686007,378196.59375 5686007,378195.03125 5686007,378193.84375 5686006.5,378193.0625 5686006.5,378192.96875 5686007.5,378191.8125 5686007,378191.40625 5686007,378190.625 5686007,378190.5625 5686008,378189.34375 5686008,378188.40625 5686009.5,378187.5 5686011,378187.4375 5686011.5,378186.59375 5686012,378186.125 5686012.5,378184.84375 5686013.5,378184.375 5686014.5,378183.46875 5686015.5,378183 5686016.5,378182.59375 5686016.5,378182.53125 5686017,378181.28125 5686017.5,378180.8125 5686018.5,378180.71875 5686019.5,378179.46875 5686020.5,378179.03125 5686020.5,378179 5686021,378178.96875 5686021.5,378178.5625 5686021.5,378177.6875 5686022,378176.375 5686023.5,378175.9375 5686024,378175.09375 5686024.5,378173.78125 5686025.5,378173.375 5686026,378172.5 5686027,378171.59375 5686028,378170.34375 5686028.5,378169.0625 5686029.5,378167.40625 5686030,378165.78125 5686031,378164.875 5686032,378163.65625 5686032,378162.84375 5686032.5,378162.4375 5686032.5,378162.5 5686031.5,378162.5625 5686031.5,378162.59375 5686030.5,378152.25 5686035.5,378151.90625 5686039,378153.625 5686042,378154.40625 5686042,378154.3125 5686043,378154.03125 5686046,378158.40625 5686046,378163.125 5686048,378164.6875 5686052,378166.59375 5686059.5,378167.71875 5686064.5,378168.09375 5686067.5,378169.625 5686072.5,378174.53125 5686078,378175.5625 5686078,378176.75 5686078,378177.53125 5686078,378178.3125 5686078,378179.09375 5686078.5,378179.875 5686078.5,378181.46875 5686078.5,378182.25 5686078.5,378183.40625 5686078.5,378184.21875 5686079,378185.78125 5686079,378186.5625 5686079,378186.96875 5686079,378188.0625 5686080,378188.84375 5686080,378190.34375 5686081,378191.90625 5686081,378192.6875 5686081,378193.46875 5686081.5,378194.53125 5686082.5,378195.6875 5686083,378197.5625 5686084,378199.0625 5686085,378200.21875 5686085.5,378200.96875 5686086,378202.09375 5686086.5,378203.25 5686087,378204 5686087.5,378205.125 5686088,378206.28125 5686088.5,378207.375 5686089.5,378208.5 5686090,378209.25 5686090.5,378210.40625 5686091,378211.53125 5686091.5,378212.34375 5686091.5,378213.125 5686091.5,378214.21875 5686092.5,378215 5686092.5,378216.1875 5686093,378216.9375 5686093,378218.375 5686094.5,378220.3125 5686095,378221.375 5686096.5,378222.5 5686097.5,378223.9375 5686098.5,378225.03125 5686099.5,378226.15625 5686100.5,378227.25 5686101.5,378228.34375 5686102.5,378229.0625 5686103,378229.78125 5686104,378230.53125 5686104.5,378231.15625 5686106,378232.65625 5686107,378233.375 5686108,378234.09375 5686109,378234.78125 5686109.5,378235.5 5686110.5,378235.78125 5686112,378236.5 5686112.5,378237.1875 5686113.5,378237.125 5686114.5,378237.875 5686115,378238.5625 5686116,378239.28125 5686116.5,378240.3125 5686118,378241.375 5686119.5,378242.5 5686120.5,378243.15625 5686121.5,378243.90625 5686122,378244.28125 5686122.5,378245.34375 5686124,378245.6875 5686124.5,378246.84375 5686125,378247.625 5686125,378248 5686125,378248.71875 5686126,378249.46875 5686126.5,378250.9375 5686127.5,378252.4375 5686128.5,378253.46875 5686129.5,378253.53125 5686129.5,378254.25 5686130.5,378255.375 5686131,378256.125 5686131.5,378257.3125 5686131.5,378258 5686132.5,378259.125 5686133.5,378261.03125 5686134,378261.78125 5686134.5,378262.53125 5686135,378263.3125 5686135,378264.125 5686135,378264.8125 5686136,378267.125 5686136.5,378268.3125 5686136.5,378269.0625 5686137,378269.84375 5686137,378270.25 5686137,378271.03125 5686137,378271.875 5686136.5,378272.3125 5686136,378273.5625 5686135.5,378274.40625 5686135,378275.6875 5686134,378276.9375 5686133.5,378278.1875 5686133,378278.65625 5686132,378279.53125 5686131.5,378280 5686130.5,378280.9375 5686129,378282.1875 5686128.5,378282.71875 5686127,378282.875 5686125.5,378283.71875 5686124.5,378283.78125 5686124,378283.90625 5686122.5,378284.0625 5686121,378284.5625 5686116,378283.21875 5686113.5,378283.03125 5686111,378283.21875 5686109,378283.34375 5686108,378283.03125 5686107,378282.34375 5686106,378282.46875 5686104.5,378281.78125 5686103.5,378281.46875 5686102.5,378281.21875 5686101,378280.96875 5686099.5,378280.6875 5686098,378280.84375 5686096.5,378280.1875 5686095.5,378280.28125 5686094,378280.34375 5686093.5,378280.375 5686093.5,378280.625 5686090.5,378279.6875 5686088,378279.5 5686085.5,378279.71875 5686083.5,378279.84375 5686082,378279.96875 5686081,378280.03125 5686080,378279.3125 5686079.5,378278.9375 5686079,378278.71875 5686077,378276.53125 5686075.5,378276.03125 5686075,378272.375 5686073.5,378267.28125 5686070,378262.5625 5686067,378258.25 5686062.5,378255.53125 5686058,378255.5625 5686054.5,378256.78125 5686050.5,378260 5686041.5,378260.84375 5686037.5,378263.25 5686032,378265.28125 5686027.5,378267.6875 5686021.5,378270.53125 5686014.5,378273.34375 5686008.5,378277.75 5686000.5,378282.40625 5685992.5,378282.96875 5685992,378285.3125 5685987.5,378286.03125 5685988,378287.28125 5685987,378288.875 5685987.5,378289.71875 5685986.5,378290.96875 5685986,378292.1875 5685985.5,378292.625 5685985.5,378293.40625 5685985.5,378294.28125 5685984.5,378294.6875 5685984.5,378295.5 5685984.5,378295.875 5685984.5,378296.75 5685983.5,378297.15625 5685983.5,378298 5685983,378298.84375 5685982.5,378299.25 5685982.5,378300.15625 5685981,378300.53125 5685981.5,378301.78125 5685980.5,378302.5625 5685980.5,378303 5685980.5,378304.25 5685979.5,378304.6875 5685979.5,378305.90625 5685979,378307.15625 5685978.5,378307.5625 5685978.5,378308.8125 5685978,378310.375 5685978,378311.625 5685977,378312.0625 5685977,378312.4375 5685977,378313.25 5685977,378314.5 5685976.5,378314.875 5685976.5,378316.09375 5685976,378316.875 5685976,378317.75 5685975.5,378318.53125 5685975.5,378319.3125 5685975.5,378320.96875 5685975,378322.1875 5685974.5,378322.5625 5685975,378323.4375 5685974,378324.21875 5685974,378324.59375 5685974,378325.46875 5685973.5,378326.6875 5685973,378327.0625 5685973,378327.9375 5685972.5,378328.75 5685972,378330.8125 5685971.5,378331.96875 5685972,378333.15625 5685972,378333.59375 5685971.5,378333.96875 5685971.5,378334.75 5685971.5,378335.9375 5685972,378336.34375 5685972,378337.9375 5685971.5,378338.71875 5685971.5,378339.5 5685971.5,378340.28125 5685971.5,378340.78125 5685971,378342.375 5685971,378342.78125 5685971,378343.9375 5685971,378344.34375 5685971,378345.59375 5685970.5,378346.375 5685970.5,378347.15625 5685970.5,378347.9375 5685970.5,378349.15625 5685970.5,378349.9375 5685970.5,378351.1875 5685969.5,378352 5685970,378353.28125 5685968.5,378354.5 5685968.5,378355.28125 5685968.5,378355.65625 5685968.5,378356.53125 5685968,378356.96875 5685967.5,378357.75 5685967.5,378358.125 5685967.5,378358.96875 5685967.5,378359.75 5685967.5,378361.03125 5685966.5,378361.875 5685966,378362.65625 5685966,378363.46875 5685966,378363.875 5685966,378365.125 5685965,378365.90625 5685965.5,378367.59375 5685964,378369.1875 5685964,378370.40625 5685963.5,378371.21875 5685963.5,378372.03125 5685963.5,378373.21875 5685963,378374.03125 5685963.5,378374.125 5685962,378375.3125 5685962,378376.53125 5685962,378377.6875 5685962,378378.59375 5685961,378379 5685961,378380.625 5685960.5,378381.4375 5685960.5,378382.75 5685959,378384 5685958.5,378384.40625 5685958.5,378385.25 5685957.5,378386.09375 5685957.5,378386.90625 5685957,378388.09375 5685957,378389.75 5685956,378391.03125 5685955.5,378391.8125 5685955.5,378392.1875 5685955.5,378393.03125 5685955.5,378393.40625 5685955.5,378394.1875 5685955.5,378394.96875 5685955.5,378396.625 5685955,378397.40625 5685955,378398.625 5685954.5,378399.8125 5685955,378401.5 5685954,378402.34375 5685953,378402.75 5685953,378403.59375 5685952.5,378405.65625 5685952,378406.90625 5685951,378408.125 5685951,378408.90625 5685951,378409.28125 5685951,378410.53125 5685950.5,378410.96875 5685950,378412.625 5685949.5,378413.40625 5685949.5,378413.84375 5685949,378414.71875 5685948,378415.15625 5685947.5,378416.40625 5685947,378417.28125 5685946,378418.53125 5685945.5,378419.4375 5685944.5,378420.25 5685944,378421.125 5685943.5,378421.53125 5685943,378422.84375 5685942,378424.03125 5685941.5,378425.3125 5685941,378425.78125 5685940.5,378426.1875 5685940,378427.03125 5685939.5,378427.96875 5685938,378429.59375 5685937.5,378430.4375 5685937,378430.46875 5685937,378430.53125 5685936,378432.15625 5685936,378432.96875 5685935.5,378433.375 5685935.5,378434.6875 5685934,378436.3125 5685934,378437.125 5685933.5,378437.9375 5685933,378437.96875 5685933,378438.75 5685933,378439.5625 5685933,378441.5 5685933,378442.59375 5685934.5,378443.375 5685934.5,378443.71875 5685935,378443.5625 5685936.5,378445.8125 5685938,378447.125 5685941,378448.53125 5685942.5,378449.28125 5685943,378449.21875 5685944,378449.15625 5685944.5,378449.84375 5685945.5,378451.625 5685947.5,378453.125 5685948.5,378453.84375 5685949.5,378454.5625 5685950.5,378454.90625 5685951,378455.25 5685951,378455.96875 5685952,378456.71875 5685952.5,378457.375 5685954,378458.125 5685954.5,378458.5 5685954.5,378459.625 5685955.5,378460 5685955.5,378460.375 5685955.5,378460.3125 5685956.5,378461.0625 5685957,378461.84375 5685957,378462.46875 5685958.5,378463.625 5685959,378464 5685959.5,378463.9375 5685960,378465.8125 5685961,378466.5 5685962.5,378467.96875 5685963.5,378469.09375 5685964,378469.03125 5685965,378468.90625 5685966,378470.8125 5685967,378471.4375 5685969,378472.15625 5685969.5,378472.46875 5685970.5,378472.4375 5685971,378472.34375 5685971.5,378473.4375 5685972.5,378474.09375 5685974,378474.75 5685975.5,378475.125 5685976,378475.4375 5685976.5,378475.78125 5685977,378476.96875 5685977.5,378478.53125 5685977.5,378479.71875 5685977.5,378480.46875 5685978,378481.25 5685978,378482.40625 5685978.5,378484.34375 5685979,378485.15625 5685979,378486.71875 5685979,378487.4375 5685980,378487.375 5685980.5,378488.5625 5685980.5,378489.25 5685981.5,378490.3125 5685983,378490.96875 5685984.5,378490.8125 5685986,378490.75 5685986.5,378490.71875 5685987,378491.09375 5685987,378491.34375 5685988.5,378491.25 5685990,378491.15625 5685990.5,378491.09375 5685991.5,378491.46875 5685991.5,378492.0625 5685993.5,378493.5 5685995,378494.125 5685997,378494.71875 5685999,378495.4375 5686000,378495.71875 5686001,378496.4375 5686002,378496.34375 5686002.5,378497.0625 5686003.5,378498.125 5686005,378498.8125 5686006,378499.53125 5686007,378499.5625 5686007,378500.1875 5686008,378500.90625 5686009,378501.25 5686009.5,378501.1875 5686010.5,378501.5625 5686010.5,378501.78125 5686012.5,378502.8125 5686014,378503.40625 5686016,378503.25 5686017.5,378503.21875 5686018,378503.1875 5686018.5,378502.96875 5686021,378503.9375 5686023,378504.5625 5686025,378505.1875 5686026.5,378505.46875 5686028,378505.375 5686028.5,378506.1875 5686028.5,378506.625 5686032.5,378507.53125 5686035,378507.75 5686037,378507.5625 5686039,378507.53125 5686039.5,378507.84375 5686040.5,378508.1875 5686041,378508.15625 5686041,378509.34375 5686041.5,378510.75 5686043,378512.21875 5686044.5,378512.96875 5686045,378513.28125 5686045.5,378513.6875 5686046,378514.40625 5686046,378514.8125 5686046.5,378515.5625 5686046.5,378516.6875 5686047.5,378517.5 5686047.5,378519.4375 5686047.5,378520.25 5686047.5,378520.625 5686047.5,378521.8125 5686048,378522.5625 5686048.5,378523.71875 5686048.5,378524.53125 5686048.5,378525.65625 5686049,378527.21875 5686049,378527.625 5686049,378528.75 5686049.5,378530.25 5686050.5,378532.21875 5686051,378533.375 5686051.5,378534.15625 5686051.5,378534.9375 5686051.5,378534.875 5686052.5,378536.03125 5686052.5,378537.1875 5686053,378539.09375 5686053.5,378539.78125 5686055,378540.875 5686055.5,378541.625 5686056,378542 5686056.5,378542.78125 5686056.5,378543.5625 5686056.5,378544.34375 5686057,378545.4375 5686057.5,378546.1875 5686058,378546.59375 5686058,378547.375 5686058.5,378548.15625 5686058.5,378549.34375 5686058.5,378550.125 5686058.5,378550.90625 5686058.5,378552.09375 5686059,378552.46875 5686059,378552.875 5686059,378553.25 5686059,378554.125 5686058,378554.9375 5686058,378555.34375 5686058,378556.125 5686058,378556.96875 5686057.5,378558.59375 5686057,378559 5686057,378559.78125 5686057,378560.5625 5686057.5,378561.40625 5686056.5,378561.8125 5686056.5,378562.59375 5686056.5,378563.375 5686057,378564.15625 5686057,378564.5625 5686057,378564.9375 5686057,378566.125 5686057,378566.90625 5686057,378567.3125 5686057,378568.09375 5686057,378568.8125 5686058,378569.96875 5686058,378569.84375 5686060,378570.5 5686061,378570.75 5686062.5,378570.59375 5686064,378570.4375 5686066,378571.15625 5686066.5,378571.40625 5686068.5,378571.25 5686070,378571.1875 5686070.5,378571.09375 5686071.5,378570.75 5686075,378570.53125 5686077.5,378570.34375 5686079.5,378570.21875 5686081,378570.125 5686081.5,378570.03125 5686083,378569.6875 5686086.5,378568.59375 5686089.5,378568.4375 5686091,378568.34375 5686092,378568.25 5686093,378568.21875 5686093.5,378568.15625 5686094,378567.96875 5686096,378566.59375 5686098,378566 5686100,378565.0625 5686101.5,378564.5625 5686102.5,378564.0625 5686103.5,378563.15625 5686105,378562.65625 5686106,378561.71875 5686107.5,378560.84375 5686108.5,378560.28125 5686110,378559.40625 5686111,378558.84375 5686112.5,378558.3125 5686114.5,378557.40625 5686115.5,378556.90625 5686116.5,378556.40625 5686117.5,378555.90625 5686119,378555.375 5686120,378555.3125 5686120.5,378554.46875 5686121.5,378554.375 5686122,378553.40625 5686124,378552.53125 5686125,378551.65625 5686126,378551.5 5686127.5,378551.03125 5686128,378550.96875 5686129,378550.84375 5686130,378550.8125 5686130.5,378550.03125 5686130.5,378549.78125 5686133,378548.40625 5686135,378547.8125 5686137,378547.625 5686139,378547.5 5686140,378547 5686141.5,378546.125 5686142.5,378546.0625 5686143,378545.6875 5686143,378545.03125 5686145.5,378544.0625 5686147.5,378543.875 5686149.5,378543.28125 5686151.5,378543.1875 5686152.5,378543.03125 5686154,378542.09375 5686155.5,378541.9375 5686157,378541.875 5686158,378541.75 5686159,378541.625 5686160.5,378541.59375 5686160.5,378541.40625 5686162.5,378540.46875 5686164,378540.375 5686165.5,378540.25 5686166.5,378539.90625 5686170,378538.875 5686172.5,378538.78125 5686173.5,378538.75 5686174,378538.5625 5686176,378537.28125 5686177,378536.78125 5686178,378536.6875 5686179,378536.5 5686181,378534.75 5686182.5,378533.84375 5686183.5,378533.75 5686185,378533.71875 5686185.5,378533.625 5686186,378532.84375 5686186,378531.84375 5686188.5,378530.4375 5686190.5,378530.34375 5686191.5,378530.28125 5686192,378529.8125 5686193,378529.75 5686193.5,378528.84375 5686194.5,378528.78125 5686195.5,378527.90625 5686196,378527.875 5686196.5,378527 5686197.5,378525.78125 5686197.5,378524.90625 5686198.5,378524.03125 5686199.5,378523.1875 5686200,378522.75 5686200.5,378522.28125 5686201,378522.25 5686201.5,378521.46875 5686201.5,378520.5625 5686202.5,378519.3125 5686203.5,378518.53125 5686203,378518.125 5686203,378516.84375 5686204,378515.15625 5686205.5,378514.28125 5686206,378513.46875 5686206.5,378513.0625 5686206,378512.625 5686207,378511.8125 5686207,378511.03125 5686207,378509.875 5686206.5,378509.46875 5686206.5,378508.6875 5686206.5,378507.90625 5686206.5,378506.71875 5686206.5,378505.9375 5686206.5,378504.375 5686206,378503.5625 5686206,378502.40625 5686206,378501.625 5686206,378500.03125 5686205.5,378499.65625 5686205.5,378498.46875 5686205.5,378497.6875 5686205.5,378496.90625 5686205.5,378495.71875 5686205.5,378495.34375 5686205,378494.15625 5686205,378493.375 5686205,378491.40625 5686205,378490.625 5686205,378489.84375 5686204.5,378489.4375 5686204.5,378488.65625 5686204.5,378487.875 5686204.5,378487.78125 5686205.5,378487.75 5686205.5,378486.46875 5686206.5,378486.4375 5686207,378486.15625 5686210,378487.1875 5686211.5,378487.40625 5686213.5,378487.59375 5686215.5,378487.5625 5686216,378487.5 5686217,378487.8125 5686217.5,378488.15625 5686218,378488.84375 5686219.5,378488.75 5686220,378489.46875 5686221,378489.4375 5686221.5,378489.28125 5686223,378489.1875 5686224,378489.09375 5686225,378489.0625 5686225.5,378489 5686226,378488.9375 5686226.5,378488.84375 5686227.5,378488.75 5686228.5,378487.90625 5686229,378487.875 5686229.5,378487.46875 5686229.5,378486.625 5686230,378484.625 5686230.5,378483.75 5686231,378482.53125 5686231.5,378481.75 5686231.5,378480.875 5686232,378480.5 5686232,378480.09375 5686232,378479.21875 5686233,378478.375 5686233.5,378476.75 5686234,378475.125 5686234,378473.875 5686235,378473.0625 5686235,378472.28125 5686235,378471.875 5686235,378471 5686236,378470.21875 5686235.5,378468.59375 5686236.5,378467 5686236,378465.78125 5686236.5,378465 5686236.5,378464.1875 5686236.5,378463.40625 5686236.5,378462.21875 5686236.5,378461.4375 5686236.5,378459.875 5686236,378457.90625 5686236,378457.125 5686236,378455.9375 5686236,378454.6875 5686236.5,378453.875 5686237,378452.6875 5686236.5,378451.90625 5686236.5,378450.71875 5686236.5,378449.9375 5686236.5,378448.75 5686236.5,378447.59375 5686236,378445.53125 5686237,378443.9375 5686237,378442.375 5686237,378441.5625 5686237,378440.78125 5686236.5,378440.40625 5686236.5,378439.625 5686236.5,378439.21875 5686236.5,378438.03125 5686236.5,378437.65625 5686236.5,378436.59375 5686235,378436.21875 5686234.5,378435.0625 5686234.5,378434.65625 5686234.5,378433.46875 5686234.5,378433.09375 5686234.5,378432 5686233.5,378431.59375 5686233.5,378430.5 5686232.5,378429.3125 5686232.5,378429 5686231.5,378428.59375 5686231.5,378427.9375 5686230,378427.1875 5686229.5,378425.65625 5686229,378424.59375 5686228,378423.84375 5686227.5,378423.875 5686227,378423.5625 5686226,378423.59375 5686226,378422.53125 5686224.5,378421.40625 5686223.5,378421.125 5686222.5,378420.4375 5686221.5,378420.15625 5686220.5,378419.46875 5686219,378418.75 5686218,378418.4375 5686217.5,378418.09375 5686217,378418.125 5686216.5,378416.9375 5686216.5,378415.90625 5686214.5,378414.5 5686213,378414.09375 5686213,378413.3125 5686213,378412.53125 5686213,378410.96875 5686212.5,378410.1875 5686212.5,378408.625 5686212.5,378407.8125 5686212.5,378407.03125 5686212,378405.875 5686212,378404.6875 5686212,378402.71875 5686212,378400.75 5686211.5,378399.5625 5686211.5,378398.78125 5686211.5,378398 5686211.5,378397.21875 5686211,378396.03125 5686211,378395.1875 5686212,378393.09375 5686213,378391.875 5686213,378391 5686214,378390.09375 5686215.5,378389.625 5686216,378389.15625 5686216.5,378388.6875 5686217.5,378388.65625 5686218,378388.59375 5686218.5,378387.28125 5686219.5,378386.8125 5686220.5,378386.34375 5686221,378386.25 5686222.5,378385.34375 5686223.5,378385.28125 5686224.5,378384.40625 5686225,378384.03125 5686225,378382.4375 5686225,378381.65625 5686224.5,378380.875 5686224.5,378380.09375 5686224.5,378378.53125 5686224.5,378376.15625 5686224,378374.96875 5686224,378373.40625 5686224,378372.625 5686224,378371.84375 5686223.5,378370.96875 5686224.5,378370.59375 5686224.5,378369.71875 5686225,378368.5 5686225.5,378366.84375 5686226.5,378365.5625 5686227,378364.71875 5686228,378363.84375 5686228.5,378363.4375 5686229,378363.375 5686229,378362.78125 5686230,378362.5 5686230.5,378361.65625 5686230.5,378360.6875 5686232.5,378359.40625 5686233.5,378358.90625 5686234.5,378358.34375 5686236.5,378357.53125 5686236.5,378357.5 5686237,378357 5686238,378356.96875 5686238.5,378356.875 5686239.5,378356.84375 5686239.5,378356.65625 5686241.5,378355.78125 5686242.5,378355.6875 5686243.5,378355.5625 5686244.5,378355.40625 5686246.5,378354.9375 5686247,378354.5625 5686247,378354.46875 5686248,378354.375 5686249,378353.90625 5686249.5,378352.9375 5686251.5,378352.4375 5686253,378352.34375 5686253.5,378352.28125 5686254.5,378351.875 5686254.5,378350.84375 5686257,378350.25 5686259,378350.15625 5686260,378350.0625 5686261,378349.6875 5686261,378349.0625 5686263,378347.6875 5686265,378347.125 5686267,378346.9375 5686269,378346.46875 5686269.5,378346.40625 5686270,378346.34375 5686271,378346.3125 5686271,378346.28125 5686271.5,378346.09375 5686273.5,378345.96875 5686275,378345.875 5686276,378345.75 5686277,378345.625 5686278.5,378345.5625 5686279,378345.5 5686280,378345.4375 5686280.5,378345.34375 5686281.5,378345.25 5686282,378345.15625 5686283.5,378345.46875 5686284.5,378345.78125 5686285,378345.65625 5686286.5,378346.46875 5686286.5,378347.125 5686287.5,378347.4375 5686288.5,378348.21875 5686288.5,378348.9375 5686289.5,378349.34375 5686289.5,378350.5 5686289.5,378350.90625 5686289.5,378352.0625 5686290,378352.84375 5686290,378354.75 5686291,378355.53125 5686291,378357.5 5686291,378358.28125 5686291,378359.09375 5686291,378359.875 5686291.5,378361.03125 5686291.5,378362.625 5686291.5,378363.40625 5686291.5,378364.1875 5686291.5,378365.25 5686293,378366.03125 5686293,378366.8125 5686293,378367.59375 5686293,378368.75 5686294,378369.53125 5686294,378370.71875 5686294,378371.5 5686294,378371.875 5686294,378373.0625 5686294,378373.84375 5686294.5,378375.03125 5686294.5,378375.4375 5686294.5,378376.65625 5686294,378377.03125 5686294,378378.21875 5686294.5,378378.59375 5686294.5,378379.78125 5686294.5,378380.5625 5686294.5,378381.34375 5686294.5,378382.53125 5686295,378383.28125 5686295,378384.03125 5686295.5,378385.90625 5686296.5,378386.6875 5686297,378387.5 5686297,378388.1875 5686297.5,378388.96875 5686298,378389.375 5686298,378390.0625 5686299,378390.8125 5686299.5,378391.0625 5686301,378391.03125 5686301,378391.625 5686303,378391.53125 5686304.5,378391.40625 5686305.5,378391.34375 5686306.5,378391.25 5686307,378390.40625 5686308,378389.15625 5686308.5,378388.71875 5686309,378387.9375 5686309,378386.75 5686308.5,378386.25 5686310,378384.21875 5686310.5,378383.3125 5686311.5,378382 5686313,378381.125 5686313.5,378380.28125 5686314.5,378379.8125 5686315,378379.71875 5686316,378378.875 5686316.5,378378.4375 5686317,378377.5625 5686317.5,378377.15625 5686318,378376.28125 5686319,378375.8125 5686319.5,378374.5 5686321,378372.8125 5686322,378371.875 5686323.5,378370.9375 5686325,378370.0625 5686325.5,378369.59375 5686326.5,378369.125 5686327,378369.09375 5686327.5,378368.28125 5686328,378367.40625 5686328.5,378366.1875 5686329,378365.40625 5686329,378363.0625 5686328.5,378361.5 5686328.5,378360.3125 5686328.5,378359.875 5686328.5,378359.09375 5686328.5,378358.3125 5686328.5,378357.53125 5686328.5,378356.75 5686328.5,378355.5625 5686328,378355.15625 5686328,378354.375 5686328,378353.59375 5686328,378353.21875 5686328,378352.40625 5686328,378351.625 5686328,378350.46875 5686327.5,378349.65625 5686327.5,378347.71875 5686327.5,378345.75 5686327,378344.875 5686328,378344.03125 5686328.5,378343.25 5686328.5,378342.84375 5686328.5,378341.65625 5686328.5,378340.875 5686328.5,378339.6875 5686328,378338.53125 5686328,378336.5625 5686328,378335 5686327.5,378334.21875 5686327.5,378333.40625 5686327.5,378332.625 5686327.5,378331.84375 5686327.5,378330.65625 5686327.5,378329.875 5686327,378328.28125 5686327.5,378327.5 5686327.5,378325.90625 5686327,378325.53125 5686327,378323.96875 5686327,378323.5625 5686327,378322 5686327,378321.21875 5686326.5,378319.625 5686326.5,378319.25 5686326.5,378318.40625 5686327,378317.625 5686326.5,378316.8125 5686327,378316.03125 5686327,378315.25 5686327,378314.46875 5686327,378312.875 5686326.5,378312.09375 5686326.5,378310.03125 5686327.5,378309.25 5686327.5,378308.4375 5686327.5,378307.625 5686327.5,378307.25 5686327.5,378306.40625 5686328,378304.84375 5686328,378304.0625 5686327.5,378303.65625 5686327.5,378302.375 5686329,378301.59375 5686328.5,378300.8125 5686328.5,378300.03125 5686328.5,378298.75 5686329,378297.15625 5686329.5,378296.375 5686329.5,378295.59375 5686329.5,378294.71875 5686330,378294.28125 5686330.5,378293.5 5686330.5,378292.71875 5686330,378291.53125 5686330,378290.375 5686330,378288.78125 5686330,378288 5686329.5,378287.1875 5686330,378285.96875 5686330.5,378284.40625 5686330,378283.625 5686330,378282.78125 5686330.5,378282.375 5686330.5,378281.96875 5686330.5,378281.5625 5686330.5,378280.71875 5686331.5,378280.3125 5686331.5,378279.5 5686331.5,378278.71875 5686331.5,378277.0625 5686332,378275.84375 5686332.5,378275.0625 5686332.5,378274.25 5686332.5,378274.15625 5686333.5,378273.375 5686333.5,378272.5625 5686333.5,378271 5686333.5,378270.96875 5686333.5,378270.46875 5686335.5,378268.40625 5686344,378266.78125 5686349.5,378264.75 5686356.5,378262.71875 5686362.5,378258.6875 5686369,378256.6875 5686372,378254.625 5686373,378254.53125 5686373,378254.46875 5686374,378254.40625 5686374.5,378253.0625 5686376,378252.1875 5686377,378251.65625 5686378.5,378251.15625 5686379.5,378250.25 5686380.5,378250.1875 5686381.5,378249.3125 5686382,378249.25 5686383,378249.15625 5686384,378249 5686385.5,378246.15625 5686386.5,378244.4375 5686387.5,378242.75 5686388.5,378241.875 5686389.5,378241.84375 5686390,378241.46875 5686390,378240.28125 5686389.5,378239.5 5686389.5,378238.3125 5686389.5,378237.8125 5686390.5,378237.40625 5686390.5,378236.15625 5686391,378235.375 5686391,378233.71875 5686392,378231.375 5686391.5,378230.1875 5686391.5,378229.40625 5686391.5,378228.25 5686391,378227.84375 5686391,378227.0625 5686391,378226.65625 5686391,378225.875 5686391,378225.8125 5686392,378225.40625 5686391.5,378223.75 5686392.5,378223.375 5686392.5,378221.65625 5686393.5,378220 5686394.5,378218.71875 5686395.5,378217.8125 5686396.5,378216.96875 5686397,378216.09375 5686398,378215.25 5686398.5,378215.1875 5686399,378215.0625 5686400.5,378212.1875 5686401.5,378210.8125 5686403.5,378208.75 5686404.5,378208.34375 5686404.5,378207.9375 5686404.5,378207.5 5686405,378206.71875 5686405,378206.3125 5686405,378205.9375 5686405,378205.53125 5686405,378204.8125 5686404,378204.46875 5686403.5,378203.75 5686402.5,378202.96875 5686402.5,378202.25 5686401.5,378201.46875 5686401.5,378200.0625 5686400,378199.3125 5686399.5,378198.90625 5686399.5,378198.125 5686399.5,378197.34375 5686399,378196.5625 5686399,378195.78125 5686399,378194.09375 5686400,378191.65625 5686400.5,378190.46875 5686400.5,378189.65625 5686401,378188.875 5686400.5,378188.46875 5686400.5,378187.6875 5686400.5,378186.90625 5686400.5,378185.71875 5686400.5,378184.53125 5686400.5,378182.59375 5686400,378181 5686400,378180.21875 5686400,378179.84375 5686400,378179.0625 5686399.5,378177.875 5686399.5,378177.71875 5686401,378174.90625 5686401.5,378173.21875 5686402.5,378171.59375 5686403,378170.4375 5686403,378169.5625 5686403.5,378169.1875 5686403.5,378168.375 5686403.5,378168.28125 5686404.5,378166.625 5686405,378165.71875 5686406.5,378165.65625 5686407,378165.59375 5686408,378165.5 5686408.5,378164.53125 5686410.5,378164.46875 5686411.5,378164.3125 5686413,378164.15625 5686414.5,378164.09375 5686415.5,378164 5686416,378164.6875 5686417.5,378164.59375 5686418,378165.40625 5686418,378166.09375 5686423.5,378168.46875 5686427.5,378169.03125 5686430,378169.1875 5686432.5,378169.5 5686433.5,378169.46875 5686433.5,378169.40625 5686434.5,378170.15625 5686435,378170.46875 5686436,378170.4375 5686436,378171.09375 5686437.5,378171.40625 5686438.5,378171.65625 5686440,378171.59375 5686440.5,378171.5 5686441.5,378172.625 5686442.5,378172.625 5686446.5,378172.4375 5686448.5,378172.375 5686449,378172.28125 5686450,378172.6875 5686450,378173.15625 5686453,378173.3125 5686456,378173.125 5686458,378172.96875 5686459.5,378172.84375 5686460.5,378172.78125 5686461.5,378172.65625 5686462.5,378172.59375 5686463.5,378172.40625 5686465.5,378172.28125 5686466.5,378172.15625 5686468,378172 5686470,378171.8125 5686471.5,378171.65625 5686473.5,378171.46875 5686475.5,378171.25 5686477.5,378171.15625 5686478.5,378171.09375 5686479,378170.6875 5686479,378169.8125 5686480.5,378169.34375 5686481,378169.21875 5686482,378168.75 5686483,378167.78125 5686485,378167.71875 5686485.5,378167.3125 5686485.5,378166.40625 5686486.5,378165.9375 5686487.5,378165.84375 5686488.5,378165 5686489,378164.21875 5686489,378163.28125 5686490.5,378161.625 5686491.5,378160.71875 5686492.5,378160.59375 5686493.5,378159.8125 5686493.5,378159.375 5686494,378156.9375 5686494.5,378155.65625 5686495.5,378154.40625 5686496,378154.03125 5686496,378153.625 5686496,378153.5625 5686497,378152.75 5686497,378152.71875 5686497,378152.28125 5686497.5,378151.09375 5686498,378150.28125 5686498,378149.03125 5686498.5,378148.25 5686498.5,378146.6875 5686498,378144.25 5686498.5,378140.3125 5686498.5,378138.75 5686498,378137.1875 5686498,378136.40625 5686498,378135.5625 5686498.5,378134.78125 5686498,378133.625 5686498,378132.4375 5686498,378130.09375 5686497.5,378128.90625 5686497.5,378127.71875 5686497.5,378126.53125 5686497.5,378125.375 5686497,378124.1875 5686497,378122.625 5686497,378121.4375 5686497,378119.78125 5686497.5,378118.625 5686497.5,378117.84375 5686497.5,378116.65625 5686497,378115.875 5686497,378115.09375 5686497,378114.28125 5686497,378112.34375 5686496.5,378111.53125 5686496.5,378110.75 5686496.5,378108.78125 5686496.5,378107.625 5686496,378106.0625 5686496,378104.875 5686496,378104.46875 5686496,378103.6875 5686496,378103.3125 5686496,378102.5 5686495.5,378101.71875 5686495.5,378100.125 5686496,378098.9375 5686495.5,378098.15625 5686495.5,378097.375 5686495.5,378096.15625 5686496,378094.96875 5686495.5,378092.625 5686495.5,378090.25 5686495.5,378089.09375 5686495,378087.90625 5686495,378087.125 5686495,378086.34375 5686495,378085.1875 5686494.5,378083.625 5686494,378082.84375 5686494,378082.0625 5686494,378081.3125 5686493.5,378080.53125 5686493.5,378078.15625 5686493,378077 5686493,378075.40625 5686493,378074.25 5686493,378073.4375 5686493,378072.65625 5686492.5,378072.28125 5686492.5,378071.09375 5686492.5,378070.3125 5686492.5,378068.3125 5686492.5,378066.75 5686492.5,378065.5625 5686492.5,378064.78125 5686492.5,378064 5686492,378063.25 5686491.5,378062.46875 5686491.5,378061.65625 5686491.5,378060.5625 5686490.5,378059.78125 5686490.5,378058.21875 5686490.5,378057.4375 5686490.5,378055.46875 5686490,378054.28125 5686490,378053.15625 5686489.5,378052.75 5686489.5,378051.59375 5686489,378051.21875 5686489,378049.65625 5686489,378048.9375 5686488,378048.625 5686487,378047.875 5686486.5,378047.1875 5686485.5,378046.125 5686484,378045.78125 5686483.5,378045.03125 5686483,378044.625 5686483,378043.53125 5686482,378042.03125 5686481,378041.28125 5686481,378041.3125 5686480.5,378040.53125 5686480.5,378039.75 5686480,378038.96875 5686480,378038.5625 5686480,378037 5686480,378036.21875 5686480,378034.65625 5686479.5,378033.4375 5686480,378032.59375 5686480.5,378032.1875 5686480.5,378031.3125 5686481.5,378030.9375 5686481.5,378029.65625 5686482,378028.875 5686482,378028.03125 5686482.5,378026.46875 5686482.5,378025.59375 5686483,378024.40625 5686483,378023.5625 5686483.5,378023.125 5686484,378022.3125 5686484.5,378021.90625 5686484.5,378021.0625 5686485,378019.84375 5686485.5,378019.4375 5686485.5,378018.53125 5686486.5,378017.3125 5686486.5,378016.5 5686487,378016.03125 5686488,378015.5625 5686488.5,378015.125 5686489,378013.8125 5686490.5,378013.34375 5686491,378013.28125 5686492,378013.1875 5686492.5,378012.8125 5686492.5,378012.03125 5686492.5,378011.125 5686493.5,378009.4375 5686494.5,378008.96875 5686495.5,378008.53125 5686495.5,378008.15625 5686495.5,378008.0625 5686496.5,378007.25 5686497,378006.46875 5686496.5,378005.3125 5686496,378004.9375 5686496,378004.53125 5686496,378003.34375 5686496,378002.5625 5686496,378001 5686496,378000.21875 5686495.5,377998.25 5686495.5,377996.6875 5686495.5,377995.53125 5686495,377994.78125 5686494.5,377994 5686494.5,377993.21875 5686494,377992.09375 5686493.5,377991.28125 5686493.5,377989.71875 5686493.5,377989.34375 5686493.5,377987.75 5686493,377987.375 5686493,377986.1875 5686493,377985.78125 5686493,377984.6875 5686492,377984.3125 5686492,377983.125 5686492,377982.34375 5686492,377981.5625 5686492,377980.78125 5686491.5,377979.96875 5686491.5,377980.0625 5686491,377979.3125 5686490.5,377978.90625 5686490.5,377979 5686489.5,377978.21875 5686489.5,377977.5625 5686488,377976.53125 5686486,377975.875 5686485,377975.625 5686483.5,377975.65625 5686483,377974.9375 5686482,377974.65625 5686481,377974.75 5686480,377974 5686479.5,377974.03125 5686479,377973.75 5686478,377973.9375 5686476,377972.84375 5686475,377972.59375 5686473.5,377972.75 5686472,377972.46875 5686470.5,377972.5625 5686469.5,377971.90625 5686468,377971.625 5686467,377971.3125 5686466,377971.40625 5686465,377971.5 5686464,377971.1875 5686463.5,377970.46875 5686462.5,377970.5 5686462,377969.71875 5686462,377969.15625 5686459.5,377967.34375 5686458,377966.71875 5686456,377966.03125 5686455,377965.71875 5686454,377965.40625 5686453,377965.03125 5686453,377964.6875 5686452.5,377963.96875 5686451.5,377963.625 5686451,377962.84375 5686451,377962.4375 5686451,377962.0625 5686451,377960.875 5686451,377960.15625 5686450,377959.78125 5686450,377958.96875 5686450,377958.625 5686449.5,377957.5 5686449,377957.09375 5686449,377955.90625 5686448.5,377955.125 5686448.5,377955.25 5686447.5,377954.46875 5686447.5,377953.78125 5686446,377953.0625 5686445,377952.75 5686444.5,377952.46875 5686443,377952.125 5686442.5,377952.1875 5686442,377951.53125 5686440.5,377951.5625 5686440.5,377950.53125 5686438.5,377949.8125 5686437.5,377949.5 5686437,377949.1875 5686436,377948.875 5686435.5,377948.9375 5686434.5,377948.3125 5686433,377947.1875 5686432,377946.59375 5686430,377946.375 5686428.5,377946.09375 5686427,377945.8125 5686426,377945.46875 5686425,377945.59375 5686424,377944.875 5686423,377944.96875 5686422,377945.03125 5686421.5,377945.0625 5686421,377944.28125 5686421,377944.375 5686420,377944.4375 5686419.5,377944.03125 5686419.5,377943.84375 5686417.5,377941.625 5686415.5,377940.96875 5686414,377941.0625 5686413,377940.75 5686412,377939.96875 5686412,377940 5686411.5,377939.4375 5686409.5,377939.1875 5686407.5,377939.34375 5686406,377938.28125 5686405,377937.90625 5686405,377937.96875 5686404,377936.0625 5686403,377935.40625 5686401.5,377933.875 5686401,377933.1875 5686400,377932.875 5686399,377932.15625 5686398,377932.21875 5686398,377931.15625 5686396.5,377930.40625 5686396,377929.3125 5686394.5,377928.3125 5686393,377927.625 5686392,377927.375 5686390,377926.6875 5686389.5,377926.75 5686388.5,377925.96875 5686388.5,377926 5686388,377926.03125 5686387.5,377925.3125 5686387,377924.96875 5686386.5,377925 5686386,377924.625 5686386,377923.90625 5686385,377923.28125 5686383.5,377922.5625 5686382.5,377921.9375 5686381,377921.6875 5686379.5,377920.96875 5686378.5,377920.6875 5686377,377920.40625 5686376,377920.15625 5686374.5,377919.53125 5686372.5,377919.28125 5686371,377919.03125 5686369.5,377919.1875 5686368,377919.375 5686366,377919.53125 5686364.5,377919.6875 5686363,377919.84375 5686361,377919.9375 5686360,377919.625 5686359,377919.40625 5686357,377919.5 5686356.5,377919.6875 5686354.5,377919.78125 5686353.5,377919.9375 5686351.5,377920.0625 5686350.5,377920.15625 5686349.5,377920.25 5686348.5,377920.28125 5686348,377920.125 5686345.5,377919.09375 5686344,377918.375 5686343,377918.4375 5686342.5,377918.0625 5686342.5,377917.53125 5686339.5,377916.96875 5686337,377917.15625 5686335,377913.75 5686333.5,377912.25 5686332.5,377911.1875 5686331.5,377910.46875 5686330.5,377910.09375 5686330,377909.71875 5686330,377908.9375 5686330,377909.03125 5686328.5,377907.5 5686328,377906.8125 5686327.5,377906.40625 5686327.5,377905.71875 5686326,377903.875 5686324.5,377902.8125 5686323.5,377902.09375 5686322.5,377901 5686321.5,377900.28125 5686320.5,377899.59375 5686320,377899.25 5686319,377898.5 5686318.5,377898.5625 5686318,377898.15625 5686318,377896.96875 5686318,377896.1875 5686318,377894.21875 5686317.5,377893.4375 5686317.5,377892.28125 5686317.5,377891.4375 5686318,377891.03125 5686318,377890.15625 5686319,377889.375 5686319,377887.8125 5686318.5,377887.375 5686319,377886.15625 5686319.5,377885.375 5686319,377885.25 5686320.5,377884.40625 5686321,377882.75 5686321.5,377881.5 5686322.5,377880.6875 5686322.5,377880.25 5686323,377879.375 5686323.5,377879 5686323.5,377877.65625 5686325,377876.40625 5686326,377875.5625 5686326.5,377875.46875 5686327.5,377875.09375 5686327.5,377874.96875 5686328.5,377874.15625 5686329,377872.65625 5686332,377871.71875 5686333.5,377871.21875 5686334.5,377871.125 5686335.5,377871.09375 5686336,377871 5686337,377870.09375 5686338,377870 5686339,377869.03125 5686341,377868.15625 5686341.5,377868.0625 5686343,377867.53125 5686344,377867.4375 5686345,377866.9375 5686346.5,377865.9375 5686348,377865.4375 5686349.5,377865.375 5686350,377865.34375 5686350.5,377865.3125 5686351,377864.5 5686351,377863.53125 5686352.5,377863.03125 5686354,377862.9375 5686355,377862.375 5686356.5,377862.21875 5686358,377861.71875 5686359.5,377860.8125 5686360.5,377860.75 5686361,377860.375 5686361,377859.65625 5686364.5,377858.625 5686367,377858.5 5686368,377858.40625 5686369.5,377858.34375 5686369.5,377858.3125 5686370,377858.25 5686371,377858.21875 5686371.5,377857.75 5686372,377857.6875 5686372.5,377856.8125 5686373.5,377856.53125 5686376.5,377856.5 5686376.5,377856.46875 5686377,377856.3125 5686378.5,377856.25 5686379.5,377856.09375 5686381,377856.03125 5686382,377855.875 5686383.5,377855.78125 5686384,377855.46875 5686387.5,377855.3125 5686389,377855.125 5686391,377854.9375 5686393,377854.8125 5686394.5,377854.34375 5686395,377853.46875 5686396,377853.03125 5686396.5,377852.125 5686397.5,377851.6875 5686398,377850.71875 5686400,377849.875 5686400.5,377849.34375 5686402,377849.25 5686403,377849.1875 5686403.5,377849.09375 5686404.5,377848.1875 5686405.5,377848.125 5686406.5,377847.90625 5686409,377847.75 5686410.5,377847.5625 5686412.5,377847.375 5686414.5,377847.3125 5686415,377847.21875 5686416,377847.15625 5686416.5,377847 5686418,377846.8125 5686420,377846.6875 5686421.5,377846.5625 5686423,377847.15625 5686425,377847.4375 5686426,377847.3125 5686427.5,377847.21875 5686428.5,377847.09375 5686429.5,377847.03125 5686430.5,377846.96875 5686431,377847.375 5686431,377847.15625 5686433.5,377847.78125 5686435,377847.71875 5686436,377847.625 5686436.5,377848.40625 5686436.5,377848.65625 5686438,377850.875 5686440,377851.96875 5686441,377852.28125 5686442,377853.0625 5686442,377853.40625 5686442.5,377854.53125 5686443,377856.03125 5686444,377857.21875 5686444.5,377857.96875 5686444.5,377858.625 5686446,377859.40625 5686446,377860.53125 5686447,377862.0625 5686447.5,377863.15625 5686448.5,377863.5 5686449,377864.3125 5686449,377864.6875 5686449,377865 5686450,377865.78125 5686450,377866.9375 5686450.5,377867.71875 5686450.5,377869.28125 5686450.5,377870.0625 5686450.5,377871.65625 5686451,377872.4375 5686451,377874.03125 5686450.5,377875.21875 5686451,377876 5686451,377876.875 5686450,377877.65625 5686450.5,377879.25 5686450,377880.84375 5686450,377881.625 5686450.5,377882.90625 5686449.5,377883.3125 5686449.5,377884.15625 5686448.5,377884.9375 5686448.5,377886.21875 5686447.5,377887.03125 5686447.5,377888.25 5686447.5,377888.625 5686447.5,377889.4375 5686447,377890.25 5686447,377891.09375 5686446.5,377892.28125 5686446.5,377894.25 5686447,377896.1875 5686447,377897.375 5686447,377898.15625 5686447,377899.34375 5686447.5,377900.125 5686447.5,377901.21875 5686448.5,377903.5625 5686449,377905.0625 5686450,377905.75 5686451,377906.53125 5686451,377907.34375 5686451,377908.03125 5686452,377908.78125 5686452.5,377909.90625 5686453,377910.6875 5686453.5,377912.5 5686455,377913.59375 5686456,377914.34375 5686456.5,377915.0625 5686457.5,377915.40625 5686457.5,377915.71875 5686458.5,377916.3125 5686460.5,377918.5625 5686462,377919.625 5686463.5,377920.3125 5686464.5,377921.03125 5686465.5,377921.375 5686466,377921.71875 5686466.5,377922.4375 5686467,377922.78125 5686467.5,377923.125 5686468.5,377924.59375 5686469.5,377925.71875 5686470.5,377926.03125 5686471,377926.75 5686472,377927.09375 5686472.5,377927.5 5686472.5,377928.1875 5686473.5,377928.5625 5686473.5,377929.21875 5686475,377930.75 5686475.5,377931.46875 5686476.5,377932.21875 5686477,377932.9375 5686478,377933.625 5686478.5,377934.34375 5686479.5,377934.65625 5686480.5,377935.375 5686481,377935.6875 5686482,377936.4375 5686482.5,377936.40625 5686483,377937.125 5686483.5,377937.46875 5686484,377938.1875 5686485,377938.09375 5686486,377938.46875 5686486.5,377939.53125 5686487.5,377940.28125 5686488,377940.25 5686488.5,377940.5625 5686489.5,377941.28125 5686490,377941.59375 5686491,377941.875 5686492,377942.96875 5686493,377943.6875 5686494,377944.34375 5686495,377945.09375 5686495.5,377945.03125 5686496.5,377945.40625 5686496.5,377946.09375 5686498,377947.59375 5686498.5,377948.21875 5686500.5,377949.71875 5686501.5,377950.03125 5686502,377950.75 5686503,377951.0625 5686504,377951.4375 5686504.5,377952.21875 5686504.5,377952.125 5686505,377952.53125 5686505,377953.71875 5686505.5,377954.6875 5686507.5,377956.53125 5686509,377957.25 5686509.5,377957.5625 5686510.5,377957.96875 5686510.5,377957.90625 5686511.5,377958.625 5686512,377959.75 5686512.5,377960.125 5686512.5,377960.8125 5686514,377961.15625 5686514.5,377960.9375 5686517,377960.78125 5686518.5,377960.59375 5686520.5,377960.4375 5686522,377960.3125 5686523.5,377960.1875 5686524.5,377960.09375 5686526,377959.96875 5686527,377959 5686529,377958.90625 5686529.5,377958.8125 5686531,377958.71875 5686531.5,377958.625 5686533,377958.59375 5686533,377957.5625 5686535.5,377957 5686537.5,377956.90625 5686538,377956.4375 5686539,377956.34375 5686540,377955.5 5686540.5,377954.21875 5686541.5,377953.40625 5686542,377952.53125 5686542.5,377952.125 5686543,377951.21875 5686544,377950 5686544.5,377949.125 5686545,377948.71875 5686545.5,377948.3125 5686545.5,377947.90625 5686545,377947.0625 5686546,377946.625 5686546.5,377945.40625 5686546.5,377944.25 5686546.5,377943.0625 5686546.5,377941.875 5686546,377941.40625 5686547,377940.59375 5686547.5,377939.40625 5686547,377938.625 5686547,377937.4375 5686547,377936.65625 5686547,377935.09375 5686546.5,377933.90625 5686546.5,377933.125 5686546.5,377932.34375 5686546.5,377931.5625 5686546.5,377930.375 5686546,377929.59375 5686546,377928.0625 5686545.5,377926.90625 5686545,377926.125 5686545,377925.34375 5686545,377924.53125 5686545.5,377922.09375 5686546,377921.28125 5686546,377920.40625 5686547,377919.625 5686546.5,377919.21875 5686546.5,377918.40625 5686547,377917.5 5686548,377917.40625 5686549.5,377916.4375 5686550,377916.40625 5686552.5,377915.59375 5686558,377914.71875 5686565.5,377914.6875 5686571,377914.65625 5686574,377914.625 5686576.5,377914.1875 5686581.5,377914.15625 5686585.5,377914.125 5686589.5,377914.09375 5686593,377914.8125 5686600.5,377915.53125 5686607,377916.6875 5686610.5,377917.84375 5686614,377920.15625 5686616,377920.09375 5686616.5,377920.375 5686618,377920.3125 5686618.5,377920.125 5686620.5,377920 5686622,377919.875 5686623.5,377919.71875 5686625,377919.6875 5686625.5,377919.59375 5686626,377918.75 5686627,377918.6875 5686627.5,377918.625 5686628,377918.1875 5686628.5,377918.15625 5686629,377918.125 5686629,377917.9375 5686631,377917.78125 5686633,377917.625 5686634.5,377918.28125 5686636,377918.59375 5686637,377918.5 5686637.5,377918.46875 5686638,377920.4375 5686638,377921.125 5686639.5,377921.90625 5686639.5,377922.6875 5686639.5,377923.0625 5686639.5,377923.40625 5686640.5,377924.15625 5686641,377925.3125 5686641,377926.09375 5686641,377927.28125 5686641.5,377928.0625 5686641.5,377929.625 5686641.5,377930.4375 5686641.5,377931.125 5686642.5,377931.5 5686643,377931.84375 5686643.5,377932.625 5686643.5,377934.09375 5686645,377935.21875 5686645.5,377936.375 5686646,377936.6875 5686646.5,377937 5686647.5,377937.75 5686648,377938.4375 5686649,377939.125 5686650,377939.84375 5686651,377940.15625 5686651.5,377940.5 5686652.5,377941.15625 5686654,377941.46875 5686654.5,377941.75 5686656,377942.03125 5686657,377942.71875 5686658.5,377943.03125 5686659,377942.90625 5686660.5,377943.59375 5686661.5,377943.90625 5686662.5,377944.1875 5686663.5,377944.4375 5686665.5,377944.71875 5686666.5,377945.03125 5686667.5,377945.28125 5686669,377945.5625 5686670,377945.84375 5686671.5,377945.71875 5686672.5,377945.65625 5686673.5,377946.3125 5686674.5,377947 5686676,377946.90625 5686676.5,377946.8125 5686678,377946.71875 5686678.5,377946.53125 5686680.5,377946.4375 5686682,377946.3125 5686683,377946.21875 5686684,377946.09375 5686685.5,377946.0625 5686685.5,377945.9375 5686687,377945.875 5686687.5,377945.71875 5686689.5,377945.65625 5686690,377944.84375 5686690,377944.46875 5686690,377943.59375 5686690.5,377942.375 5686691,377941.59375 5686691,377940.8125 5686691,377940.03125 5686690.5,377938.84375 5686690.5,377938.46875 5686690.5,377937.28125 5686690.5,377936.5 5686690.5,377934.9375 5686690,377933.75 5686690,377932.96875 5686690,377932.5625 5686690,377931.78125 5686690,377931.46875 5686689,377930.3125 5686688.5,377929.53125 5686688.5,377929.15625 5686688.5,377927.96875 5686688.5,377927.5625 5686688,377926.78125 5686688,377926 5686688,377923.9375 5686689,377922.6875 5686689.5,377921.46875 5686690,377921 5686690.5,377920.59375 5686690.5,377919.4375 5686690.5,377918.21875 5686691,377916.625 5686690.5,377916.25 5686690.5,377915.84375 5686690.5,377915.46875 5686690.5,377914.28125 5686690.5,377913.875 5686690.5,377913.09375 5686690.5,377912.71875 5686690.5,377911.96875 5686690,377911.5625 5686690,377910.40625 5686689.5,377910 5686689.5,377909.25 5686689,377908.84375 5686689,377908.0625 5686689,377907.28125 5686689,377906.09375 5686689,377905.71875 5686689,377904.8125 5686690,377903.21875 5686690,377901.96875 5686691,377901.5625 5686691,377900.28125 5686692,377898.25 5686692.5,377897.375 5686693,377896.5 5686694,377896.125 5686694,377895.96875 5686695.5,377893.5 5686696.5,377892.1875 5686698,377891.3125 5686698.5,377890.875 5686699,377890.8125 5686699.5,377890.75 5686700.5,377890.6875 5686701,377889.90625 5686700.5,377889.84375 5686701.5,377889.375 5686702,377889.09375 5686705,377888.21875 5686706,377888.125 5686707,377888.03125 5686708,377887.9375 5686709,377887.875 5686709.5,377887.75 5686711,377887.6875 5686711.5,377887.5625 5686713,377887.5 5686713.5,377887.4375 5686714.5,377887.96875 5686717,377888.21875 5686717.5),(378145.21875 5686513.5,378145.125 5686514.5,378145.4375 5686515.5,378146.34375 5686518.5,378147.03125 5686519.5,378147.6875 5686521,378147.59375 5686522,378147.90625 5686523,378147.875 5686523.5,378147.75 5686524.5,378148.5 5686525,378149.125 5686526.5,378149.84375 5686527.5,378150.15625 5686528.5,378150.90625 5686529,378151.21875 5686529.5,378151.53125 5686530.5,378151.75 5686532.5,378152.8125 5686534,378153.5 5686535,378154.125 5686536.5,378154.4375 5686537.5,378154.375 5686538.5,378155.0625 5686539,378154.9375 5686540.5,378155.625 5686541.5,378155.5 5686543,378155.40625 5686544,378155.8125 5686544,378156 5686546,378156.65625 5686547.5,378156.5625 5686548.5,378156.53125 5686549,378156.3125 5686551,378156.9375 5686553,378156.90625 5686553.5,378156.84375 5686554,378157.625 5686554,378157.8125 5686556,378157.71875 5686557.5,378158.4375 5686558,378158.375 5686558.5,378159.15625 5686558.5,378159.8125 5686560.5,378160.09375 5686561.5,378160 5686562.5,378161.15625 5686563,378160.96875 5686565,378160.8125 5686566.5,378160.71875 5686567.5,378160.59375 5686568.5,378159.59375 5686571,378159.40625 5686573,378159.25 5686574.5,378157.96875 5686575.5,378157.4375 5686577,378157.375 5686577.5,378157.3125 5686578.5,378157.21875 5686579,378156.84375 5686579,378156.375 5686580,378156.28125 5686580.5,378156.21875 5686581.5,378156.1875 5686582,378155.3125 5686582.5,378155.28125 5686583,378155.21875 5686583.5,378155.125 5686584.5,378155.03125 5686585.5,378154.9375 5686586.5,378154.84375 5686587.5,378154.75 5686588.5,378154.6875 5686589,378154.65625 5686589.5,378154.53125 5686591,378154.5 5686591,378154.40625 5686592,378153.59375 5686592.5,378153.40625 5686594,378152.125 5686595.5,378152 5686596.5,378151.9375 5686597.5,378151.84375 5686598,378151.375 5686599,378151.28125 5686600,378151.1875 5686601,378150.59375 5686603,378150.09375 5686604,378150 5686605,378149.9375 5686606,378149.84375 5686606.5,378149.03125 5686607,378148.09375 5686608.5,378147.625 5686609,378147.5625 5686610,378147.46875 5686610.5,378147.46875 5686611,378147.40625 5686611.5,378146.9375 5686612.5,378146.15625 5686612,378146.125 5686612.5,378145.25 5686613.5,378144.6875 5686615,378144.5625 5686616.5,378143.78125 5686616.5,378142.40625 5686618,378141.875 5686619.5,378141.84375 5686620,378139.84375 5686620.5,378139.3125 5686621.5,378139.25 5686622,378139.1875 5686623,378136.78125 5686623,378135.90625 5686624,378135.875 5686624.5,378135.09375 5686624,378133.8125 5686625,378132.96875 5686625.5,378132.5625 5686626,378132.5 5686626.5,378132.28125 5686628.5,378131.34375 5686630,378131.28125 5686631,378131.15625 5686632,378131.09375 5686633,378131.0625 5686633.5,378130.90625 5686635,378129.96875 5686636.5,378129.9375 5686637,378129.84375 5686637.5,378129.78125 5686638.5,378129.75 5686638.5,378129.65625 5686639.5,378129.5625 5686640.5,378129.46875 5686641.5,378129.40625 5686642.5,378130.125 5686643,378130.09375 5686643.5,378130 5686644.5,378130.78125 5686644.5,378130.96875 5686647,378130.8125 5686648.5,378130.6875 5686649.5,378130.59375 5686650.5,378130.4375 5686652.5,378130.3125 5686653.5,378130.25 5686654.5,378130.03125 5686656.5,378130 5686657,378129.90625 5686658,378129.875 5686658,378129.75 5686659.5,378128.15625 5686659.5,378127.25 5686660.5,378126.78125 5686661.5,378126.75 5686662,378126.3125 5686662,378125.5 5686662.5,378125.09375 5686662.5,378124.3125 5686662.5,378123.46875 5686663,378123.375 5686664,378122.59375 5686664,378120.53125 5686665,378119.65625 5686665.5,378118.875 5686665.5,378118.40625 5686666,378116.75 5686667,378116.34375 5686667,378115.15625 5686667,378114.375 5686667,378113.46875 5686668,378112.28125 5686668,378111.5 5686668,378109.875 5686668.5,378108.65625 5686669,378107.46875 5686668.5,378107.0625 5686668.5,378106.6875 5686668.5,378105.90625 5686668.5,378105.03125 5686669,378103.875 5686669,378101.90625 5686669,378100.71875 5686669,378099.9375 5686668.5,378099.15625 5686668.5,378098.75 5686668.5,378097.96875 5686668.5,378096.40625 5686668.5,378094.5 5686667.5,378093.34375 5686667,378092.9375 5686667,378092.15625 5686667,378091.375 5686667,378090.65625 5686666,378089.90625 5686665.5,378088.34375 5686665.5,378087.5625 5686665.5,378087.15625 5686665.5,378086.375 5686665.5,378085.1875 5686665,378084.40625 5686665,378083.21875 5686665,378082.84375 5686665,378082.0625 5686665,378081.28125 5686665,378080.46875 5686664.5,378079.3125 5686664.5,378077.34375 5686664.5,378075.78125 5686664.5,378074.59375 5686664,378074.1875 5686664,378073.8125 5686664,378073.03125 5686664,378071.84375 5686664,378069.875 5686663.5,378069.09375 5686663.5,378067.125 5686663.5,378065.90625 5686663.5,378065.125 5686663.5,378064.34375 5686663.5,378075.375 5686660.5,378075.40625 5686660,378076.1875 5686660,378076.6875 5686659,378077.15625 5686658,378077.28125 5686657,378078.125 5686656,378078.90625 5686656,378079.03125 5686655,378080.71875 5686654,378081.5 5686654,378081.59375 5686653,378081.65625 5686652.5,378082.15625 5686651.5,378082.1875 5686651,378083.4375 5686650.5,378083.875 5686650,378084.34375 5686649,378085.5625 5686649,378085.96875 5686648.5,378086.40625 5686648.5,378087.3125 5686647,378088.5625 5686646.5,378089.4375 5686646,378089.9375 5686644.5,378091.1875 5686644,378091.65625 5686643,378092.125 5686642.5,378092.15625 5686642,378092.21875 5686641.5,378092.625 5686641.5,378093.59375 5686639.5,378093.71875 5686638.5,378093.78125 5686637.5,378093.90625 5686636.5,378093.96875 5686635.5,378094 5686635,378094.09375 5686634.5,378094.15625 5686633.5,378093.5625 5686631.5,378093.25 5686630.5,378093.3125 5686630,378093.34375 5686629.5,378093.5 5686628,378092.75 5686627.5,378092.5 5686626,378092.5625 5686625.5,378092.65625 5686624.5,378092.6875 5686624,378092.84375 5686622.5,378092.9375 5686621.5,378093.4375 5686620.5,378093.5 5686619.5,378094.78125 5686618.5,378094.875 5686617.5,378094.96875 5686616.5,378095.0625 5686616,378095.90625 5686615,378095.96875 5686614.5,378096.4375 5686614,378098.0625 5686613.5,378098.96875 5686612,378099.4375 5686611.5,378099.46875 5686611,378099.53125 5686610,378099.65625 5686609,378100.125 5686608.5,378100.28125 5686606.5,378100.34375 5686606,378100.53125 5686604,378100.625 5686603,378100.6875 5686602.5,378100.8125 5686601,378100.90625 5686600,378101.40625 5686599,378102.34375 5686597.5,378102.46875 5686596,378102.53125 5686595.5,378103 5686594.5,378103.40625 5686594.5,378103.5 5686593.5,378104.75 5686593,378105.6875 5686591.5,378106.96875 5686590.5,378107.40625 5686590,378107.84375 5686589.5,378108.75 5686588.5,378109.40625 5686588.5,378109.96875 5686588.5,378110.78125 5686588,378110.875 5686587,378111.65625 5686587,378111.6875 5686587,378111.71875 5686586.5,378112.59375 5686585.5,378112.71875 5686584,378112.8125 5686583.5,378113.75 5686582,378113.84375 5686580.5,378114 5686579,378114.09375 5686578.5,378114.1875 5686577,378114.28125 5686576.5,378114.34375 5686575.5,378114.03125 5686575,378114.125 5686573.5,378114.21875 5686573,378114.28125 5686572,378113.5625 5686571,378113.28125 5686570,378113.34375 5686569.5,378113.5625 5686567,378113.65625 5686566,378113.84375 5686564,378113.25 5686562,378112.96875 5686560.5,378113.125 5686559,378113.21875 5686558.5,378113.28125 5686557.5,378113.3125 5686557,378112.96875 5686557,378113.03125 5686556,378113.0625 5686555.5,378111.90625 5686555.5,378110.3125 5686555.5,378108.3125 5686555.5,378107.53125 5686555.5,378107.15625 5686555.5,378106.71875 5686555.5,378105.90625 5686556,378105.09375 5686556,378104.3125 5686556,378103.53125 5686556,378102.75 5686555.5,378101.5625 5686555.5,378100.40625 5686555.5,378100.03125 5686555,378099.3125 5686554,378098.59375 5686553.5,378096.625 5686553.5,378095.125 5686552.5,378094.34375 5686552.5,378093.15625 5686552.5,378092.8125 5686552,378091.65625 5686551.5,378091.28125 5686551.5,378089.6875 5686551,378088.53125 5686551,378086.5625 5686551,378084.625 5686550.5,378083.4375 5686550,378083.0625 5686550,378082.65625 5686550,378082.28125 5686550,378081.5 5686550,378081.09375 5686550,378080 5686549,378078.8125 5686549,378078.21875 5686547,378077.125 5686546,378076 5686545,378075.65625 5686544.5,378074.875 5686544.5,378074.15625 5686543.5,378073.375 5686543.5,378071.53125 5686542,378069.71875 5686540.5,378068.6875 5686539,378067.65625 5686537,378066.96875 5686536,378066.3125 5686534.5,378066 5686533.5,378065.3125 5686532.5,378065 5686531.5,378065.0625 5686531,378064.34375 5686530,378064.4375 5686529,378063.71875 5686528.5,378063.75 5686528,378063.90625 5686526.5,378063.96875 5686525.5,378063.3125 5686524.5,378063.375 5686523.5,378063.46875 5686523,378063.5 5686522.5,378063.65625 5686521,378063.75 5686519.5,378063.84375 5686519,378064.625 5686519,378065.90625 5686518,378067.90625 5686517.5,378069.125 5686517.5,378070 5686516.5,378070.8125 5686516.5,378072.0625 5686515.5,378072.9375 5686515,378073.78125 5686514.5,378074.6875 5686513,378075.53125 5686512.5,378076.34375 5686512.5,378076.40625 5686511.5,378076.4375 5686511.5,378077.625 5686511.5,378078.875 5686511,378080.875 5686510.5,378081.65625 5686510.5,378082.4375 5686511,378083.21875 5686511,378083.625 5686511,378084.8125 5686511,378085.59375 5686511,378087.21875 5686510.5,378089.1875 5686510.5,378090.0625 5686510,378090.84375 5686510,378092.0625 5686510,378092.21875 5686510,378095.40625 5686512,378099.71875 5686514.5,378103.28125 5686515.5,378108 5686517.5,378113.125 5686518,378117.46875 5686519,378121.8125 5686519,378126.5625 5686519,378131.3125 5686519,378135.25 5686518.5,378138.4375 5686517.5,378143.1875 5686515,378145.21875 5686513.5),(378774.4375 5685824.5,378776.46875 5685827,378781.53125 5685834,378783.875 5685837.5,378787 5685842,378790.90625 5685846.5,378796.40625 5685850,378798.6875 5685851,378798.625 5685851.5,378798.5625 5685852,378798.4375 5685853,378798.34375 5685854.5,378799.34375 5685856,378799.28125 5685857,378798.875 5685861,378798.65625 5685863.5,378798.375 5685866.5,378798.125 5685869,378798 5685870.5,378797.46875 5685872,378797 5685872.5,378796.875 5685873.5,378796.8125 5685874.5,378796.78125 5685875,378796 5685875,378794.9375 5685877.5,378790.625 5685881,378789.15625 5685884,378787.6875 5685887,378786.40625 5685888,378785.09375 5685889,378783.8125 5685890.5,378782.53125 5685891.5,378780.875 5685892,378780.03125 5685892.5,378778.75 5685893.5,378777.90625 5685894,378776.65625 5685894.5,378775.4375 5685895,378774.1875 5685895.5,378773.34375 5685896,378772.53125 5685896.5,378771.3125 5685896.5,378770.53125 5685896.5,378769.75 5685896.5,378768.53125 5685896.5,378766.875 5685897.5,378765.65625 5685897.5,378764.46875 5685898,378763.625 5685898,378762.375 5685899,378761.5625 5685899,378760.6875 5685900,378759.84375 5685900.5,378758.625 5685901,378757.71875 5685902,378756.4375 5685903,378755.09375 5685904.5,378753.375 5685906,378752.4375 5685907.5,378751.5625 5685908.5,378750.65625 5685909.5,378749.78125 5685910.5,378748.96875 5685910.5,378748.15625 5685911,378747.28125 5685911.5,378746.0625 5685912,378744.78125 5685913,378742.78125 5685913,378741.5 5685914,378740.1875 5685915.5,378739.375 5685915.5,378739.3125 5685916.5,378738.46875 5685916.5,378738.4375 5685917,378737.625 5685917.5,378736.6875 5685919,378735.4375 5685919.5,378734.53125 5685920.5,378732.8125 5685922,378731.90625 5685923,378731 5685924.5,378730.15625 5685925,378729.28125 5685925.5,378728.4375 5685926.5,378727.5625 5685927,378726.71875 5685928,378725.84375 5685928.5,378724.59375 5685929,378723.75 5685930,378722.90625 5685930,378722.0625 5685931,378721.1875 5685931.5,378720.34375 5685932.5,378719.46875 5685933,378718.21875 5685933.5,378717.375 5685934.5,378716.90625 5685935,378716.03125 5685936,378715.21875 5685936,378714.78125 5685936.5,378713.90625 5685937.5,378713.4375 5685938,378712.9375 5685939,378712.125 5685939.5,378711.65625 5685940,378711.53125 5685941.5,378710.65625 5685942.5,378709.34375 5685943.5,378708.875 5685944.5,378708.40625 5685945,378707.5625 5685946,378707.09375 5685946.5,378705.78125 5685948,378704.5625 5685948,378703.65625 5685949.5,378703.15625 5685950.5,378702.25 5685951.5,378701.34375 5685952.5,378700.84375 5685954,378699.90625 5685955.5,378698.96875 5685957,378698.4375 5685958.5,378697.53125 5685959.5,378697 5685961,378696.5 5685962,378696.03125 5685963,378695.5625 5685963.5,378695.53125 5685964,378695.125 5685964,378694.125 5685966.5,378692.75 5685968,378692.21875 5685969.5,378692.0625 5685971,378692.03125 5685971.5,378691.96875 5685972,378691.875 5685973,378690.96875 5685974.5,378690.71875 5685977,378689.375 5685978.5,378688.53125 5685979,378688 5685980.5,378687.625 5685980.5,378687.5 5685981.5,378686.6875 5685982,378684.53125 5685983.5,378682.875 5685984,378681.5625 5685985.5,378680.65625 5685987,378680.1875 5685987.5,378680.15625 5685988,378659.96875 5685975,378660 5685974.5,378660.0625 5685974,378660.15625 5685973,378660.25 5685972,378660.3125 5685971.5,378659.65625 5685970,378659.34375 5685969,378659.40625 5685968.5,378659.5 5685967.5,378659.5625 5685966.5,378659.1875 5685966.5,378658.875 5685966,378658.90625 5685965.5,378658.21875 5685964,378658.3125 5685963.5,378657.28125 5685961.5,378656.96875 5685961,378657.0625 5685959.5,378657.15625 5685959,378656.875 5685957.5,378656.53125 5685957,378655.90625 5685955,378655.1875 5685954.5,378655.28125 5685953.5,378655.3125 5685953,378655.03125 5685952,378654.6875 5685951.5,378654.03125 5685950,378653.71875 5685949,378653.78125 5685948.5,378653.90625 5685947,378653.9375 5685946.5,378653.96875 5685946.5,378653.6875 5685945,378653.75 5685944.5,378653.09375 5685943,378653.1875 5685942.5,378652.65625 5685939.5,378652.03125 5685938,378652.125 5685936.5,378652.25 5685935.5,378652.3125 5685934.5,378652.40625 5685934,378652.4375 5685933.5,378652.125 5685932.5,378652.25 5685931,378651.9375 5685930,378651.65625 5685929,378651.75 5685928,378651.875 5685926.5,378651.1875 5685926,378651.3125 5685924,378651.4375 5685923,378651.5625 5685922,378651.28125 5685920.5,378651.4375 5685919,378651.5 5685918,378651.53125 5685918,378651.59375 5685917,378650.9375 5685916,378650.96875 5685915.5,378651.0625 5685914.5,378651.09375 5685914,378651.15625 5685913.5,378651.1875 5685913,378651.375 5685911,378652.25 5685910.5,378652.40625 5685909,378653.28125 5685907.5,378653.8125 5685906.5,378654.65625 5685906,378655.09375 5685905.5,378655.5625 5685904.5,378656.375 5685904.5,378657.15625 5685904.5,378658.84375 5685903.5,378660.46875 5685903.5,378661.34375 5685902,378662.21875 5685901.5,378663.46875 5685901,378664.71875 5685900,378665.96875 5685899.5,378666.84375 5685898.5,378668.0625 5685898.5,378668.90625 5685898,378669.8125 5685896.5,378671.0625 5685896,378671.96875 5685895,378673.21875 5685894,378674.46875 5685893.5,378675.3125 5685893,378676.53125 5685892.5,378677.375 5685892,378678.21875 5685891.5,378679.0625 5685891,378679.875 5685891,378680.6875 5685890.5,378681.96875 5685889.5,378683.625 5685889,378684.5 5685888,378685.34375 5685887.5,378686.59375 5685887,378687.46875 5685886,378688.71875 5685885.5,378689.96875 5685885,378690.78125 5685884.5,378692 5685884,378693.3125 5685883,378694.9375 5685882.5,378696.625 5685881.5,378697.875 5685881,378699.5625 5685880,378701.25 5685879,378702.5 5685878,378703.78125 5685877,378705.4375 5685876.5,378706.28125 5685875.5,378707.1875 5685874.5,378708.0625 5685874,378708.90625 5685873,378709.375 5685872.5,378710.21875 5685872,378710.625 5685872,378711.53125 5685870.5,378712.34375 5685870.5,378713.65625 5685869.5,378714.90625 5685868.5,378715.34375 5685868.5,378715.8125 5685867.5,378717.09375 5685866.5,378717.9375 5685866,378720.0625 5685864.5,378722.53125 5685863.5,378723.40625 5685862.5,378724.25 5685862,378724.6875 5685861.5,378725.53125 5685861,378726 5685860,378727.25 5685859.5,378729.03125 5685857.5,378731.0625 5685857,378732.34375 5685856,378733.25 5685855,378734.09375 5685854.5,378734.5625 5685853.5,378735 5685853,378735.84375 5685853,378736.71875 5685852,378738.34375 5685851.5,378739.1875 5685851,378740.5 5685850,378741.34375 5685849,378742.21875 5685848.5,378743.46875 5685847.5,378744.3125 5685847,378744.78125 5685846,378745.65625 5685845.5,378746.5 5685845,378746.96875 5685844,378747.4375 5685843.5,378747.53125 5685842.5,378748.40625 5685841.5,378748.5 5685840.5,378748.625 5685839,378749.15625 5685838,378749.28125 5685836.5,378749.40625 5685835,378749.5625 5685833.5,378749.71875 5685832,378750.21875 5685831,378750.375 5685829.5,378751.21875 5685828.5,378751.34375 5685827.5,378751.375 5685827,378751.40625 5685826.5,378752.59375 5685826.5,378753.90625 5685825.5,378756.34375 5685824.5,378757.5625 5685824.5,378758.78125 5685824,378759.96875 5685824.5,378760.75 5685824.5,378762.78125 5685824,378765.5625 5685823.5,378767.125 5685824,378768.71875 5685824,378770.28125 5685824,378771.46875 5685824.5,378772.25 5685824.5,378773.03125 5685824.5,378774.21875 5685824.5,378774.4375 5685824.5)) - - - - POLYGON((377787.21236766 5686430.83570257,377787.091569461 5686434.83708883,377787.737693002 5686438.88795447,377787.864087559 5686442.68909533,377788.459649403 5686444.80578393,377788.880197144 5686448.70852724,377792.362122552 5686459.86695051,377797.94149236 5686470.13850574,377798.930849234 5686471.33060785,377799.58710372 5686472.52852275,377804.899910503 5686478.52288668,377805.406547456 5686479.13334686,377805.529915074 5686479.23371183,377805.644567469 5686479.36307249,377807.392061045 5686481.81156509,377816.741061307 5686490.34144172,377819.268024607 5686491.8162556,377819.445913559 5686491.96408342,377821.252932048 5686492.97470892,377821.845793585 5686493.32072123,377822.749238227 5686493.92301766,377822.749238226 5686493.92301766,377823.285211318 5686494.21114939,377825.784078899 5686496.21427985,377828.942060624 5686497.86905437,377829.459811307 5686498.34144172,377829.814097052 5686498.54821383,377830.563106926 5686499.15138158,377833.445420292 5686500.66756629,377840.389980754 5686504.72062639,377852.415040396 5686508.66531166,377853.163293988 5686508.74466712,377854.777839837 5686509.25493736,377860.602216238 5686509.85131204,377862.571299679 5686510.30820919,377870.722679781 5686510.92891152,377865.18357042 5686518.6232882,377864.473453212 5686520.3059776,377860.565589664 5686528.1292516,377857.549254266 5686538.50328245,377856.91908596 5686544.62059585,377856.237925827 5686549.23152597,377855.997961655 5686551.04715803,377855.122961655 5686558.54715803,377854.719718468 5686565.15909641,377854.689275479 5686570.51706246,377854.660155864 5686573.31254549,377854.65773972 5686573.50583704,377854.41587695 5686576.26998298,377854.189330971 5686581.0312643,377854.127092524 5686588.99778552,377854.096141439 5686592.46430707,377854.367387449 5686598.72377641,377855.086137449 5686606.22377641,377855.17598771 5686607.09442203,377855.89473771 5686613.59442203,377858.280137917 5686624.53884835,377858.199446436 5686625.39955748,377858.119771519 5686626.32673996,377858.023869995 5686627.55427948,377857.947895467 5686628.28363494,377857.764790992 5686638.5933333,377859.05375186 5686646.88004093,377856.001223071 5686649.83265362,377854.203654971 5686651.45270116,377853.326280308 5686652.05597871,377846.157898318 5686658.98972353,377845.720398318 5686659.48972353,377842.727400395 5686663.68434142,377841.391454247 5686665.19681894,377840.139069476 5686667.31182779,377838.825885171 5686669.15222545,377838.128428148 5686670.70736908,377835.625770583 5686674.93382011,377833.502392192 5686680.82867703,377832.29696122 5686683.50412238,377831.973057845 5686685.07436739,377831.790848094 5686685.58021243,377831.644992471 5686686.50242365,377830.932850338 5686688.15831566,377828.480696436 5686700.39955748,377828.206798474 5686703.32113575,377828.082254505 5686704.51727121,377827.999100384 5686705.51512066,377827.894754505 5686706.51727121,377827.786916907 5686707.81132239,377825.943807975 5686715.901891,377825.220199407 5686720.61874685,377824.548478334 5686724.33904817,377823.601072878 5686734.06261442,377823.569822878 5686736.06261442,377823.565273476 5686736.42310359,377823.533360075 5686739.74209727,377823.493888631 5686740.08215895,377823.097623592 5686746.31822584,377823.035123592 5686751.81822584,377823.032218468 5686752.15909641,377823.000968468 5686757.65909641,377823.000968468 5686757.65909641,377824.027668784 5686769.0573121,377824.471288948 5686771.42328631,377824.974612037 5686775.27480212,377825.581424615 5686779.00143074,377825.630407432 5686779.25222276,377826.18246145 5686785.71058515,377829.233057786 5686796.57781887,377831.545557786 5686802.57781887,377831.545557786 5686802.57781887,377836.345640303 5686812.3054845,377840.626890303 5686819.3054845,377840.626890303 5686819.3054845,377847.353282914 5686828.29116548,377850.978282914 5686832.29116548,377852.700599818 5686834.04625263,377855.051235229 5686836.70891929,377857.484142848 5686839.30536223,377862.952892848 5686844.80536223,377862.952892848 5686844.80536223,377869.686775859 5686850.21221063,377877.705497875 5686857.14130645,377890.046530344 5686863.5692641,377892.365742884 5686864.45277363,377894.129456389 5686865.24397222,377894.129456389 5686865.24397222,377904.662578639 5686868.8378229,377915.678245555 5686870.42448905,377926.797449571 5686869.94937946,377937.637620798 5686867.42884086,377947.825789816 5686862.94959549,377957.011420141 5686856.66575728,377964.878468864 5686848.79352942,377971.156260501 5686839.60376559,377971.156260501 5686839.60376559,377973.375010501 5686835.60376559,377975.066906348 5686832.18392847,377978.977625886 5686827.94198421,377981.484173001 5686824.80335131,377983.913558476 5686822.09933965,377984.669362103 5686821.24180526,377986.185425879 5686819.48828571,377987.926419053 5686818.23633556,377989.293706174 5686817.31382859,377989.921927409 5686816.99473209,377989.873018893 5686816.89844345,377995.095714589 5686814.35114013,378003.770653794 5686807.98069055,378004.698589966 5686807,378004.875 5686807,378017.82150131 5686805.58658638,378030.158043911 5686801.41293679,378031.59311331 5686800.54545313,378041.188704049 5686795.65469523,378043.084469103 5686794.18364035,378044.434002771 5686793.52332062,378045.233912908 5686792.95104325,378045.931893418 5686792.61749202,378045.931893418 5686792.61749202,378046.775643418 5686792.11749202,378046.775643418 5686792.11749202,378056.930405571 5686784.5456087,378065.269249503 5686775.01060512,378066.675499503 5686773.01060512,378066.675499503 5686773.01060512,378067.710879139 5686771.22544555,378068.621616828 5686771.50978914,378070.328964472 5686772.15255531,378070.328964472 5686772.15255531,378071.629707797 5686772.53575925,378072.614108282 5686773.05358392,378083.73168367 5686776.37790347,378086.021479365 5686776.60036826,378086.217855703 5686776.66323325,378097.923439188 5686777.99341273,378109.663298452 5686777.01067847,378120.984829107 5686773.75291761,378131.451554502 5686768.34572595,378132.83400169 5686767.24255441,378133.275728824 5686767.16134463,378144.21991248 5686762.81009532,378147.862764532 5686760.44920264,378148.556893418 5686760.11749202,378148.556893418 5686760.11749202,378149.400643418 5686759.61749202,378149.400643418 5686759.61749202,378151.27530229 5686758.23757414,378154.103268256 5686756.40480024,378155.154383617 5686755.38222069,378158.072315767 5686753.23435965,378163.061983609 5686751.78430809,378173.126204049 5686746.65469523,378174.586891142 5686745.52124735,378178.843233609 5686744.28430809,378188.907454049 5686739.15469523,378197.831858343 5686732.22963429,378205.300122319 5686723.754583,378211.047534476 5686714.0299383,378214.870378653 5686703.40038876,378216.633154709 5686692.24269717,378216.633154709 5686692.24269717,378216.726904709 5686690.74269717,378216.726904709 5686690.74269717,378216.645742475 5686688.60917386,378227.027757499 5686682.98214966,378236.551161192 5686674.86971613,378244.185292614 5686664.95877101,378249.598264696 5686653.68018382,378249.598264696 5686653.68018382,378250.848264696 5686650.18018382,378250.848264696 5686650.18018382,378254.062179706 5686635.80595844,378254.499679706 5686631.30595844,378254.499679706 5686631.30595844,378254.729234386 5686623.00216732,378254.416734386 5686615.50216732,378253.356075385 5686606.49856926,378253.050996439 5686604.93656506,378252.60526229 5686600.90557797,378251.636894845 5686594.92825468,378250.886894845 5686591.42825468,378250.331105977 5686589.06835298,378249.668944511 5686586.49129214,378248.909831216 5686582.4426879,378248.654024391 5686581.15618521,378247.938225112 5686577.75130216,378247.715857559 5686576.12484234,378247.717303293 5686575.91665662,378247.71875 5686575.5,378247.71875 5686574.31249152,378247.737534969 5686572.50913452,378248.39564958 5686571.61381003,378250.086972119 5686567.80307527,378250.783169124 5686567.17477502,378251.960406524 5686565.56243201,378252.034074363 5686565.52578072,378253.415790902 5686564.48337878,378254.03959554 5686564.099499,378262.909901064 5686557.43656111,378264.933487426 5686555.226561,378265.24510196 5686554.98677176,378265.763339467 5686554.37955416,378266.671507815 5686553.74281608,378271.889194546 5686548.41174489,378272.022232248 5686548.53646773,378272.490982248 5686548.03646773,378273.453968001 5686546.81296766,378274.410590007 5686545.8355575,378274.816840007 5686545.33555751,378274.694827002 5686545.23642194,378277.147059306 5686542.12079289,378277.641602136 5686541.59510565,378277.947947396 5686541.10324239,378278.891109616 5686539.90492867,378279.078203741 5686539.55762228,378279.349962447 5686539.27034681,378280.020015725 5686538.20549869,378280.178482248 5686538.03646773,378280.865467086 5686537.29116548,378281.771717086 5686536.29116548,378281.771717086 5686536.29116548,378289.111109473 5686526.28042366,378289.588184921 5686525.2273648,378289.810851682 5686525.01027647,378290.497979114 5686524.22498798,378292.972080264 5686521.7936966,378299.768193168 5686511.64931356,378300.299443167 5686510.64931356,378300.299443167 5686510.64931356,378302.780656154 5686505.00791412,378303.295109949 5686504.19577969,378305.408136913 5686498.84630532,378305.516626195 5686498.60215308,378305.528653296 5686498.54119833,378307.443388493 5686493.6937321,378307.582809068 5686492.9597446,378307.950301597 5686491.92211864,378308.385479485 5686492.16072969,378314.207170076 5686496.95035064,378317.15747356 5686498.62266775,378317.530488227 5686498.92301766,378318.280488227 5686499.42301766,378318.280488226 5686499.42301766,378319.277926173 5686499.95504202,378321.075314038 5686501.4022915,378321.182831792 5686501.52701992,378324.324605925 5686504.08281167,378324.324779073 5686504.08297463,378324.781547456 5686504.63334686,378333.848959523 5686512.01008414,378344.174584471 5686517.48874125,378353.459109908 5686520.28659093,378355.699519231 5686521.15384615,378357.668269231 5686521.65384615,378359.426962812 5686521.87368285,378362.215339837 5686522.75493736,378365.566960279 5686523.09811944,378367.954373708 5686523.53219461,378370.998826888 5686523.80671278,378373.647177666 5686524.44179936,378385.481215174 5686524.88773271,378394.988365155 5686523.35316882,378398.235660894 5686523.09870308,378404.265772984 5686521.43700791,378404.471451269 5686521.4173832,378406.550548316 5686520.80740102,378409.249217489 5686520.06373896,378409.487854801 5686519.94563045,378415.408440581 5686518.20860145,378416.658440581 5686517.70860145,378416.658440581 5686517.70860145,378417.205932556 5686517.43318833,378417.718233609 5686517.28430809,378420.19869325 5686516.02004746,378420.856221764 5686515.80625902,378422.637998175 5686514.7767629,378427.782454049 5686512.15469523,378429.550356832 5686510.7828575,378431.723905632 5686509.52699844,378435.162318673 5686506.42814917,378436.706858343 5686505.22963429,378437.535289576 5686504.28952328,378441.047459662 5686501.12420091,378448.418885996 5686490.96557208,378448.624675583 5686490.50245318,378449.381599944 5686489.4951906,378450.392909613 5686487.45810343,378450.536892713 5686487.21127526,378451.314091539 5686486.1780779,378456.699493191 5686474.38796509,378459.427104533 5686461.71636506,378459.583354533 5686460.21636506,378459.698995495 5686458.98272879,378459.782149616 5686457.98487934,378459.886495495 5686456.98272879,378460.033802457 5686455.21504524,378460.118158214 5686454.54019919,378460.724172603 5686451.94208407,378460.849172603 5686450.94208408,378461.105245495 5686448.48272879,378461.188399616 5686447.48487934,378461.292745495 5686446.48272879,378461.417745495 5686444.98272879,378461.407762427 5686444.98189687,378461.570654709 5686443.24269717,378461.633154709 5686442.24269717,378461.633154709 5686442.24269717,378461.586212728 5686439.2200781,378461.831803564 5686436.60044252,378461.886495495 5686435.98272879,378461.985745646 5686434.79172697,378462.126964899 5686433.28538828,378462.358481413 5686430.97022314,378462.448995495 5686429.98272879,378462.52254423 5686429.10014397,378462.550689799 5686428.8299465,378462.599172603 5686428.44208407,378462.945654709 5686424.74269717,378463.039404709 5686423.24269717,378463.039404709 5686423.24269717,378462.760497768 5686416.45785223,378463.026022923 5686413.79197347,378462.913720164 5686412.2536499,378462.914404709 5686412.24269717,378462.848800117 5686410.88732273,378463.185646724 5686410.79501182,378463.425537409 5686410.74516441,378463.706274599 5686410.65233669,378468.916223591 5686409.22457959,378470.919633681 5686408.26718909,378476.4382307 5686406.44242641,378480.856071903 5686403.74435199,378482.244813679 5686403.05342394,378482.268336301 5686403.09458853,378482.983655565 5686402.68583466,378485.315324363 5686401.52578072,378494.147855443 5686394.86229565,378501.606683948 5686386.69029983,378501.686676282 5686386.56132124,378502.481683948 5686385.69029983,378504.660033884 5686382.17795703,378506.948682517 5686379.0269384,378507.797555292 5686377.62190759,378508.638023677 5686376.50059274,378514.04678878 5686364.49587762,378516.706803564 5686351.60044252,378517.064464899 5686347.78538828,378517.167259982 5686346.75743745,378517.863053564 5686343.60044252,378518.033214899 5686341.78538828,378518.264731413 5686339.47022314,378518.368139354 5686338.19706551,378518.488053564 5686337.10044252,378518.581803564 5686336.10044252,378518.634623593 5686335.42418208,378518.708354533 5686334.71636506,378518.712933798 5686334.42156822,378518.726904709 5686334.24269717,378518.758154709 5686333.74269717,378518.723512761 5686333.74053205,378518.872640897 5686324.14019089,378517.245233236 5686314.11876861,378525.327054795 5686308.20547945,378526.844298538 5686306.88133946,378528.391232407 5686305.55539614,378528.391232408 5686305.55539614,378530.433059692 5686303.49763807,378530.534230962 5686303.42670452,378531.236219692 5686302.94402129,378532.885980675 5686301.34826067,378534.491385764 5686300.20828228,378539.198661458 5686295.6800569,378539.59190745 5686295.45819816,378542.138030614 5686293.22902237,378543.05340656 5686292.67568768,378546.266262528 5686289.61468242,378548.850854898 5686287.35182616,378549.385775754 5686286.6426082,378549.497957834 5686286.53572824,378550.065942003 5686286.35193674,378555.043688699 5686283.49137127,378555.228753112 5686283.44222475,378562.484597062 5686280.09149011,378563.855476946 5686279.63797484,378574.844866515 5686273.16245682,378578.195086568 5686270.06962916,378579.925374024 5686268.55473194,378580.485185386 5686268.16609236,378581.978751324 5686267.29894701,378582.828406369 5686266.63580161,378583.728884702 5686266.36032462,378584.098168333 5686266.16106896,378584.167976946 5686266.13797484,378584.461319104 5686265.96512243,378589.118933177 5686263.45199732,378593.626204049 5686261.15469523,378602.550608343 5686254.22963429,378610.018872319 5686245.754583,378615.766284476 5686236.0299383,378616.636689569 5686233.60974705,378620.40138351 5686226.03082854,378620.919053422 5686224.56917231,378621.027280372 5686224.48588919,378622.44197345 5686222.82818932,378624.585394632 5686220.77008529,378625.836940187 5686218.85005723,378629.13146682 5686214.9896182,378630.965230287 5686211.61708631,378632.504951879 5686209.64043998,378643.226835616 5686206.06846854,378647.601835616 5686204.06846854,378658.026050605 5686197.9662481,378667.016792889 5686189.89978013,378669.778875653 5686186.86690494,378671.718716016 5686184.82496771,378671.718716016 5686184.82496771,378678.666192883 5686175.98161798,378679.80628052 5686173.78205631,378680.150643418 5686173.61749202,378680.150643418 5686173.61749202,378680.994393418 5686173.11749202,378680.994393418 5686173.11749202,378689.016905355 5686167.42621575,378696.001741737 5686160.50065555,378697.445240391 5686158.50218896,378699.302967086 5686156.79116549,378699.302967086 5686156.79116549,378700.209217086 5686155.79116548,378700.209217086 5686155.79116548,378702.179269768 5686153.10406446,378702.717101682 5686152.51027647,378703.592101682 5686151.51027647,378703.510176204 5686151.43859168,378706.697738223 5686147.23085638,378708.05211086 5686145.72049752,378708.888508611 5686144.33893402,378710.261182517 5686142.5269384,378711.167432517 5686141.0269384,378711.054203941 5686140.95852946,378716.72558217 5686131.8379137,378716.741039557 5686131.79819963,378717.791067693 5686130.31047509,378722.723399662 5686118.84168434,378723.150942352 5686116.70737561,378723.581311977 5686115.57589731,378724.175061977 5686113.57589731,378724.175061977 5686113.57589731,378726.192922603 5686103.94208407,378726.255422603 5686103.44208407,378726.442199357 5686101.44787004,378726.442922603 5686101.44208407,378726.698995495 5686098.98272879,378726.903726676 5686096.52595461,378727.004699357 5686095.44787004,378727.005422603 5686095.44208407,378727.206803564 5686093.60044252,378727.394303564 5686091.60044252,378727.400868624 5686090.21980753,378729.70932404 5686088.96356994,378740.185851682 5686079.51027647,378741.060851682 5686078.51027647,378741.090535847 5686078.47030038,378741.225854898 5686078.35182616,378743.537483929 5686075.28698248,378743.8728117 5686074.90375074,378744.427967086 5686074.29116548,378744.427967086 5686074.29116548,378747.349409706 5686070.23298961,378748.636182517 5686068.52693839,378748.942132528 5686068.02053838,378752.28517958 5686063.3767118,378752.554464219 5686062.73861656,378752.947238098 5686062.21687722,378754.892621556 5686057.97059332,378756.525230487 5686055.3635956,378760.318371987 5686045.5535046,378760.55763351 5686045.03082853,378761.08888351 5686043.53082853,378764.119716025 5686029.43293325,378764.192922603 5686029.44208407,378764.297348442 5686028.60667736,378764.323995495 5686028.48272879,378764.357685096 5686028.07845357,378764.519303564 5686026.60044252,378764.613053564 5686025.60044252,378764.667745495 5686024.98272879,378764.750899616 5686023.98487934,378764.855245495 5686022.98272879,378764.97772926 5686021.5129236,378765.036478481 5686021.17326004,378765.192728481 5686019.17326004,378764.712117656 5686005.60581829,378764.087602098 5686003.27845524,378764.760311183 5686002.65652859,378764.885498412 5686002.54347771,378764.901640586 5686002.52586807,378767.053482248 5686000.53646773,378767.522232248 5686000.03646773,378767.794136784 5685999.6963826,378768.368058548 5685999.28125337,378768.42433033 5685999.34455912,378769.052518591 5685998.78616956,378770.542014955 5685997.70878667,378771.700012641 5685996.49550307,378780.743480126 5685993.44578452,378791.8665466 5685986.74668806,378801.287904958 5685977.8114484,378802.076355126 5685976.88190715,378802.80938194 5685976.19199956,378803.326001028 5685975.69994482,378808.513501028 5685970.69994482,378808.737049828 5685970.48335473,378811.653086552 5685967.64338853,378813.260840081 5685966.17344245,378814.993147565 5685964.86398167,378819.141493108 5685961.42490647,378820.680900257 5685960.02743048,378820.901908995 5685959.90823475,378823.912518014 5685959.10856503,378834.890522105 5685953.60584652,378844.518299828 5685945.98335473,378848.112049828 5685942.48335473,378848.066158661 5685942.43623434,378854.623970899 5685935.88058267,378861.348710525 5685925.63890699,378861.678801755 5685924.8038634,378863.60313146 5685921.83281573,378864.10313146 5685920.83281573,378864.555712231 5685919.6562937,378865.094427308 5685918.78767659,378865.213754785 5685918.48045524,378867.608786158 5685914.46603257,378868.077536158 5685913.46603257,378869.165152867 5685910.57513817,378869.94688146 5685909.33281573,378870.44688146 5685908.33281573,378874.552846828 5685897.70008024,378874.891592625 5685895.82004503,378875.090463677 5685895.36055082,378876.215463677 5685891.86055082,378876.215463677 5685891.86055082,378878.770854533 5685879.71636506,378879.239604533 5685875.21636506,378879.444196981 5685872.76019745,378879.633154709 5685870.74269717,378879.633643026 5685870.7348841,378879.74037305 5685869.73001702,378879.868664309 5685868.26383119,378880.050553564 5685866.60044252,378880.238053564 5685864.60044252,378880.290873593 5685863.92418208,378880.364604533 5685863.21636506,378880.480245495 5685861.98272879,378880.559976677 5685861.02595461,378880.68865159 5685859.6520935,378880.755425319 5685859.06256273,378881.161675319 5685855.06256273,378881.161675319 5685855.06256273,378881.161675319 5685846.58181046,378881.206803564 5685846.10044252,378881.351904709 5685844.24269717,378881.383154709 5685843.74269717,378881.383154709 5685843.74269717,378880.67402079 5685830.07854529,378880.049842602 5685827.91108609,378878.259056409 5685817.75526539,378877.977806409 5685816.75526538,378874.658656173 5685808.01009282,378874.557579977 5685807.52777648,378869.982610536 5685796.76222945,378867.906156209 5685793.70815317,378867.688303869 5685792.9770032,378867.265578075 5685792.19961426,378866.185489212 5685789.23310731,378860.364952091 5685779.49181208,378852.81440755 5685771.02063966,378843.803937489 5685764.12260266,378842.564372905 5685763.5023179,378842.501604784 5685763.43045671,378836.333689154 5685758.61063122,378835.290188693 5685757.65855828,378834.599378598 5685757.25538016,378833.555058031 5685756.43931146,378832.01932966 5685755.65186093,378831.907011773 5685755.57698234,378831.907011774 5685755.57698234,378829.776251417 5685754.44045408,378824.360019246 5685751.27937361,378823.034923463 5685750.84469087,378821.54734454 5685750.05122976,378810.309900209 5685746.64880539,378806.160818512 5685746.24088685,378806.183067702 5685746.08236137,378802.620567702 5685745.58236137,378802.620567702 5685745.58236137,378794.896531841 5685745.04296711,378793.640025358 5685744.91430979,378791.704589973 5685744.48466488,378780.776064765 5685744.09179551,378778.011169716 5685744.5,378775.34375 5685744.5,378774.331260387 5685744.59051271,378772.872400209 5685744.14880539,378772.619267546 5685744.12391856,378771.354298877 5685743.7272045,378770.584865243 5685743.64899291,378768.630544417 5685743.07715324,378763.681500867 5685742.60614623,378762.920626292 5685742.46780539,378759.351818049 5685742.14600616,378758.962579723 5685742.033352,378747.523116618 5685741.00103186,378736.096548767 5685742.16745725,378734.606338054 5685742.61776609,378732.379410671 5685742.85582514,378720.269523054 5685746.86202516,378709.280133485 5685753.33754318,378709.22462373 5685753.38878821,378706.19692596 5685755.03643006,378704.970337347 5685756.14321874,378699.837063399 5685759.28865041,378697.176956001 5685761.78279137,378696.959308011 5685761.85099138,378691.870814747 5685764.67127677,378690.39790446 5685765.400501,378690.39790446 5685765.400501,378689.58540446 5685765.900501,378689.602593435 5685765.92843308,378686.353713423 5685767.72911717,378684.3497119 5685769.4465256,378680.739998676 5685771.70105299,378679.458748676 5685772.70105299,378679.458748676 5685772.70105299,378678.406830535 5685773.67833603,378678.16534344 5685773.82431232,378674.856619359 5685776.97665463,378671.915782914 5685779.70883452,378671.4535599 5685780.2188737,378668.73626099 5685782.80774365,378668.24027845 5685783.39557481,378668.157898318 5685783.48972353,378662.43260176 5685791.2000636,378662.410519235 5685791.23539564,378661.733890384 5685792.09507133,378656.826161565 5685801.20538174,378654.845604472 5685807.15314028,378654.661405339 5685807.62614885,378650.207672737 5685809.3215261,378645.552496888 5685810.55777525,378636.137913699 5685814.90541147,378635.262913699 5685815.40541147,378634.290907651 5685816.08021024,378632.793219186 5685816.79592627,378631.082023054 5685817.36202516,378628.822481722 5685818.69346405,378627.380606582 5685819.38250798,378626.536856582 5685819.88250798,378626.536856582 5685819.88250798,378625.176215335 5685820.84203323,378620.092633485 5685823.83754318,378618.490948039 5685825.31617353,378615.552498676 5685827.20105299,378614.271248676 5685828.20105299,378612.868489354 5685829.52724449,378610.272855003 5685831.35768781,378609.739921226 5685831.87727007,378608.446346597 5685832.68003912,378603.936383485 5685835.33754318,378602.250679396 5685836.89373715,378599.88409344 5685838.32431232,378599.099956155 5685839.07138856,378590.733998846 5685845.34897823,378585.414353045 5685851.04130925,378583.845398318 5685852.48972353,378583.407898318 5685852.98972353,378581.994432069 5685855.01454958,378577.772697069 5685859.53205206,378572.044306833 5685868.35068644,378571.838173476 5685868.73870217,378571.77635176 5685868.7000636,378571.46385176 5685869.2000636,378571.46385176 5685869.2000636,378570.463716367 5685871.21772283,378569.49061854 5685872.66718427,378568.99061854 5685873.66718427,378569.198113776 5685873.77093189,378566.227854681 5685879.76309127,378563.15844897 5685891.14605957,378562.374142008 5685902.90948091,378563.905215283 5685914.59917866,378563.945426146 5685914.71771567,378561.624393074 5685912.84861842,378552.559120642 5685908.08000872,378545.581045653 5685898.60214456,378542.900060347 5685896.21194793,378539.835311923 5685892.65890761,378537.429913119 5685890.76045454,378536.693251013 5685889.9892428,378534.718242295 5685888.60525161,378533.157729507 5685879.79347704,378529.431659302 5685869.72505489,378526.596792458 5685864.92656496,378524.937543479 5685861.49418064,378524.856349961 5685861.388558,378524.724425222 5685861.03796298,378523.58377914 5685859.19247,378523.298992842 5685858.4136909,378522.655679579 5685855.65878091,378521.089873527 5685852.37261397,378520.9041998 5685851.86486898,378520.609791466 5685851.36506275,378517.110911015 5685844.02194049,378509.208525032 5685833.83799188,378507.405171181 5685832.33247121,378506.959014286 5685831.80778024,378505.473906323 5685830.6354288,378503.821630274 5685828.75886581,378499.559475357 5685825.78253248,378499.313261773 5685825.57698234,378498.563261773 5685825.07698234,378498.558768469 5685825.0837223,378495.161282336 5685822.7112015,378495.250761773 5685822.57698234,378494.500761773 5685822.07698234,378494.500761774 5685822.07698234,378493.597004531 5685821.59492642,378492.660982755 5685820.86740032,378492.140510344 5685820.60174641,378492.079044118 5685820.55882353,378490.204044118 5685819.55882353,378490.181183176 5685819.6016878,378489.101008897 5685819.0503569,378488.988754928 5685818.9655184,378487.108124264 5685818.03317025,378482.587520607 5685815.72581254,378482.264212419 5685815.63173527,378478.954541551 5685813.99092107,378475.860918869 5685813.12366841,378475.502169041 5685812.92857784,378474.345919041 5685812.42857784,378473.591766921 5685812.19023132,378470.340159184 5685810.56743469,378464.992636409 5685809.04278175,378458.97046355 5685807.18721504,378454.738472604 5685806.76417854,378454.099294417 5685806.57715324,378445.814130912 5685805.78864328,378443.443794055 5685805.31731364,378432.253276928 5685805.2110421,378428.922780543 5685805.80777847,378424.918847315 5685805.79636322,378423.364853639 5685806.11415208,378422.247067112 5685806.02842538,378409.515017138 5685807.79810529,378406.578009806 5685808.87939861,378396.050773054 5685812.36202516,378394.159768006 5685813.47630337,378393.185309419 5685813.79139855,378391.935309419 5685814.29139855,378382.237494848 5685819.23387627,378378.574174462 5685822.03611347,378377.967545951 5685822.34530477,378369.043141657 5685829.27036571,378361.574877681 5685837.745417,378355.827465523 5685847.4700617,378352.004621347 5685858.09961124,378350.902831554 5685865.07351508,378350.692662324 5685865.04359516,378349.985849542 5685870.00852397,378348.7331974 5685874.41345457,378347.758789978 5685877.21175281,378347.525090354 5685877.62721881,378346.315910163 5685877.24506264,378340.696880242 5685876.66971397,378340.380544417 5685876.57715324,378334.481835622 5685876.01576533,378333.222751029 5685875.71793302,378326.862945037 5685875.22453404,378319.25 5685874.5,378318.0625 5685874.5,378306.456618434 5685875.63317137,378304.441117635 5685876.23898779,378303.348160671 5685876.35582514,378300.656668531 5685877.24622613,378291.427526409 5685879.77542041,378281.786856582 5685884.38250798,378280.943106582 5685884.88250798,378280.943106582 5685884.88250798,378271.335057685 5685891.95489787,378269.708212699 5685893.74704021,378268.621348936 5685894.56343889,378261.889680078 5685901.91523231,378253.885533457 5685906.73631912,378250.616477734 5685909.66276463,378248.90625 5685909.5,378247.71875 5685909.5,378236.747723614 5685910.51155554,378233.486806621 5685911.43453263,378231.934798731 5685911.5826168,378220.997809419 5685914.79139855,378219.747809419 5685915.29139855,378219.747809419 5685915.29139855,378216.462115851 5685916.94425043,378215.935284758 5685917.1622879,378214.434057997 5685917.64806326,378213.591226335 5685918.13241397,378211.239334504 5685919.10578201,378207.30359047 5685921.74573444,378203.600182905 5685923.87397448,378202.765108728 5685924.62163022,378199.549547146 5685926.64787143,378199.549547147 5685926.64787143,378198.299547147 5685927.64787143,378198.299547147 5685927.64787143,378189.121284722 5685936.7793473,378182.220677787 5685947.50390673,378182.045468976 5685947.52013032,378180.511377027 5685947.95628226,378179.379078188 5685948.06334551,378168.531766391 5685951.21569191,378158.467545951 5685956.34530477,378156.124893031 5685958.16313078,378155.103713423 5685958.72911717,378152.309148623 5685961.12403009,378149.543141657 5685963.27036571,378148.736489089 5685964.1857621,378145.8965485 5685966.6195616,378140.581371466 5685973.47065024,378140.495828194 5685973.55530235,378140.099170374 5685973.86473539,378139.544653626 5685974.49656784,378138.151918961 5685975.87479337,378136.481425453 5685976.48012859,378126.137675453 5685981.48012859,378126.137675453 5685981.48012859,378115.710327539 5685987.90953524,378106.806144543 5685996.32276169,378099.796299445 5686006.36910063,378094.972999303 5686017.62976802,378092.537304526 5686029.63536027,378092.193554526 5686033.13536027,378092.256836574 5686045.47668727,378094.84382494 5686057.54399219,378096.089521947 5686060.35426616,378097.126227984 5686065.02152647,378102.28181264 5686076.36438264,378109.668954347 5686086.39785544,378111.679556709 5686088.19038111,378112.255051206 5686090.06954682,378112.255051206 5686090.06954682,378117.342309051 5686101.93671563,378124.850689549 5686112.44072012,378129.756939549 5686117.94072012,378129.756939548 5686117.94072012,378139.095593642 5686126.41811911,378150.000078066 5686132.75601888,378161.988545602 5686136.67436038,378167.043594189 5686137.20862895,378167.775705583 5686137.42284676,378170.929305485 5686137.72297903,378173.283312044 5686139.00310359,378174.426402972 5686139.63220604,378174.521767939 5686139.70622614,378183.006692037 5686144.32869292,378183.791506063 5686144.67749915,378185.435330959 5686145.57142216,378186.059145529 5686145.84117981,378186.440328447 5686146.61018638,378192.281965243 5686153.99530037,378192.413531134 5686154.18104045,378192.413531134 5686154.18104045,378192.54531074 5686154.32822701,378194.207343764 5686156.42940237,378195.017328168 5686157.10135574,378196.019271166 5686158.30926235,378196.264128741 5686158.51465843,378197.974316826 5686160.56295615,378200.576405756 5686163.77241257,378200.824297808 5686163.97638744,378203.417330742 5686167.08207124,378212.060168336 5686174.19107128,378215.707534879 5686176.19094762,378220.635283202 5686180.19960578,378226.919114586 5686183.68531783,378230.803864518 5686186.39530494,378235.369022803 5686188.18725527,378239.60890546 5686190.44877024,378240.315725558 5686190.66277814,378241.346250518 5686191.22078536,378252.132532448 5686194.64484993,378254.445032448 5686195.14484993,378254.445032448 5686195.14484993,378255.371847678 5686195.24390174,378257.377599791 5686195.85119461,378269.0625 5686197,378271.03125 5686197,378281.673740887 5686196.04860191,378291.978723591 5686193.22457959,378301.619393418 5686188.61749202,378301.619393418 5686188.61749202,378302.463143418 5686188.11749202,378302.463143418 5686188.11749202,378303.256718141 5686187.55786252,378304.150643418 5686187.11749202,378304.994393418 5686186.61749202,378304.994393418 5686186.61749202,378306.37071544 5686185.67823676,378310.4893487 5686183.56273895,378319.369579626 5686176.63526461,378324.226593568 5686171.10104222,378325.456479778 5686170.06675822,378327.023086172 5686168.04444268,378327.557397254 5686167.46511059,378327.851602177 5686166.97492018,378333.249102472 5686160.00734443,378338.74513351 5686148.53082853,378339.27638351 5686147.03082853,378339.516861003 5686145.96588274,378340.73818421 5686143.17576297,378343.255422603 5686131.94208407,378343.255422603 5686131.94208407,378343.317922603 5686131.44208407,378343.573995495 5686128.98272879,378343.64754423 5686128.10014397,378343.739604533 5686127.21636505,378343.764731413 5686126.97022314,378344.264731413 5686121.97022314,378344.264731413 5686121.97022314,378344.274887638 5686110.13222678,378343.078871214 5686104.13242761,378343.104861821 5686102.65121379,378341.852922473 5686096.34824333,378341.836197064 5686095.81056796,378341.478852803 5686094.46496512,378340.612548682 5686090.10350041,378340.383396199 5686089.37021247,378340.380157902 5686089.05579863,378340.224503146 5686088.41552969,378340.05611435 5686082.25726701,378339.816894469 5686081.31368851,378339.421695955 5686071.46917769,378336.439833931 5686059.5531993,378334.745770587 5686056.04879669,378330.201857814 5686046.18621072,378325.142116805 5686039.48786053,378325.52683558 5686038.54086047,378326.841994115 5686035.73518893,378326.981378739 5686035.48212181,378327.744393418 5686035.11749202,378327.744393418 5686035.11749202,378327.858641822 5686035.04978926,378329.25738518 5686034.55913658,378330.792270128 5686034.15152573,378337.922332482 5686033.00065126,378341.687848842 5686031.59306344,378345.428700321 5686031.30820919,378347.788886508 5686030.76056234,378351.986669321 5686030.34711682,378352.353917565 5686030.23571329,378355.690201269 5686029.9173832,378356.061788788 5686029.80836387,378363.318831118 5686028.98880215,378365.086795369 5686028.36863378,378367.263978727 5686028.02595069,378372.420664412 5686026.0947433,378372.897046354 5686026.04190954,378380.282004811 5686023.50111123,378385.546481495 5686022.07919844,378390.171446883 5686021.28835561,378398.79742894 5686017.88935639,378402.003442003 5686016.85193674,378403.29756351 5686016.10824296,378406.230476946 5686015.13797484,378407.571203584 5686014.3479492,378409.464225985 5686014.21861351,378420.288242584 5686011.39808477,378425.098165519 5686009.12421498,378425.994984548 5686010.49172937,378426.338734548 5686010.99172937,378426.338734548 5686010.99172937,378426.716791326 5686011.44305532,378426.75 5686011.5,378427.125 5686012,378427.160818034 5686011.97313647,378433.647939148 5686019.71749193,378441.039453961 5686025.73782703,378441.305527045 5686026.18216112,378441.584439473 5686027.02382333,378444.129057211 5686031.44620916,378445.168506962 5686037.0975745,378446.976387614 5686041.88109574,378447.293701318 5686042.89649959,378447.42914556 5686043.26889358,378447.90983673 5686044.80935034,378447.964407252 5686046.69661345,378450.262451318 5686057.39649959,378450.574951318 5686058.39649959,378452.436126491 5686063.08708748,378452.628450515 5686063.73023283,378452.880132208 5686064.20608362,378453.884596499 5686066.73756379,378457.521229266 5686072.98093604,378458.116075298 5686074.10560248,378458.328754351 5686074.36729535,378458.401234548 5686074.49172937,378458.744984548 5686074.99172937,378458.803525845 5686074.95148223,378465.518603033 5686083.21410974,378468.894114969 5686086.01381834,378469.34812441 5686086.47748756,378469.34812441 5686086.47748756,378471.096722031 5686087.92644935,378474.541820716 5686091.47104346,378483.195790578 5686097.67451651,378485.806007041 5686098.91690257,378495.364666549 5686103.58330209,378496.165693331 5686103.80714234,378495.951161565 5686104.20538174,378495.641981302 5686105.1338728,378494.494401965 5686107.76478327,378494.17752199 5686109.27895625,378492.888120439 5686112.20621023,378492.656172009 5686113.32317709,378490.887438023 5686117.92410269,378490.293688023 5686119.92410269,378490.293688023 5686119.92410269,378490.038215987 5686121.24512057,378489.226145426 5686123.46585501,378489.218491316 5686123.48292164,378489.216171835 5686123.49312936,378488.217241206 5686126.22486199,378486.272775927 5686131.36470355,378485.457342653 5686135.77385019,378485.35449995 5686135.98955398,378483.381837077 5686144.91604782,378476.857968976 5686145.52013032,378466.215564864 5686148.54583242,378456.309675637 5686153.47421928,378447.477144557 5686160.13770435,378445.712019665 5686162.07159963,378438.351749789 5686157.94462758,378426.679442823 5686154.24916024,378422.976888441 5686153.86941514,378420.222751029 5686153.21793302,378418.089806525 5686153.05245743,378408.871753294 5686152.17516313,378408.536794417 5686152.07715324,378397.21875 5686151,378396.03125 5686151,378383.08474869 5686152.41341362,378370.748206089 5686156.5870632,378368.694212555 5686157.8286797,378367.082023054 5686158.36202516,378356.092633485 5686164.83754318,378354.502666276 5686166.30535559,378345.968279381 5686169.3662765,378341.472881069 5686172.1064123,378340.825413699 5686172.40541147,378340.076410342 5686172.83341339,378337.487854058 5686174.13613328,378337.197664211 5686174.31134225,378334.815997229 5686175.47667938,378326.726924277 5686181.26382112,378325.754150764 5686182.23964366,378325.015992185 5686182.75718392,378322.841023348 5686184.97941655,378320.912514265 5686186.45515923,378313.44788914 5686194.77950248,378313.067081186 5686195.40852183,378312.97366441 5686195.49980269,378310.004319798 5686200.08428963,378308.981127681 5686201.245417,378306.153864883 5686206.02915713,378305.74061854 5686206.66718427,378305.541955708 5686207.06450993,378303.233715524 5686210.9700617,378300.164721798 5686219.50350417,378299.063654724 5686222.39936232,378298.814694849 5686223.91576723,378298.495350338 5686224.65831566,378297.800841321 5686228.12533004,378297.668811462 5686228.46525504,378296.016502117 5686232.52633404,378295.93911819 5686232.75848582,378295.377433934 5686234.12014462,378295.377433934 5686234.12014462,378293.627932165 5686239.06730913,378293.357184263 5686239.53989804,378289.928443591 5686248.75526538,378289.365943591 5686250.75526538,378288.570517129 5686255.03356946,378288.561292023 5686255.07311949,378288.192121347 5686256.09961124,378287.919782994 5686257.82340782,378286.932077397 5686262.05791592,378286.869577397 5686262.55791593,378286.556484802 5686265.90080326,378286.543196436 5686265.89955748,378286.355696436 5686267.89955748,378286.301004505 5686268.51727121,378286.216197542 5686269.53495476,378286.213327397 5686269.55791593,378286.198533846 5686269.699995,378277.376371744 5686270.44800154,378276.790815717 5686270.61095001,378272.982509113 5686270.95139809,378270.038941888 5686271.75806607,378268.61599869 5686271.91341362,378264.965834824 5686273.14832241,378263.801031729 5686273.46753012,378263.232968976 5686273.52013032,378252.590564864 5686276.54583242,378252.127953088 5686276.77599144,378248.780120358 5686277.7535677,378238.681421946 5686282.92798751,378229.737518657 5686289.91117618,378222.26829995 5686298.45337156,378216.540911415 5686308.24905176,378212.760199991 5686318.9478625,378212.260199991 5686320.9478625,378212.160719698 5686321.35172794,378210.446585784 5686328.4160374,378209.240187516 5686332.49923154,378209.158255013 5686332.77904163,378208.881223643 5686333.73373435,378203.781766391 5686335.21569191,378196.357012929 5686339,378195.78125 5686339,378185.138759113 5686339.95139809,378184.795091371 5686340.04557829,378179.0625 5686339.5,378177.875 5686339.5,378165.392523102 5686340.81279722,378153.456278236 5686344.69374098,378150.35466243 5686346.48582972,378150.083746888 5686346.55777525,378149.912122419 5686346.6370311,378146.715564864 5686347.54583242,378136.809675637 5686352.47421928,378130.977557062 5686356.87411719,378129.826006776 5686357.60976791,378129.090400571 5686358.29783583,378127.977144557 5686359.13770435,378126.719995225 5686360.51505457,378121.795121559 5686365.12166003,378115.270067483 5686373.9730616,378114.363817483 5686375.4730616,378109.032787365 5686386.83526913,378108.041070634 5686391.08733387,378106.49793905 5686395.26402874,378104.883738308 5686405.29322795,378104.791645467 5686405.28363495,378104.479145467 5686408.28363494,378104.273095291 5686410.75730283,378104.210595291 5686411.75730283,378104.460625361 5686411.77292971,378104.011629082 5686417.18125126,378105.5086817 5686429.37032847,378106.483657896 5686432.242566,378107.648244037 5686435.97468073,378102.5 5686435.5,378101.71875 5686435.5,378100.140074503 5686435.62021125,378098.9375 5686435.5,378097.375 5686435.5,378096.532809999 5686435.58222948,378094.464048687 5686435.09287082,378092.997400209 5686434.64880539,378091.567748734 5686434.50824866,378090.516878863 5686434.2870129,378090.516878863 5686434.2870129,378084.126208825 5686433.62160381,378083.974294417 5686433.57715324,378080.775310503 5686433.27270171,378078.172012418 5686433.00164121,378077.613969466 5686432.70398616,378076.813261773 5686432.07698234,378075.313261773 5686431.07698234,378075.313261774 5686431.07698234,378073.300528278 5686430.00340854,378065.135687228 5686425.43226216,378062.813099321 5686424.69792192,378061.979713227 5686424.26993765,378055.001087444 5686422.22797248,378053.476704246 5686421.74600324,378053.287766154 5686421.72664994,378051.068044417 5686421.07715324,378044.546690613 5686420.45650738,378042.728578699 5686420.04550051,378032.268467407 5686419.54753137,378021.881091886 5686420.87581271,378016.891153862 5686422.42999057,378014.45719621 5686419.01966198,378014.473765452 5686419.00827063,378014.130015452 5686418.50827063,378013.408422281 5686417.48183711,378012.689672281 5686416.48183711,378012.660771406 5686416.50260961,378010.295438955 5686413.18843491,378008.407105479 5686411.46554999,378005.599698655 5686408.12664379,378002.807542065 5686405.87815699,378002.658281672 5686405.27813361,378002.537271275 5686404.51946003,378002.319601725 5686403.91664792,378001.509047328 5686400.65823767,378000.936226672 5686399.46620892,377997.463887609 5686390.57638875,377997.186543718 5686390.13234884,377993.425308938 5686380.01567813,377990.519433217 5686375.16625725,377990.256324968 5686374.57196058,377989.591228767 5686373.61723916,377987.761869038 5686370.56434354,377986.35695907 5686368.97456259,377983.692357771 5686365.1496243,377980.052548883 5686361.61563751,377979.648463586 5686360.77474379,377979.631521291 5686357.75671207,377979.661743092 5686357.36987301,377979.800553564 5686356.10044252,377979.988053564 5686354.10044252,377980.133154709 5686352.24269717,377980.164404709 5686351.74269717,377980.164404709 5686351.74269717,377980.164404709 5686344.25730283,377980.008154709 5686341.75730283,377980.008154709 5686341.75730283,377978.371241693 5686331.09946776,377975.701958091 5686323.36591394,377974.053316086 5686315.95468901,377968.886638814 5686304.60317659,377961.484757713 5686294.56507198,377952.167498583 5686286.27410881,377950.108550497 5686285.09814125,377947.319310436 5686282.30449775,377945.843331616 5686281.29914387,377943.115449585 5686278.20904762,377942.50961659 5686277.42349735,377942.1745247 5686277.14318464,377939.609879151 5686274.23799976,377930.690005005 5686267.32630444,377920.633748104 5686262.20698962,377909.796808551 5686259.06113073,377898.5625 5686258,377898.21875 5686258,377894.21875 5686257.5,377892.28125 5686257.5,377881.638759113 5686258.45139809,377876.556073103 5686259.84427949,377871.743182592 5686260.6918947,377871.697717158 5686260.70942128,377870.328885159 5686260.91717613,377858.782694968 5686265.21478537,377848.357695104 5686271.78009807,377847.02882866 5686273.06278234,377843.640842367 5686275.02598664,377840.180629417 5686278.15547427,377840.174547147 5686278.14787143,377838.924547147 5686279.14787143,377838.991214461 5686279.23120558,377838.955557203 5686279.26345473,377835.845022471 5686281.527542,377828.122362464 5686289.76536579,377824.383122888 5686295.66825783,377823.558077582 5686296.77420516,377823.217682564 5686297.50806196,377822.079890051 5686299.30422031,377821.747704321 5686300.14520297,377820.49061854 5686302.16718427,377819.781681905 5686303.58505754,377818.05311854 5686306.66718427,377817.55311854 5686307.66718427,377815.330365766 5686313.37922188,377814.342888867 5686314.96469967,377810.176942326 5686326.05979658,377810.167740165 5686326.11633596,377806.610252117 5686333.52633404,377806.110252117 5686335.02633404,377805.839142079 5686336.31335692,377805.064867551 5686337.7451242,377801.601488028 5686348.93043951,377800.882738028 5686352.43043951,377800.912196992 5686352.43648911,377799.526600338 5686355.65831566,377797.074446436 5686367.89955748,377796.80394407 5686370.78491605,377796.791645467 5686370.78363494,377796.635395467 5686372.28363494,377796.543730068 5686373.38409386,377793.31736649 5686380.46917147,377792.78611649 5686381.96917147,377792.11064063 5686385.03397965,377790.642193022 5686388.51360413,377788.304345291 5686401.75730283,377788.304345291 5686401.75730283,377788.28836736 5686402.01294973,377788.177813823 5686403.27641872,377788.072895467 5686404.28363494,377788.011946436 5686404.89955748,377787.68397999 5686408.39786624,377787.574446436 5686409.39955748,377787.547481292 5686409.68718568,377787.479145467 5686410.28363494,377787.322895467 5686411.78363494,377787.261946436 5686412.39955748,377787.074446436 5686414.39955748,377787.019754505 5686415.01727121,377786.769754505 5686418.01727121,377786.878782577 5686429.15255025,377787.21236766 5686430.83570257),(378241.097744652 5686581.54216122,378241.116955388 5686581.55236693,378240.803657309 5686581.94224898,378241.097744652 5686581.54216122)) - - - - diff -Nru geos-3.1.0/tests/xmltester/heisenbugs.xml geos-3.2.2/tests/xmltester/heisenbugs.xml --- geos-3.1.0/tests/xmltester/heisenbugs.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/heisenbugs.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ - - - - - - -Heisenbug provided by "Rene Neidt" (r.neidt at idu.de) - - - 01060000001C000000010300000001000000040000005C8FC245BCA25441F853E3DD919355419133753ABCA25441053861CD91935541E833753ABCA25441853861CD919355415C8FC245BCA25441F853E3DD91935541010300000001000000040000009133753ABCA25441053861CD91935541C520B01ABCA2544123DBF99E919355418833753ABCA25441F83761CD919355419133753ABCA25441053861CD9193554101030000000100000004000000F24283B3B4A254418422B80B87935541FD3F83B3B4A254415B1EB80B879355418FC2F508B4A25441C3F5281C86935541F24283B3B4A254418422B80B87935541010300000001000000070000007B14AE1FB2A25441B072686183935541736891E5AFA25441B81E8533809355412FDD2496AFA25441560E2DC27F9355416A184AE0AFA2544113B2FC2B809355415C8FC2E5AFA254413D0AD733809355412881420FB0A25441B1F5096F809355417B14AE1FB2A25441B07268618393554101030000000100000005000000448B6CD7A9A2544139B4C88E77935541BD7206BDA9A25441E03F2169779355415C8FC2A5A9A2544185EB514877935541AE7206BDA9A25441CB3F216977935541448B6CD7A9A2544139B4C88E7793554101030000000100000004000000AD448E189CA2544144E1C8F86393554154BF62AF9BA25441505D126363935541F6285CAF9BA254413333336363935541AD448E189CA2544144E1C8F863935541010300000001000000040000009CC420189BA2544104560E4D5B935541C74B377197A25441D122DBC15A9355416D707F0798A25441E74A3BD85A9355419CC420189BA2544104560E4D5B9355410103000000010000000400000052B81EED90A25441EC51B83E54935541C1CAA10D8FA2544148E17A7451935541E6A570C18FA2544196EE51805293554152B81EED90A25441EC51B83E5493554101030000000100000004000000ED2D96108BA25441051F3EAB4B9355418A2D96108BA25441761E3EAB4B9355413D0AD7338DA254415C8FC2C54E935541ED2D96108BA25441051F3EAB4B935541010300000001000000040000008DF47DDF8AA2544134CC05644B93554128F47DDF8AA25441A1CB05644B93554152B81E7589A25441713D0A57499355418DF47DDF8AA2544134CC05644B9355410103000000010000000400000004560E2D85A254415A643B4743935541000000D082A25441250681CD3F935541773FCC6B83A25441F25B9AB24093554104560E2D85A254415A643B474393554101030000000100000014000000819543D375A25441000000702D935541B6F3FDE471A254412DB29D5731935541FCA9F1E272A254415C8FC27D31935541C520B02275A25441250681AD34935541B6F3FD8475A254418B6CE72B35935541355EBAA975A25441BC749318359355411B2FDD1C77A2544104560E85379355412FDD243677A254416F1283A83793554139B4C8B677A254413108AC5C389355414A0C029379A254413BDF4F1D3B9355419102F4F578A25441AA6AED343A93554148E17AB477A254417B14AE573893554152B81E3577A2544148E17AA437935541B81E851B77A254410AD7A380379355419A9999A975A254413D0AD7133593554148E17A8475A25441713D0A2735935541295C8F2275A2544185EB51A83493554148E17AE472A25441A4703D7A31935541291701E871A2544182A89F5431935541819543D375A25441000000702D93554101030000000100000006000000B579E52F7FA25441B2E4F0124393554104560E557FA254410C022B57439355417593186C81A254418FC2F540469355413EC2875880A254417C5FD9C04493554152B81E557FA25441713D0A5743935541B579E52F7FA25441B2E4F01243935541010300000001000000070000007593186C81A254418FC2F54046935541DD2406F182A2544189416095489355416ABC744B85A254415839B4C84B935541E94EE8C784A254412D23CB154B93554114AE47F182A2544152B81E95489355412EF656CF81A25441B81E26D9469355417593186C81A254418FC2F5404693554101030000000100000005000000809754BF85A25441F27DDB674C9355416F12839086A254410C022B874D935541652160F887A2544191B2E8894F9355410AD7A39086A25441713D0A874D935541809754BF85A25441F27DDB674C93554101030000000100000006000000666666D688A2544191ED7CC750935541FCA9F1328AA25441AAF1D2BD5293554131A117908AA254417F880C4453935541333333338AA25441E17A14BE5293554123BD00B289A25441541EFD0352935541666666D688A2544191ED7CC7509355410103000000010000000400000031A117908AA254417F880C44539355415839B4108BA25441894160FD5393554149A117908AA25441A1880C445393554131A117908AA254417F880C4453935541010300000001000000040000005839B4108BA25441894160FD53935541FA41670E8CA25441C185F56755935541AF3E670E8CA254410C81F567559355415839B4108BA25441894160FD5393554101030000000100000009000000FA41670E8CA25441C185F56755935541EC51B8568DA25441A01A2F3D579355412FDD24468FA2544104560E0D5A9355410681958B90A2544121B072D85B93554182A07A2C91A25441514995BB5C935541B81E858B90A2544185EB51D85B935541666666468FA25441CDCCCC0C5A935541713D0A578DA25441D7A3703D57935541FA41670E8CA25441C185F567559355410103000000010000000400000082A07A2C91A25441514995BB5C935541B6F3FD6C91A254419EEFA7165D935541C4A37A2C91A25441EA4D95BB5C93554182A07A2C91A25441514995BB5C93554101030000000100000004000000A5A644AD91A25441FE677FDD64935541FCA9F1DA91A25441A245B62B6593554117A844AD91A25441776A7FDD64935541A5A644AD91A25441FE677FDD649355410103000000010000000400000056D0BCD993A25441741BC98B659355415BD2BCD993A25441D51BC98B6593554152B81E6593A254415C8FC2756593554156D0BCD993A25441741BC98B6593554101030000000100000007000000AE47E1BA98A25441DF4F8D97679355416DE7FB619AA25441EE7C3FF569935541BA490C929CA25441D578E9166D935541E8228C9C9AA25441010F13496A9355411F85EB619AA2544152B81EF569935541E90F4B049AA2544185E71F6F69935541AE47E1BA98A25441DF4F8D976793554101030000000100000004000000D34D62989CA25441000000206D9355414A0C025B9DA25441508D97366E9355412C12DF499DA25441E3DE0F1E6E935541D34D62989CA25441000000206D93554101030000000100000004000000D5F04439A0A254416BFCF05872935541E9F34439A0A25441E200F1587293554100000000A1A254418FC2F57873935541D5F04439A0A254416BFCF05872935541010300000001000000040000002FDD247EA2A25441FA7E6A8C759355417F6ABC2CA3A25441BE9F1A7F76935541D2A270D5A2A25441F18DC205769355412FDD247EA2A25441FA7E6A8C75935541010300000001000000050000007F6ABC2CA3A25441BE9F1A7F769355414D412ABFA4A2544170642EBF7893554114AE4771A5A25441E17A14BE79935541B2372ABFA4A25441AF562EBF789355417F6ABC2CA3A25441BE9F1A7F7693554101030000000100000005000000B81E85FBADA25441000000F085935541022B87DEAFA25441F2D24DA2889355417B14AEE7AFA25441F6285CAF88935541EC51B8DEAFA25441295C8FA288935541B81E85FBADA25441000000F085935541 - - - 010300000001000000090000001340670E8CA254410883F56755935541713D0A578DA25441D7A3703D57935541666666468FA25441CDCCCC0C5A935541B81E858B90A2544185EB51D85B935541CD9D7A2C91A254417E4595BB5C9355410681958B90A2544121B072D85B9355412FDD24468FA2544104560E0D5A935541EC51B8568DA25441A01A2F3D579355411340670E8CA254410883F56755935541 - - - 5 - - - - diff -Nru geos-3.1.0/tests/xmltester/hexwkb.xml geos-3.2.2/tests/xmltester/hexwkb.xml --- geos-3.1.0/tests/xmltester/hexwkb.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/hexwkb.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,61 +0,0 @@ - - - - - - HEXWKB (Little Endian) POINT(0 1) - - 01010000000000000000000000000000000000F03F - - true - - - - HEXWKB (Little Endian) LINESTRING(0 1, 2 3, 4 5) - - 0102000000030000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000001440 - - true - - - - HEXWKB (Little Endian) POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)) - - 010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000 - - true - - - - HEXWKB (Little Endian) MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0) - - 010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 - - true - - - - HEXWKB (Little Endian) MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)) - - 01050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440 - - true - - - - HEXWKB (Little Endian) MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))) - - 010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A40000000000000394000000000000039400000000000003940 - - true - - - - HEXWKB (Little Endian) GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))),MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)),MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)) - - 010700000003000000010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A4000000000000039400000000000003940000000000000394001050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 - - true - - - diff -Nru geos-3.1.0/tests/xmltester/hole_from_shell.xml geos-3.2.2/tests/xmltester/hole_from_shell.xml --- geos-3.1.0/tests/xmltester/hole_from_shell.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/hole_from_shell.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ - - - -GEOS 3.0.0_rc4 bufferReducedPrecision - -MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), - ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) - - - -MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), - ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) - - - - diff -Nru geos-3.1.0/tests/xmltester/hole_red.xml geos-3.2.2/tests/xmltester/hole_red.xml --- geos-3.1.0/tests/xmltester/hole_red.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/hole_red.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ - - - -GEOS 3.0.0_rc4 bufferReducedPrecision - -MULTIPOLYGON ( - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) -) - - - -MULTIPOLYGON ( - ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), - ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), - (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) -) - - - - diff -Nru geos-3.1.0/tests/xmltester/linemerge.xml geos-3.2.2/tests/xmltester/linemerge.xml --- geos-3.1.0/tests/xmltester/linemerge.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/linemerge.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,13 +0,0 @@ - - -Case # - -MULTILINESTRING((0 0, 10 0), (10 0, 20 0)) - - - -GEOMETRYCOLLECTION ( LINESTRING(0 0, 10 0, 20 0) ) - - - - diff -Nru geos-3.1.0/tests/xmltester/Makefile.am geos-3.2.2/tests/xmltester/Makefile.am --- geos-3.1.0/tests/xmltester/Makefile.am 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/Makefile.am 2009-10-23 09:34:28.000000000 +0100 @@ -8,7 +8,65 @@ EXTRA_DIST = testrunner.sh -SAFE_XMLTESTS=$(srcdir)/testLeaksBig.xml $(srcdir)/hexwkb.xml $(srcdir)/test.xml $(srcdir)/linemerge.xml $(srcdir)/TestInteriorPoint.xml $(srcdir)/TestCentroid.xml $(srcdir)/TestIsValid.xml $(srcdir)/TestValid.xml $(srcdir)/TestValid2.xml $(srcdir)/TestValid2-big.xml $(srcdir)/robustness.xml $(srcdir)/stmlf-cases-20061020.xml $(srcdir)/TestRobustOverlayFixed.xml $(srcdir)/fme.xml $(srcdir)/TestBufferExternal.xml $(srcdir)/heisenbugs.xml $(srcdir)/stmlf-cases-20070119.xml $(srcdir)/badguy3.xml $(srcdir)/hole_from_shell.xml $(srcdir)/hole_red.xml +SAFE_XMLTESTS=$(srcdir)/tests/testLeaksBig.xml \ + $(srcdir)/tests/split.xml \ + $(srcdir)/tests/hexwkb.xml \ + $(srcdir)/tests/test.xml \ + $(srcdir)/tests/linemerge.xml \ + $(srcdir)/tests/TestIsValid.xml \ + $(srcdir)/tests/robustness.xml \ + $(srcdir)/tests/buffer.xml \ + $(srcdir)/tests/test.xml \ + $(srcdir)/tests/singlesidedbuffer.xml \ + $(srcdir)/tests/bug176.xml \ + $(srcdir)/tests/bug188.xml \ + $(srcdir)/tests/bug244.xml \ + $(srcdir)/tests/bug275.xml \ + $(srcdir)/tests/general/TestBoundary.xml \ + $(srcdir)/tests/general/TestBuffer.xml \ + $(srcdir)/tests/general/TestBufferMitredJoin.xml \ + $(srcdir)/tests/general/TestCentroid.xml \ + $(srcdir)/tests/general/TestConvexHull.xml \ + $(srcdir)/tests/general/TestConvexHull-big.xml \ + $(srcdir)/tests/general/TestFunctionAAPrec.xml \ + $(srcdir)/tests/general/TestFunctionAA.xml \ + $(srcdir)/tests/general/TestFunctionLAPrec.xml \ + $(srcdir)/tests/general/TestFunctionLA.xml \ + $(srcdir)/tests/general/TestFunctionLLPrec.xml \ + $(srcdir)/tests/general/TestFunctionLL.xml \ + $(srcdir)/tests/general/TestFunctionPA.xml \ + $(srcdir)/tests/general/TestFunctionPLPrec.xml \ + $(srcdir)/tests/general/TestFunctionPL.xml \ + $(srcdir)/tests/general/TestFunctionPP.xml \ + $(srcdir)/tests/general/TestInteriorPoint.xml \ + $(srcdir)/tests/general/TestRectanglePredicate.xml \ + $(srcdir)/tests/general/TestRelateAA.xml \ + $(srcdir)/tests/general/TestRelateLA.xml \ + $(srcdir)/tests/general/TestRelateLL.xml \ + $(srcdir)/tests/general/TestRelatePL.xml \ + $(srcdir)/tests/general/TestRelateAC.xml \ + $(srcdir)/tests/general/TestRelateLC.xml \ + $(srcdir)/tests/general/TestRelatePA.xml \ + $(srcdir)/tests/general/TestRelatePP.xml \ + $(srcdir)/tests/general/TestSimple.xml \ + $(srcdir)/tests/general/TestValid.xml \ + $(srcdir)/tests/general/TestValid2.xml \ + $(srcdir)/tests/general/TestValid2-big.xml \ + $(srcdir)/tests/general/TestWithinDistance.xml \ + $(srcdir)/tests/stmlf/stmlf-cases-20061020.xml \ + $(srcdir)/tests/stmlf/stmlf-cases-20070119.xml \ + $(srcdir)/tests/robust/TestRobustOverlayFixed.xml \ + $(srcdir)/tests/robust/TestRobustRelate.xml \ + $(srcdir)/tests/fme.xml \ + $(srcdir)/tests/TestBufferExternal.xml \ + $(srcdir)/tests/TestBufferExternal2.xml \ + $(srcdir)/tests/heisenbugs.xml \ + $(srcdir)/tests/badguy3.xml \ + $(srcdir)/tests/hole_from_shell.xml \ + $(srcdir)/tests/hole_red.xml \ + $(srcdir)/tests/safe/16595.xml \ + $(srcdir)/tests/safe/16596.xml + XMLTESTS=$(SAFE_XMLTESTS) @@ -27,11 +85,17 @@ SimpleWKTTester_SOURCES = SimpleWKTTester.cpp SimpleWKTTester_LDADD = $(LIBS) -XMLTester_SOURCES = XMLTester.cpp markup/MarkupSTL.cpp markup/MarkupSTL.h test.xml XMLTester.h +XMLTester_SOURCES = XMLTester.cpp XMLTester.h \ + tinyxml/tinyxml.h tinyxml/tinyxml.cpp \ + tinyxml/tinystr.h tinyxml/tinystr.cpp \ + tinyxml/tinyxmlerror.cpp tinyxml/tinyxmlparser.cpp \ + BufferResultMatcher.h BufferResultMatcher.cpp \ + SingleSidedBufferResultMatcher.h SingleSidedBufferResultMatcher.cpp + XMLTester_LDADD = $(LIBS) INCLUDES = -I$(top_srcdir)/source/headers -INCLUDES += -I$(top_srcdir)/source/io/markup +INCLUDES += -I$(top_srcdir)/source/io/tinyxml -DTIXML_USE_STL static: $(CXX) $(CXXFLAGS) -I../headers -o staticXMLTester XMLTester.cpp MarkupSTL.o ../../source/geom/.libs/libgeos.a @@ -39,7 +103,7 @@ test: XMLTester ./XMLTester $(XMLTESTS) -testrunner: testrunner.sh +testrunner: testrunner.sh Makefile sh $(srcdir)/testrunner.sh $@ $(SAFE_XMLTESTS) verbose-test: XMLTester diff -Nru geos-3.1.0/tests/xmltester/Makefile.in geos-3.2.2/tests/xmltester/Makefile.in --- geos-3.1.0/tests/xmltester/Makefile.in 2009-03-11 19:14:07.000000000 +0000 +++ geos-3.2.2/tests/xmltester/Makefile.in 2010-04-18 16:08:15.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -18,17 +19,12 @@ #top_srcdir=@top_srcdir@ #top_builddir=@top_builddir@ -SOURCES = $(SimpleWKTTester_SOURCES) $(XMLTester_SOURCES) - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = ../.. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -49,6 +45,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -57,42 +58,48 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = PROGRAMS = $(noinst_PROGRAMS) am_SimpleWKTTester_OBJECTS = SimpleWKTTester.$(OBJEXT) SimpleWKTTester_OBJECTS = $(am_SimpleWKTTester_OBJECTS) -am__DEPENDENCIES_1 = $(top_builddir)/source/libgeos.la -SimpleWKTTester_DEPENDENCIES = $(am__DEPENDENCIES_1) -am_XMLTester_OBJECTS = XMLTester.$(OBJEXT) MarkupSTL.$(OBJEXT) +SimpleWKTTester_DEPENDENCIES = $(LIBS) +am_XMLTester_OBJECTS = XMLTester.$(OBJEXT) tinyxml.$(OBJEXT) \ + tinystr.$(OBJEXT) tinyxmlerror.$(OBJEXT) \ + tinyxmlparser.$(OBJEXT) BufferResultMatcher.$(OBJEXT) \ + SingleSidedBufferResultMatcher.$(OBJEXT) XMLTester_OBJECTS = $(am_XMLTester_OBJECTS) -XMLTester_DEPENDENCIES = $(am__DEPENDENCIES_1) -DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos +XMLTester_DEPENDENCIES = $(LIBS) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/source/headers -I$(top_builddir)/source/headers/geos depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles +am__mv = mv -f CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ - $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ SOURCES = $(SimpleWKTTester_SOURCES) $(XMLTester_SOURCES) DIST_SOURCES = $(SimpleWKTTester_SOURCES) $(XMLTester_SOURCES) ETAGS = etags CTAGS = ctags +am__tty_colors = \ +red=; grn=; lgn=; blu=; std= DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -120,21 +127,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -143,22 +146,30 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ #bin_PROGRAMS = XMLTester # CTS LIBS = $(top_builddir)/source/libgeos.la LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -179,6 +190,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -190,19 +202,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -214,40 +220,111 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ TESTS = testrunner CLEANFILES = testrunner EXTRA_DIST = testrunner.sh $(XMLTESTS) -SAFE_XMLTESTS = $(srcdir)/testLeaksBig.xml $(srcdir)/hexwkb.xml $(srcdir)/test.xml $(srcdir)/linemerge.xml $(srcdir)/TestInteriorPoint.xml $(srcdir)/TestCentroid.xml $(srcdir)/TestIsValid.xml $(srcdir)/TestValid.xml $(srcdir)/TestValid2.xml $(srcdir)/TestValid2-big.xml $(srcdir)/robustness.xml $(srcdir)/stmlf-cases-20061020.xml $(srcdir)/TestRobustOverlayFixed.xml $(srcdir)/fme.xml $(srcdir)/TestBufferExternal.xml $(srcdir)/heisenbugs.xml $(srcdir)/stmlf-cases-20070119.xml $(srcdir)/badguy3.xml $(srcdir)/hole_from_shell.xml $(srcdir)/hole_red.xml +SAFE_XMLTESTS = $(srcdir)/tests/testLeaksBig.xml \ + $(srcdir)/tests/split.xml \ + $(srcdir)/tests/hexwkb.xml \ + $(srcdir)/tests/test.xml \ + $(srcdir)/tests/linemerge.xml \ + $(srcdir)/tests/TestIsValid.xml \ + $(srcdir)/tests/robustness.xml \ + $(srcdir)/tests/buffer.xml \ + $(srcdir)/tests/test.xml \ + $(srcdir)/tests/singlesidedbuffer.xml \ + $(srcdir)/tests/bug176.xml \ + $(srcdir)/tests/bug188.xml \ + $(srcdir)/tests/bug244.xml \ + $(srcdir)/tests/bug275.xml \ + $(srcdir)/tests/general/TestBoundary.xml \ + $(srcdir)/tests/general/TestBuffer.xml \ + $(srcdir)/tests/general/TestBufferMitredJoin.xml \ + $(srcdir)/tests/general/TestCentroid.xml \ + $(srcdir)/tests/general/TestConvexHull.xml \ + $(srcdir)/tests/general/TestConvexHull-big.xml \ + $(srcdir)/tests/general/TestFunctionAAPrec.xml \ + $(srcdir)/tests/general/TestFunctionAA.xml \ + $(srcdir)/tests/general/TestFunctionLAPrec.xml \ + $(srcdir)/tests/general/TestFunctionLA.xml \ + $(srcdir)/tests/general/TestFunctionLLPrec.xml \ + $(srcdir)/tests/general/TestFunctionLL.xml \ + $(srcdir)/tests/general/TestFunctionPA.xml \ + $(srcdir)/tests/general/TestFunctionPLPrec.xml \ + $(srcdir)/tests/general/TestFunctionPL.xml \ + $(srcdir)/tests/general/TestFunctionPP.xml \ + $(srcdir)/tests/general/TestInteriorPoint.xml \ + $(srcdir)/tests/general/TestRectanglePredicate.xml \ + $(srcdir)/tests/general/TestRelateAA.xml \ + $(srcdir)/tests/general/TestRelateLA.xml \ + $(srcdir)/tests/general/TestRelateLL.xml \ + $(srcdir)/tests/general/TestRelatePL.xml \ + $(srcdir)/tests/general/TestRelateAC.xml \ + $(srcdir)/tests/general/TestRelateLC.xml \ + $(srcdir)/tests/general/TestRelatePA.xml \ + $(srcdir)/tests/general/TestRelatePP.xml \ + $(srcdir)/tests/general/TestSimple.xml \ + $(srcdir)/tests/general/TestValid.xml \ + $(srcdir)/tests/general/TestValid2.xml \ + $(srcdir)/tests/general/TestValid2-big.xml \ + $(srcdir)/tests/general/TestWithinDistance.xml \ + $(srcdir)/tests/stmlf/stmlf-cases-20061020.xml \ + $(srcdir)/tests/stmlf/stmlf-cases-20070119.xml \ + $(srcdir)/tests/robust/TestRobustOverlayFixed.xml \ + $(srcdir)/tests/robust/TestRobustRelate.xml \ + $(srcdir)/tests/fme.xml \ + $(srcdir)/tests/TestBufferExternal.xml \ + $(srcdir)/tests/TestBufferExternal2.xml \ + $(srcdir)/tests/heisenbugs.xml \ + $(srcdir)/tests/badguy3.xml \ + $(srcdir)/tests/hole_from_shell.xml \ + $(srcdir)/tests/hole_red.xml \ + $(srcdir)/tests/safe/16595.xml \ + $(srcdir)/tests/safe/16596.xml + XMLTESTS = $(SAFE_XMLTESTS) # -lmpatrol -lbfd -lintl -liberty -limagehlp @@ -255,10 +332,16 @@ # CTS_LDADD = $(LIBS) SimpleWKTTester_SOURCES = SimpleWKTTester.cpp SimpleWKTTester_LDADD = $(LIBS) -XMLTester_SOURCES = XMLTester.cpp markup/MarkupSTL.cpp markup/MarkupSTL.h test.xml XMLTester.h +XMLTester_SOURCES = XMLTester.cpp XMLTester.h \ + tinyxml/tinyxml.h tinyxml/tinyxml.cpp \ + tinyxml/tinystr.h tinyxml/tinystr.cpp \ + tinyxml/tinyxmlerror.cpp tinyxml/tinyxmlparser.cpp \ + BufferResultMatcher.h BufferResultMatcher.cpp \ + SingleSidedBufferResultMatcher.h SingleSidedBufferResultMatcher.cpp + XMLTester_LDADD = $(LIBS) INCLUDES = -I$(top_srcdir)/source/headers \ - -I$(top_srcdir)/source/io/markup + -I$(top_srcdir)/source/io/tinyxml -DTIXML_USE_STL all: all-am .SUFFIXES: @@ -267,14 +350,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/xmltester/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tests/xmltester/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/xmltester/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tests/xmltester/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -292,19 +375,22 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list SimpleWKTTester$(EXEEXT): $(SimpleWKTTester_OBJECTS) $(SimpleWKTTester_DEPENDENCIES) @rm -f SimpleWKTTester$(EXEEXT) - $(CXXLINK) $(SimpleWKTTester_LDFLAGS) $(SimpleWKTTester_OBJECTS) $(SimpleWKTTester_LDADD) $(LIBS) + $(CXXLINK) $(SimpleWKTTester_OBJECTS) $(SimpleWKTTester_LDADD) $(LIBS) XMLTester$(EXEEXT): $(XMLTester_OBJECTS) $(XMLTester_DEPENDENCIES) @rm -f XMLTester$(EXEEXT) - $(CXXLINK) $(XMLTester_LDFLAGS) $(XMLTester_OBJECTS) $(XMLTester_LDADD) $(LIBS) + $(CXXLINK) $(XMLTester_OBJECTS) $(XMLTester_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -312,44 +398,91 @@ distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MarkupSTL.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/BufferResultMatcher.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleWKTTester.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SingleSidedBufferResultMatcher.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XMLTester.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tinystr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tinyxml.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tinyxmlerror.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tinyxmlparser.Po@am__quote@ .cpp.o: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: -@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: -@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< -MarkupSTL.o: markup/MarkupSTL.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MarkupSTL.o -MD -MP -MF "$(DEPDIR)/MarkupSTL.Tpo" -c -o MarkupSTL.o `test -f 'markup/MarkupSTL.cpp' || echo '$(srcdir)/'`markup/MarkupSTL.cpp; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MarkupSTL.Tpo" "$(DEPDIR)/MarkupSTL.Po"; else rm -f "$(DEPDIR)/MarkupSTL.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='markup/MarkupSTL.cpp' object='MarkupSTL.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MarkupSTL.o `test -f 'markup/MarkupSTL.cpp' || echo '$(srcdir)/'`markup/MarkupSTL.cpp - -MarkupSTL.obj: markup/MarkupSTL.cpp -@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MarkupSTL.obj -MD -MP -MF "$(DEPDIR)/MarkupSTL.Tpo" -c -o MarkupSTL.obj `if test -f 'markup/MarkupSTL.cpp'; then $(CYGPATH_W) 'markup/MarkupSTL.cpp'; else $(CYGPATH_W) '$(srcdir)/markup/MarkupSTL.cpp'; fi`; \ -@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MarkupSTL.Tpo" "$(DEPDIR)/MarkupSTL.Po"; else rm -f "$(DEPDIR)/MarkupSTL.Tpo"; exit 1; fi -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='markup/MarkupSTL.cpp' object='MarkupSTL.obj' libtool=no @AMDEPBACKSLASH@ +tinyxml.o: tinyxml/tinyxml.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinyxml.o -MD -MP -MF $(DEPDIR)/tinyxml.Tpo -c -o tinyxml.o `test -f 'tinyxml/tinyxml.cpp' || echo '$(srcdir)/'`tinyxml/tinyxml.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinyxml.Tpo $(DEPDIR)/tinyxml.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinyxml.cpp' object='tinyxml.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxml.o `test -f 'tinyxml/tinyxml.cpp' || echo '$(srcdir)/'`tinyxml/tinyxml.cpp + +tinyxml.obj: tinyxml/tinyxml.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinyxml.obj -MD -MP -MF $(DEPDIR)/tinyxml.Tpo -c -o tinyxml.obj `if test -f 'tinyxml/tinyxml.cpp'; then $(CYGPATH_W) 'tinyxml/tinyxml.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinyxml.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinyxml.Tpo $(DEPDIR)/tinyxml.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinyxml.cpp' object='tinyxml.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxml.obj `if test -f 'tinyxml/tinyxml.cpp'; then $(CYGPATH_W) 'tinyxml/tinyxml.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinyxml.cpp'; fi` + +tinystr.o: tinyxml/tinystr.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinystr.o -MD -MP -MF $(DEPDIR)/tinystr.Tpo -c -o tinystr.o `test -f 'tinyxml/tinystr.cpp' || echo '$(srcdir)/'`tinyxml/tinystr.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinystr.Tpo $(DEPDIR)/tinystr.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinystr.cpp' object='tinystr.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinystr.o `test -f 'tinyxml/tinystr.cpp' || echo '$(srcdir)/'`tinyxml/tinystr.cpp + +tinystr.obj: tinyxml/tinystr.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinystr.obj -MD -MP -MF $(DEPDIR)/tinystr.Tpo -c -o tinystr.obj `if test -f 'tinyxml/tinystr.cpp'; then $(CYGPATH_W) 'tinyxml/tinystr.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinystr.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinystr.Tpo $(DEPDIR)/tinystr.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinystr.cpp' object='tinystr.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinystr.obj `if test -f 'tinyxml/tinystr.cpp'; then $(CYGPATH_W) 'tinyxml/tinystr.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinystr.cpp'; fi` + +tinyxmlerror.o: tinyxml/tinyxmlerror.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinyxmlerror.o -MD -MP -MF $(DEPDIR)/tinyxmlerror.Tpo -c -o tinyxmlerror.o `test -f 'tinyxml/tinyxmlerror.cpp' || echo '$(srcdir)/'`tinyxml/tinyxmlerror.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinyxmlerror.Tpo $(DEPDIR)/tinyxmlerror.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinyxmlerror.cpp' object='tinyxmlerror.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxmlerror.o `test -f 'tinyxml/tinyxmlerror.cpp' || echo '$(srcdir)/'`tinyxml/tinyxmlerror.cpp + +tinyxmlerror.obj: tinyxml/tinyxmlerror.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinyxmlerror.obj -MD -MP -MF $(DEPDIR)/tinyxmlerror.Tpo -c -o tinyxmlerror.obj `if test -f 'tinyxml/tinyxmlerror.cpp'; then $(CYGPATH_W) 'tinyxml/tinyxmlerror.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinyxmlerror.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinyxmlerror.Tpo $(DEPDIR)/tinyxmlerror.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinyxmlerror.cpp' object='tinyxmlerror.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxmlerror.obj `if test -f 'tinyxml/tinyxmlerror.cpp'; then $(CYGPATH_W) 'tinyxml/tinyxmlerror.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinyxmlerror.cpp'; fi` + +tinyxmlparser.o: tinyxml/tinyxmlparser.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinyxmlparser.o -MD -MP -MF $(DEPDIR)/tinyxmlparser.Tpo -c -o tinyxmlparser.o `test -f 'tinyxml/tinyxmlparser.cpp' || echo '$(srcdir)/'`tinyxml/tinyxmlparser.cpp +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinyxmlparser.Tpo $(DEPDIR)/tinyxmlparser.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinyxmlparser.cpp' object='tinyxmlparser.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxmlparser.o `test -f 'tinyxml/tinyxmlparser.cpp' || echo '$(srcdir)/'`tinyxml/tinyxmlparser.cpp + +tinyxmlparser.obj: tinyxml/tinyxmlparser.cpp +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT tinyxmlparser.obj -MD -MP -MF $(DEPDIR)/tinyxmlparser.Tpo -c -o tinyxmlparser.obj `if test -f 'tinyxml/tinyxmlparser.cpp'; then $(CYGPATH_W) 'tinyxml/tinyxmlparser.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinyxmlparser.cpp'; fi` +@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/tinyxmlparser.Tpo $(DEPDIR)/tinyxmlparser.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tinyxml/tinyxmlparser.cpp' object='tinyxmlparser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o MarkupSTL.obj `if test -f 'markup/MarkupSTL.cpp'; then $(CYGPATH_W) 'markup/MarkupSTL.cpp'; else $(CYGPATH_W) '$(srcdir)/markup/MarkupSTL.cpp'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o tinyxmlparser.obj `if test -f 'tinyxml/tinyxmlparser.cpp'; then $(CYGPATH_W) 'tinyxml/tinyxmlparser.cpp'; else $(CYGPATH_W) '$(srcdir)/tinyxml/tinyxmlparser.cpp'; fi` mostlyclean-libtool: -rm -f *.lo @@ -357,54 +490,54 @@ 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; }'`; \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) - tags=; \ + set x; \ 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 \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ 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" \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -412,7 +545,8 @@ check-TESTS: $(TESTS) @failed=0; all=0; xfail=0; xpass=0; skip=0; \ srcdir=$(srcdir); export srcdir; \ - list='$(TESTS)'; \ + list=' $(TESTS) '; \ + $(am__tty_colors); \ if test -n "$$list"; then \ for tst in $$list; do \ if test -f ./$$tst; then dir=./; \ @@ -421,49 +555,63 @@ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ + *[\ \ ]$$tst[\ \ ]*) \ xpass=`expr $$xpass + 1`; \ failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ + col=$$red; res=XPASS; \ ;; \ *) \ - echo "PASS: $$tst"; \ + col=$$grn; res=PASS; \ ;; \ esac; \ elif test $$? -ne 77; then \ all=`expr $$all + 1`; \ case " $(XFAIL_TESTS) " in \ - *" $$tst "*) \ + *[\ \ ]$$tst[\ \ ]*) \ xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ + col=$$lgn; res=XFAIL; \ ;; \ *) \ failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ + col=$$red; res=FAIL; \ ;; \ esac; \ else \ skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ + col=$$blu; res=SKIP; \ fi; \ + echo "$${col}$$res$${std}: $$tst"; \ done; \ + if test "$$all" -eq 1; then \ + tests="test"; \ + All=""; \ + else \ + tests="tests"; \ + All="All "; \ + fi; \ if test "$$failed" -eq 0; then \ if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ + banner="$$All$$all $$tests passed"; \ else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ + banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ fi; \ else \ if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ + banner="$$failed of $$all $$tests failed"; \ else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ + banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ fi; \ fi; \ dashes="$$banner"; \ skipped=""; \ if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ + if test "$$skip" -eq 1; then \ + skipped="($$skip test was not run)"; \ + else \ + skipped="($$skip tests were not run)"; \ + fi; \ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ dashes="$$skipped"; \ fi; \ @@ -474,39 +622,45 @@ dashes="$$report"; \ fi; \ dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ + if test "$$failed" -eq 0; then \ + echo "$$grn$$dashes"; \ + else \ + echo "$$red$$dashes"; \ + fi; \ echo "$$banner"; \ test -z "$$skipped" || echo "$$skipped"; \ test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ + echo "$$dashes$$std"; \ test "$$failed" -eq 0; \ else :; fi distdir: $(DISTFILES) - $(mkdir_p) $(distdir)/$(srcdir) - @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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -536,6 +690,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -549,7 +704,7 @@ -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-libtool distclean-tags + distclean-tags dvi: dvi-am @@ -557,18 +712,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -589,19 +764,23 @@ ps-am: -uninstall-am: uninstall-info-am +uninstall-am: + +.MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ clean-generic clean-libtool clean-noinstPROGRAMS 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 \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am 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 + tags uninstall uninstall-am static: @@ -610,11 +789,12 @@ test: XMLTester ./XMLTester $(XMLTESTS) -testrunner: testrunner.sh +testrunner: testrunner.sh Makefile sh $(srcdir)/testrunner.sh $@ $(SAFE_XMLTESTS) verbose-test: XMLTester ./XMLTester -v $(XMLTESTS) + # 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 -Nru geos-3.1.0/tests/xmltester/markup/MarkupSTL.cpp geos-3.2.2/tests/xmltester/markup/MarkupSTL.cpp --- geos-3.1.0/tests/xmltester/markup/MarkupSTL.cpp 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/markup/MarkupSTL.cpp 1970-01-01 01:00:00.000000000 +0100 @@ -1,1379 +0,0 @@ -// $Id: MarkupSTL.cpp 1820 2006-09-06 16:54:23Z mloskot $ -// -// MarkupSTL.cpp: implementation of the CMarkupSTL class. -// -// Markup Release 6.3 -// Copyright (C) 1999-2002 First Objective Software, Inc. All rights reserved -// Go to www.firstobject.com for the latest CMarkup and EDOM documentation -// Use in commercial applications requires written permission -// This software is provided "as is", with no warranty. - -#include "MarkupSTL.h" -#include - -using namespace std; - -#ifdef _DEBUG -#undef THIS_FILE -static char THIS_FILE[]=__FILE__; -#define new DEBUG_NEW -#endif - - -void CMarkupSTL::operator=( const CMarkupSTL& markup ) -{ - m_iPosParent = markup.m_iPosParent; - m_iPos = markup.m_iPos; - m_iPosChild = markup.m_iPosChild; - m_iPosFree = markup.m_iPosFree; - m_nNodeType = markup.m_nNodeType; - m_aPos = markup.m_aPos; - m_strDoc = markup.m_strDoc; - MARKUP_SETDEBUGSTATE; -} - -bool CMarkupSTL::SetDoc( const char* szDoc ) -{ - // Reset indexes - m_iPosFree = 1; - ResetPos(); - m_mapSavedPos.clear(); - - // Set document text - if ( szDoc ) - m_strDoc = szDoc; - else - m_strDoc.erase(); - - // Starting size of position array: 1 element per 64 bytes of document - // Tight fit when parsing small doc, only 0 to 2 reallocs when parsing large doc - // Start at 8 when creating new document - unsigned int nStartSize = m_strDoc.size() / 64 + 8; - if ( m_aPos.size() < nStartSize ) - m_aPos.resize( nStartSize ); - - // Parse document - bool bWellFormed = false; - if ( m_strDoc.size() ) - { - m_aPos[0].Clear(); - int iPos = x_ParseElem( 0 ); - if ( iPos > 0 ) - { - m_aPos[0].iElemChild = iPos; - bWellFormed = true; - } - } - - // Clear indexes if parse failed or empty document - if ( ! bWellFormed ) - { - m_aPos[0].Clear(); - m_iPosFree = 1; - } - - ResetPos(); - return bWellFormed; -} - -bool CMarkupSTL::IsWellFormed() -{ - if ( m_aPos.size() && m_aPos[0].iElemChild ) - return true; - return false; -} - -bool CMarkupSTL::Load( const char* szFileName ) -{ - // Load document from file - bool bResult = false; - FILE* fp = fopen( szFileName, "rb" ); - if ( fp ) - { - // Determine file length - fseek( fp, 0L, SEEK_END ); - int nFileLen = ftell(fp); - fseek( fp, 0L, SEEK_SET ); - - // Load string - char *pBuffer = new char[nFileLen+1]; - //allocator mem; - //allocator::pointer pBuffer = mem.allocate(nFileLen+1, NULL); - if ( fread( pBuffer, nFileLen, 1, fp ) == 1 ) - { - pBuffer[nFileLen] = '\0'; - bResult = SetDoc( pBuffer ); - } - fclose(fp); - //mem.deallocate(pBuffer,1); - delete [] pBuffer; - } - if ( ! bResult ) - SetDoc(NULL); - MARKUP_SETDEBUGSTATE; - return bResult; -} - -bool CMarkupSTL::Save( const char* szFileName ) -{ - // Save document to file - bool bResult = false; - FILE* fp = fopen( szFileName, "wb" ); - if ( fp ) - { - // Save string - int nFileLen = m_strDoc.size(); - if ( ! nFileLen ) - bResult = true; - else if ( fwrite( m_strDoc.c_str(), nFileLen, 1, fp ) == 1 ) - bResult = true; - fclose(fp); - } - return bResult; -} - -bool CMarkupSTL::FindElem( const char* szName ) -{ - // Change current position only if found - // - if ( m_aPos.size() ) - { - int iPos = x_FindElem( m_iPosParent, m_iPos, szName ); - if ( iPos ) - { - // Assign new position - x_SetPos( m_aPos[iPos].iElemParent, iPos, 0 ); - return true; - } - } - return false; -} - -bool CMarkupSTL::FindChildElem( const char* szName ) -{ - // Change current child position only if found - // - // Shorthand: call this with no current main position - // means find child under root element - if ( ! m_iPos ) - FindElem(); - - int iPosChild = x_FindElem( m_iPos, m_iPosChild, szName ); - if ( iPosChild ) - { - // Assign new position - int iPos = m_aPos[iPosChild].iElemParent; - x_SetPos( m_aPos[iPos].iElemParent, iPos, iPosChild ); - return true; - } - - return false; -} - -string CMarkupSTL::GetTagName() const -{ - // Return the tag name at the current main position - string strTagName; - - if ( m_iPos ) - strTagName = x_GetTagName( m_iPos ); - return strTagName; -} - -bool CMarkupSTL::IntoElem() -{ - // If there is no child position and IntoElem is called it will succeed in release 6.3 - // (A subsequent call to FindElem will find the first element) - // The following short-hand behavior was never part of EDOM and was misleading - // It would find a child element if there was no current child element position and go into it - // It is removed in release 6.3, this change is NOT backwards compatible! - // if ( ! m_iPosChild ) - // FindChildElem(); - - if ( m_iPos && m_nNodeType == MNT_ELEMENT ) - { - x_SetPos( m_iPos, m_iPosChild, 0 ); - return true; - } - return false; -} - -bool CMarkupSTL::OutOfElem() -{ - // Go to parent element - if ( m_iPosParent ) - { - x_SetPos( m_aPos[m_iPosParent].iElemParent, m_iPosParent, m_iPos ); - return true; - } - return false; -} - -string CMarkupSTL::GetAttribName( int n ) const -{ - // Return nth attribute name of main position - if ( ! m_iPos || m_nNodeType != MNT_ELEMENT ) - return ""; - - TokenPos token( m_strDoc.c_str() ); - token.nNext = m_aPos[m_iPos].nStartL + 1; - for ( int nAttrib=0; nAttrib<=n; ++nAttrib ) - if ( ! x_FindAttrib(token) ) - return ""; - - // Return substring of document - return x_GetToken( token ); -} - -bool CMarkupSTL::SavePos( const char* szPosName ) -{ - // Save current element position in saved position map - if ( szPosName ) - { - SavedPos savedpos; - savedpos.iPosParent = m_iPosParent; - savedpos.iPos = m_iPos; - savedpos.iPosChild = m_iPosChild; - string strPosName = szPosName; - m_mapSavedPos[strPosName] = savedpos; - return true; - } - return false; -} - -bool CMarkupSTL::RestorePos( const char* szPosName ) -{ - // Restore element position if found in saved position map - if ( szPosName ) - { - string strPosName = szPosName; - mapSavedPosT::const_iterator iterSavePos = m_mapSavedPos.find( strPosName ); - if ( iterSavePos != m_mapSavedPos.end() ) - { - SavedPos savedpos = (*iterSavePos).second; - x_SetPos( savedpos.iPosParent, savedpos.iPos, savedpos.iPosChild ); - return true; - } - } - return false; -} - -bool CMarkupSTL::GetOffsets( int& nStart, int& nEnd ) const -{ - // Return document offsets of current main position element - // This is not part of EDOM but is used by the Markup project - if ( m_iPos ) - { - nStart = m_aPos[m_iPos].nStartL; - nEnd = m_aPos[m_iPos].nEndR; - return true; - } - return false; -} - -string CMarkupSTL::GetChildSubDoc() const -{ - if ( m_iPosChild ) - { - int nL = m_aPos[m_iPosChild].nStartL; - int nR = m_aPos[m_iPosChild].nEndR + 1; - TokenPos token( m_strDoc.c_str() ); - token.nNext = nR; - if ( ! x_FindToken(token) || m_strDoc[token.nL] == '<' ) - nR = token.nL; - return m_strDoc.substr( nL, nR - nL ); - } - return ""; -} - -bool CMarkupSTL::RemoveElem() -{ - // Remove current main position element - if ( m_iPos && m_nNodeType == MNT_ELEMENT ) - { - int iPos = x_RemoveElem( m_iPos ); - x_SetPos( m_iPosParent, iPos, 0 ); - return true; - } - return false; -} - -bool CMarkupSTL::RemoveChildElem() -{ - // Remove current child position element - if ( m_iPosChild ) - { - int iPosChild = x_RemoveElem( m_iPosChild ); - x_SetPos( m_iPosParent, m_iPos, iPosChild ); - return true; - } - return false; -} - -////////////////////////////////////////////////////////////////////// -// Private Methods -////////////////////////////////////////////////////////////////////// - -int CMarkupSTL::x_GetFreePos() -{ - // - // This returns the index of the next unused ElemPos in the array - // - if ( (unsigned)m_iPosFree == m_aPos.size() ) - m_aPos.resize( m_iPosFree + m_iPosFree / 2 ); - ++m_iPosFree; - return m_iPosFree - 1; -} - -int CMarkupSTL::x_ReleasePos() -{ - // - // This decrements the index of the next unused ElemPos in the array - // allowing the element index returned by GetFreePos() to be reused - // - --m_iPosFree; - return 0; -} - -int CMarkupSTL::x_ParseError( const char* szError, const char* szName ) -{ - if ( szName ) - { - char szFormat[300]; - sprintf( szFormat, szError, szName ); - m_strError = szFormat; - } - else - m_strError = szError; - x_ReleasePos(); - return -1; -} - -int CMarkupSTL::x_ParseElem( int iPosParent ) -{ - // This is either called by SetDoc, x_AddSubDoc, or itself recursively - // m_aPos[iPosParent].nEndL is where to start parsing for the child element - // This returns the new position if a tag is found, otherwise zero - // In all cases we need to get a new ElemPos, but release it if unused - // - int iPos = x_GetFreePos(); - m_aPos[iPos].nStartL = m_aPos[iPosParent].nEndL; - m_aPos[iPos].iElemParent = iPosParent; - m_aPos[iPos].iElemChild = 0; - m_aPos[iPos].iElemNext = 0; - - // Start Tag - // A loop is used to ignore all remarks tags and special tags - // i.e. , and - // So any tag beginning with ? or ! is ignored - // Loop past ignored tags - TokenPos token( m_strDoc.c_str() ); - token.nNext = m_aPos[iPosParent].nEndL; - string strName; - while ( strName.empty() ) - { - // Look for left angle bracket of start tag - m_aPos[iPos].nStartL = token.nNext; - if ( ! x_FindChar( token.szDoc, m_aPos[iPos].nStartL, '<' ) ) - return x_ParseError( "Element tag not found" ); - - // Set parent's End tag to start looking from here (or later) - m_aPos[iPosParent].nEndL = m_aPos[iPos].nStartL; - - // Determine whether this is an element, or bypass other type of node - token.nNext = m_aPos[iPos].nStartL + 1; - if ( x_FindToken( token ) ) - { - if ( token.bIsString ) - return x_ParseError( "Tag starts with quote" ); - char cFirstChar = m_strDoc[token.nL]; - if ( cFirstChar == '?' || cFirstChar == '!' ) - { - token.nNext = m_aPos[iPos].nStartL; - if ( ! x_ParseNode(token) ) - return x_ParseError( "Invalid node" ); - } - else if ( cFirstChar != '/' ) - { - strName = x_GetToken( token ); - // Look for end of tag - if ( ! x_FindChar(token.szDoc, token.nNext, '>') ) - return x_ParseError( "End of tag not found" ); - } - else - return x_ReleasePos(); // probably end tag of parent - } - else - return x_ParseError( "Abrupt end within tag" ); - } - m_aPos[iPos].nStartR = token.nNext; - - // Is ending mark within start tag, i.e. empty element? - if ( m_strDoc[m_aPos[iPos].nStartR-1] == '/' ) - { - // Empty element - // Close tag left is set to ending mark, and right to open tag right - m_aPos[iPos].nEndL = m_aPos[iPos].nStartR-1; - m_aPos[iPos].nEndR = m_aPos[iPos].nStartR; - } - else // look for end tag - { - // Element probably has contents - // Determine where to start looking for left angle bracket of end tag - // This is done by recursively parsing the contents of this element - int iInner, iInnerPrev = 0; - m_aPos[iPos].nEndL = m_aPos[iPos].nStartR + 1; - while ( (iInner = x_ParseElem( iPos )) > 0 ) - { - // Set links to iInner - if ( iInnerPrev ) - m_aPos[iInnerPrev].iElemNext = iInner; - else - m_aPos[iPos].iElemChild = iInner; - iInnerPrev = iInner; - - // Set offset to reflect child - m_aPos[iPos].nEndL = m_aPos[iInner].nEndR + 1; - } - if ( iInner == -1 ) - return -1; - - // Look for left angle bracket of end tag - if ( ! x_FindChar( token.szDoc, m_aPos[iPos].nEndL, '<' ) ) - return x_ParseError( "End tag of %s element not found", strName.c_str() ); - - // Look through tokens of end tag - token.nNext = m_aPos[iPos].nEndL + 1; - int nTokenCount = 0; - while ( x_FindToken( token ) ) - { - ++nTokenCount; - if ( ! token.bIsString ) - { - // Is first token not an end slash mark? - if ( nTokenCount == 1 && m_strDoc[token.nL] != '/' ) - return x_ParseError( "Expecting end tag of element %s", strName.c_str() ); - - else if ( nTokenCount == 2 && ! token.Match(strName.c_str()) ) - return x_ParseError( "End tag does not correspond to %s", strName.c_str() ); - - // Else is it a right angle bracket? - else if ( m_strDoc[token.nL] == '>' ) - break; - } - } - - // Was a right angle bracket not found? - if ( ! token.szDoc[token.nL] || nTokenCount < 2 ) - return x_ParseError( "End tag not completed for element %s", strName.c_str() ); - m_aPos[iPos].nEndR = token.nL; - } - - // Successfully parsed element (and contained elements) - return iPos; -} - -bool CMarkupSTL::x_FindChar( const char* szDoc, int& nChar, char c ) -{ - // static function - const char* pChar = &szDoc[nChar]; - while ( *pChar && *pChar != c ) - pChar += 1; - nChar = pChar - szDoc; - if ( ! *pChar ) - return false; - /* - while ( szDoc[nChar] && szDoc[nChar] != c ) - nChar += _tclen( &szDoc[nChar] ); - if ( ! szDoc[nChar] ) - return false; - */ - return true; -} - -bool CMarkupSTL::x_FindToken( CMarkupSTL::TokenPos& token ) -{ - // Starting at token.nNext, bypass whitespace and find the next token - // returns true on success, members of token point to token - // returns false on end of document, members point to end of document - const char* szDoc = token.szDoc; - int nChar = token.nNext; - token.bIsString = false; - - // By-pass leading whitespace - while ( szDoc[nChar] && strchr(" \t\n\r",szDoc[nChar]) ) - ++nChar; - if ( ! szDoc[nChar] ) - { - // No token was found before end of document - token.nL = nChar; - token.nR = nChar; - token.nNext = nChar; - return false; - } - - // Is it an opening quote? - char cFirstChar = szDoc[nChar]; - if ( cFirstChar == '\"' || cFirstChar == '\'' ) - { - token.bIsString = true; - - // Move past opening quote - ++nChar; - token.nL = nChar; - - // Look for closing quote - x_FindChar( token.szDoc, nChar, cFirstChar ); - - // Set right to before closing quote - token.nR = nChar - 1; - - // Set nChar past closing quote unless at end of document - if ( szDoc[nChar] ) - ++nChar; - } - else - { - // Go until special char or whitespace - token.nL = nChar; - while ( szDoc[nChar] && ! strchr(" \t\n\r<>=\\/?!",szDoc[nChar]) ) - nChar += 1; - - // Adjust end position if it is one special char - if ( nChar == token.nL ) - ++nChar; // it is a special char - token.nR = nChar - 1; - } - - // nNext points to one past last char of token - token.nNext = nChar; - return true; -} - -string CMarkupSTL::x_GetToken( const CMarkupSTL::TokenPos& token ) const -{ - // The token contains indexes into the document identifying a small substring - // Build the substring from those indexes and return it - if ( token.nL > token.nR ) - return ""; - return m_strDoc.substr( token.nL, - token.nR - token.nL + (((unsigned)token.nR comment - // dtd - // processing instruction - // cdata section - // element - // - if ( ! szDoc[token.nL+1] || ! szDoc[token.nL+2] ) - return 0; - char cFirstChar = szDoc[token.nL+1]; - const char* szEndOfNode = NULL; - if ( cFirstChar == '?' ) - { - nTypeFound = MNT_PROCESSING_INSTRUCTION; // processing instruction - szEndOfNode = "?>"; - } - else if ( cFirstChar == '!' ) - { - char cSecondChar = szDoc[token.nL+2]; - if ( cSecondChar == '[' ) - { - nTypeFound = MNT_CDATA_SECTION; - szEndOfNode = "]]>"; - } - else if ( cSecondChar == '-' ) - { - nTypeFound = MNT_COMMENT; - szEndOfNode = "-->"; - } - else - { - // Document type requires tokenizing because of strings and brackets - nTypeFound = 0; - int nBrackets = 0; - while ( x_FindToken(token) ) - { - if ( ! token.bIsString ) - { - char cChar = szDoc[token.nL]; - if ( cChar == '[' ) - ++nBrackets; - else if ( cChar == ']' ) - --nBrackets; - else if ( nBrackets == 0 && cChar == '>' ) - { - nTypeFound = MNT_DOCUMENT_TYPE; - break; - } - } - } - if ( ! nTypeFound ) - return 0; - } - } - else if ( cFirstChar == '/' ) - { - // End tag means no node found within parent element - return 0; - } - else - { - nTypeFound = MNT_ELEMENT; - } - - // Search for end of node if not found yet - if ( szEndOfNode ) - { - const char* pEnd = strstr( &szDoc[token.nNext], szEndOfNode ); - if ( ! pEnd ) - return 0; // not well-formed - token.nNext = (pEnd - szDoc) + strlen(szEndOfNode); - } - } - else if ( szDoc[token.nL] ) - { - // It is text or whitespace because it did not start with < - nTypeFound = MNT_WHITESPACE; - if ( x_FindToken(token) ) - { - if ( szDoc[token.nL] == '<' ) - token.nNext = token.nL; - else - { - nTypeFound = MNT_TEXT; - x_FindChar( token.szDoc, token.nNext, '<' ); - } - } - } - return nTypeFound; -} - -string CMarkupSTL::x_GetTagName( int iPos ) const -{ - // Return the tag name at specified element - TokenPos token( m_strDoc.c_str() ); - token.nNext = m_aPos[iPos].nStartL + 1; - if ( ! iPos || ! x_FindToken( token ) ) - return ""; - - // Return substring of document - return x_GetToken( token ); -} - -bool CMarkupSTL::x_FindAttrib( CMarkupSTL::TokenPos& token, const char* szAttrib ) const -{ - // If szAttrib is NULL find next attrib, otherwise find named attrib - // Return true if found - int nAttrib = 0; - for ( int nCount = 0; x_FindToken(token); ++nCount ) - { - if ( ! token.bIsString ) - { - // Is it the right angle bracket? - if ( m_strDoc[token.nL] == '>' || m_strDoc[token.nL] == '/' ) - break; // attrib not found - - // Equal sign - if ( m_strDoc[token.nL] == '=' ) - continue; - - // Potential attribute - if ( ! nAttrib && nCount ) - { - // Attribute name search? - if ( ! szAttrib || ! szAttrib[0] ) - return true; // return with token at attrib name - - // Compare szAttrib - if ( token.Match(szAttrib) ) - nAttrib = nCount; - } - } - else if ( nAttrib && nCount == nAttrib + 2 ) - { - return true; - } - } - - // Not found - return false; -} - -string CMarkupSTL::x_GetAttrib( int iPos, const char* szAttrib ) const -{ - // Return the value of the attrib at specified element - if ( ! iPos || m_nNodeType != MNT_ELEMENT ) - return ""; - - TokenPos token( m_strDoc.c_str() ); - token.nNext = m_aPos[iPos].nStartL + 1; - if ( szAttrib && x_FindAttrib( token, szAttrib ) ) - return x_TextFromDoc( token.nL, token.nR - (((unsigned)token.nR") != NULL ) - return false; - strNode = ""; - break; - } - return true; -} - -bool CMarkupSTL::x_SetData( int iPos, const char* szData, int nCDATA ) -{ - // Set data at specified position - // if nCDATA==1, set content of element to a CDATA Section - string strInsert; - - // Set data in iPos element - if ( ! iPos || m_aPos[iPos].iElemChild ) - return false; - - // Build strInsert from szData based on nCDATA - // If CDATA section not valid, use parsed text (PCDATA) instead - if ( nCDATA != 0 ) - if ( ! x_CreateNode(strInsert, MNT_CDATA_SECTION, szData) ) - nCDATA = 0; - if ( nCDATA == 0 ) - strInsert = x_TextToDoc( szData ); - - // Decide where to insert - int nInsertAt, nReplace; - if ( m_aPos[iPos].IsEmptyElement() ) - { - nInsertAt = m_aPos[iPos].nEndL; - nReplace = 1; - - // Pre-adjust since becomes data - string strTagName = x_GetTagName( iPos ); - m_aPos[iPos].nStartR -= 1; - m_aPos[iPos].nEndL -= (1 + strTagName.size()); - string strFormat; - strFormat = ">"; - strFormat += strInsert; - strFormat += "", token.nNext ); - if ( (unsigned int)nEndCDATA != string::npos && nEndCDATA < m_aPos[iPos].nEndL ) - { - return m_strDoc.substr( token.nL+9, nEndCDATA-token.nL-9 ); - } - } - return x_TextFromDoc( m_aPos[iPos].nStartR+1, m_aPos[iPos].nEndL-1 ); - } - return ""; -} - -string CMarkupSTL::x_TextToDoc( const char* szText, bool bAttrib ) const -{ - // - // < less than - // & ampersand - // > greater than - // - // and for attributes: - // - // ' apostrophe or single quote - // " double quote - // - static char* szaReplace[] = { "<","&",">","'",""" }; - const char* pFind = bAttrib?"<&>\'\"":"<&>"; - const char* pSource = szText; - string strResult; - int nLen = strlen( szText ); - strResult.reserve( nLen + nLen / 10 ); - char cSource = *pSource; - const char* pFound; - while ( cSource ) - { - if ( (pFound=strchr(pFind,cSource)) != NULL ) - { - pFound = szaReplace[pFound-pFind]; - strResult.append(pFound); - } - else - { - strResult += cSource; - } - cSource = *(++pSource); - } - return strResult; -} - -string CMarkupSTL::x_TextFromDoc( int nLeft, int nRight ) const -{ - // - // Conveniently the result is always the same or shorter in length - // - static char* szaCode[] = { "lt;","amp;","gt;","apos;","quot;" }; - static int anCodeLen[] = { 3,4,3,5,5 }; - static char* szSymbol = "<&>\'\""; - string strResult; - strResult.reserve( nRight - nLeft + 1 ); - const char* pSource = m_strDoc.c_str(); - int nChar = nLeft; - char cSource = pSource[nChar]; - while ( nChar <= nRight ) - { - if ( cSource == '&' ) - { - // If no match is found it means XML doc is invalid - // no devastating harm done, ampersand code will just be left in result - for ( int nMatch = 0; nMatch < 5; ++nMatch ) - { - if ( nChar <= nRight - anCodeLen[nMatch] - && strncmp(szaCode[nMatch],&pSource[nChar+1],anCodeLen[nMatch]) == 0 ) - { - cSource = szSymbol[nMatch]; - nChar += anCodeLen[nMatch]; - break; - } - } - } - strResult += cSource; - nChar++; - cSource = pSource[nChar]; - } - return strResult; -} - -void CMarkupSTL::x_DocChange( int nLeft, int nReplace, const string& strInsert ) -{ - // Insert strInsert int m_strDoc at nLeft replacing nReplace chars - // - m_strDoc.replace( nLeft, nReplace, strInsert); -} - -void CMarkupSTL::x_Adjust( int iPos, int nShift, bool bAfterPos ) -{ - // Loop through affected elements and adjust indexes - // Algorithm: - // 1. update children unless bAfterPos - // (if no children or bAfterPos is true, end tag of iPos not affected) - // 2. update next siblings and their children - // 3. go up until there is a next sibling of a parent and update end tags - // 4. step 2 - int iPosTop = m_aPos[iPos].iElemParent; - bool bPosFirst = bAfterPos; // mark as first to skip its children - while ( iPos ) - { - // Were we at containing parent of affected position? - bool bPosTop = false; - if ( iPos == iPosTop ) - { - // Move iPosTop up one towards root - iPosTop = m_aPos[iPos].iElemParent; - bPosTop = true; - } - - // Traverse to the next update position - if ( ! bPosTop && ! bPosFirst && m_aPos[iPos].iElemChild ) - { - // Depth first - iPos = m_aPos[iPos].iElemChild; - } - else if ( m_aPos[iPos].iElemNext ) - { - iPos = m_aPos[iPos].iElemNext; - } - else - { - // Look for next sibling of a parent of iPos - // When going back up, parents have already been done except iPosTop - while ( (iPos=m_aPos[iPos].iElemParent) != 0 && iPos != iPosTop ) - if ( m_aPos[iPos].iElemNext ) - { - iPos = m_aPos[iPos].iElemNext; - break; - } - } - bPosFirst = false; - - // Shift indexes at iPos - if ( iPos != iPosTop ) - m_aPos[iPos].AdjustStart( nShift ); - m_aPos[iPos].AdjustEnd( nShift ); - } -} - -void CMarkupSTL::x_LocateNew( int iPosParent, int& iPosRel, int& nOffset, int nLength, int nFlags ) -{ - // Determine where to insert new element or node - // - bool bInsert = (nFlags&1)?true:false; - bool bHonorWhitespace = (nFlags&2)?true:false; - - int nStartL; - if ( nLength ) - { - // Located at a non-element node - if ( bInsert ) - nStartL = nOffset; - else - nStartL = nOffset + nLength; - } - else if ( iPosRel ) - { - // Located at an element - if ( bInsert ) // precede iPosRel - nStartL = m_aPos[iPosRel].nStartL; - else // follow iPosRel - nStartL = m_aPos[iPosRel].nEndR + 1; - } - else if ( m_aPos[iPosParent].IsEmptyElement() ) - { - // Parent has no separate end tag, so split empty element - nStartL = m_aPos[iPosParent].nStartR; - } - else - { - if ( bInsert ) // after start tag - nStartL = m_aPos[iPosParent].nStartR + 1; - else // before end tag - nStartL = m_aPos[iPosParent].nEndL; - } - - // Go up to start of next node, unless its splitting an empty element - if ( ! bHonorWhitespace && ! m_aPos[iPosParent].IsEmptyElement() ) - { - TokenPos token( m_strDoc.c_str() ); - token.nNext = nStartL; - if ( ! x_FindToken(token) || m_strDoc[token.nL] == '<' ) - nStartL = token.nL; - } - - // Determine iPosBefore - int iPosBefore = 0; - if ( iPosRel ) - { - if ( bInsert ) - { - // Is iPosRel past first sibling? - int iPosPrev = m_aPos[iPosParent].iElemChild; - if ( iPosPrev != iPosRel ) - { - // Find previous sibling of iPosRel - while ( m_aPos[iPosPrev].iElemNext != iPosRel ) - iPosPrev = m_aPos[iPosPrev].iElemNext; - iPosBefore = iPosPrev; - } - } - else - { - iPosBefore = iPosRel; - } - } - else if ( m_aPos[iPosParent].iElemChild ) - { - if ( ! bInsert ) - { - // Find last element under iPosParent - int iPosLast = m_aPos[iPosParent].iElemChild; - int iPosNext = iPosLast; - while ( iPosNext ) - { - iPosLast = iPosNext; - iPosNext = m_aPos[iPosNext].iElemNext; - } - iPosBefore = iPosLast; - } - } - - nOffset = nStartL; - iPosRel = iPosBefore; -} - -bool CMarkupSTL::x_AddElem( const char* szName, const char* szValue, bool bInsert, bool bAddChild ) -{ - if ( bAddChild ) - { - // Adding a child element under main position - if ( ! m_iPos ) - return false; - } - else if ( m_iPosParent == 0 ) - { - // Adding root element - if ( IsWellFormed() ) - return false; - - // Locate after any version and DTD - m_aPos[0].nEndL = m_strDoc.size(); - } - - // Locate where to add element relative to current node - int iPosParent, iPosBefore, nOffset = 0, nLength = 0; - if ( bAddChild ) - { - iPosParent = m_iPos; - iPosBefore = m_iPosChild; - } - else - { - iPosParent = m_iPosParent; - iPosBefore = m_iPos; - } - int nFlags = bInsert?1:0; - x_LocateNew( iPosParent, iPosBefore, nOffset, nLength, nFlags ); - bool bEmptyParent = m_aPos[iPosParent].IsEmptyElement(); - if ( bEmptyParent ) - nOffset += 2; // include CRLF - - // Create element and modify positions of affected elements - // If no szValue is specified, an empty element is created - // i.e. either value or - // - int iPos = x_GetFreePos(); - m_aPos[iPos].nStartL = nOffset; - - // Set links - m_aPos[iPos].iElemParent = iPosParent; - m_aPos[iPos].iElemChild = 0; - m_aPos[iPos].iElemNext = 0; - if ( iPosBefore ) - { - // Link in after iPosBefore - m_aPos[iPos].iElemNext = m_aPos[iPosBefore].iElemNext; - m_aPos[iPosBefore].iElemNext = iPos; - } - else - { - // First child - m_aPos[iPos].iElemNext = m_aPos[iPosParent].iElemChild; - m_aPos[iPosParent].iElemChild = iPos; - } - - // Create string for insert - string strInsert; - int nLenName = strlen(szName); - int nLenValue = szValue? strlen(szValue) : 0; - if ( ! nLenValue ) - { - // empty element - strInsert = "<"; - strInsert += szName; - strInsert += "/>\r\n\t"; - m_aPos[iPos].nStartR = m_aPos[iPos].nStartL + nLenName + 2; - m_aPos[iPos].nEndL = m_aPos[iPos].nStartR - 1; - m_aPos[iPos].nEndR = m_aPos[iPos].nEndL + 1; - } - else - { - // value - string strValue = x_TextToDoc( szValue ); - nLenValue = strValue.size(); - strInsert = "<"; - strInsert += szName; - strInsert += ">"; - strInsert += strValue; - strInsert += "\r\n\t"; - m_aPos[iPos].nStartR = m_aPos[iPos].nStartL + nLenName + 1; - m_aPos[iPos].nEndL = m_aPos[iPos].nStartR + nLenValue + 1; - m_aPos[iPos].nEndR = m_aPos[iPos].nEndL + nLenName + 2; - } - - // Insert - int nReplace = 0, nLeft = m_aPos[iPos].nStartL; - if ( bEmptyParent ) - { - string strParentTagName = x_GetTagName(iPosParent); - string strFormat; - strFormat = ">\r\n\t"; - strFormat += strInsert; - strFormat += " (len 4) becomes (len 11) - // In x_Adjust everything will be adjusted 11 - 4 = 7 - // But the nEndL of element A should only be adjusted 5 - m_aPos[iPosParent].nEndL -= (strParentTagName.size() + 1); - } - x_DocChange( nLeft, nReplace, strInsert ); - x_Adjust( iPos, strInsert.size() - nReplace ); - - if ( bAddChild ) - x_SetPos( m_iPosParent, iPosParent, iPos ); - else - x_SetPos( iPosParent, iPos, 0 ); - return true; -} - -bool CMarkupSTL::x_AddSubDoc( const char* szSubDoc, bool bInsert, bool bAddChild ) -{ - // Add subdocument, parse, and modify positions of affected elements - // - int nOffset = 0, iPosParent, iPosBefore; - if ( bAddChild ) - { - // Add a subdocument under main position, after current child position - if ( ! m_iPos ) - return false; - iPosParent = m_iPos; - iPosBefore = m_iPosChild; - } - else - { - iPosParent = m_iPosParent; - iPosBefore = m_iPos; - } - int nFlags = bInsert?1:0; - x_LocateNew( iPosParent, iPosBefore, nOffset, 0, nFlags ); - bool bEmptyParent = m_aPos[iPosParent].IsEmptyElement(); - if ( bEmptyParent ) - nOffset += 2; // include CRLF - - // if iPosBefore is NULL, insert as first element under parent - int nParentEndLBeforeAdd = m_aPos[iPosParent].nEndL; - int iPosFreeBeforeAdd = m_iPosFree; - - // Skip version tag or DTD at start of subdocument - TokenPos token( szSubDoc ); - int nNodeType = x_ParseNode( token ); - while ( nNodeType && nNodeType != MNT_ELEMENT ) - { - token.szDoc = &szSubDoc[token.nNext]; - token.nNext = 0; - nNodeType = x_ParseNode( token ); - } - string strInsert = token.szDoc; - - // Insert subdocument - m_aPos[iPosParent].nEndL = nOffset; - int nReplace = 0, nLeft = nOffset; - string strParentTagName; - if ( bEmptyParent ) - { - strParentTagName = x_GetTagName(iPosParent); - string strFormat; - strFormat = ">\r\n\t"; - strFormat += strInsert; - strFormat += " -#include -#include -#include - -#ifdef _DEBUG -#define _DS(i) (i?&(m_strDoc.c_str())[m_aPos[i].nStartL]:0) -#define MARKUP_SETDEBUGSTATE m_pMainDS=_DS(m_iPos); m_pChildDS=_DS(m_iPosChild) -#else -#define MARKUP_SETDEBUGSTATE -#endif - -class CMarkupSTL -{ -public: - CMarkupSTL() { SetDoc( NULL ); }; - CMarkupSTL( const char* szDoc ) { SetDoc( szDoc ); }; - CMarkupSTL( const CMarkupSTL& markup ) { *this = markup; }; - void operator=( const CMarkupSTL& markup ); - virtual ~CMarkupSTL() {}; - - // Navigate - bool Load( const char* szFileName ); - bool SetDoc( const char* szDoc ); - bool IsWellFormed(); - bool FindElem( const char* szName=NULL ); - bool FindChildElem( const char* szName=NULL ); - bool IntoElem(); - bool OutOfElem(); - void ResetChildPos() { x_SetPos(m_iPosParent,m_iPos,0); }; - void ResetMainPos() { x_SetPos(m_iPosParent,0,0); }; - void ResetPos() { x_SetPos(0,0,0); }; - std::string GetTagName() const; - std::string GetChildTagName() const { return x_GetTagName(m_iPosChild); }; - std::string GetData() const { return x_GetData(m_iPos); }; - std::string GetChildData() const { return x_GetData(m_iPosChild); }; - std::string GetAttrib( const char* szAttrib ) const { return x_GetAttrib(m_iPos,szAttrib); }; - std::string GetChildAttrib( const char* szAttrib ) const { return x_GetAttrib(m_iPosChild,szAttrib); }; - std::string GetAttribName( int n ) const; - bool SavePos( const char* szPosName="" ); - bool RestorePos( const char* szPosName="" ); - bool GetOffsets( int& nStart, int& nEnd ) const; - std::string GetError() const { return m_strError; }; - - enum MarkupNodeType - { - MNT_ELEMENT = 1, // 0x01 - MNT_TEXT = 2, // 0x02 - MNT_WHITESPACE = 4, // 0x04 - MNT_CDATA_SECTION = 8, // 0x08 - MNT_PROCESSING_INSTRUCTION = 16, // 0x10 - MNT_COMMENT = 32, // 0x20 - MNT_DOCUMENT_TYPE = 64, // 0x40 - MNT_EXCLUDE_WHITESPACE = 123 // 0x7b - }; - - // Create - bool Save( const char* szFileName ); - std::string GetDoc() const { return m_strDoc; }; - bool AddElem( const char* szName, const char* szData=NULL ) { return x_AddElem(szName,szData,false,false); }; - bool InsertElem( const char* szName, const char* szData=NULL ) { return x_AddElem(szName,szData,true,false); }; - bool AddChildElem( const char* szName, const char* szData=NULL ) { return x_AddElem(szName,szData,false,true); }; - bool InsertChildElem( const char* szName, const char* szData=NULL ) { return x_AddElem(szName,szData,true,true); }; - bool AddAttrib( const char* szAttrib, const char* szValue ) { return x_SetAttrib(m_iPos,szAttrib,szValue); }; - bool AddChildAttrib( const char* szAttrib, const char* szValue ) { return x_SetAttrib(m_iPosChild,szAttrib,szValue); }; - bool AddAttrib( const char* szAttrib, int nValue ) { return x_SetAttrib(m_iPos,szAttrib,nValue); }; - bool AddChildAttrib( const char* szAttrib, int nValue ) { return x_SetAttrib(m_iPosChild,szAttrib,nValue); }; - bool AddChildSubDoc( const char* szSubDoc ) { return x_AddSubDoc(szSubDoc,false,true); }; - bool InsertChildSubDoc( const char* szSubDoc ) { return x_AddSubDoc(szSubDoc,true,true); }; - std::string GetChildSubDoc() const; - - // Modify - bool RemoveElem(); - bool RemoveChildElem(); - bool SetAttrib( const char* szAttrib, const char* szValue ) { return x_SetAttrib(m_iPos,szAttrib,szValue); }; - bool SetChildAttrib( const char* szAttrib, const char* szValue ) { return x_SetAttrib(m_iPosChild,szAttrib,szValue); }; - bool SetAttrib( const char* szAttrib, int nValue ) { return x_SetAttrib(m_iPos,szAttrib,nValue); }; - bool SetChildAttrib( const char* szAttrib, int nValue ) { return x_SetAttrib(m_iPosChild,szAttrib,nValue); }; - bool SetData( const char* szData, int nCDATA=0 ) { return x_SetData(m_iPos,szData,nCDATA); }; - bool SetChildData( const char* szData, int nCDATA=0 ) { return x_SetData(m_iPosChild,szData,nCDATA); }; - -protected: - -#ifdef _DEBUG - const char* m_pMainDS; - const char* m_pChildDS; -#endif - - std::string m_strDoc; - std::string m_strError; - - struct ElemPos - { - ElemPos() { Clear(); }; - ElemPos( const ElemPos& pos ) { *this = pos; }; - bool IsEmptyElement() const { return (nStartR == nEndL + 1); }; - void Clear() - { - nStartL=0; nStartR=0; nEndL=0; nEndR=0; nReserved=0; - iElemParent=0; iElemChild=0; iElemNext=0; - }; - void AdjustStart( int n ) { nStartL+=n; nStartR+=n; }; - void AdjustEnd( int n ) { nEndL+=n; nEndR+=n; }; - int nStartL; - int nStartR; - int nEndL; - int nEndR; - int nReserved; - int iElemParent; - int iElemChild; - int iElemNext; - }; - - typedef std::vector vectorElemPosT; - vectorElemPosT m_aPos; - int m_iPosParent; - int m_iPos; - int m_iPosChild; - int m_iPosFree; - int m_nNodeType; - - struct TokenPos - { - TokenPos( const char* sz ) { Clear(); szDoc = sz; }; - void Clear() { nL=0; nR=-1; nNext=0; bIsString=false; }; - bool Match( const char* szName ) - { - int nLen = nR - nL + 1; - // To ignore case, define MARKUP_IGNORECASE - #ifdef MARKUP_IGNORECASE - return ( (strnicmp( &szDoc[nL], szName, nLen ) == 0) - #else - return ( (std::strncmp( &szDoc[nL], szName, nLen ) == 0) - #endif - && ( szName[nLen] == '\0' || std::strchr(" =/[",szName[nLen]) ) ); - }; - int nL; - int nR; - int nNext; - const char* szDoc; - bool bIsString; - }; - - struct SavedPos - { - int iPosParent; - int iPos; - int iPosChild; - }; - typedef std::map mapSavedPosT; - mapSavedPosT m_mapSavedPos; - - void x_SetPos( int iPosParent, int iPos, int iPosChild ) - { - m_iPosParent = iPosParent; - m_iPos = iPos; - m_iPosChild = iPosChild; - m_nNodeType = iPos?MNT_ELEMENT:0; - MARKUP_SETDEBUGSTATE; - }; - - int x_GetFreePos(); - int x_ReleasePos(); - - int x_ParseElem( int iPos ); - int x_ParseError( const char* szError, const char* szName = NULL ); - static bool x_FindChar( const char* szDoc, int& nChar, char c ); - static bool x_FindToken( TokenPos& token ); - std::string x_GetToken( const TokenPos& token ) const; - int x_FindElem( int iPosParent, int iPos, const char* szPath ); - std::string x_GetTagName( int iPos ) const; - std::string x_GetData( int iPos ) const; - std::string x_GetAttrib( int iPos, const char* szAttrib ) const; - bool x_AddElem( const char* szName, const char* szValue, bool bInsert, bool bAddChild ); - bool x_AddSubDoc( const char* szSubDoc, bool bInsert, bool bAddChild ); - bool x_FindAttrib( TokenPos& token, const char* szAttrib=NULL ) const; - bool x_SetAttrib( int iPos, const char* szAttrib, const char* szValue ); - bool x_SetAttrib( int iPos, const char* szAttrib, int nValue ); - bool x_CreateNode( std::string& strNode, int nNodeType, const char* szText ); - void x_LocateNew( int iPosParent, int& iPosRel, int& nOffset, int nLength, int nFlags ); - int x_ParseNode( TokenPos& token ); - bool x_SetData( int iPos, const char* szData, int nCDATA ); - int x_RemoveElem( int iPos ); - void x_DocChange( int nLeft, int nReplace, const std::string& strInsert ); - void x_PosInsert( int iPos, int nInsertLength ); - void x_Adjust( int iPos, int nShift, bool bAfterPos = false ); - std::string x_TextToDoc( const char* szText, bool bAttrib = false ) const; - std::string x_TextFromDoc( int nLeft, int nRight ) const; -}; - -#endif // !defined(AFX_MARKUPSTL_H__948A2705_9E68_11D2_A0BF_00105A27C570__INCLUDED_) diff -Nru geos-3.1.0/tests/xmltester/robustness.xml geos-3.2.2/tests/xmltester/robustness.xml --- geos-3.1.0/tests/xmltester/robustness.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/robustness.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,250 +0,0 @@ - - - - - - - -http://geos.refractions.net/pipermail/geos-devel/2005-May/001441.html - - - 0103000020E80A00000100000069010000ECA2396C13BBFF40E8BA3424319F2541DEFB1D49DFB8FF40E73660ADA07F2541FAD6C80B43B2FF407033A9AC12602541E43630383FA7FF401F0EFC9789402541470638AAD497FF408AE2E2E40721254133F2A0950484FF40D372540890012541776AF085D06BFF40B21B837624E22441E2C9515E3A4FFF40DBD7ABA2C7C22441CDA87059442EFF407956E5FE7BA32441DF5C4C09F108FF40A728EFFB4384244184A9045743DFFE40A40901092265244116A59F823EB1FE4096459A931846244141D7C822E67EFE40AD4251072A272441B29589243E48FE405630A3CD58082441A6A4FACA4A0DFE4065E0C34DA7E923417321EFAE10CEFD40D6CD6DEC17CB2341B7BD98BE948AFD40F954B20BADAC23414652253DDC42FD40B720CA0A698E234192D155C2ECF6FC40ADD0E5454E702341B3A10E3ACCA6FC40CCDBFE155F522341D166E1E38052FC4022B3A8D09D3423411747905211FAFB408628E2C70C172341F7B18A6B849DFB40B61CE749AEF92241F6B46366E13CFB40907802A184DC2241B9E841CC2FD8FA40FA74601392BF224194014977776FFA400135E1E2D8A22241500FFD91C002FA40CFB5EB4C5B8622416E789F961392F940DE17418A1B6A22418ABD854E791DF940FD44D0CE1B4E224122126AD1FAA4F84096F689495E32224164D8B584A128F840951F3524E5162241350EC61A77A8F7406EBD4383B2FB2141FEB929928524F7408B13A885C8E021417066DA34D79CF6408654AA4429C62141BCBC6E977611F64071BCBED3D6AB21414A4D47986E82F5407B1F5C40D39121416897B55ECAEFF44024F0D29120782141DA601D5A9559F4403AC024C9C05E2141AC6E1041DBBFF340C23FDCE0B545214109B16410A822F340EABCE5CC012D214160F4440A0882F2402528687AA61421417B2A3CB507DEF140659F9ECFA5FC2041975E3BDBB336F1408B83B2AB01E5204109689A88198CF040F01A96E6BBCD204192DE26168CBCEF40FDC3DF50D6B620418BB372E18D5AEE40A5BAA5B352A020414762D20D54F2EC409D735AD0328A204125366DB2FA83EB401B90A9607874204149EEA6609E0FEA40CC6C5516255F20412C71E5215C95E840C14E159B3A4A204167244D755115E740E4307490BA3520410516744D9C8FE5409C34B08FA621204130250C0E5B04E44024B89A29000E2041F2588489AC73E240152AF2CC91F51F414194A1FEAFDDE040A812CC8B04D01F41B9AE1D2C0A85DE40479B677D5BAB1F413F7ECABF9744DB4062B59D7D99871F4122E757A249FAD740CEC04256C1641F412B6FA08261A6D440A7E1EEBED5421F41A4982BCF2149D14038C2C75CD9211F41436DFF619BC5CB402FC54BC2CE011F41DF6CCA0C52E7C44028AC1E6FB8E21E41DD196F76E1EFBB409BB6D7CF98C41E41F3220E7C07E0AB40163DD13D72A71E4180CA45A3CBEE47C079CCF9FE468B1E4173AA092451DDACC0EBC4A64519701E41488EA3D140CBBCC00E806830EB551E41721152D143A2C5C0D501E0C9BE3C1E41BB857A0AAEECCCC05637960896241E4176759EC42622D2C0BAC6D4CE720D1E41BE846FDD47D4D5C0657380EA56F71D41F4583488708CD9C03319F51444E21D4153B71285564ADDC0B041E3F23BCE1D41F73ECE90D786E0C0E7552F1440BB1D417067519F176BE2C05E6FD2F351A91D413DDB08ABC551E4C0B5CABCF772981D41C6EB69C0BB3AE6C01FDEB970A4881D4115D45EBED325E8C00516569AE7791D4168E43F59E712EAC0BF39C69A3D6C1D4198FFCF1DD001ECC05C7AD082A75F1D41AE2E3C7467F2EDC0482DB74D26541D41D30E1EA386E4EFC0703425E1BA491D41C76E406903ECF0C06B151C0D66401D417873748760E6F1C014C1E38B28381D41AC8C2E2647E1F2C0D60CFC0103311D410441B9B4A3DCF3C0C9DE0FFEF52A1D41EDBA2C9962D8F4C0A10DEAF801261D419914F63170D4F5C053F56B5527221D41003D5FD7B8D0F6C024C18560661F1D41725717DD28CDF7C0C06B3051BF1D1D410D77BB93ACC9F8C0D0756948321D1D4181975F4A30C6F9C067533051BF1D1D4180B41750A0C2FAC075908560661F1D4127E180F5E8BEFBC051AC6B5527221D41C5404A8EF6BAFCC051ACE9F801261D4152C2BD72B5B6FDC033650FFEF52A1D41FF7F480112B2FEC0047BFB0103311D4139A402A0F8ACFFC01117E38B28381D41D05A1BDFAA5300C145531B0D66401D41B215F4EA8AD000C1365A24E1BA491D41C495ACB6124D01C10B3BB64D26541D4169AA478C38C901C12E70CF82A75F1D41EBBA6BBDF24402C1B517C59A3D6C1D418A0924A437C002C136DC549AE7791D41FC4EA1A3FD3A03C1A38CB870A4881D414F9FF9283BB503C1A661BBF772981D414689E7ABE62E04C1DAEED0F351A91D41386188AFF6A704C10ABE2D1440BB1D41B0A819C3612005C19B92E1F23BCE1D41F083B5821E9805C10753F31444E21D41B72E0E98230F06C145967EEA56F71D41AE6128BB678506C1CDD2D2CE720D1E41DA9914B3E1FA06C1C12C940896241E41C133A756886F07C1C2E0DDC9BE3C1E41D14B2F8D52E307C1A7486630EB551E41CA552C4F375608C15C77A44519701E410E5D02A72DC808C1F068F7FE468B1E41B1DFACB12C3909C1C3C3CE3D72A71E417036709F2BA909C1B027D5CF98C41E41AB7B89B421180AC1D7071C6FB8E21E41ACE3DC4906860AC1AD0B49C2CE011F41A378A2CDD0F20AC1BCF3C45CD9211F41E52C11C4785E0BC168FEEBBED5421F410D3608C8F5C80BC107C93F56C1641F41D1A3B68B3F320CC14DA99A7D99871F41742541D94D9A0CC1207B647D5BAB1F41F3F0659318010DC1AFDEC88B04D01F4116BF1EB697660DC189E2EECC91F51F41C9CF4057C3CA0DC1B60A9929000E20414EEA1AA7932D0EC1A77DAE8FA6212041DF4C11F1008F0EC189707290BA352041B07F379C03EF0EC12585139B3A4A20413BFFE72B944D0FC1129A5316255F204117B25940ABAA0FC167B4A76078742041528F99CB200310C1148F58D0328A20418BAA0D06283010C16DCDA3B352A020414941A4CC675C10C13DCEDD50D6B62041221106ACDC8710C1CE1C94E6BBCD2041B960AE4083B210C12F7DB0AB01E52041EEA52E3758DC10C1F8909CCFA5FC2041EAEA704C580511C1D011667AA6142141DEECF84D802D11C1D79EE3CC012D214154EF231ACD5411C11A1ADAE0B5452141313F67A03B7B11C1299322C9C05E214166608DE1C8A011C1D5BBD09120782141B1E1F1EF71C511C11AE45940D39121419ED1BBEF33E911C12B7ABCD3D6AB214159D016170C0C12C1870BA84429C62141C5B96AAEF72D12C101C4A585C8E0214195E39110F44E12C187674183B2FB21411BEB0DABFE6E12C181C33224E5162241BB0E3BFE148E12C1839487495E322241FB0E829D34AC12C11BDDCDCE1B4E22414D93882F5BC912C15CAA3E8A1B6A2241D00E606E86E512C1DF42E94C5B8622415A21B327B40013C1D3BCDEE2D8A222414B71F13CE21A13C1BFF75D1392BF2241AFFA79A30E3413C17BF6FFA084DC22416DD0C364374C13C1F895E449AEF922415D4C859E5A6313C1519DDFC70C1723411AABD982767913C1AA23A6D09D342341C6106558898E13C14348FC155F522341D5F3767A91A213C14839E3454E7023413AEB2A598DB513C1A885C70A698E23416FDD87797BC713C175B6AF0BADAC2341D48D9D755AD813C1112C6BEC17CB23413386A0FC28E813C1943BC14DA7E92341235A04D3E5F613C1AD88A0CD580824414D4294D28F0414C161984E072A2724419E0D8AEA251114C1DD98979318462441AA66A31FA71C14C1B25AFE0822652441856B358C122714C1B377ECFB4384244195963E60673014C1B9A3E2FE7BA32441FEF676E1A43814C18423A9A2C7C2244154B75E6BCA3F14C1FA65807624E2244180F14A6FD74514C1EFBB510890012541CBCE7074CB4A14C1B22AE0E40721254140F3EE17A64E14C18855F997894025419833D50C675114C1517AA6AC1260254128952A1C0E5314C1777D5DADA07F25414597F1249B5314C15C013224319F2541DAC52A1C0E5314C17985069BC1BE2541F994D50C675114C14189BD9B4FDE25414685EF17A64E14C11AAF6AB0D8FD25416D917174CB4A14C16DDB83635A1D2641AEE44B6FD74514C1194C1240D23C2641FCDA5F6BCA3F14C164A4E3D13D5C2641074B78E1A43814C19CE9BAA59A7B2641E61A4060673014C1946C8149E69A26410020378C122714C1339C774C1EBA26412D4BA51FA71C14C139BD653F40D9264102228CEA251114C17E83CCB449F82641698696D28F0414C1D588154138172741CBCD06D3E5F613C1CE9DC37A093627413529A3FC28E813C196F0A2FABA542741FB5FA0755AD813C13106F95B4A73274183DE8A797BC713C14F82B43CB5912741FF1A2E598DB513C107BA9C3DF9AF27410B527A7A91A213C1B90D810214CE27412B9D6858898E13C17706683203EC27416665DD82767913C13233BE77C40928414634899E5A6313C111C2848055272841A6E5C764374C13C157D27FFEB3442841E43C7EA30E3413C1257B64A7DD6128412AE0F53CE21A13C197830635D07E284189BCB727B40013C19BC88565899B2841F2D5646E86E512C10B4D7BFB06B8284104868D2F5BC912C16BF025BE46D42841E42C879D34AC12C1EBC8967946F02841705740FE148E12C1211DDDFE030C2941325E13ABFE6E12C121FA31247D272941A1809710F44E12C1756223C5AF422941578070AEF72D12C1B412BFC2995D2941FDBF1C170C0C12C143D8BC0339782941DEE9C1EF33E911C11077A8748B9229411322F8EF71C511C1EC1A0B088FAC29416DC893E1C8A011C1555194B641C629415DCE6DA03B7B11C17C88427FA1DF294123A52A1ACD5411C15E108B67ACF82941C9C8FF4D802D11C1C99A817B60112A4169EC774C580511C14D37FFCDBB292A4173CC353758DC10C1F5C7C878BC412A41B7ABB54083B210C1E0EBB49C60592A4108800DACDC8710C1B45CD161A6702A4182D3ABCC675C10C108BC87F78B872A417F5F1506283010C1E9CDC1940F9E2A416866A1CB200310C1A01D0D782FB42A414EA36940ABAA0FC1F609BEE7E9C92A413E32F82B944D0FC13F3612323DDF2A413DF3479C03EF0EC1685D52AD27F42A41AAFF21F1008F0EC18884F3B7A7082B410ADB2BA7932D0EC1358AB7B8BB1C2B4123FD5157C3CA0DC13510CD1E62302B41B72730B697660DC1F8BCEE6199432B418093779318010DC177D2810260562B418C0053D94D9A0CC11218B489B4682B4110B6C88B3F320CC10D159989957A2B410B7E1AC8F5C80BC17F99469D018C2B4134A923C4785E0BC15793F068F79C2B41D227B5CDD0F20AC1702D049A75AD2B4146C4EF4906860AC1733642E77ABD2B41378C9CB421180AC18FCDD81006CD2B417275839F2BA909C109537CE015DC2B41A84BC0B12C3909C1989A7F29A9EA2B4177F415A72DC808C1CD5DEBC8BEF82B411D17404F375608C191EC94A555062C418335438D52E307C1141A34B06C132C414644BB56886F07C15A6478E302202C41A1CF28B3E1FA06C1DA541D44172C2C4123BB3CBB678506C17B18FEE0A8372C4144AA2298230F06C18E4D28D3B6422C41FB1FCA821E9805C12106EE3D404D2C41A0632EC3612005C16EFDF64E44572C416D399DAFF6A704C1EFFE503EC2602C41207DFCABE62E04C1DF7D7F4EB9692C412DAD0E293BB503C1EF5B8ACC28722C413875B6A3FD3A03C104DE0B10107A2C417F4639A437C002C1E7CD3D7B6E812C41F10C81BDF24402C1EDC7057B43882C41D70F5D8C38C901C18CB300878E8E2C41ED0CC2B6124D01C10E668D214F942C41EA9C09EB8AD000C17C6ED6D784992C416AF030DFAA5300C1090ADB412F9E2C41D2E82DA0F8ACFFC0464077024EA22C419DDA730112B2FEC07D266BC7E0A52C41942FE972B5B6FDC0A2496149E7A82C4148BD758EF6BAFCC0593EF44B61AB2C418769ACF5E8BEFBC0A656B39D4EAD2C4158454350A0C2FAC0E77C2618AFAE2C416B2D8B4A30C6F9C0C433D19F82AF2C41A30EE793ACC9F8C0E8BA3424C9AF2C414FED42DD28CDF7C04858D19F82AF2C41BCCD8AD7B8D0F6C0EDC52618AFAE2C41CF9C213270D4F5C028C4B39D4EAD2C413837589962D8F4C04ED0F44B61AB2C41FFADE4B4A3DCF3C0FFFF6149E7A82C41F6E6592647E1F2C034016CC7E0A52C41AFB79F8760E6F1C0463F78024EA22C418B996B6903ECF0C03D2DDC412F9E2C41B92A74A386E4EFC0CEB5D7D784992C413B0A927467F2EDC065D18E214F942C411C94251ED001ECC0CB4202878E8E2C41352B9559E712EAC0F57A077B43882C4184C6B3BED325E8C096A43F7B6E812C413983BEC0BB3AE6C036D80D10107A2C411C115DABC551E4C07C798CCC28722C412835A59F176BE2C09DBE814EB9692C41009E2191D786E0C0B062533EC2602C41078BB885564ADDC00384F94E44572C415C35D988708CD9C058AFF03D404D2C41FF5C13DE47D4D5C031192BD3B6422C41C93C41C52622D2C0540601E1A8372C4123D9BD0BAEECCCC0AC642044172C2C41681093D243A2C5C0EA957BE302202C413EB120D440CBBCC0216D37B06C132C411BD7F92851DDACC0D96098A555062C4127FFB1DCCCEE47C00BF3EEC8BEF82B41B64F337707E0AB4085508329A9EA2B417C4F0774E1EFBB405A2980E015DC2B41506F990B52E7C440F8C3DC1006CD2B411C6FD1609BC5CB40A54C46E77ABD2B410A2596CE2149D1401A63089A75AD2B41B2920C8261A6D44024E8F468F79C2B414CADC5A149FAD740170D4B9D018C2B4172F239BF9744DB401AA79D89957A2B4139DC8E2B0A85DE4037C8B889B4682B413A0D5BFEAFDDE04058A0860260562B41A3B93E89AC73E24033A8F36199432B410773C70D5B04E4406918D21E62302B415C56304D9C8FE540FEAEBCB8BB1C2B41885C0A755115E7407FC5F8B7A7082B414AA6A3215C95E84024BA57AD27F42A41872566609E0FEA4053AE17323DDF2A418F742DB2FA83EB40F79CC3E7E9C92A41D6AC930D54F2EC401DCB12782FB42A41220F35E18D5AEE407195C7940F9E2A41FF4FEA158CBCEF40299D8DF78B872A4107AE7C88198CF040F756D761A6702A412F341EDBB336F140CFFEBA9C60592A41F1911FB507DEF14015F3CE78BC412A41F0EF280A0882F240247A05CEBB292A41E2424910A822F340DAF4877B60112A41F298F540DBBFF3402A819167ACF82941A425035A9559F440820F497FA1DF2941C0F89B5ECAEFF44013EE9AB641C62941314D2E986E82F540DECC11088FAC2941255D56977611F640B13DAF748B92294141A9C234D79CF6400BB3C3033978294111A112928524F7401A01C6C2995D2941579BAF1A77A8F740EF632AC5AF422941540DA084A128F840220E39247D27294193F054D1FAA4F8401D43E4FE030C29412347714E791DF94053009E7946F02841C8AE8B961392F940AF382DBE46D42841F4F3E991C002FA409AA582FB06B8284100963677776FFA40E2308D65899B28415D2E30CC2FD8FA4001FB0D35D07E284133AD5266E13CFB401E016CA7DD612841215E7A6B849DFB40496687FEB344284173A8805211FAFB4064638C8055272841987ED2E38052FC404EE1C577C40928410E71003ACCA6FC40C3C06F3203EC27419C5948C2ECF6FC409AD3880214CE27410C94183DDC42FD40E28AA43DF9AF274136BA8CBE948AFD40895DBC3CB59127419BD9E3AE10CEFD402CEB005C4A7327415819F0CA4A0DFE40B5DEAAFABA542741C1C77F243E48FE407294CB7A0936274170C7BF22E67EFE405F871D41381727411A5497823EB1FE404F89D4B449F826410318FD5643DFFE40B1C96D3F40D926416F8B4509F108FF40B1AE7F4C1EBA2641F6976A59442EFF4077848949E69A26411D7A4C5E3A4FFF404206C3A59A7B26412FDCEB85D06BFF402CC5EBD13D5C2641C2259D950484FF4060701A40D23C2641F9FB34AAD497FF4090028C635A1D2641F4EE2D383FA7FF4077D872B0D8FD25419651C70B43B2FF4035B4C59B4FDE254124391D49DFB8FF4060B10E9BC1BE2541ECA2396C13BBFF40E8BA3424319F2541 - - - 0103000020E80A0000010000001B0000003731C25DB7A40AC123BABA3D2F2E1541482DDA6520AE15C150176B846E0E04419D9BAD51D2DD20C188B238C6A20F1341C93BA6B63EF616C1773C690356B72041AFE718BD3DE01AC1363F67295618224104666722A81614C128DF2B476DE92641E3BF74CA1BBCF1C0D43292B68C652141BDD1D74AAFA6CCC01D27263DE8A122418FF95A96AD86C240BA1AA7079685274134285EE6E81EF9C040F2AA56B1AF2C4117B1B91CDC81FA40E8363289617C3041DF296F1F14800941806416C77A5C2C4143DE3E9BAE901A41E5DD836A7C8E2E413E4390CBBBDE1E41DCBAED0B9BC82741489E9ED935770A41535871C71BFB2441A247FE423D360841CDF36716539B2441ECC1420680470741BD3D4C94710F23414D024D7D04380A41FEC5364D1A022241407DA7BAAF811D41DD0784C658ED184192B08CF1A618184108E3295E56ED104121896F9066610541F13A975D57FE1941096E8D134BEBFB406847DAE3D9661741AABE21A245A00B41845A019F2304FF40E48112BC1AF0F84080891F1A39C7F140DD811CEEB3B3EF40AE82AE28194B0341AB6F85D09F3409C1B06BA7169F6201413731C25DB7A40AC123BABA3D2F2E1541 - - - - - 1 - - - - - - - -http://postgis.refractions.net/pipermail/postgis-users/2006-March/011316.html - -POLYGON((742605.987032656 5087763.72510381,742599.903121688 -5087760.56016809,742598.666141033 -5087762.50894352,742591.100910753 -5087758.50480931,742586.861672536 -5087766.63211263,742591.417801844 -5087769.04526206,742592.428792606 -5087767.35034731,742601.541294342 -5087772.18101105,742605.987032656 5087763.72510381)) - - -POLYGON((742601.541294537 5087772.18101068,742592.428792606 -5087767.35034731,742589.944404072 -5087771.51539701,742583.880455986 5087782.54873438,742582.81550675 -5087784.27809355,742583.216887765 5087784.43459684,742582.99081514 -5087785.0349637,742592.341351823 5087789.67654,742593.375823205 -5087787.7060691,742599.28794443 5087776.4640487,742601.541294537 -5087772.18101068)) - - - - - 1 - - - - - - -http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html - - -POLYGON ((613697.0000000041909516 2369267.9999981997534633, 613797.0000000043073669 2368322.9999981978908181, 613643.0000000041909516 2367807.9999981969594955, 613674.0000000041909516 2367405.9999981969594955, 613400.0000000041909516 2367299.9999981955625117, 613200.0000000040745363 2366813.9999981950968504, 613252.0000000040745363 2366474.9999981927685440, 613094.0000000040745363 2366400.9999981927685440, 612695.0000000039581209 2365506.9999981909058988, 612326.0000000038417056 2365402.9999981909058988, 612145.0000000037252903 2365470.9999981913715601, 612061.0000000037252903 2365967.9999981918372214, 611724.0000000036088750 2366168.9999981927685440, 611334.0000000034924597 2366316.9999981927685440, 610743.0000000033760443 2366221.9999981932342052, 610174.0000000031432137 2366305.9999981927685440, 609973.0000000031432137 2367066.9999981955625117, 609073.0000000027939677 2367938.9999981974251568, 609061.0000000027939677 2368332.9999981974251568, 609151.0000000027939677 2368684.9999981992878020, 608919.0000000027939677 2368811.9999982002191246, 608801.0000000026775524 2369192.9999982002191246, 609161.0000000027939677 2369096.9999982006847858, 609161.0000000027939677 2369509.9999982025474310, 609857.0000000030267984 2369498.9999982011504471, 609762.0000000030267984 2369689.9999982020817697, 610796.0000000033760443 2369794.9999982025474310, 611332.0000000034924597 2370097.9999982025474310, 613149.0000000040745363 2370460.9999982034787536, 613613.0000000041909516 2369720.9999982016161084, 613697.0000000041909516 2369267.9999981997534633)) - - - -POLYGON ((607216.0000000019790605 2370623.9999982002191246, 608128.0000000019790605 2370312.9999982002191246, 608317.0000000030267984 2370101.9999982002191246, 608328.0000000030267984 2369868.9999982002191246, 608644.0000000030267984 2369847.9999982002191246, 608801.0000000030267984 2369192.9999982002191246, 608919.0000000030267984 2368811.9999982002191246, 609151.0000000030267984 2368684.9999982002191246, 609061.0000000030267984 2368332.9999982002191246, 608602.0000000030267984 2368124.9999982002191246, 607980.0000000019790605 2367585.9999982002191246, 607295.0000000019790605 2367062.9999981899745762, 606251.0000000019790605 2366697.9999981899745762, 605456.0000000019790605 2367679.9999982002191246, 605108.0000000019790605 2368377.9999982002191246, 604906.0000000019790605 2369083.9999982002191246, 604191.0000000010477379 2369719.9999982002191246, 604107.0000000010477379 2370057.9999982002191246, 604264.0000000010477379 2370397.9999982002191246, 604141.0000000010477379 2370768.9999982002191246, 604561.0000000010477379 2370448.9999982002191246, 604940.0000000019790605 2370406.9999982002191246, 605460.0000000019790605 2370792.9999982002191246, 605942.0000000019790605 2370945.9999982099980116, 606364.0000000019790605 2370892.9999982002191246, 606881.0000000019790605 2370988.9999982002191246, 607216.0000000019790605 2370623.9999982002191246)) - - - - -1 - - - - - - -http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html (2) - - - 0103000020BE6B0000010000002A000000FBFFFFFF0BB81A41D3FFFFFF12C63E41FBFFFFFF4FBD1A41D6FFFFFF66C63E41FCFFFFFF1BC11A41D7FFFFFF14C53E41FBFFFFFF93C31A41D3FFFFFFC4C23E41FCFFFFFF87C71A41D8FFFFFFC4C23E41FBFFFFFF8BD41A41D5FFFFFFBEC03E41FBFFFFFF2BD81A41D3FFFFFFDEC03E41FCFFFFFF63DA1A41DBFFFFFFB9BF3E41FCFFFFFF43D91A41D7FFFFFF5BBE3E41FBFFFFFFD7D81A41D1FFFFFFA8BC3E41FCFFFFFF37D61A41D3FFFFFF60BB3E41FCFFFFFFF3DD1A41D6FFFFFFFDB73E41FCFFFFFF6BE11A41D8FFFFFFBCB33E41FCFFFFFF4BDE1A41D8FFFFFFEBB13E41FCFFFFFF7BDB1A41D7FFFFFF8BB13E41FCFFFFFF4BDD1A41D6FFFFFF83B03E41FBFFFFFFB7D91A41D0FFFFFFADAE3E41FBFFFFFF07D81A41D6FFFFFFF4AD3E41FCFFFFFFBBD61A41D6FFFFFF45AB3E41FCFFFFFF67D61A41DBFFFFFFB3A93E41FCFFFFFF63D91A41D6FFFFFF92A83E41FBFFFFFF03C31A41D2FFFFFF75A93E41FBFFFFFF13BE1A41D7FFFFFFB7A83E41FBFFFFFF0FBF1A41D2FFFFFF84A73E41FBFFFFFFD7B41A41D5FFFFFF77A83E41FBFFFFFFAF871A41D6FFFFFFACA83E41FAFFFFFFDF811A41CEFFFFFF79AA3E41FBFFFFFFDF8B1A41D1FFFFFF9AAE3E41FAFFFFFF3B971A41D0FFFFFF76B03E41FBFFFFFF3B891A41D3FFFFFF4FB33E41FCFFFFFFE7871A41D3FFFFFF2EB43E41FBFFFFFFE7881A41D2FFFFFF16B53E41FCFFFFFFC3861A41D8FFFFFF9BB53E41FBFFFFFF27851A41D8FFFFFF67B73E41FBFFFFFFBB8C1A41D4FFFFFFA6B73E41FBFFFFFF03911A41D4FFFFFF38B93E41FBFFFFFF879E1A41D3FFFFFF11BC3E41FBFFFFFF37A91A41D4FFFFFF3EBB3E41FBFFFFFF0BA91A41D2FFFFFF46BC3E41FCFFFFFFC3B31A41D5FFFFFFFABC3E41FBFFFFFFF3B11A41D4FFFFFFDFC33E41FBFFFFFF0BB81A41D3FFFFFF12C63E41 - - - - 0103000020BE6B00000100000038000000000000009C801A41D5FFFFFF33D83E41000000006C821A41D5FFFFFFE0D63E410000000038861A41D5FFFFFFE3D53E4100000000E4851A41D5FFFFFFB0D43E4100000000C0821A41D5FFFFFFF2D33E4100000000B4691A41D5FFFFFFC6CF3E410000000038681A41D5FFFFFFBDCE3E410000000038751A41D5FFFFFF76CD3E410000000068731A41D5FFFFFF30CB3E4100000000787C1A41D5FFFFFFDCCA3E4100000000B4851A41D5FFFFFFDCCA3E4100000000788B1A41D5FFFFFF23CC3E41000000004C8C1A41D5FFFFFF10CB3E4100000000A48A1A41D5FFFFFFDEC93E4100000000788B1A41D5FFFFFFF5C83E4100000000C48E1A41D5FFFFFF17C83E4100000000B8921A41D5FFFFFFCDC73E41000000001C9D1A41D5FFFFFFE2C73E410000000008A31A41D5FFFFFFCBC83E4100000000ECAC1A41D5FFFFFF41C83E41000000005CB21A41D5FFFFFF31C63E41000000000CB81A41D5FFFFFF12C63E4100000000F4B11A41D5FFFFFFDFC33E4100000000C4B31A41D5FFFFFFFABC3E41000000000CA91A41D5FFFFFF46BC3E410000000038A91A41D5FFFFFF3EBB3E4100000000889E1A41D5FFFFFF11BC3E410000000004911A41D5FFFFFF38B93E4100000000BC8C1A41D5FFFFFFA6B73E410000000028851A41D5FFFFFF67B73E4100000000C4861A41D5FFFFFF9BB53E4100000000F0791A41D5FFFFFFD5B53E410000000038701A41D5FFFFFFDDB63E4100000000D0681A41D5FFFFFF84B83E4100000000D0581A41D5FFFFFF9CB73E410000000028581A41D5FFFFFF23B93E4100000000445E1A41D5FFFFFFB5BA3E4100000000245B1A41D5FFFFFF3CBC3E410000000080591A41D5FFFFFF99BD3E4100000000F8501A41D5FFFFFFBABE3E410000000018511A41D5FFFFFF75BF3E4100000000A84B1A41D5FFFFFF31C13E41000000004C4D1A41D5FFFFFFCCC73E4100000000244F1A41D5FFFFFF50CB3E41000000006C441A41D5FFFFFF8DCC3E4100000000BC451A41D5FFFFFF14CE3E4100000000D84B1A41D5FFFFFFFBCF3E4100000000B4571A41D5FFFFFFD6D13E4100000000B0581A41D5FFFFFF09D33E410000000028561A41D5FFFFFF5AD43E4100000000F45E1A41D5FFFFFF59D53E4100000000506B1A41D5FFFFFFB4D73E410000000044701A41D5FFFFFF5FD73E410000000038731A41D5FFFFFF74D73E4100000000E4721A41D5FFFFFFB4D73E41000000009C801A41D5FFFFFF33D83E41 - - - - -1 - - - - - - - -postgis-users/2006-November/013743.html - - -POLYGON((5417148.108 5658342.603,5417139.016 -5658338.009,5417126.791 5658331.833,5417116.292 5658327.518,5417112.871 -5658325.598,5417110.25 5658324.127,5417106.071 5658321.781,5417104.226 -5658320.745,5417093.266 5658315.008,5417091.265 5658313.961,5417085.335 -5658310.857,5417060.44 5658326.26,5417064.68 5658327.52,5417088.83 -5658336.46,5417088.52 5658337.31,5417102.92 5658342.65,5417103.26 -5658341.83,5417111.76 5658345.51,5417121.662 5658349.583,5417121.878 -5658349.672,5417125.217 5658351.119,5417131.761 5658353.388,5417137.589 -5658356.276,5417142.166 5658359.67,5417146.599 5658364.988,5417151.395 -5658370.641,5417150.853 5658371.392,5417152.59741167 -5658373.52811061,5417154.92 5658376.37,5417155.18955743 -5658376.89699992,5417154.919 5658376.371,5417155.814 -5658378.111,5417157.051 5658380.297,5417158.004 5658382.304,5417159.014 -5658384.47,5417159.775 5658386.619,5417160.629 5658389.278,5417161.5 -5658399.49,5417160.773 5658404.194,5417159.41 5658413.02,5417158.853 -5658414.442,5417153.671 5658427.659,5417153.67051161 -5658427.6586943,5417153.67 5658427.66,5417152.73 5658427.07,5417149.993 -5658436.599,5417148.81 5658439.42,5417149.233 5658439.67,5417148.36 -5658440.81,5417146.41 5658446.6,5417144.321 5658453.127,5417144.32092232 -5658453.13043826,5417154.59 5658458.01,5417154.99551047 -5658455.8409905,5417155.446 5658453.413,5417157.23981414 -5658448.75748237,5417157.22660892 5658448.57861162,5417157.22660849 -5658448.57860592,5417157.22660865 5658448.57860812,5417157.128 -5658447.265,5417157.64950997 5658446.06368023,5417157.64950961 -5658446.06368108,5417158.314 5658444.533,5417172.322 -5658417.957,5417174.99 5658418.57,5417175.23 5658417.74,5417176.696 -5658412.61,5417177.875 5658408.488,5417178.76 5658405.39,5417178.1 -5658393.55,5417178.08 5658393.36,5417177.11 5658384.95,5417178.151 -5658384.915,5417178.14836289 5658384.91508866,5417178.12 -5658384.83,5417177.91415246 5658383.81114117,5417176.927 -5658378.944,5417176.603 5658377.341,5417176.73975922 -5658378.01762048,5417176.6 5658377.34,5417176.51210558 -5658376.89535766,5417176.428 5658376.483,5417175.235 -5658370.602,5417171.577 5658362.886,5417170.762 5658360.107,5417168.522 -5658357.989,5417166.042 5658355.047,5417164.137 5658352.264,5417162.642 -5658351.593,5417160.702 5658350.843,5417160.05417889 -5658350.5823586,5417158.82 5658350.09,5417158.82103105 -5658350.0862195,5417159.50373263 5658350.36089455,5417158.818 -5658350.085,5417159.055 5658349.214,5417155.754 -5658347.679,5417156.78066321 5658348.15640928,5417155.7525011 -5658347.6811561,5417155.161 5658348.532,5417149.028 -5658343.237,5417152.26877967 5658346.03496647,5417149.03 -5658343.24,5417148.78133339 5658343.06701453,5417148.108 -5658342.603)) - - - -POLYGON((5417148.36 5658440.81,5417149.233 -5658439.67,5417148.81 5658439.42,5417149.993 5658436.599,5417152.73 -5658427.07,5417153.67 5658427.66,5417153.67051161 -5658427.6586943,5417153.671 5658427.659,5417158.853 -5658414.442,5417159.41 5658413.02,5417160.773 5658404.194,5417161.5 -5658399.49,5417160.63 5658389.28,5417159.78 5658386.62,5417159.366239 -5658385.46469333,5417159.014 5658384.47,5417158.004 -5658382.304,5417157.051 5658380.297,5417155.814 -5658378.111,5417155.18955747 5658376.897,5417154.92 -5658376.37,5417152.59740379 5658373.52810095,5417150.853 -5658371.392,5417151.13020611 5658371.00790076,5417151.4 -5658370.64,5417147.11100598 5658365.59149663,5417146.599 -5658364.988,5417145.96673439 5658364.22950947,5417142.17 -5658359.67,5417139.98754716 5658358.05460369,5417137.589 -5658356.276,5417131.761 5658353.388,5417125.33011568 -5658351.15822058,5417125.22 5658351.12,5417121.88 5658349.67,5417121.66 -5658349.58,5417111.76 5658345.51,5417103.26 5658341.83,5417102.92 -5658342.65,5417088.52 5658337.31,5417088.83 5658336.46,5417064.68 -5658327.52,5417060.44 5658326.26,5417085.34 5658310.86,5417085.90750076 -5658311.15666987,5417091.265 5658313.961,5417093.266 -5658315.008,5417093.61266829 5658315.18946314,5417104.23 -5658320.75,5417105.81727304 5658321.63852784,5417106.071 -5658321.781,5417106.60319005 5658322.07975996,5417110.25 -5658324.13,5417112.87 5658325.6,5417116.29 5658327.52,5417121.76604303 -5658329.76778528,5417126.791 5658331.833,5417139.016 -5658338.009,5417148.108 5658342.603,5417148.78133333 -5658343.06701449,5417149.03 5658343.24,5417152.26878253 -5658346.03496893,5417155.161 5658348.532,5417155.7525011 -5658347.6811561,5417156.78066337 5658348.15640935,5417159.055 -5658349.214,5417158.818 5658350.085,5417158.82103105 -5658350.0862195,5417158.82 5658350.09,5417160.0541792 -5658350.58235872,5417160.702 5658350.843,5417162.642 -5658351.593,5417164.137 5658352.264,5417165.25343486 -5658353.89499119,5417166.04 5658355.05,5417168.52 5658357.99,5417170.76 -5658360.11,5417171.26171711 5658361.81094338,5417171.577 -5658362.886,5417175.235 5658370.602,5417176.428 -5658376.483,5417176.51210558 5658376.89535766,5417176.6 -5658377.34,5417176.73975924 5658378.01762057,5417176.927 -5658378.944,5417177.91415134 5658383.81113564,5417178.12 -5658384.83,5417178.14836289 5658384.91508866,5417177.11 -5658384.95,5417178.08 5658393.36,5417178.1 5658393.55,5417178.76 -5658405.39,5417177.875 5658408.488,5417176.696 5658412.61,5417175.23 -5658417.74,5417174.99 5658418.57,5417172.322 -5658417.957,5417172.32037372 5658417.96008538,5417172.32 -5658417.96,5417158.31 5658444.53,5417157.64951003 -5658446.06368011,5417157.128 5658447.265,5417157.22660867 -5658448.5786084,5417157.23981414 5658448.75748238,5417155.446 -5658453.413,5417154.99551072 5658455.84098918,5417154.59 -5658458.01,5417144.32092232 5658453.13043826,5417144.321 -5658453.127,5417146.41 5658446.6,5417148.36 5658440.81)) - - - - -true - - - - - -true - - - - - -1 - - - - - - - -postgis-users/2006-November/014013.html - - -MULTIPOLYGON(((-112.237615 33.491154,-112.237614 33.490469,-112.237752 -33.490529,-112.23774 33.494274,-112.235109 33.494339,-112.235109 -33.494222,-112.233468 33.494258,-112.233631 33.491873,-112.236704 -33.491169,-112.237615 33.491154)),((-112.237137 33.506662,-112.237111 -33.505964,-112.236836 33.505292,-112.235281 33.503124,-112.23644 -33.502654,-112.237714 33.502702,-112.237695 33.50665,-112.237137 -33.506662)),((-112.236804 33.501624,-112.236731 33.501185,-112.234285 -33.501218,-112.234295 33.499851,-112.237725 33.499804,-112.237714 -33.501536,-112.236804 33.501624))) - - - -POLYGON((-112.235266 33.502267,-112.234309 33.502505,-112.234451 -33.501985,-112.234479 33.501868,-112.234509 33.501141,-112.236709 -33.501141,-112.236909 33.501541,-112.235687 33.502032,-112.235266 -33.502267)) - - - - -0.001 - - - - - - - diff -Nru geos-3.1.0/tests/xmltester/SimpleWKTTester.cpp geos-3.2.2/tests/xmltester/SimpleWKTTester.cpp --- geos-3.1.0/tests/xmltester/SimpleWKTTester.cpp 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/SimpleWKTTester.cpp 2009-06-06 23:17:20.000000000 +0100 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: SimpleWKTTester.cpp 1820 2006-09-06 16:54:23Z mloskot $ + * $Id: SimpleWKTTester.cpp 2555 2009-06-06 22:17:20Z strk $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -20,8 +20,11 @@ #include #include -#include -#include +#include +#include +#include +#include +#include #include using namespace std; diff -Nru geos-3.1.0/tests/xmltester/SingleSidedBufferResultMatcher.cpp geos-3.2.2/tests/xmltester/SingleSidedBufferResultMatcher.cpp --- geos-3.1.0/tests/xmltester/SingleSidedBufferResultMatcher.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/SingleSidedBufferResultMatcher.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,106 @@ +/********************************************************************** + * $Id: SingleSidedBufferResultMatcher.cpp 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: original work + * + **********************************************************************/ + +#include "SingleSidedBufferResultMatcher.h" + +#include +#include +#include +#include + +#include + +namespace geos { +namespace xmltester { + +double SingleSidedBufferResultMatcher::MIN_DISTANCE_TOLERANCE = 1.0e-8; +double SingleSidedBufferResultMatcher::MAX_HAUSDORFF_DISTANCE_FACTOR = 100; + +bool +SingleSidedBufferResultMatcher::isBufferResultMatch(const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, + double distance) +{ + bool aEmpty = actualBuffer.isEmpty(); + bool eEmpty = expectedBuffer.isEmpty(); + + // Both empty succeeds + if (aEmpty && eEmpty) return true; + + // One empty and not the other is a failure + if (aEmpty || eEmpty) + { +std::cerr << "isBufferResultMatch failed (one empty and one not)" << std::endl; + return false; + } + + + // NOTE: we need to test hausdorff distance in both directions + + if (! isBoundaryHausdorffDistanceInTolerance(actualBuffer, + expectedBuffer, distance)) + { +std::cerr << "isBoundaryHasudorffDistanceInTolerance failed (actual,expected)" << std::endl; + return false; + } + + if (! isBoundaryHausdorffDistanceInTolerance(expectedBuffer, + actualBuffer, distance)) + { +std::cerr << "isBoundaryHasudorffDistanceInTolerance failed (expected,actual)" << std::endl; + return false; + } + + return true; +} + +bool +SingleSidedBufferResultMatcher::isBoundaryHausdorffDistanceInTolerance( + const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, double distance) +{ + typedef std::auto_ptr GeomPtr; + + using geos::algorithm::distance::DiscreteHausdorffDistance; + + GeomPtr actualBdy ( actualBuffer.clone() ); + GeomPtr expectedBdy ( expectedBuffer.clone() ); + + DiscreteHausdorffDistance haus(*actualBdy, *expectedBdy); + haus.setDensifyFraction(0.25); + + double maxDistanceFound = haus.orientedDistance(); + + double expectedDistanceTol = fabs(distance) / MAX_HAUSDORFF_DISTANCE_FACTOR; + if (expectedDistanceTol < MIN_DISTANCE_TOLERANCE) + { + expectedDistanceTol = MIN_DISTANCE_TOLERANCE; + } + + if (maxDistanceFound > expectedDistanceTol) + { +std::cerr << "maxDistanceFound: " << maxDistanceFound << " tolerated " << expectedDistanceTol << std::endl; + return false; + } + + return true; +} + +} // namespace geos::xmltester +} // namespace geos diff -Nru geos-3.1.0/tests/xmltester/SingleSidedBufferResultMatcher.h geos-3.2.2/tests/xmltester/SingleSidedBufferResultMatcher.h --- geos-3.1.0/tests/xmltester/SingleSidedBufferResultMatcher.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/SingleSidedBufferResultMatcher.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,60 @@ +/********************************************************************** + * $Id: SingleSidedBufferResultMatcher.h 2809 2009-12-06 01:05:24Z mloskot $ + * + * GEOS - Geometry Engine Open Source + * http://geos.refractions.net + * + * Copyright (C) 2009 Sandro Santilli + * + * This is free software; you can redistribute and/or modify it under + * the terms of the GNU Lesser General Public Licence as published + * by the Free Software Foundation. + * See the COPYING file for more information. + * + ********************************************************************** + * + * Last port: original work + * + **********************************************************************/ + +#ifndef XMLTESTER_SINGLESIDEDBUFFERRESULTMATCHER_H +#define XMLTESTER_SINGLESIDEDBUFFERRESULTMATCHER_H + +// Forward declarations +namespace geos { + namespace geom { + class Geometry; + } +} + +namespace geos { +namespace xmltester { + +class SingleSidedBufferResultMatcher +{ +public: + bool isBufferResultMatch(const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, + double distance); + +private: + + static double MAX_HAUSDORFF_DISTANCE_FACTOR; + + /* + * The minimum distance tolerance which will be used. + * This is required because densified vertices do no lie + * precisely on their parent segment. + */ + static double MIN_DISTANCE_TOLERANCE; + + bool isBoundaryHausdorffDistanceInTolerance( + const geom::Geometry& actualBuffer, + const geom::Geometry& expectedBuffer, + double distance); +}; + +} // namespace geos::xmltester +} // namespace geos + +#endif // XMLTESTER_SINGLESIDEDBUFFERRESULTMATCHER_H diff -Nru geos-3.1.0/tests/xmltester/stmlf-cases-20061020.xml geos-3.2.2/tests/xmltester/stmlf-cases-20061020.xml --- geos-3.1.0/tests/xmltester/stmlf-cases-20061020.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/stmlf-cases-20061020.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,335 +0,0 @@ - - - - - 966094 - 2025063 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 - -010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441 - - - -0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441A4703DDA020A5141F6285C6FFBE8544100000000020A5141CDCCCC6CFDE8544185EB5188010A51413D0AD733FEE85441A4703DDA000A514133333373FEE8544100000010010A5141A4703D5A01E95441 - -5 - - - - 99455 - 3082006 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -9 - -0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441AAC4C227788350416D0791EFF11B5441 - - - -010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441C1AEF59071835041B04E83BEF41B5441DEE3EEB0718350411AA0C35CF71B54414896782172835041A56E6947FD1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C5441 - -5 - - - - 275046 - 3361837 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -7 - -0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441 - - - -0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 - -5 - - - - 984559 - 984543 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD820655411578213AB9A55041AAC14B0E82065541AA83191AB8A550410BB6532E8306554197883DA0B7A550417F9D9F8F850655419F4586A9B7A55041D11DA9AD85065541ACD69341BAA550414D1315128E0655417915A591C8A55041E010AC5D8F065541E656C3E3C9A55041FFFA78848F0655411B560F21CDA5504138A7ACAD8F06554168947DA7C9A5504177CD06F1AF065541E1849B42CDA55041E7CD7CE78F06554185EC5B65CDA550410CB479EB8F06554128F43A6CC9A55041B31E8409B2065541BEA3C40FA1A550419D76610AAE065541E223DE3BA1A550419C41D30AAC065541A8ABFFB1A4A55041740C03188A06554152EADBB8A4A5504112DAEE118A065541C6D01C2AA4A550410139FC0B8A0655411A3C862AA4A55041ED5B35078A065541DB6C0960AAA55041F034990F85065541044C9B65AAA550416A8FC70F85065541C79BE1C3B5A55041D69E636E85065541955A96C2B5A550419B7F4764850655412102AF3DB5A55041B717E45581065541F8DC4F578BA5504119C4682C760655410F37753389A55041B532A59977065541F3712F4F88A550419AE21A4EB50655410F37753389A55041F5A5D2FFB60655415A80D7DBACA55041E30B07E8B80655414EDFA328AEA5504100EF3261BA065541AA3CB11DAEA5504154153F57BA065541F79AE02CB1A550416679D4D4BD065541DC600B79A9A550414230DC400E075541BF6A7E10AEA550410BDA1C74110755413756C137B4A55041FC92284907075541E4EFA437B4A5504106BA974507075541BDC6AEEDB3A5504155B441FCFD065541AD85B2EBB3A550419FF670BCFD0655419F3CCD23B3A550418F5D39A3E4065541E247A97DB3A55041DAD2D922CD065541FB24D4EAB8A55041615C8329CC0655416D81503FB7A55041589E91C0E70655410AE44A8BBDA55041AE2015D1E30655410CD2E5A5BDA550417622F7DFC60655414DA59D7BBEA55041FE2EA8DDC1065541F4F4BA38B8A550415592ABC9C40655418CAE7DF1B7A55041D885FACBC90655414A8EE6C4B3A550413FCC3713CA065541EBC84FFDB3A5504112E22710B806554167F8C7FFB3A55041BB3FA65AB70655415B5FE60AB4A550416DFC595BB706554112DA570FC0A55041D2589D1DB80655410400000059BA0671B1A5504148F8A219BE065541E9E4F983B1A550414EF51C2FBE06554143FAF580AFA550413A35404AD006554159BA0671B1A5504148F8A219BE065541 - - - -01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541E63773E88BA550416EC6A504110755417CFBABD7A5A55041BF94266713075541737C3C55A7A550410AFA459D11075541B60343AAAFA550419FCF5BAEBE065541B35CD980ACA55041842EFC4EBB065541B0B56F57A9A55041FD5D4C9FB906554182233B258AA55041CB6F6AFDB80655411F4777E188A55041FD5D4C9FB9065541FA528B7588A5504178340619BB0655417F7CD1FB86A55041842EFC4EBB065541299A03EE85A55041D8696033B906554140E7853083A55041D8696033B906554158E17B6683A55041389FBA4DB706554104A6178285A550411EABCEE1B60655418C76C73187A550418CDA1E32B5065541C964A9D387A55041849E8DA5770655418C76C73187A55041B3E5051E75065541D1C50FFD5FA55041241A0F286A065541FC2DCBFC41A55041C6C1254964065541DBF7ACEC3EA55041C826B9417C0655413D1392533DA550417352D275B00655414D29D2CB3AA5504106BA1565AF0655417DF207FE3DA550418359369C6B065541DF8AC40E3FA5504176CC6F26660655418B02F7C940A55041B72E0E2764065541EFFBF91B3CA5504103E6C805630655417B14AE173CA550418FC2F5F8640655419A9999A939A55041E17A14EE6A065541B81E853B39A550410AD7A37075065541AE47E1AA36A55041CDCCCC0CB406554152B81E9536A55041CDCCCC2CB6065541E17A141E33A55041EC51B82E0A0755410000005034A5504148E17A840B0755416666666644A550410AD7A3A00C0755418FC2F5385AA550411F85EB210E075541713D0A375DA5504148E17A340F075541E7608D2561A55041ADC66F500F0755410103000000010000000400000008C55C1D3CA550417844C5646206554183150A483CA55041E5AA66CF61065541EC51B81E3CA55041713D0AC76106554108C55C1D3CA550417844C56462065541010300000001000000040000005D8D8B6A85A55041BED241F372065541E47D41AC6AA55041DE43FAAE6B0655417EDE984D71A55041C74E34966D0655415D8D8B6A85A55041BED241F37206554101030000000100000005000000EAFF24B4A9A5504124CF7BA07C0655410B3AAB5FB4A55041A2DEE3787F0655418FAA4712B6A55041AB55FF007F06554100000090B4A550410AD7A3407F065541EAFF24B4A9A5504124CF7BA07C0655410103000000010000000500000001DF2966B8A55041789F9D5C7E0655410B412FB2B8A5504130F7A4477E065541CC7EBC1FB9A55041E4B857F480065541713D0AD7B8A55041CDCCCC2C7E06554101DF2966B8A55041789F9D5C7E06554101030000000100000005000000CFD9570FC0A55041CB589D1DB806554109100BF6C5A550419C44AFB4B8065541F863EE9CCAA55041D51735C8B8065541FA1C3BAEC4A55041ADFA4E68B8065541CFD9570FC0A55041CB589D1DB806554101030000000100000005000000BCC6AEEDB3A5504156B441FCFD065541DFEFA437B4A5504105BA974507075541E17A147EB4A550411F85EBD106075541E897B6E7B3A55041F089613CFD065541BCC6AEEDB3A5504156B441FCFD065541010300000001000000040000005980D7DBACA55041E50B07E8B8065541FECA9E84ACA5504183DC5CE3B806554152DFA328AEA55041FFEE3261BA0655415980D7DBACA55041E50B07E8B806554101030000000100000006000000B84DF564B4A55041D525FB62850655410E6C91F0B5A550417DA1368285065541AEC766EAB5A5504167A26F6585065541935A96C2B5A550419C7F476485065541C59BE1C3B5A55041DB9E636E85065541B84DF564B4A55041D525FB6285065541010300000001000000070000009A4586A9B7A55041D31DA9AD850655418D3618A7B7A55041CB1D6EBB8506554164E2BD2FBAA55041057226148E06554170930B7BCBA5504199BA35B38F0655417715A591C8A55041DD10AC5D8F065541B0D69341BAA550414A1315128E0655419A4586A9B7A55041D31DA9AD8506554101030000000100000004000000BFA3C40FA1A550419B76610AAE0655419BB2CE27A1A55041D8D8C20CAE065541E723DE3BA1A550419D41D30AAC065541BFA3C40FA1A550419B76610AAE0655410103000000010000000400000065F8C7FFB3A55041B63FA65AB7065541E8C84FFDB3A5504115E22710B80655415F5FE60AB4A5504169FC595BB706554165F8C7FFB3A55041B63FA65AB7065541010300000001000000060000001BAC79F6C3A550418B0BF252830655416A1791F2C3A550412E6FF07D830655418DEB2500C4A55041BC721A7F83065541ECD70406C4A55041F471C832830655417871A807BFA550410D4AC6BD820655411BAC79F6C3A550418B0BF25283065541010300000001000000040000005BBA0671B1A550414DF8A219BE0655413FFAF580AFA550413935404AD0065541E7E4F983B1A5504152F51C2FBE0655415BBA0671B1A550414DF8A219BE065541010300000001000000050000002CF43A6CC9A55041B21E8409B206554180EC5B65CDA5504107B479EB8F065541DF849B42CDA55041E8CD7CE78F065541BA6B1E6BC9A55041EEF16709B20655412CF43A6CC9A55041B21E8409B20655410103000000010000000B000000E6FB5D2BD4A55041BFD4E67B87065541F43CDF21D4A550411CF16BD687065541D4F53E49D4A55041DE0AE1DA87065541AA4D8A52D2A5504109968417990655412EB6A1FDCEA55041555C94DAB8065541E5B48A0DCFA550418F21D7DAB8065541FCDEE639D3A550414C050BCE9106554179C6256BD4A550410C9C245F87065541A3302AF0C3A55041919C022585065541321AD0ECC3A550411D50D33F85065541E6FB5D2BD4A55041BFD4E67B8706554101030000000100000006000000699DAFEAA7A55041C178B99214075541A8DF075984A55041C20F520812075541865B5BADABA550414AC4253E1507554195DE56C4ABA5504112C02019150755415C593BE4A7A5504135DDCFCC14075541699DAFEAA7A55041C178B9921407554101030000000100000006000000C8D01C2AA4A550410339FC0B8A065541B94ABDB7A9A550411F3E38478A06554129D4688AAAA55041D8D7F91085065541DA6C0960AAA55041F034990F850655411E3C862AA4A55041ED5B35078A065541C8D01C2AA4A550410339FC0B8A065541 - -1 - - - - 982104 - 1320680 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 - -0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041343426C820D25441 - - - -0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041323426C820D25441 - -1 - - - - 720830 - 32827 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541 - - - -0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541 - -1 - - - - 11503 - 422581 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441 - - - -010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441 - -1 - - - - 35309 - 21138 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541EC51B8FE72325141D7A370BDB72C55417B14AEB77632514114AE4721B82C554148E17AD47A325141E17A14BEB92C5541333333137F325141F6285CAFB42C554148E17A44813251415C8FC255AF2C55410000005082325141666666A6AC2C5541666666B683325141295C8F32AA2C5541666666468532514152B81EF5A72C55410000008089325141295C8F72A42C5541D7A370BD8B32514133333323A22C55413D0AD7038932514148E17A849C2C5541295C8F5282325141295C8F829D2C55417B14AED77F32514185EB51689E2C55418FC2F5D87C325141E17A147E9F2C5541E17A146E7A325141D7A370ED9F2C55419A9999C978325141295C8FA29F2C5541D7A370AD773251410AD7A3709F2C55415C8FC2B57632514148E17A449F2C5541D7A370ED723251415C8FC2959A2C554148E17A247132514185EB51B8962C5541A4703D0A6F3251419A999969882C5541E17A141E6F3251411F85EBE1832C5541EC51B8EE703251415C8FC275812C55417B14AEB770325141295C8FD27E2C55418FC2F56871325141EC51B8BE7C2C554100000030723251413D0AD7937B2C5541CDCCCC1C5F325141EC51B8EE682C5541CDCCCC8C593251410AD7A3F06A2C5541B81E85FB50325141F6285C4F6E2C55417B14AE9744325141AE47E1EA732C554148E17AC43C32514148E17AB4782C5541 - - - -01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541D06DEA786832514180918C2B8C2C5541B586798C683251419AE6092C8C2C5541106B8EEE6832514161B65C748C2C5541 - -1 - - - - 189022 - 7822 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541B81E859B70E65041666666E6A52C5541713D0A3771E6504152B81E25A82C55418FC2F57871E6504100000060A92C5541F6285C6F71E65041A4703DAAAA2C554185EB519874E65041713D0AC7A72C55417B14AE6779E650415C8FC2C5A42C5541AE47E1DA7DE6504185EB51D8A12C55419A9999A980E6504114AE4771A02C5541EC51B8FE85E65041666666669F2C5541D7A3703D88E65041C3F5285C9F2C5541C3F5289C8DE650410AD7A3509D2C554148E17A4495E65041F6285C4F9B2C5541AE47E18A96E6504185EB51489B2C5541D7A370CD9AE65041295C8FC2972C55410000009093E65041C3F5288C992C5541E17A141E91E65041295C8F42982C5541CDCCCCAC91E65041295C8F62952C554185EB51E893E65041295C8FE2932C55419A99993999E65041CDCCCC1C932C5541AE47E15A99E6504152B81EB58D2C5541EC51B8AE9AE65041EC51B84E8B2C5541E17A14DE9CE6504148E17A94892C55418FC2F5F89EE6504114AE47A1842C5541333333A39CE65041B81E852B822C55417B14AEF798E6504152B81E957E2C55411F85EB4195E65041F6285C1F7B2C5541333333C392E6504185EB5198782C55416666661690E65041CDCCCC3C762C5541AE47E10A8EE65041E17A149E742C55411F85EB9191E6504185EB51686F2C55415C8FC20593E65041295C8F426D2C5541D7A3706D8EE65041F6285CFF692C55410AD7A32087E65041EC51B86E642C5541295C8F9284E6504185EB5178622C55410000004083E65041AE47E19A612C5541EC51B8BE81E6504114AE47B1602C55418FC2F54880E65041D7A3700D602C5541B81E850B7DE6504185EB51185F2C5541C3F5288C79E6504148E17AA45E2C5541A4703D5A78E6504185EB5198652C5541B81E85FB77E650419A999949672C5541295C8FB27CE65041D7A370AD692C55419A99997981E65041E17A145E6C2C5541A4703D9A85E6504148E17AE46E2C55415C8FC2E584E650413D0AD7E3702C55419A99992984E6504152B81E65742C55418FC2F50884E6504148E17A64772C55419A99992984E650411F85EB517C2C5541A4703DEA84E65041333333E3892C5541A4703D5A86E65041D7A370AD892C554114AE47718CE650413D0AD763882C55417B14AEE790E65041D7A3707D872C5541F6285CBF92E65041CDCCCC2C882C55417B14AE6792E6504152B81E55892C554148E17A8490E65041A4703DFA892C554185EB51A88CE65041333333C3892C55417B14AEA789E650410AD7A3E08A2C55419A99998985E65041B81E859B8B2C55415C8FC2F584E65041333333B38A2C5541666666D67FE65041B81E85FB8B2C55410AD7A3907FE65041AE47E10A8C2C55415C8FC23577E65041713D0AD78D2C5541D7A3700D76E650419A999989912C5541CDCCCCEC72E65041A4703D8A962C55413333339372E65041D7A3704D962C5541713D0A3771E65041A4703D8A982C5541333333F36FE650417B14AE27992C5541 - - - -0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C554191A5E4B185E650412AEAA7888B2C5541690E5CC386E65041ABCDA25F8B2C5541F981CC498AE65041B5FCE1AD8A2C55412870C0958CE6504167B06FC5892C5541F4E202AB8EE65041400F1CD3892C55411998ECA490E65041A28ACD098A2C5541497C15ED91E650410F35BE8E892C55414886E0F092E65041AEAF4154882C554122D1F6F690E650416063CF6B872C55416AC6FD818EE650415634901D882C55411193AA8C86E650418E51C3B7892C55417E3D9B1186E65041B6F216AA892C5541A6D4230085E65041400F1CD3892C55414F9D43E684E650415AE8839B892C5541 - -1 - - - - 191097 - 2916437 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441 - - - -0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A544168C7D3FA856251410925E3B0B95A5441 - -1 - - - - 256271 - 367713 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 5 - -0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441B81E855BF9BF50413D0AD783522A54410AD7A350FCBF5041B81E858B602A5441E17A14CEFDBF5041D7A3709D672A5441CDCCCC5CFEBF50413D0AD7436A2A54410AD7A3A000C0504133333303752A5441295C8FD202C05041CDCCCC6C7F2A54419A9999990BC0504185EB51C8812A54419A99997911C05041E17A144E852A5441000000901AC05041A4703D7A702A5441666666E645C05041713D0A676B2A544152B81ED566C0504185EB5148712A54416666662665C050413D0AD7A3672A5441B81E850B67C05041AE47E16A602A544148E17A0473C050418FC2F588622A5441000000D071C05041B81E850B562A54413333331371C050410AD7A340502A5441 - - - -01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441 - -1 - - - - 275129 - 384120 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F38637544133333333A32B514152B81EF586375441F6285C7F9D2B5141713D0A578A3754413D0AD7439E2B51413D0AD7538A3754418FC2F558A62B51410AD7A3308A375441C3F5283CB92B51419A9999D989375441 - - - -01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441 - -1 - - - - 275562 - 3361837 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441 - - - -0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 - -1 - - - - 466188 - 3072591 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541 - - - -0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541 - -1 - - - - 415163 - 3180189 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -5 - -010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441 - - - -0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441 - -1 - - - - 401167 - 3148390 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541 - - - -0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541 - -1 - - - - 164313 - 164648 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541 - - - -0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541 - -1 - - - - 464026 - 6704 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 - -0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441 - - - -010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441 - -1 - - - - 469351 - 5219716 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 - -0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541 - - - -01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541 - -1 - - - - 975328 - 1755529 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED8054419E095AE818EA5041B1DF2CEFED805441E96A4CC218EA5041A782F034EE805441BF4C611B19EA5041C220B911FA805441 - - - -0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441295C8FD243EA50413D0AD78302815441EC51B83E4DEA5041295C8FF200815441A4703DBA4DEA504133333393F980544185EB51384EEA5041AE47E10AF2805441B81E854B4EEA5041A4703DBAF0805441CDCCCC9C49EA5041E17A144ED58054410000004050EA5041EC51B8FED18054417B14AE4750EA5041F6285C1FD08054411F85EBC150EA5041333333F3B08054418FC2F51858EA504100000010AA805441F6285CEF72EA5041F6285CDF9080544152B81E5585EA5041AE47E19A7F8054415C8FC22590EA504148E17A74758054418FC2F52891EA5041EC51B80E65805441D6329F0891EA5041BD16B8146480544163482D787FEA50410EB25572698054413ADE4B5B7FEA5041D206DA8D69805441EDBCEA147AEA50414567FA4F6B805441FC64D8B970EA504151544DE96D80544139413ECC6EEA504160E705B26E805441BFF9C5D96CEA5041FA03CCC86F8054410B318F716AEA5041678D6E1F72805441B8A7908A65EA5041EAD8DA7E778054411230DBDA5FEA5041FFAC3BBE7D8054418A0BBA615BEA5041D11557A78280544136CF6CCC58EA50417DC3CC77858054419AF2FE3A57EA5041895144C58780544121FCF00752EA5041E3DE8027918054415CCCEE3F4FEA5041B7DEA5B395805441A4DE97EE4BEA5041466BD80E9B8054416A24D75049EA5041EAFDED4E9F8054410709F2BC48EA5041D6A2AC3DA0805441148F930847EA50414055BD65A2805441219AF3EE44EA5041FB00474FA4805441A26086AE35EA5041ED521B97AA805441D3128A7536EA5041AC950555B4805441BF70595733EA504189A8D5B1B4805441B9B9C0A32FEA5041E53E20D4B6805441A0F4CBF52CEA5041F8953378B88054413DBADB262DEA5041525890BFB880544119CFB05F31EA50413F326AC4DC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA80544188EE881719EA5041DA0E337AED805441040000009913D1F62CEA5041570F3329F480544196481A222DEA5041A0E2151EF48054418052E54D2DEA5041FA9E4F15F48054419913D1F62CEA5041570F3329F4805441 - -1 - - - - 525923 - 45230 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F54411F85EBA181C95041CDCCCC8C222F54413333338382C95041333333E3222F544148E17AA48BC95041EC51B87E252F544185EB51E88FC95041713D0A97262F544185EB51E895C95041C3F5283C282F54410AD7A330A0C95041B81E859B302F544114AE4731A3C9504114AE4781332F5441C3F5280CA5C95041000000C0302F5441AE47E1FAA3C950418FC2F5882E2F5441B81E850BA2C95041D7A370ED2B2F54410AD7A3309DC95041333333A3252F544152B81EA58CC950413D0AD7930D2F5441713D0A2787C95041C3F5282C052F54416666669687C95041F6285C9F042F54411F85EBE18CC9504185EB51480C2F5441A4703DBA8DC950417B14AE070C2F54417B14AE2785C9504133333393FD2E5441000000A082C950410AD7A3E0F82E54410AD7A3907FC95041E17A142EF52E54413D0AD7F37DC950413D0AD7B3F42E54419A9999797EC950418FC2F528F62E54413D0AD78383C950418FC2F518FE2E54411F85EB2187C950411F85EB11042F54410000009086C9504152B81E45042F5441A4703DAA82C95041F6285C4FFE2E544114AE47517FC950413D0AD733F92E5441666666067EC95041295C8F62F62E5441EC51B80E7DC950417B14AEE7F52E544185EB51987CC9504114AE47B1F32E54415C8FC23570C950419A999979EA2E5441D7A3709D6BC950415C8FC265E02E5441B81E85CB66C95041A4703DEAE12E54417B14AEF76EC950418FC2F598F52E54419A9999F973C9504100000040F82E54416666667675C950413D0AD723FC2E5441 - - - -010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441 - -1 - - - - 532351 - 3180577 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 - -0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A54417B14AE47B91E51417B14AE27B47A54410103000000010000000A000000E17A142EA51E51411F85EBE1B17A544100000090A11E514148E17AA4B17A544152B81E15A11E5141E17A141EB67A5441B81E857BAA1E5141EC51B84EB77A544152B81ED5B31E514166666616B57A5441D7A370BDB31E5141713D0AA7B47A544152B81EB5AE1E514185EB5108B47A544148E17AA4AE1E5141713D0A37B37A54413D0AD763AA1E5141CDCCCC7CB27A5441E17A142EA51E51411F85EBE1B17A5441010300000002000000160000001F85EB71EC1E5141C3F5281CB17A544185EB5128EB1E51418FC2F588AF7A54418FC2F5A8E91E5141713D0AA7B17A5441CDCCCC4CDF1E51411F85EBE1AF7A544166666676DF1E5141EC51B82EAF7A5441F6285CBFE81E514114AE4721AF7A54411F85EB51E91E5141295C8F42AE7A54419A999939D21E5141F6285C5FAB7A54417B14AEA7C61E5141D7A370CDA97A5441B81E851BC51E514114AE4731AA7A54418FC2F5C8C41E51413D0AD743AB7A5441C3F528CCC41E514133333353AD7A54417B14AED7C71E5141A4703DDAAD7A54417B14AE17C91E514152B81EA5AE7A54419A999989C91E51419A999989AF7A544152B81EE5C91E51415C8FC295AF7A54418FC2F5D8C91E51410AD7A3C0AF7A5441A4703D7AD11E5141AE47E1AAB07A544100000090EB1E51419A999959B57A5441666666C6EB1E51410AD7A320B47A544148E17A04EC1E5141F6285CDFB17A54411F85EB71EC1E5141C3F5281CB17A544105000000713D0A97D91E514100000040AD7A5441000000F0D81E5141E17A142EAD7A5441AE47E1FAD81E51418FC2F5C8AC7A5441295C8FA2D91E5141B81E85DBAC7A5441713D0A97D91E514100000040AD7A54410103000000010000000E00000052B81ED5111F5141F6285CDFB97A5441295C8FC20D1F514152B81E15B77A54413D0AD7E3071F5141A4703D0AB57A544148E17A94FD1E5141666666F6B17A5441EC51B8AEF51E5141A4703D0AB17A5441E17A140EF11E5141C3F5282CAF7A5441A4703DCAEF1E5141D7A3702DB07A5441C3F528ECED1E5141F6285CBFB47A54415C8FC285FB1E514166666686B77A54411F85EB51071F5141AE47E1CABA7A5441D7A3702D101F514166666626BE7A54419A999929121F5141F6285C4FBF7A54410AD7A360151F51418FC2F538BC7A544152B81ED5111F5141F6285CDFB97A54410103000000010000000F000000EC51B89EA21E514114AE47D1A77A544100000080A21E5141000000F0A87A544100000030A21E514185EB51D8AB7A544152B81E45AF1E51413D0AD773AB7A544185EB51A8B01E51415C8FC2B5A97A544133333383B91E514114AE4731AA7A544152B81EF5C11E5141666666F6A87A5441D7A370DDC01E514133333323A87A5441D7A3706DBF1E51418FC2F5E8A77A5441D7A3700DBC1E5141E17A146EA77A54411F85EBE1B81E5141295C8F62A77A54410AD7A310B81E514152B81E45A77A544166666606B51E5141000000B0A77A544185EB5198AF1E5141E17A143EA77A5441EC51B89EA21E514114AE47D1A77A5441 - - - -0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441 - -1 - - - - 587497 - 409926 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 - -0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441 - - - -01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B676754413AD5EC0B763C51415493273E6A675441088E89EE753C51419D2EDE3B686754414FA0B527763C514133F1EE5468675441AE47E19A753C5141B81E851B59675441000000F0743C5141E17A14DE46675441C2DD97B2733C514113B1F3BE24675441 - -1 - - - - 589978 - 39794 -abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 - -01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B5441D7A3707DE89C5041CDCCCCCCE57B5441AE47E1EAED9C50411F85EBF1E37B54410F000000A4703DAA219D50418FC2F5F8D17B544148E17A542B9D5041AE47E1FACF7B5441666666E62A9D5041EC51B81ED17B544185EB51C80B9D5041295C8FF2D67B5441B81E85FBFD9C50413D0AD713D97B5441295C8FA2F49C504185EB5158DB7B544166666616E99C50419A999939DF7B5441F6285C2FE09C5041A4703D4AE37B5441295C8FF2DF9C5041C3F528DCE27B5441295C8F22EB9C5041713D0A97DD7B544148E17AD4F49C50419A9999A9DA7B544152B81E85FD9C504114AE4741D87B54410AD7A3700C9D504152B81E85D57B5441D7A3709D1A9D5041713D0A97D37B5441A4703DAA219D50418FC2F5F8D17B5441 - - - -0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441 - -1 - - - - 671968 - 1396084 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 - -01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF155541D3E34FA749C350410E53C443AB15554152B81EF549C35041CDCCCCACA9155541F8C21D094AC3504193300D44A9155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A999959831555419A9999994FC35041A4703D7A811555415C8FC2254CC35041E17A14BE8C155541A4703DDA44C3504152B81E358C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541F2003A4236C35041CC08C2A6A9155541773AEE5C36C35041952DEA16AA1555410C00000032D16BC845C35041CA0C3C31A915554132D16BC845C3504103BEB5DEAB155541DF224B4345C35041CDE06426AC155541BE3E5F4D3AC35041510FE03AAC1555411627EA8437C35041BD9A2BA5AA1555410327AD6E37C35041FDD0149CAA1555412546D87537C35041C2C1969CAA15554150B40C6C37C35041D3D50297AA155541D05542C83AC3504143ED9A30AA155541BBB119953DC3504131D6B7B5A915554132D16BC845C35041DD279730A915554132D16BC845C35041CA0C3C31A9155541 - - - -01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541ED003A4236C35041CF08C2A6A91555417B3AEE5C36C35041912DEA16AA15554104B3DB5336C350412E0E5D19AA15554119980D6736C35041EE2F7355AA1555410B864A7936C35041678089A0AA155541C9BE947C36C3504197DEE3AFAA1555414885F57A36C3504166659EB0AA155541155DEE8936C35041344D56EDAA1555411534929A36C35041D8BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF15554152B81EF549C35041CDCCCCACA9155541A0AC12BB4AC35041F9D9AB01A6155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A99995983155541CF9999994FC35041A4703D7A81155541F8994F264CC35041534848BC8C1555410C00000005DEFFC145C35041FA67FF30A915554105DEFFC145C350414278783FA9155541CAF2DA9945C35041EAABC8F7AB155541DE224B4345C35041CBE06426AC155541BF3E5F4D3AC35041550FE03AAC155541E526EA8437C35041A39A2BA5AA1555410027AD6E37C35041FDD0149CAA1555412846D87537C35041C3C1969CAA1555414EB40C6C37C35041D3D50297AA155541D05542C83AC3504141ED9A30AA155541B8B119953DC3504130D6B7B5A915554105DEFFC145C35041FA67FF30A9155541 - -1 - - - - diff -Nru geos-3.1.0/tests/xmltester/stmlf-cases-20070119.xml geos-3.2.2/tests/xmltester/stmlf-cases-20070119.xml --- geos-3.1.0/tests/xmltester/stmlf-cases-20070119.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/stmlf-cases-20070119.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,22 +0,0 @@ - - - - - 3440675 - 39440 -abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 - -01060000000100000001030000000100000010000000ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F3389854419A99995994045141333333F33A985441EC51B81E94045141000000003F985441713D0A6799045141666666763F985441CDCCCCEC9D045141F6285C1F3F9854419A9999C9A3045141EC51B8DE3D985441666666E6AE0451411F85EBB13A985441E17A142EB8045141AE47E1CA36985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F9720736985441 - - - -01060000000100000001030000000100000011000000D7A3701D940451413D0AD7F33898544178DBFF36940451412E6318CD399854413579ED179A045141A0FF7BA5389854414304D81EA004514159B9FE6C3798544169437462A504514119BA06A235985441C01AAF28AB04514110CF31A333985441089AA624AF045141250D45D63298544191CD99DAB1045141B3DFA81232985441A5696F63B60451416745560832985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F338985441 - -5 - - - diff -Nru geos-3.1.0/tests/xmltester/TestBufferExternal.xml geos-3.2.2/tests/xmltester/TestBufferExternal.xml --- geos-3.1.0/tests/xmltester/TestBufferExternal.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestBufferExternal.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,58 +0,0 @@ - - - Various cases which have been reported or identified as causing buffer failures - in previous versions of JTS. - The cases in this file should all pass in the current version of GEOS. - - - com.vividsolutions.jtstest.geomop.BufferValidatedGeometryOperation - - - - JTS List reported error - Jan 4, 2007 - Causes return of tiny polygon in Ver 1.8 and earlier - - - POLYGON ((-2598.774169921875 61.087974548339844, - -2599.804443359375 57.09324264526367, -2599.35595703125 - 42.387855529785156, -2595.31298828125 24.86284828186035, - -2586.894287109375 7.970212459564209, -2572.63818359375 - -9.27978801727295, -2560.283935546875 -18.67239761352539, - -2551.49951171875 -22.76344108581543, -2539.59619140625 - -22.507848739624023, -2531.886474609375 -17.93946647644043, - -2531.310546875 -17.19328498840332, -2518.694580078125 - -27.471830368041992, -2564.515869140625 -44.53504943847656, - -2570.234619140625 -46.65970230102539, -2673.622314453125 - 27.439390182495117, -2682.3828125 31.62391471862793, -2698.79052734375 - 39.21870803833008, -2598.774169921875 61.087974548339844)) - - - -POLYGON ((-2699.7845794534141532 39.3276135169432237, -2699.0041374225334039 40.1956270391905264, -2598.9877800006584039 62.0648935492002920, -2597.8058559463916026 60.8382385980168152, -2598.8005672202098140 56.9813936913733556, -2598.3594225194010505 42.5167306848985689, -2594.3651864258899877 25.2029642876927902, -2586.0504175091409707 8.5188748551773390, -2571.9409713392496997 -8.5536690479851902, -2559.7642985933857744 -17.8112728170916981, -2551.2883050682994508 -21.7586754766669941, -2539.8801180014552301 -21.5137148084118408, -2532.5610544688979644 -17.1768136087722496, -2532.1021741477675278 -16.5822806831722751, -2530.6789157044022431 -16.4180159613365113, -2518.0629489075272431 -26.6965613409751832, -2518.3456049852547949 -28.4089623675790293, -2564.1668940477547949 -45.4721814380135996, -2564.1676040045695117 -45.4724455100536389, -2569.8863540045695117 -47.5970983726024670, -2570.8171618573137494 -47.4725023891361602, -2674.1330478688596486 26.5751235826636680, -2682.8083651094329980 30.7189608003279133, -2699.2105884679976953 38.3112122246230271, -2699.7845794534141532 39.3276135169432237)) - - - - - - JTS List reported error - Jan 4, 2007 - Causes return of tiny polygon in Ver 1.8 and earlier - - - POLYGON ((-2985.708251953125 16.51972770690918, -2982.37744140625 - 13.961258888244629, -2972.9091796875 11.138115882873535, -2956.294921875 - 11.763388633728027, -2941.1298828125 14.348956108093262, - -2922.595458984375 19.414688110351562, -2914.568359375 - -10.223998069763184, -2931.0537109375 -16.33589744567871, - -2946.358642578125 -24.970754623413086, -2959.0654296875 - -34.12342834472656, -2969.88330078125 -44.616554260253906, - -2978.60400390625 -55.14395523071289, -2980.379638671875 - -57.39796829223633, -2985.708251953125 16.51972770690918)) - - - -POLYGON ((-2986.7056636633501512 16.4478258272017506, -2985.0990937741125890 17.3127764525371539, -2981.9147343517970512 14.8667999628029062, -2972.7817300221790902 12.1436203489435375, -2956.3982051078096447 12.7602095344197295, -2941.3462585676961680 15.3264952683112998, -2922.8591038389686219 20.3793079269872521, -2921.6302322462556731 19.6761022339545164, -2913.6031326368806731 -9.9625839461602279, -2914.2207342589513246 -11.1616316755453830, -2930.6315593382983025 -17.2459005599821431, -2945.8190749722657529 -25.8145130479868747, -2958.4216504283335780 -34.8921233207297945, -2969.1479535875710098 -45.2964301092462236, -2977.8260723815997153 -55.7724244074717106, -2979.5941039171189004 -58.0167858332531736, -2980.6728998970838802 -58.3540006419969899, -2981.3770503821001512 -57.4698701719437537, -2986.7056636633501512 16.4478258272017506)) - - - - - diff -Nru geos-3.1.0/tests/xmltester/TestCentroid.xml geos-3.2.2/tests/xmltester/TestCentroid.xml --- geos-3.1.0/tests/xmltester/TestCentroid.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestCentroid.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,149 +0,0 @@ - - - - - P - single point - POINT(10 10) - POINT(10 10) - - - - mP - two points - MULTIPOINT(10 10, 20 20 ) - POINT(15 15) - - - - mP - 4 points - MULTIPOINT(10 10, 20 20, 10 20, 20 10) - POINT(15 15) - - - - L - single segment - LINESTRING(10 10, 20 20) - POINT(15 15) - - - - L - two segments - LINESTRING (60 180, 120 100, 180 180) - POINT (120 140) - - - - L - elongated horseshoe - LINESTRING (80 0, 80 120, 120 120, 120 0)) - - POINT (100 69) - - - - - mL - two single-segment lines - MULTILINESTRING ((0 0, 0 100), (100 0, 100 100)) - POINT (50 50) - - - - mL - two concentric rings, offset - MULTILINESTRING ((0 0, 0 200, 200 200, 200 0, 0 0), - (60 180, 20 180, 20 140, 60 140, 60 180)) - - POINT (90 110) - - - - mL - complicated symmetrical collection of lines - MULTILINESTRING ((20 20, 60 60), - (20 -20, 60 -60), - (-20 -20, -60 -60), - (-20 20, -60 60), - (-80 0, 0 80, 80 0, 0 -80, -80 0), - (-40 20, -40 -20), - (-20 40, 20 40), - (40 20, 40 -20), - (20 -40, -20 -40)) - POINT (0 0) - - - - A - box - POLYGON ((40 160, 160 160, 160 40, 40 40, 40 160)) - POINT (100 100) - - - - A - box with hole - POLYGON ((0 200, 200 200, 200 0, 0 0, 0 200), (20 180, 80 180, 80 20, 20 20, 20 180)) - POINT (116 100) - - - - A - box with offset hole (showing difference between area and line centroid) - POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), - (60 180, 20 180, 20 140, 60 140, 60 180)) - - POINT (103 98) - - - - A - box with 2 symmetric holes - POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), - (60 180, 20 180, 20 140, 60 140, 60 180), - (180 60, 140 60, 140 20, 180 20, 180 60)) - - POINT (100 100) - - - - mA - symmetric angles - MULTIPOLYGON (((0 40, 0 140, 140 140, 140 120, 20 120, 20 40, 0 40)), - ((0 0, 0 20, 120 20, 120 100, 140 100, 140 0, 0 0))) - - POINT (70 70) - - - - GC - two adjacent polygons (showing that centroids are additive) - GEOMETRYCOLLECTION (POLYGON ((0 200, 20 180, 20 140, 60 140, 200 0, 0 0, 0 200)), - POLYGON ((200 200, 0 200, 20 180, 60 180, 60 140, 200 0, 200 200))) - - POINT (103 98) - - - - GC - heterogeneous collection of lines, points - GEOMETRYCOLLECTION (LINESTRING (80 0, 80 120, 120 120, 120 0), - MULTIPOINT (20 60, 40 80, 60 60)) - - POINT (100 69) - - - - GC - heterogeneous collection of polygons, line - GEOMETRYCOLLECTION (POLYGON ((0 40, 40 40, 40 0, 0 0, 0 40)), - LINESTRING (80 0, 80 80, 120 40)) - - POINT (20 20) - - - - GC - heterogeneous collection of polygons, lines, points - GEOMETRYCOLLECTION (POLYGON ((0 40, 40 40, 40 0, 0 0, 0 40)), - LINESTRING (80 0, 80 80, 120 40), - MULTIPOINT (20 60, 40 80, 60 60)) - - POINT (20 20) - - - - GC - overlapping polygons - GEOMETRYCOLLECTION (POLYGON ((20 100, 20 -20, 60 -20, 60 100, 20 100)), - POLYGON ((-20 60, 100 60, 100 20, -20 20, -20 60))) - - POINT (40 40) - - - - diff -Nru geos-3.1.0/tests/xmltester/TestInteriorPoint.xml geos-3.2.2/tests/xmltester/TestInteriorPoint.xml --- geos-3.1.0/tests/xmltester/TestInteriorPoint.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestInteriorPoint.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ - - - - - P - single point - POINT(10 10) - POINT(10 10) - - - - P - single point - MULTIPOINT (60 300, 200 200, 240 240, 200 300, 40 140, 80 240, 140 240, 100 160, 140 200, 60 200) - - POINT (140 240) - - - - L - linestring with single segment - LINESTRING (0 0, 7 14) - - POINT (7 14) - - - - L - linestring with multiple segments - LINESTRING (0 0, 3 15, 6 2, 11 14, 16 5, 16 18, 2 22) - - POINT (11 14) - - - - mL - complex linestrings - MULTILINESTRING ((60 240, 140 300, 180 200, 40 140, 100 100, 120 220), - (240 80, 260 160, 200 240, 180 340, 280 340, 240 180, 180 140, 40 200, 140 260)) - - POINT (180 200) - - - - A - box - POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0)) - - POINT (5 5) - - - - mA - polygons with holes - MULTIPOLYGON (((60 320, 240 340, 260 100, 20 60, 120 180, 60 320), - (200 280, 140 260, 180 160, 240 140, 200 280)), - ((380 280, 300 260, 340 100, 440 80, 380 280), - (380 220, 340 200, 400 100, 380 220))) - - POINT (138 200) - - - - diff -Nru geos-3.1.0/tests/xmltester/TestIsValid.xml geos-3.2.2/tests/xmltester/TestIsValid.xml --- geos-3.1.0/tests/xmltester/TestIsValid.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestIsValid.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,102 +0,0 @@ - - - - - - http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (1) - - POLYGON((-84.738876 42.582151,-84.738888 42.596708,-84.724038 - 42.596646,-84.719287 42.596633,-84.719227 42.589677,-84.719189 - 42.582134,-84.72666 42.582141,-84.738876 42.582151),(-84.726654 - 42.587769,-84.726352 42.587513,-84.726232 42.587565,-84.726351 - 42.58774,-84.726654 42.587769),(-84.726654 42.587769,-84.727094 - 42.587452,-84.727147 42.58742,-84.727192 42.587315,-84.727168 - 42.587211,-84.727028 42.587189,-84.726797 42.587195,-84.726723 - 42.587239,-84.726654 42.587769)) - - - true - - - - - http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (2) - - POLYGON((-82.509817 27.972398,-82.514117 27.972798,-82.514018 - 27.974298,-82.505617 27.973998,-82.505817 27.966898,-82.507967 - 27.96695,-82.509917 27.966998,-82.510617 27.966998,-82.511217 - 27.966898,-82.513917 27.966998,-82.514665 27.967018,-82.514633 - 27.967194,-82.514697 27.967306,-82.514761 27.967402,-82.514985 - 27.967386,-82.515257 27.967418,-82.515657 27.967498,-82.515881 - 27.967482,-82.516105 27.967354,-82.516105 27.967194,-82.516073 - 27.967018,-82.522762 27.96713,-82.522728 27.967269,-82.522698 - 27.967434,-82.522522 27.96745,-82.522346 27.967402,-82.522186 - 27.967434,-82.52201 27.967402,-82.521866 27.967466,-82.521866 - 27.967786,-82.520617 27.967798,-82.516017 27.968898,-82.509817 - 27.968798,-82.509817 27.972398),(-82.516169 27.967882,-82.516105 - 27.967722,-82.515945 27.967642,-82.515849 27.967642,-82.515801 - 27.967706,-82.515673 27.967754,-82.515657 27.967818,-82.515593 - 27.967946,-82.516169 27.967882),(-82.515593 27.967946,-82.515577 - 27.967786,-82.515433 27.967722,-82.515305 27.967722,-82.515129 - 27.967786,-82.515177 27.967946,-82.515593 27.967946)) - - - true - - - - - http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (3) - - POLYGON((-71.931796 42.991371,-71.93256 42.991018,-71.93288 - 42.990854,-71.933182 42.990678,-71.933551 42.990446,-71.933835 - 42.99026,-71.93411 42.990064,-71.934374 42.98986,-71.934563 - 42.989701,-71.934805 42.98948,-71.935031 42.98925,-71.935299 - 42.988958,-71.935559 42.988664,-71.936008 42.988123,-71.936214 - 42.987883,-71.936407 42.987637,-71.936456 42.98757,-71.936383 - 42.991832,-71.936514 42.99218,-71.936843 42.992423,-71.937311 - 42.992499,-71.937807 42.992469,-71.942299 42.99218,-71.946553 - 42.991392,-71.947021 42.993047,-71.942798 42.99363,-71.942331 - 42.993745,-71.942443 42.994306,-71.937363 42.995159,-71.938871 - 42.997584,-71.939874 42.997559,-71.939932 42.999107,-71.938708 - 42.99946,-71.938807 43.000935,-71.938987 43.000993,-71.93738 - 43.002347,-71.937321 43.002418,-71.937093 43.002389,-71.936907 - 43.002351,-71.936541 43.002239,-71.936021 43.002065,-71.935846 - 43.002011,-71.935671 43.001975,-71.935472 43.001935,-71.935093 - 43.001869,-71.933985 43.00171,-71.933607 43.001674,-71.933126 - 43.001639,-71.932939 43.001615,-71.93285 43.001592,-71.932769 - 43.001558,-71.932627 43.001467,-71.931946 43.000986,-71.931801 - 43.000899,-71.931646 43.000819,-71.931466 43.000763,-71.93127 - 43.000744,-71.931078 43.000761,-71.930893 43.000798,-71.930528 - 43.000881,-71.929887 43.000996,-71.9297 43.00101,-71.929034 - 43.001018,-71.928727 43.001025,-71.928253 43.000345,-71.927829 - 42.999794,-71.927479 42.999373,-71.927353 42.999231,-71.927114 - 42.998965,-71.926971 42.998822,-71.926888 42.998722,-71.92683 - 42.99867,-71.92668 42.998502,-71.926461 42.998256,-71.926366 - 42.998132,-71.926283 42.998004,-71.92625 42.997947,-71.926207 - 42.997874,-71.926143 42.997741,-71.926086 42.997608,-71.926038 - 42.997471,-71.926002 42.997331,-71.925972 42.997122,-71.925968 - 42.996912,-71.926004 42.996632,-71.926095 42.996318,-71.926104 - 42.996288,-71.926203 42.996068,-71.926224 42.996021,-71.926372 - 42.995759,-71.926729 42.995183,-71.926877 42.994951,-71.926986 - 42.994781,-71.927784 42.994482,-71.927982 42.994385,-71.928404 - 42.994121,-71.928627 42.993843,-71.928705 42.993509,-71.928598 - 42.992996,-71.928837 42.992817,-71.928863 42.992798,-71.929156 - 42.992616,-71.929384 42.992486,-71.92978 42.992284,-71.930189 - 42.992093,-71.931796 42.991371),(-71.935914 43.001009,-71.935867 - 43.000784,-71.935867 43.000706,-71.935853 43.000638,-71.935832 - 43.000588,-71.935725 43.000595,-71.935689 43.000663,-71.9357 - 43.000852,-71.935732 43.000934,-71.935785 43.000977,-71.935914 - 43.001009),(-71.935914 43.001009,-71.936139 43.000984,-71.93621 - 43.000934,-71.936253 43.000874,-71.936257 43.000774,-71.936228 - 43.000552,-71.936209 43.000485,-71.936203 43.000463,-71.936121 - 43.000449,-71.93606 43.000456,-71.93601 43.000492,-71.936 - 43.000556,-71.936014 43.000638,-71.936032 43.000699,-71.936028 - 43.000806,-71.936003 43.000881,-71.935914 43.001009)) - - - true - - - - diff -Nru geos-3.1.0/tests/xmltester/testLeaksBig.xml geos-3.2.2/tests/xmltester/testLeaksBig.xml --- geos-3.1.0/tests/xmltester/testLeaksBig.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/testLeaksBig.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,10522 +0,0 @@ - - - - - P - point - POINT(10 10) - - GEOMETRYCOLLECTION EMPTY - - - - - mP - MultiPoint - MULTIPOINT((10 10), (20 20)) - - GEOMETRYCOLLECTION EMPTY - - - - - L - Line - LINESTRING(10 10, 20 20) - - - MULTIPOINT(10 10, 20 20) - - - - - L - closed - LINESTRING(10 10, 20 20, 20 10, 10 10) - - MULTIPOINT EMPTY - - - - - L - self-intersecting with boundary - LINESTRING(40 40, 100 100, 180 100, 180 180, 100 180, 100 100) - - MULTIPOINT(40 40, 100 100) - - - - - mL - 2 lines with common endpoint - MULTILINESTRING( (10 10, 20 20), (20 20, 30 30)) - - MULTIPOINT(10 10, 30 30) - - - - - mL - 3 lines with common endpoint - MULTILINESTRING( (10 10, 20 20), (20 20, 30 20), (20 20, 30 30)) - - MULTIPOINT(10 10, 20 20, 30 20, 30 30) - - - - - mL - 4 lines with common endpoint - MULTILINESTRING( (10 10, 20 20), (20 20, 30 20), (20 20, 30 30), (20 20, 30 40)) - - MULTIPOINT((10 10), (30 20), (30 30), (30 40)) - - - - - mL - 2 lines, one closed, with common endpoint - MULTILINESTRING( (10 10, 20 20), (20 20, 20 30, 30 30, 30 20, 20 20)) - - MULTIPOINT(10 10, 20 20) - - - - - L - 1 line, self-intersecting, topologically equal to prev case - MULTILINESTRING( (10 10, 20 20, 20 30, 30 30, 30 20, 20 20)) - - MULTIPOINT(10 10, 20 20) - - - - - A - polygon with no holes - POLYGON( (40 60, 420 60, 420 320, 40 320, 40 60)) - - LINESTRING(40 60, 420 60, 420 320, 40 320, 40 60) - - - - - A - polygon with 1 hole - POLYGON( (40 60, 420 60, 420 320, 40 320, 40 60), (200 140, 160 220, 260 200, 200 140)) - - - MULTILINESTRING((40 60, 420 60, 420 320, 40 320, 40 60), (200 140, 160 220, 260 200, 200 140)) - - - - - - - SegFault - POLYGON((1033707.6 1048313.1,1033694.9 1048315.7,1033659.9 1048344.3,1033627.6 1048388.8,1033620.9 1048426.8,1033623.6 1048471.3,1033623.6 1048480.8,1033616.8 1048503.2,1033629.1 1048541.3,1033668.3 1048707.6,1033696.3 1048755.6,1033721.4 1048771.6,1033724.5 1048772,1033737.2 1048772,1033772.1 1048756.4,1033794.6 1048721.9,1033811.1 1048667.4,1033814.8 1048613.6,1033815.1 1048597.5,1033809.2 1048556.1,1033809.3 1048549.6,1033797.1 1048501.9,1033790.9 1048492.2,1033773 1048399.6,1033760.6 1048377.6,1033741.8 1048357.8,1033742.1 1048341.8,1033713.9 1048313.4,1033707.6 1048313.1)) - - true - - - - - AA - simple polygons - - POLYGON( - (10 10, 100 10, 100 100, 10 100, 10 10)) - - - POLYGON( - (50 50, 200 50, 200 200, 50 200, 50 50)) - - - - POLYGON( - (50 50, 50 100, 100 100, 100 50, 50 50)) - - - - - POLYGON( - (10 10, 10 100, 50 100, 50 200, 200 200, 200 50, 100 50, 100 10, 10 10)) - - - - - POLYGON( - (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)) - - - - - MULTIPOLYGON( - ( - (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)), - ( - (50 100, 50 200, 200 200, 200 50, 100 50, 100 100, 50 100))) - - - - - - AA - A with hole intersecting B - - POLYGON( - (20 20, 20 160, 160 160, 160 20, 20 20), - (140 140, 40 140, 40 40, 140 40, 140 140)) - - - POLYGON( - (80 100, 220 100, 220 240, 80 240, 80 100)) - - - - POLYGON( - (80 140, 80 160, 160 160, 160 100, 140 100, 140 140, 80 140)) - - - - - POLYGON( - (20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), - (80 100, 80 140, 40 140, 40 40, 140 40, 140 100, 80 100)) - - - - - POLYGON( - (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, - 160 20, 20 20)) - - - - - MULTIPOLYGON( - ( - (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, - 160 20, 20 20)), - ( - (80 100, 80 140, 140 140, 140 100, 80 100)), - ( - (80 160, 80 240, 220 240, 220 100, 160 100, 160 160, 80 160))) - - - - - - AA - simple polygons #2 - - POLYGON( - (20 340, 330 380, 50 40, 20 340)) - - - POLYGON( - (210 320, 140 270, 0 270, 140 220, 210 320)) - - - - POLYGON( - (27 270, 140 270, 210 320, 140 220, 28 260, 27 270)) - - - - - POLYGON( - (20 340, 330 380, 50 40, 28 260, 0 270, 27 270, 20 340)) - - - - - POLYGON( - (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)) - - - - - MULTIPOLYGON( - ( - (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)), - ( - (27 270, 28 260, 0 270, 27 270))) - - - - - - AA - simple polygons intersecting in P, L and A - - POLYGON( - (0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0)) - - - POLYGON( - (220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0)) - - - - GEOMETRYCOLLECTION( - POINT(110 260), - LINESTRING(110 0, 110 60), - POLYGON( - (110 100, 40 140, 110 180, 180 140, 110 100))) - - - - - POLYGON( - (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), - (110 260, 40 220, 110 180, 180 220, 110 260), - (110 100, 40 60, 110 60, 180 60, 110 100)) - - - - - POLYGON( - (110 0, 0 0, 0 260, 110 260, 40 220, 110 180, 40 140, 110 100, 40 60, - 110 60, 110 0)) - - - - - POLYGON( - (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), - (110 260, 40 220, 110 180, 180 220, 110 260), - (110 180, 40 140, 110 100, 180 140, 110 180), - (110 100, 40 60, 110 60, 180 60, 110 100)) - - - - - - AA - simple polygons with two touching holes in their symDifference - - POLYGON( - (0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, - 0 0)) - - - POLYGON( - (230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, - 230 0)) - - - - POLYGON( - (120 0, 0 0, 0 190, 120 190, 230 190, 230 0, 120 0), - (120 100, 50 50, 120 50, 190 50, 120 100), - (120 100, 190 150, 120 150, 50 150, 120 100)) - - - - - - AmA - A simple, symDiff contains inversion - - POLYGON( - (0 0, 210 0, 210 230, 0 230, 0 0)) - - - MULTIPOLYGON( - ( - (40 20, 0 0, 20 40, 60 60, 40 20)), - ( - (60 90, 60 60, 90 60, 90 90, 60 90)), - ( - (70 120, 90 90, 100 120, 70 120)), - ( - (120 70, 90 90, 120 100, 120 70))) - - - - POLYGON( - (0 0, 0 230, 210 230, 210 0, 0 0), - (0 0, 40 20, 60 60, 20 40, 0 0), - (60 60, 90 60, 90 90, 60 90, 60 60), - (90 90, 120 70, 120 100, 90 90), - (90 90, 100 120, 70 120, 90 90)) - - - - - - AmA - A simple, B connected multiPolygon touching A at vertex - - POLYGON( - (0 0, 340 0, 340 300, 0 300, 0 0)) - - - MULTIPOLYGON( - ( - (40 20, 0 0, 20 40, 60 60, 40 20)), - ( - (60 100, 60 60, 100 60, 100 100, 60 100))) - - - - MULTIPOLYGON( - ( - (40 20, 0 0, 20 40, 60 60, 40 20)), - ( - (60 60, 60 100, 100 100, 100 60, 60 60))) - - - - - POLYGON( - (0 0, 0 300, 340 300, 340 0, 0 0), - (0 0, 40 20, 60 60, 20 40, 0 0), - (60 60, 100 60, 100 100, 60 100, 60 60)) - - - - - - AmA - A simple, B connected multiPolygon touching A at interior of edge - - POLYGON( - (0 0, 120 0, 120 120, 0 120, 0 0)) - - - MULTIPOLYGON( - ( - (60 20, 0 20, 60 60, 60 20)), - ( - (60 100, 60 60, 100 60, 100 100, 60 100))) - - - - MULTIPOLYGON( - ( - (60 20, 0 20, 60 60, 60 20)), - ( - (60 60, 60 100, 100 100, 100 60, 60 60))) - - - - - POLYGON( - (0 20, 0 120, 120 120, 120 0, 0 0, 0 20)) - - - - - POLYGON( - (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), - (0 20, 60 20, 60 60, 0 20), - (60 60, 100 60, 100 100, 60 100, 60 60)) - - - - - POLYGON( - (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), - (0 20, 60 20, 60 60, 0 20), - (60 60, 100 60, 100 100, 60 100, 60 60)) - - - - - - AA - simple polygons with holes - - POLYGON( - (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), - (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) - - - POLYGON( - (300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), - (290 240, 240 200, 240 110, 290 80, 330 170, 290 240)) - - - - POLYGON( - (251 104, 217 57, 176 89, 210 130, 210 210, 172 226, 190 270, 217 285, 260 250, - 263 218, 240 200, 240 110, 251 104)) - - - - - MULTIPOLYGON( - ( - (217 57, 190 20, 60 40, 20 150, 60 260, 160 330, 217 285, 190 270, 172 226, - 140 240, 80 190, 90 100, 160 70, 176 89, 217 57)), - ( - (217 57, 251 104, 290 80, 330 170, 290 240, 263 218, 260 250, 217 285, 300 330, - 380 250, 380 50, 250 30, 217 57)), - ( - (263 218, 270 130, 251 104, 240 110, 240 200, 263 218)), - ( - (172 226, 210 210, 210 130, 176 89, 150 110, 150 170, 172 226))) - - - - - - mAmA - complex polygons touching and overlapping - - MULTIPOLYGON( - ( - (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, - 200 200, 220 200, 220 340, 120 340)), - ( - (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, - 220 120, 220 100, 360 100, 360 200))) - - - MULTIPOLYGON( - ( - (100 220, 100 200, 300 200, 300 220, 100 220)), - ( - (280 180, 280 160, 300 160, 300 180, 280 180)), - ( - (220 140, 220 120, 240 120, 240 140, 220 140)), - ( - (180 220, 160 240, 200 240, 180 220))) - - - - MULTILINESTRING( - (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, - 200 200, 220 200, 220 340, 120 340), - (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, - 220 120, 220 100, 360 100, 360 200)) - - - - - POLYGON( - (220 100, 120 200, 120 340, 220 340, 360 200, 360 100, 220 100)) - - - - - GEOMETRYCOLLECTION( - POINT(200 240), - LINESTRING(300 200, 220 200), - LINESTRING(280 180, 300 180), - LINESTRING(300 180, 300 160), - LINESTRING(300 160, 280 160), - LINESTRING(220 140, 240 140), - LINESTRING(240 120, 220 120), - POLYGON( - (120 200, 120 220, 140 220, 140 200, 120 200)), - POLYGON( - (160 200, 160 220, 180 220, 180 200, 160 200)), - POLYGON( - (180 240, 180 220, 160 240, 180 240)), - POLYGON( - (200 200, 200 220, 220 220, 220 200, 200 200))) - - - - - POLYGON( - (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, - 220 120, 220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200, - 140 200, 120 200, 100 200, 100 220, 120 220), - (200 240, 200 280, 180 280, 180 240, 200 240), - (200 240, 180 220, 200 220, 200 240), - (160 240, 160 280, 140 280, 140 220, 160 220, 160 240), - (240 120, 300 120, 300 140, 240 140, 240 120)) - - - - - MULTIPOLYGON( - ( - (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, - 160 240, 160 280, 140 280, 140 220, 120 220)), - ( - (160 220, 160 240, 180 220, 160 220)), - ( - (300 200, 360 200, 360 100, 220 100, 220 120, 240 120, 300 120, 300 140, 240 140, - 220 140, 220 160, 280 160, 300 160, 300 180, 280 180, 220 180, 220 200, 300 200))) - - - - - MULTIPOLYGON( - ( - (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, - 160 240, 160 280, 140 280, 140 220, 120 220)), - ( - (120 220, 120 200, 100 200, 100 220, 120 220)), - ( - (140 200, 140 220, 160 220, 160 200, 140 200)), - ( - (160 220, 160 240, 180 220, 160 220)), - ( - (180 200, 180 220, 200 220, 200 200, 180 200)), - ( - (180 220, 180 240, 200 240, 180 220)), - ( - (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120, 220 140, - 220 160, 280 160, 280 180, 220 180, 220 200), - (240 120, 300 120, 300 140, 240 140, 240 120))) - - - - - - mAmA - complex polygons touching - - MULTIPOLYGON( - ( - (100 200, 100 180, 120 180, 120 200, 100 200)), - ( - (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, - 160 220, 220 220, 220 240, 60 240), - (80 220, 80 160, 140 160, 140 220, 80 220)), - ( - (280 220, 240 180, 260 160, 300 200, 280 220))) - - - MULTIPOLYGON( - ( - (80 220, 80 160, 140 160, 140 220, 80 220), - (100 200, 100 180, 120 180, 120 200, 100 200)), - ( - (220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, - 220 140, 320 140, 320 240, 220 240), - (240 220, 240 160, 300 160, 300 220, 240 220))) - - - - MULTILINESTRING( - (100 200, 100 180, 120 180, 120 200, 100 200), - (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, - 160 220, 220 220, 220 240, 60 240), - (80 220, 80 160, 140 160, 140 220, 80 220), - (280 220, 240 180, 260 160, 300 200, 280 220)) - - - - - POLYGON( - (60 140, 60 240, 220 240, 280 220, 300 200, 260 160, 220 140, 60 140)) - - - - - GEOMETRYCOLLECTION( - POINT(240 180), - POINT(260 160), - POINT(280 220), - POINT(300 200), - LINESTRING(100 200, 100 180), - LINESTRING(100 180, 120 180), - LINESTRING(120 180, 120 200), - LINESTRING(120 200, 100 200), - LINESTRING(220 140, 220 160), - LINESTRING(220 160, 160 160), - LINESTRING(160 160, 160 180), - LINESTRING(160 180, 200 180), - LINESTRING(200 200, 160 200), - LINESTRING(160 200, 160 220), - LINESTRING(160 220, 220 220), - LINESTRING(220 220, 220 240), - LINESTRING(80 220, 80 160), - LINESTRING(80 160, 140 160), - LINESTRING(140 160, 140 220), - LINESTRING(140 220, 80 220)) - - - - - MULTIPOLYGON( - ( - (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), - (200 200, 200 180, 220 180, 220 200, 200 200), - (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), - ( - (240 180, 280 220, 300 200, 260 160, 240 180))) - - - - - MULTIPOLYGON( - ( - (100 180, 100 200, 120 200, 120 180, 100 180)), - ( - (220 140, 60 140, 60 240, 220 240, 220 220, 160 220, 160 200, 200 200, 200 180, - 160 180, 160 160, 220 160, 220 140), - (80 220, 80 160, 140 160, 140 220, 80 220)), - ( - (240 180, 280 220, 300 200, 260 160, 240 180))) - - - - - MULTIPOLYGON( - ( - (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), - (200 200, 200 180, 220 180, 220 200, 200 200), - (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), - ( - (240 180, 280 220, 300 200, 260 160, 240 180))) - - - - - - AA - hole intersecting boundary to produce line - - POLYGON( - (60 160, 140 160, 140 60, 60 60, 60 160)) - - - POLYGON( - (160 160, 100 160, 100 100, 160 100, 160 160), - (140 140, 120 140, 120 120, 140 120, 140 140)) - - - - LINESTRING( - 60 160, 140 160, 140 60, 60 60, 60 160) - - - - - POLYGON( - (60 60, 60 160, 140 160, 140 60, 60 60)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(140 140, 140 120), - POLYGON( - (100 160, 140 160, 140 140, 120 140, 120 120, 140 120, 140 100, 100 100, 100 160))) - - - - - POLYGON( - (60 160, 100 160, 140 160, 160 160, 160 100, 140 100, 140 60, 60 60, 60 160)) - - - - - MULTIPOLYGON( - ( - (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), - ( - (140 140, 140 120, 120 120, 120 140, 140 140))) - - - - - MULTIPOLYGON( - ( - (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), - ( - (140 140, 140 160, 160 160, 160 100, 140 100, 140 120, 120 120, 120 140, 140 140))) - - - - - - - LA - A and B simple - - LINESTRING(240 190, 120 120) - - - POLYGON( - (110 240, 50 80, 240 70, 110 240)) - - - - LINESTRING(177 153, 120 120) - - - - - GEOMETRYCOLLECTION( - LINESTRING(240 190, 177 153), - POLYGON( - (177 153, 240 70, 50 80, 110 240, 177 153))) - - - - - LINESTRING(240 190, 177 153) - - - - - GEOMETRYCOLLECTION( - LINESTRING(240 190, 177 153), - POLYGON( - (177 153, 240 70, 50 80, 110 240, 177 153))) - - - - - - LA - A intersects B-hole - - LINESTRING(0 100, 100 100, 200 200) - - - POLYGON( - (30 240, 260 30, 30 30, 30 240), - (80 140, 80 80, 140 80, 80 140)) - - - - MULTILINESTRING( - (30 100, 80 100), - (110 110, 140 140)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(0 100, 30 100), - LINESTRING(80 100, 100 100, 110 110), - LINESTRING(140 140, 200 200), - POLYGON( - (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), - (80 140, 80 100, 80 80, 140 80, 110 110, 80 140))) - - - - - MULTILINESTRING( - (0 100, 30 100), - (80 100, 100 100, 110 110), - (140 140, 200 200)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(0 100, 30 100), - LINESTRING(80 100, 100 100, 110 110), - LINESTRING(140 140, 200 200), - POLYGON( - (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), - (80 140, 80 100, 80 80, 140 80, 110 110, 80 140))) - - - - - - LA - A intersects B-hole #2 - - LINESTRING(40 340, 200 250, 120 180, 160 110, 270 40) - - - POLYGON( - (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), - (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) - - - - MULTILINESTRING( - (114 298, 200 250, 173 226), - (182 96, 225 68)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(40 340, 114 298), - LINESTRING(173 226, 120 180, 160 110, 182 96), - LINESTRING(225 68, 270 40), - POLYGON( - (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, - 114 298), - (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240))) - - - - - MULTILINESTRING( - (40 340, 114 298), - (173 226, 120 180, 160 110, 182 96), - (225 68, 270 40)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(40 340, 114 298), - LINESTRING(173 226, 120 180, 160 110, 182 96), - LINESTRING(225 68, 270 40), - POLYGON( - (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, - 114 298), - (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240))) - - - - - - mLmA - A and B complex, disjoint - - MULTIPOLYGON( - ( - (60 320, 60 80, 300 80, 60 320), - (80 280, 80 100, 260 100, 80 280)), - ( - (120 160, 140 160, 140 140, 120 160))) - - - MULTILINESTRING( - (100 240, 100 180, 160 180, 160 120, 220 120), - (40 360, 40 60, 340 60, 40 360, 40 20), - (120 120, 120 140, 100 140, 100 120, 140 120)) - - - - POLYGON( - (60 80, 60 320, 300 80, 60 80)) - - - - - MULTILINESTRING( - (60 320, 60 80, 300 80, 60 320), - (80 280, 80 100, 260 100, 80 280), - (120 160, 140 160, 140 140, 120 160)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), - LINESTRING(40 360, 40 60), - LINESTRING(40 60, 340 60, 40 360), - LINESTRING(40 60, 40 20), - LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), - LINESTRING(120 120, 140 120), - POLYGON( - (60 320, 300 80, 60 80, 60 320), - (80 280, 80 100, 260 100, 80 280)), - POLYGON( - (120 160, 140 160, 140 140, 120 160))) - - - - - MULTIPOLYGON( - ( - (60 320, 300 80, 60 80, 60 320), - (80 280, 80 100, 260 100, 80 280)), - ( - (120 160, 140 160, 140 140, 120 160))) - - - - - GEOMETRYCOLLECTION( - LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), - LINESTRING(40 360, 40 60), - LINESTRING(40 60, 340 60, 40 360), - LINESTRING(40 60, 40 20), - LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), - LINESTRING(120 120, 140 120), - POLYGON( - (60 320, 300 80, 60 80, 60 320), - (80 280, 80 100, 260 100, 80 280)), - POLYGON( - (120 160, 140 160, 140 140, 120 160))) - - - - - GEOMETRYCOLLECTION EMPTY - - - - - mLmA - A and B complex, overlapping and touching #1 - - MULTIPOLYGON( - ( - (60 260, 60 120, 220 120, 220 260, 60 260), - (80 240, 80 140, 200 140, 200 240, 80 240)), - ( - (100 220, 100 160, 180 160, 180 220, 100 220), - (120 200, 120 180, 160 180, 160 200, 120 200))) - - - MULTILINESTRING( - (40 260, 240 260, 240 240, 40 240, 40 220, 240 220), - (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320)) - - - - MULTILINESTRING( - (60 260, 60 120, 220 120, 220 260, 60 260), - (80 240, 80 140, 200 140, 200 240, 80 240), - (100 220, 100 160, 180 160, 180 220, 100 220), - (120 200, 120 180, 160 180, 160 200, 120 200)) - - - - - POLYGON( - (60 120, 60 260, 220 260, 220 120, 60 120)) - - - - - MULTILINESTRING( - (220 260, 140 260), - (140 260, 120 260), - (120 260, 60 260), - (200 240, 140 240), - (140 240, 120 240), - (120 240, 80 240), - (180 220, 140 220), - (140 220, 120 220), - (120 220, 100 220), - (120 200, 120 180), - (220 240, 200 240), - (80 240, 60 240), - (60 220, 80 220), - (200 220, 220 220), - (120 260, 120 240), - (120 220, 120 200), - (120 180, 120 160), - (120 140, 120 120), - (140 120, 140 140), - (140 160, 140 180), - (140 200, 140 220), - (140 240, 140 260)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(40 260, 60 260), - LINESTRING(220 260, 240 260, 240 240, 220 240), - LINESTRING(60 240, 40 240, 40 220, 60 220), - LINESTRING(80 220, 100 220), - LINESTRING(180 220, 200 220), - LINESTRING(220 220, 240 220), - LINESTRING(120 300, 120 260), - LINESTRING(120 240, 120 220), - LINESTRING(120 160, 120 140), - LINESTRING(120 120, 120 80), - LINESTRING(120 80, 140 80), - LINESTRING(140 80, 140 120), - LINESTRING(140 140, 140 160), - LINESTRING(140 180, 140 200), - LINESTRING(140 220, 140 240), - LINESTRING(140 260, 140 300), - LINESTRING(120 300, 120 320), - POLYGON( - (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, - 120 120, 60 120, 60 220, 60 240), - (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, - 120 240, 80 240)), - POLYGON( - (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), - (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) - - - - - MULTIPOLYGON( - ( - (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, - 120 120, 60 120, 60 220, 60 240), - (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, - 120 240, 80 240)), - ( - (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), - (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) - - - - - GEOMETRYCOLLECTION( - LINESTRING(40 260, 60 260), - LINESTRING(220 260, 240 260, 240 240, 220 240), - LINESTRING(60 240, 40 240, 40 220, 60 220), - LINESTRING(80 220, 100 220), - LINESTRING(180 220, 200 220), - LINESTRING(220 220, 240 220), - LINESTRING(120 300, 120 260), - LINESTRING(120 240, 120 220), - LINESTRING(120 160, 120 140), - LINESTRING(120 120, 120 80), - LINESTRING(120 80, 140 80), - LINESTRING(140 80, 140 120), - LINESTRING(140 140, 140 160), - LINESTRING(140 180, 140 200), - LINESTRING(140 220, 140 240), - LINESTRING(140 260, 140 300), - LINESTRING(120 300, 120 320), - POLYGON( - (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, - 120 120, 60 120, 60 220, 60 240), - (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, - 120 240, 80 240)), - POLYGON( - (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), - (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) - - - - mLmA - A and B complex, overlapping and touching #2 - - MULTIPOLYGON( - ( - (60 320, 60 120, 280 120, 280 320, 60 320), - (120 260, 120 180, 240 180, 240 260, 120 260)), - ( - (280 400, 320 400, 320 360, 280 360, 280 400)), - ( - (300 240, 300 220, 320 220, 320 240, 300 240))) - - - MULTILINESTRING( - (80 300, 80 160, 260 160, 260 300, 80 300, 80 140), - (220 360, 220 240, 300 240, 300 360)) - - - - POLYGON( - (60 120, 60 320, 280 400, 320 400, 320 220, 280 120, 60 120)) - - - - - MULTILINESTRING( - (60 320, 60 120, 280 120, 280 320, 60 320), - (120 260, 120 180, 240 180, 240 260, 120 260), - (280 400, 320 400, 320 360, 280 360, 280 400), - (300 240, 300 220, 320 220, 320 240, 300 240)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(220 360, 220 320), - LINESTRING(220 260, 220 240, 240 240), - LINESTRING(280 240, 300 240), - LINESTRING(300 240, 300 360), - POLYGON( - (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), - (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), - POLYGON( - (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), - POLYGON( - (300 240, 320 240, 320 220, 300 220, 300 240))) - - - - - MULTIPOLYGON( - ( - (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), - (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), - ( - (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), - ( - (300 240, 320 240, 320 220, 300 220, 300 240))) - - - - - GEOMETRYCOLLECTION( - LINESTRING(220 360, 220 320), - LINESTRING(220 260, 220 240, 240 240), - LINESTRING(280 240, 300 240), - LINESTRING(300 240, 300 360), - POLYGON( - (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), - (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), - POLYGON( - (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), - POLYGON( - (300 240, 320 240, 320 220, 300 220, 300 240))) - - - - - GEOMETRYCOLLECTION( - POINT(300 240), - POINT(300 360), - LINESTRING(80 300, 80 160), - LINESTRING(80 160, 260 160, 260 240), - LINESTRING(260 240, 260 300, 220 300), - LINESTRING(220 300, 80 300), - LINESTRING(80 160, 80 140), - LINESTRING(220 320, 220 300), - LINESTRING(220 300, 220 260), - LINESTRING(240 240, 260 240), - LINESTRING(260 240, 280 240)) - - - - - - mLmA - A and B complex, overlapping and touching #3 - - MULTIPOLYGON( - ( - (120 180, 60 80, 180 80, 120 180)), - ( - (100 240, 140 240, 120 220, 100 240))) - - - MULTILINESTRING( - (180 260, 120 180, 60 260, 180 260), - (60 300, 60 40), - (100 100, 140 100)) - - - - POLYGON( - (60 80, 100 240, 140 240, 180 80, 60 80)) - - - - - MULTILINESTRING( - (120 180, 60 80, 180 80, 120 180), - (100 240, 140 240, 120 220, 100 240)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(180 260, 120 180), - LINESTRING(120 180, 60 260), - LINESTRING(60 260, 180 260), - LINESTRING(60 300, 60 260), - LINESTRING(60 260, 60 80), - LINESTRING(60 80, 60 40), - POLYGON( - (60 80, 120 180, 180 80, 60 80)), - POLYGON( - (100 240, 140 240, 120 220, 100 240))) - - - - - MULTIPOLYGON( - ( - (60 80, 120 180, 180 80, 60 80)), - ( - (100 240, 140 240, 120 220, 100 240))) - - - - - GEOMETRYCOLLECTION( - LINESTRING(180 260, 120 180), - LINESTRING(120 180, 60 260), - LINESTRING(60 260, 180 260), - LINESTRING(60 300, 60 260), - LINESTRING(60 260, 60 80), - LINESTRING(60 80, 60 40), - POLYGON( - (60 80, 120 180, 180 80, 60 80)), - POLYGON( - (100 240, 140 240, 120 220, 100 240))) - - - - - GEOMETRYCOLLECTION( - POINT(60 80), - POINT(120 180), - LINESTRING(100 100, 140 100)) - - - - - - - LL - A crosses B - - LINESTRING(0 0, 100 100) - - - LINESTRING(0 100, 100 0) - - - - POINT(50 50) - - - - - MULTILINESTRING( - (0 0, 50 50), - (0 100, 50 50), - (50 50, 100 100), - (50 50, 100 0)) - - - - - MULTILINESTRING( - (0 0, 50 50), - (50 50, 100 100)) - - - - - MULTILINESTRING( - (0 0, 50 50), - (0 100, 50 50), - (50 50, 100 100), - (50 50, 100 0)) - - - - - - LL - A shares one segment with B - - LINESTRING(0 0, 100 100, 200 0) - - - LINESTRING(0 0, 100 100, 200 200) - - - - LINESTRING(0 0, 100 100) - - - - - MULTILINESTRING( - (0 0, 100 100), - (100 100, 200 200), - (100 100, 200 0)) - - - - - LINESTRING(100 100, 200 0) - - - - - MULTILINESTRING( - (100 100, 200 200), - (100 100, 200 0)) - - - - - - LL - A and B disjoint - - LINESTRING(40 360, 40 220, 120 360) - - - LINESTRING(120 340, 60 220, 140 220, 140 360) - - - - MULTIPOINT(40 360, 120 360) - - - - - POLYGON( - (40 220, 40 360, 120 360, 40 220)) - - - - - GEOMETRYCOLLECTION EMPTY - - - - MULTILINESTRING( - (40 360, 40 220, 120 360), - (120 340, 60 220, 140 220, 140 360)) - - - - - LINESTRING(40 360, 40 220, 120 360) - - - - - MULTILINESTRING( - (40 360, 40 220, 120 360), - (120 340, 60 220, 140 220, 140 360)) - - - - - - LL - A and B intersect frequently - - LINESTRING(220 240, 200 220, 60 320, 40 300, 180 200, 160 180, 20 280) - - - LINESTRING(220 240, 140 160, 120 180, 220 280, 200 300, 100 200) - - - - MULTIPOINT(220 240, 20 280) - - - - - POLYGON( - (160 180, 20 280, 60 320, 220 240, 160 180)) - - - - - GEOMETRYCOLLECTION( - POINT(113 213), - POINT(133 233), - POINT(137 197), - POINT(153 253), - POINT(157 217), - POINT(177 237), - LINESTRING(180 200, 160 180), - LINESTRING(220 240, 200 220)) - - - - - MULTILINESTRING( - (113 213, 20 280), - (133 233, 113 213), - (113 213, 100 200), - (137 197, 113 213), - (153 253, 133 233), - (153 253, 60 320, 40 300, 133 233), - (133 233, 157 217), - (137 197, 157 217), - (160 180, 140 160, 120 180, 137 197), - (160 180, 137 197), - (177 237, 220 280, 200 300, 153 253), - (177 237, 153 253), - (157 217, 177 237), - (157 217, 180 200), - (180 200, 160 180), - (200 220, 177 237), - (200 220, 180 200), - (220 240, 200 220)) - - - - - MULTILINESTRING( - (200 220, 177 237), - (177 237, 153 253), - (153 253, 60 320, 40 300, 133 233), - (133 233, 157 217), - (157 217, 180 200), - (160 180, 137 197), - (137 197, 113 213), - (113 213, 20 280)) - - - - - MULTILINESTRING( - (200 220, 177 237), - (177 237, 153 253), - (153 253, 60 320, 40 300, 133 233), - (133 233, 157 217), - (157 217, 180 200), - (160 180, 137 197), - (137 197, 113 213), - (113 213, 20 280), - (200 220, 180 200), - (160 180, 140 160, 120 180, 137 197), - (137 197, 157 217), - (157 217, 177 237), - (177 237, 220 280, 200 300, 153 253), - (153 253, 133 233), - (133 233, 113 213), - (113 213, 100 200)) - - - - - - LL - A and B equal - - LINESTRING(80 320, 220 320, 220 160, 80 300) - - - LINESTRING(80 320, 220 320, 220 160, 80 300) - - - - MULTIPOINT(80 320, 80 300) - - - - - POLYGON( - (220 160, 80 300, 80 320, 220 320, 220 160)) - - - - - MULTILINESTRING( - (220 160, 80 300), - (80 320, 220 320), - (220 320, 220 160)) - - - - - MULTILINESTRING( - (220 160, 80 300), - (80 320, 220 320), - (220 320, 220 160)) - - - - - GEOMETRYCOLLECTION EMPTY - - - - GEOMETRYCOLLECTION EMPTY - - - - - LL - A and B touch ends - - LINESTRING(60 200, 60 260, 140 200) - - - LINESTRING(60 200, 60 140, 140 200) - - - - MULTIPOINT(60 200, 140 200) - - - - - POLYGON( - (60 200, 60 260, 140 200, 60 200)) - - - - - MULTIPOINT(60 200, 140 200) - - - - - MULTILINESTRING( - (60 200, 60 260, 140 200), - (60 200, 60 140, 140 200)) - - - - - LINESTRING(60 200, 60 260, 140 200) - - - - - MULTILINESTRING( - (60 200, 60 260, 140 200), - (60 200, 60 140, 140 200)) - - - - - - LL - intersecting rings - - LINESTRING(180 200, 100 280, 20 200, 100 120, 180 200) - - - LINESTRING(100 200, 220 200, 220 80, 100 80, 100 200) - - - - MULTIPOINT EMPTY - - - - POLYGON( - (100 120, 20 200, 100 280, 180 200, 100 120)) - - - - - MULTIPOINT(100 120, 180 200) - - - - - MULTILINESTRING( - (100 120, 180 200), - (100 120, 100 200), - (180 200, 100 280, 20 200, 100 120), - (180 200, 220 200, 220 80, 100 80, 100 120), - (100 200, 180 200)) - - - - - MULTILINESTRING( - (100 120, 180 200), - (180 200, 100 280, 20 200, 100 120)) - - - - - MULTILINESTRING( - (100 120, 180 200), - (100 120, 100 200), - (180 200, 100 280, 20 200, 100 120), - (180 200, 220 200, 220 80, 100 80, 100 120), - (100 200, 180 200)) - - - - - - - PA - point contained in simple polygon - - POINT(100 100) - - - POLYGON( - (50 50, 200 50, 200 200, 50 200, 50 50)) - - - - POINT(100 100) - - - - - - mPmA - points on I, B and E of touching triangles - - MULTIPOLYGON( - ( - (120 320, 180 200, 240 320, 120 320)), - ( - (180 200, 240 80, 300 200, 180 200))) - - - MULTIPOINT(120 320, 180 260, 180 320, 180 200, 300 200, 200 220) - - - - MULTILINESTRING( - (120 320, 180 200, 240 320, 120 320), - (180 200, 240 80, 300 200, 180 200)) - - - - - POLYGON( - (240 80, 120 320, 240 320, 300 200, 240 80)) - - - - - MULTIPOINT(120 320, 180 200, 180 260, 180 320, 300 200) - - - - - GEOMETRYCOLLECTION( - POINT(200 220), - POLYGON( - (180 200, 120 320, 240 320, 180 200)), - POLYGON( - (180 200, 300 200, 240 80, 180 200))) - - - - - MULTIPOLYGON( - ( - (180 200, 120 320, 240 320, 180 200)), - ( - (180 200, 300 200, 240 80, 180 200))) - - - - - GEOMETRYCOLLECTION( - POINT(200 220), - POLYGON( - (180 200, 120 320, 240 320, 180 200)), - POLYGON( - (180 200, 300 200, 240 80, 180 200))) - - - - - - mPmA - points on I, B and E of concentric doughnuts - - MULTIPOLYGON( - ( - (120 80, 420 80, 420 340, 120 340, 120 80), - (160 300, 160 120, 380 120, 380 300, 160 300)), - ( - (200 260, 200 160, 340 160, 340 260, 200 260), - (240 220, 240 200, 300 200, 300 220, 240 220))) - - - MULTIPOINT(200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, - 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200) - - - - MULTILINESTRING( - (120 80, 420 80, 420 340, 120 340, 120 80), - (160 300, 160 120, 380 120, 380 300, 160 300), - (200 260, 200 160, 340 160, 340 260, 200 260), - (240 220, 240 200, 300 200, 300 220, 240 220)) - - - - - POLYGON( - (120 80, 120 340, 420 340, 420 80, 120 80)) - - - - - MULTIPOINT(200 160, 220 180, 260 200, 340 120, 400 100, 420 340) - - - - - GEOMETRYCOLLECTION( - POINT(200 140), - POINT(200 360), - POLYGON( - (120 80, 120 340, 420 340, 420 80, 120 80), - (160 300, 160 120, 380 120, 380 300, 160 300)), - POLYGON( - (200 260, 340 260, 340 160, 200 160, 200 260), - (240 220, 240 200, 300 200, 300 220, 240 220))) - - - - - MULTIPOLYGON( - ( - (120 80, 120 340, 420 340, 420 80, 120 80), - (160 300, 160 120, 380 120, 380 300, 160 300)), - ( - (200 260, 340 260, 340 160, 200 160, 200 260), - (240 220, 240 200, 300 200, 300 220, 240 220))) - - - - - GEOMETRYCOLLECTION( - POINT(200 140), - POINT(200 360), - POLYGON( - (120 80, 120 340, 420 340, 420 80, 120 80), - (160 300, 160 120, 380 120, 380 300, 160 300)), - POLYGON( - (200 260, 340 260, 340 160, 200 160, 200 260), - (240 220, 240 200, 300 200, 300 220, 240 220))) - - - - - - - mPL - points in I and E of line - - MULTIPOINT(40 90, 20 20, 70 70) - - - LINESTRING(20 20, 100 100) - - - - MULTIPOINT(20 20, 70 70) - - - - - GEOMETRYCOLLECTION( - POINT(40 90), - LINESTRING(20 20, 100 100)) - - - - - POINT(40 90) - - - - - GEOMETRYCOLLECTION( - POINT(40 90), - LINESTRING(20 20, 100 100)) - - - - - - mPL - points in I and E of line, line self-intersecting - - MULTIPOINT(40 90, 20 20, 70 70) - - - LINESTRING(20 20, 110 110, 170 50, 130 10, 70 70) - - - - MULTIPOINT(20 20, 70 70) - - - - - GEOMETRYCOLLECTION( - POINT(40 90), - LINESTRING(20 20, 70 70), - LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70)) - - - - - POINT(40 90) - - - - - GEOMETRYCOLLECTION( - POINT(40 90), - LINESTRING(20 20, 70 70), - LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70)) - - - - - - mPmL - points in I, B and E of lines, lines overlap, points overlap - - MULTILINESTRING( - (100 320, 100 220), - (100 180, 200 180), - (220 180, 220 320), - (220 320, 160 320), - (100 320, 100 220), - (100 180, 200 180), - (220 180, 220 320), - (220 320, 160 320), - (100 220, 100 320)) - - - MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, - 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, - 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320) - - - - MULTIPOINT(100 220, 100 320) - - - - - POLYGON( - (100 180, 100 320, 220 320, 220 180, 100 180)) - - - - - MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, - 220 260, 220 320) - - - - - GEOMETRYCOLLECTION( - POINT(100 200), - POINT(120 320), - POINT(140 320), - LINESTRING(100 320, 100 220), - LINESTRING(100 180, 200 180), - LINESTRING(220 180, 220 320), - LINESTRING(220 320, 160 320)) - - - - - MULTILINESTRING( - (100 320, 100 220), - (100 180, 200 180), - (220 180, 220 320), - (220 320, 160 320)) - - - - - GEOMETRYCOLLECTION( - POINT(100 200), - POINT(120 320), - POINT(140 320), - LINESTRING(100 320, 100 220), - LINESTRING(100 180, 200 180), - LINESTRING(220 180, 220 320), - LINESTRING(220 320, 160 320)) - - - - - - mPmL - points in I, B and E of lines, lines overlap, points overlap, x <0, y < 0 - - MULTILINESTRING( - (-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340), - (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140)) - - - MULTIPOINT(-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, - -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, - -320 -180, -280 -140, -320 -120) - - - - MULTIPOINT(-500 -340, -500 -140) - - - - - POLYGON( - (-500 -340, -500 -140, -320 -140, -320 -280, -500 -340)) - - - - - MULTIPOINT(-500 -340, -500 -280, -500 -220, -500 -140, -420 -140, -320 -180, -320 -140) - - - - - GEOMETRYCOLLECTION( - POINT(-560 -180), - POINT(-420 -180), - POINT(-320 -120), - POINT(-280 -140), - LINESTRING(-500 -140, -500 -280), - LINESTRING(-500 -280, -320 -280, -320 -140), - LINESTRING(-320 -140, -500 -140), - LINESTRING(-500 -280, -500 -340)) - - - - - MULTILINESTRING( - (-500 -140, -500 -280), - (-500 -280, -320 -280, -320 -140), - (-320 -140, -500 -140), - (-500 -280, -500 -340)) - - - - - GEOMETRYCOLLECTION( - POINT(-560 -180), - POINT(-420 -180), - POINT(-320 -120), - POINT(-280 -140), - LINESTRING(-500 -140, -500 -280), - LINESTRING(-500 -280, -320 -280, -320 -140), - LINESTRING(-320 -140, -500 -140), - LINESTRING(-500 -280, -500 -340)) - - - - - - mL - lines intersect at 1 point - - MULTILINESTRING( - (180 100, 140 280, 240 140, 220 120, 140 280), - (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280)) - - - - MULTIPOINT(180 100, 140 280) - - - - - - mPmL - points in I, B and E of lines, lines overlap, points overlap - - MULTILINESTRING( - (100 320, 100 220), - (100 180, 200 180), - (220 180, 220 320), - (220 320, 160 320), - (100 320, 100 220), - (100 180, 200 180), - (220 180, 220 320), - (220 320, 160 320), - (100 220, 100 320)) - - - MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, - 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, - 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320) - - - - MULTIPOINT(100 220, 100 320) - - - - - POLYGON( - (100 180, 100 320, 220 320, 220 180, 100 180)) - - - - - MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, - 220 260, 220 320) - - - - - GEOMETRYCOLLECTION( - POINT(100 200), - POINT(120 320), - POINT(140 320), - LINESTRING(100 320, 100 220), - LINESTRING(100 180, 200 180), - LINESTRING(220 180, 220 320), - LINESTRING(220 320, 160 320)) - - - - - MULTILINESTRING( - (100 320, 100 220), - (100 180, 200 180), - (220 180, 220 320), - (220 320, 160 320)) - - - - - GEOMETRYCOLLECTION( - POINT(100 200), - POINT(120 320), - POINT(140 320), - LINESTRING(100 320, 100 220), - LINESTRING(100 180, 200 180), - LINESTRING(220 180, 220 320), - LINESTRING(220 320, 160 320)) - - - - - - - PP - point contained in both A and B - - POINT(100 100) - - - POINT(100 100) - - - - POINT(100 100) - - - - - - PP - A different from B - - POINT(100 100) - - - POINT(200 200) - - - - GEOMETRYCOLLECTION EMPTY - - - - MULTIPOINT(100 100, 200 200) - - - - - POINT(100 100) - - - - - MULTIPOINT(100 100, 200 200) - - - - - - PmP - point in A contained in B - - POINT(100 100) - - - MULTIPOINT(100 100, 200 200) - - - - POINT(100 100) - - - - - MULTIPOINT(100 100, 200 200) - - - - - GEOMETRYCOLLECTION EMPTY - - - - POINT(200 200) - - - - - - mPmP - points in A only, B only, and in both - - MULTIPOINT(100 100, 200 200, 300 300, 500 500) - - - MULTIPOINT(100 100, 200 200, 400 400, 600 600) - - - - MULTIPOINT(100 100, 200 200) - - - - - MULTIPOINT(100 100, 200 200, 300 300, 400 400, 500 500, 600 600) - - - - - MULTIPOINT(300 300, 500 500) - - - - - MULTIPOINT(300 300, 400 400, 500 500, 600 600) - - - - - - PP - point contained in both A and B - - POINT(80 200) - - - POINT(80 200) - - - - GEOMETRYCOLLECTION EMPTY - - - - POINT(80 200) - - - - - POINT(80 200) - - - - - POINT(80 200) - - - - - GEOMETRYCOLLECTION EMPTY - - - - GEOMETRYCOLLECTION EMPTY - - - - - PP - A different from B - - POINT(80 200) - - - POINT(260 80) - - - - GEOMETRYCOLLECTION EMPTY - - - - POINT(80 200) - - - - - GEOMETRYCOLLECTION EMPTY - - - - MULTIPOINT(80 200, 260 80) - - - - - POINT(80 200) - - - - - MULTIPOINT(80 200, 260 80) - - - - - - PP - A different from B, same y - - POINT(60 260) - - - POINT(120 260) - - - - GEOMETRYCOLLECTION EMPTY - - - - POINT(60 260) - - - - - GEOMETRYCOLLECTION EMPTY - - - - MULTIPOINT(60 260, 120 260) - - - - - POINT(60 260) - - - - - MULTIPOINT(60 260, 120 260) - - - - - - PP - A different from B, same x - - POINT(80 80) - - - POINT(80 280) - - - - GEOMETRYCOLLECTION EMPTY - - - - POINT(80 80) - - - - - GEOMETRYCOLLECTION EMPTY - - - - MULTIPOINT(80 80, 80 280) - - - - - POINT(80 80) - - - - - MULTIPOINT(80 80, 80 280) - - - - - - AA - sliver triangle, cut by polygon - - POLYGON( - (10 10, 100 10, 10 11, 10 10)) - - - POLYGON( - (90 0, 200 0, 200 200, 90 200, 90 0)) - - - - true - - - - - LINESTRING(90 10, 100 10) - - - - - MULTIPOLYGON( - ( - (90 10, 10 10, 10 11, 90 10)), - ( - (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) - - - - - POLYGON( - (90 10, 10 10, 10 11, 90 10)) - - - - - MULTIPOLYGON( - ( - (90 10, 10 10, 10 11, 90 10)), - ( - (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) - - - - - - AA - polygon with outward sliver, cut by polygon - - POLYGON( - (100 10, 10 10, 90 11, 90 20, 100 20, 100 10)) - - - POLYGON( - (20 20, 0 20, 0 0, 20 0, 20 20)) - - - - true - - - - - LINESTRING(20 10, 10 10) - - - - - - AA - narrow wedge in polygon - - POLYGON( - (10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10)) - - - POLYGON( - (60 40, 40 40, 40 20, 60 20, 60 40)) - - - - true - - - - - POLYGON( - (50 40, 50 20, 40 20, 40 30, 40 40, 50 40)) - - - - - POLYGON( - (50 20, 50 10, 10 10, 10 30, 40 30, 10 31, 10 50, 50 50, 50 40, - 60 40, 60 20, 50 20)) - - - - - MULTIPOLYGON( - ( - (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), - ( - (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) - - - - - MULTIPOLYGON( - ( - (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), - ( - (50 20, 50 40, 60 40, 60 20, 50 20)), - ( - (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) - - - - - - AA - hole close to shell - - POLYGON( - (10 100, 10 10, 100 10, 100 100, 10 100), - (90 90, 11 90, 10 10, 90 11, 90 90)) - - - POLYGON( - (0 30, 0 0, 30 0, 30 30, 0 30)) - - - - true - - - - - MULTILINESTRING( - (10 30, 10 10), - (10 10, 30 10)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) - - - - - POLYGON( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) - - - - - - mAA - shells close together - - MULTIPOLYGON( - ( - (0 0, 100 0, 100 20, 0 20, 0 0)), - ( - (0 40, 0 21, 100 20, 100 40, 0 40))) - - - POLYGON( - (110 30, 90 30, 90 10, 110 10, 110 30)) - - - - true - - - - - GEOMETRYCOLLECTION( - LINESTRING(100 20, 90 20), - POLYGON( - (100 20, 100 10, 90 10, 90 20, 90 30, 100 30, 100 20))) - - - - - POLYGON( - (100 10, 100 0, 0 0, 0 20, 90 20, 0 21, 0 40, 100 40, 100 30, - 110 30, 110 10, 100 10)) - - - - - MULTIPOLYGON( - ( - (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), - ( - (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) - - - - - MULTIPOLYGON( - ( - (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), - ( - (100 10, 100 20, 100 30, 110 30, 110 10, 100 10)), - ( - (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) - - - - - - AA - A sliver triangle cutting all the way across B - - POLYGON( - (100 10, 0 10, 100 11, 100 10)) - - - POLYGON( - (20 20, 0 20, 0 0, 20 0, 20 20)) - - - - true - - - - - LINESTRING(20 10, 0 10) - - - - - MULTIPOLYGON( - ( - (100 10, 20 10, 100 11, 100 10)), - ( - (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) - - - - - POLYGON( - (100 10, 20 10, 100 11, 100 10)) - - - - - MULTIPOLYGON( - ( - (100 10, 20 10, 100 11, 100 10)), - ( - (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) - - - - - - AA - A polygon with sliver cutting all the way across B - - POLYGON( - (100 10, 0 10, 90 11, 90 20, 100 20, 100 10)) - - - POLYGON( - (20 20, 0 20, 0 0, 20 0, 20 20)) - - - - true - - - - - LINESTRING(20 10, 0 10) - - - - - MULTIPOLYGON( - ( - (100 10, 20 10, 90 11, 90 20, 100 20, 100 10)), - ( - (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) - - - - - - AA - hole close to shell, B coincident with A - - POLYGON( - (10 100, 10 10, 100 10, 100 100, 10 100), - (90 90, 11 90, 10 10, 90 11, 90 90)) - - - POLYGON( - (10 30, 10 0, 30 10, 30 30, 10 30)) - - - - true - - - - - MULTILINESTRING( - (10 30, 10 10), - (10 10, 30 10)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) - - - - - POLYGON( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) - - - - - - AA - A hole close to shell, B coincident with A - - POLYGON( - (10 100, 10 10, 100 10, 100 100, 10 100), - (90 90, 11 90, 10 10, 90 11, 90 90)) - - - POLYGON( - (10 30, 10 10, 30 10, 30 30, 10 30)) - - - - true - - - - - MULTILINESTRING( - (10 30, 10 10), - (10 10, 30 10)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (10 10, 10 30, 30 30, 30 10, 10 10))) - - - - - POLYGON( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (10 10, 10 30, 30 30, 30 10, 10 10))) - - - - - - AA - B hole close to shell, A coincident with B - - POLYGON( - (10 30, 10 10, 30 10, 30 30, 10 30)) - - - POLYGON( - (10 100, 10 10, 100 10, 100 100, 10 100), - (90 90, 11 90, 10 10, 90 11, 90 90)) - - - - true - - - - - MULTILINESTRING( - (10 30, 10 10), - (10 10, 30 10)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (10 10, 10 30, 30 30, 30 10, 10 10))) - - - - - POLYGON( - (10 10, 10 30, 30 30, 30 10, 10 10)) - - - - - MULTIPOLYGON( - ( - (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), - ( - (10 10, 10 30, 30 30, 30 10, 10 10))) - - - - - - AA - B sliver crossing A triangle in line segment with length < 1 - - POLYGON( - (0 0, 200 0, 0 198, 0 0)) - - - POLYGON( - (280 60, 139 60, 280 70, 280 60)) - - - - true - - - - - POINT(139 60) - - - - - MULTIPOLYGON( - ( - (139 60, 200 0, 0 0, 0 198, 139 60)), - ( - (280 60, 139 60, 280 70, 280 60))) - - - - - POLYGON( - (139 60, 200 0, 0 0, 0 198, 139 60)) - - - - - MULTIPOLYGON( - ( - (139 60, 200 0, 0 0, 0 198, 139 60)), - ( - (280 60, 139 60, 280 70, 280 60))) - - - - - - AA - sliver triangles, at angle to each other - - POLYGON( - (0 0, 140 10, 0 20, 0 0)) - - - POLYGON( - (280 0, 139 10, 280 1, 280 0)) - - - - LINESTRING(140 10, 139 10) - - - - - - AA - sliver triangle with multiple intersecting boxes - - MULTIPOLYGON( - ( - (1 4, 1 1, 2 1, 2 4, 1 4)), - ( - (3 4, 3 1, 4 1, 4 4, 3 4)), - ( - (5 4, 5 1, 6 1, 6 4, 5 4)), - ( - (7 4, 7 1, 8 1, 8 4, 7 4)), - ( - (9 4, 9 1, 10 1, 10 4, 9 4))) - - - POLYGON( - (0 2, 11 3, 11 2, 0 2)) - - - - POLYGON( - (1 1, 1 4, 10 4, 10 1, 1 1)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(1 2, 2 2), - LINESTRING(3 2, 4 2), - POLYGON( - (6 3, 6 2, 5 2, 6 3)), - POLYGON( - (7 2, 7 3, 8 3, 8 2, 7 2)), - POLYGON( - (9 2, 9 3, 10 3, 10 2, 9 2))) - - - - -GEOMETRYCOLLECTION( - LINESTRING(0 2, 1 2), - LINESTRING(2 2, 3 2), - LINESTRING(4 2, 5 2), - POLYGON( - (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), - POLYGON( - (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), - POLYGON( - (5 2, 5 4, 6 4, 6 3, 7 3, 7 4, 8 4, 8 3, 9 3, - 9 4, 10 4, 10 3, 11 3, 11 2, 10 2, 10 1, 9 1, 9 2, 8 2, - 8 1, 7 1, 7 2, 6 2, 6 1, 5 1, 5 2))) - - - - MULTIPOLYGON( - ( - (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), - ( - (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), - ( - (5 2, 5 4, 6 4, 6 3, 5 2)), - ( - (6 2, 6 1, 5 1, 5 2, 6 2)), - ( - (7 3, 7 4, 8 4, 8 3, 7 3)), - ( - (8 2, 8 1, 7 1, 7 2, 8 2)), - ( - (9 3, 9 4, 10 4, 10 3, 9 3)), - ( - (10 2, 10 1, 9 1, 9 2, 10 2))) - - - - -GEOMETRYCOLLECTION( - LINESTRING(0 2, 1 2), - LINESTRING(2 2, 3 2), - LINESTRING(4 2, 5 2), - POLYGON( - (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), - POLYGON( - (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), - POLYGON( - (5 2, 5 4, 6 4, 6 3, 5 2)), - POLYGON( - (6 2, 6 1, 5 1, 5 2, 6 2)), - POLYGON( - (6 2, 6 3, 7 3, 7 2, 6 2)), - POLYGON( - (7 3, 7 4, 8 4, 8 3, 7 3)), - POLYGON( - (8 2, 8 1, 7 1, 7 2, 8 2)), - POLYGON( - (8 2, 8 3, 9 3, 9 2, 8 2)), - POLYGON( - (9 3, 9 4, 10 4, 10 3, 9 3)), - POLYGON( - (10 2, 10 1, 9 1, 9 2, 10 2)), - POLYGON( - (10 2, 10 3, 11 3, 11 2, 10 2))) - - - - - - AA - Polygon with hole with outward sliver, cut by polygon - - POLYGON( - (20 40, 20 200, 180 200, 180 40, 20 40), - (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) - - - POLYGON( - (200 160, 160 160, 160 80, 200 80, 200 160)) - - - - POLYGON( - (20 40, 20 200, 180 200, 180 40, 20 40)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(180 120, 160 120), - POLYGON( - (180 160, 180 120, 180 80, 160 80, 160 120, 160 160, 180 160))) - - - - - POLYGON( - (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), - (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) - - - - - POLYGON( - (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, - 20 40), - (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) - - - - - MULTIPOLYGON( - ( - (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, - 20 40), - (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)), - ( - (180 120, 180 160, 200 160, 200 80, 180 80, 180 120))) - - - - - - AA - Polygon with hole with outward sliver, cut by line - - POLYGON( - (20 40, 20 200, 180 200, 180 40, 20 40), - (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) - - - LINESTRING(160 140, 160 100) - - - - POLYGON( - (20 40, 20 200, 180 200, 180 40, 20 40)) - - - - - MULTILINESTRING( - (160 140, 160 120), - (160 120, 160 100)) - - - - - POLYGON( - (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), - (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) - - - - - POLYGON( - (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), - (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) - - - - - POLYGON( - (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), - (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) - - - - - - AA - Polygon with inward sliver touching hole, cut by polygon - - POLYGON( - (20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), - (140 160, 80 120, 140 80, 140 160)) - - - POLYGON( - (200 160, 150 160, 150 80, 200 80, 200 160)) - - - - POLYGON( - (20 40, 20 200, 180 200, 180 40, 20 40)) - - - - - MULTIPOLYGON( - ( - (180 160, 180 120, 150 120, 150 160, 180 160)), - ( - (150 120, 180 119, 180 80, 150 80, 150 120))) - - - - - POLYGON( - (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), - (140 160, 80 120, 140 80, 140 120, 140 160)) - - - - - POLYGON( - (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, - 20 40), - (140 160, 80 120, 140 80, 140 120, 140 160)) - - - - - MULTIPOLYGON( - ( - (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, - 20 40), - (140 160, 80 120, 140 80, 140 120, 140 160)), - ( - (150 120, 180 120, 180 160, 200 160, 200 80, 180 80, 180 119, 150 120))) - - - - - - AA - intersecting slivers, dimensional collapse - - POLYGON( - (83 33, 62 402, 68 402, 83 33)) - - - POLYGON( - (78 39, 574 76, 576 60, 78 39)) - - - - LINESTRING( - 83 33, 62 402, 68 402, 83 33) - - - - - POLYGON( - (83 33, 62 402, 68 402, 83 33)) - - - - - POINT(83 39) - - - - - GEOMETRYCOLLECTION( - LINESTRING(78 39, 83 39), - LINESTRING(83 33, 83 39), - POLYGON( - (83 39, 62 402, 68 402, 83 39)), - POLYGON( - (83 39, 574 76, 576 60, 83 39))) - - - - - GEOMETRYCOLLECTION( - LINESTRING(83 33, 83 39), - POLYGON( - (83 39, 62 402, 68 402, 83 39))) - - - - - GEOMETRYCOLLECTION( - LINESTRING(78 39, 83 39), - LINESTRING(83 33, 83 39), - POLYGON( - (83 39, 62 402, 68 402, 83 39)), - POLYGON( - (83 39, 574 76, 576 60, 83 39))) - - - - - - LA - line and sliver intersecting, dimensional collapse - - POLYGON( - (95 9, 81 414, 87 414, 95 9)) - - - LINESTRING(93 13, 96 13) - - - - LINESTRING( - 95 9, 81 414, 87 414, 95 9) - - - - - POLYGON( - (95 9, 81 414, 87 414, 95 9)) - - - - - POINT(95 13) - - - - - GEOMETRYCOLLECTION( - LINESTRING(95 9, 95 13), - POLYGON( - (95 13, 81 414, 87 414, 95 13)), - LINESTRING(93 13, 95 13), - LINESTRING(95 13, 96 13)) - - - - - GEOMETRYCOLLECTION( - LINESTRING(95 9, 95 13), - POLYGON( - (95 13, 81 414, 87 414, 95 13))) - - - - - GEOMETRYCOLLECTION( - LINESTRING(95 9, 95 13), - POLYGON( - (95 13, 81 414, 87 414, 95 13)), - LINESTRING(93 13, 95 13), - LINESTRING(95 13, 96 13)) - - - - - LL - narrow V - - LINESTRING(0 10, 620 10, 0 11) - - - LINESTRING(400 60, 400 10) - - - - POINT(400 10) - - - - - MULTILINESTRING( - (0 10, 400 10), - (400 10, 620 10, 400 10), - (400 10, 0 11), - (400 60, 400 10)) - - - - - PP - Point just off line. Causes non-robust algorithms to fail. - - LINESTRING(-123456789 -40, 381039468754763 123456789) - - - POINT(0 0) - - - false - - - - -A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - true - - - - -A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (20 20, 140 20, 120 100, 20 100, 20 20)) - - - true - - - - -A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (120 100, 140 20, 20 20, 20 100, 120 100)) - - - true - - - - -A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - - POLYGON( - (20 20, 20 100, 120 100, 140 20, 20 20)) - - - POLYGON( - (20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) - - - true - - - - -A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}] - - POLYGON( - (0 0, 80 0, 80 80, 0 80, 0 0)) - - - POLYGON( - (100 200, 100 140, 180 140, 180 200, 100 200)) - - - true - - - - -A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 140 200, 240 200, 240 120, 140 120)) - - - true - - - - -A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (80 180, 140 260, 260 200, 200 60, 80 180)) - - - true - - - - -A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (240 80, 140 120, 180 240, 280 200, 240 80)) - - - true - - - - -A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - - POLYGON( - (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - - POLYGON( - (140 40, 180 80, 120 100, 140 40)) - - - true - - - - -A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - - POLYGON( - (120 100, 180 80, 130 40, 120 100)) - - - true - - - - -A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 180 20, 140 140, 20 140, 20 20)) - - - POLYGON( - (180 100, 80 200, 180 280, 260 200, 180 100)) - - - true - - - - -A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 140, 20 120, 0 220, 120 240, 140 140)) - - - true - - - - -A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - - POLYGON( - (160 200, 210 70, 120 70, 160 200)) - - - POLYGON( - (160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) - - - true - - - - -A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - - POLYGON( - (110 140, 200 70, 200 160, 110 140)) - - - POLYGON( - (110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) - - - true - - - - -A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) - - - POLYGON( - (20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) - - - true - - - - -A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) - - - POLYGON( - (20 120, 300 120, 140 240, 20 120)) - - - true - - - - -A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, - 20 20)) - - - POLYGON( - (100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) - - - true - - - - -A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, - 20 20)) - - - POLYGON( - (260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) - - - true - - - - -A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - - POLYGON( - (0 140, 300 140, 140 240, 0 140)) - - - true - - - - -A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - - POLYGON( - (20 240, 20 140, 320 140, 180 240, 20 240)) - - - true - - - - -A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - - POLYGON( - (20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) - - - true - - - - -A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (120 120, 220 20, 280 20, 240 160, 120 120)) - - - true - - - - -A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 160 20, 260 120, 220 200, 140 120)) - - - true - - - - -A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - - POLYGON( - (20 140, 120 40, 20 40, 20 140)) - - - POLYGON( - (190 140, 190 20, 140 20, 20 140, 190 140)) - - - true - - - - -A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (300 20, 220 20, 120 120, 260 160, 300 20)) - - - true - - - - -A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 240 160, 280 60, 160 20, 140 120)) - - - true - - - - -A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (280 60, 180 60, 120 120, 260 180, 280 60)) - - - true - - - - -A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (120 200, 120 120, 40 120, 40 200, 120 200)) - - - true - - - - -A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (160 220, 140 120, 60 120, 40 220, 160 220)) - - - true - - - - -A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}] - - POLYGON( - (140 120, 160 20, 20 20, 20 120, 140 120)) - - - POLYGON( - (140 120, 20 120, 20 220, 140 220, 140 120)) - - - true - - - - -A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}] - - POLYGON( - (120 120, 180 60, 20 20, 20 120, 120 120)) - - - POLYGON( - (320 20, 220 20, 80 160, 240 140, 320 20)) - - - true - - - - -A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (60 40, 60 140, 180 140, 180 40, 60 40)) - - - true - - - - -A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 80 140, 160 60, 20 20)) - - - true - - - - -A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (160 60, 20 20, 100 140, 160 60)) - - - true - - - - -A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 100, 140 160, 160 40, 20 100)) - - - true - - - - -A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (160 40, 20 100, 160 160, 160 40)) - - - true - - - - -A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 180, 180 120, 80 40, 20 180)) - - - true - - - - -A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (180 120, 100 40, 20 180, 180 120)) - - - true - - - - -A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) - - - true - - - - -A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) - - - true - - - - -A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) - - - true - - - - -A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) - - - true - - - - -A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) - - - true - - - - -A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) - - - true - - - - -A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 20 140, 120 120, 120 40, 20 20)) - - - true - - - - -A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 20 180, 140 140, 140 60, 20 20)) - - - true - - - - -A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 120 40, 120 120, 20 140, 20 20)) - - - true - - - - -A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (120 40, 20 20, 20 140, 120 120, 120 40)) - - - true - - - - -A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 140 60, 140 140, 20 180, 20 20)) - - - true - - - - -A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (140 60, 20 20, 20 180, 140 140, 140 60)) - - - true - - - - -A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 60 120, 140 120, 180 20, 20 20)) - - - true - - - - -A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 40, 120 40, 120 120, 20 140, 20 40)) - - - true - - - - -A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}, dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}] - - POLYGON( - (20 20, 20 180, 220 180, 220 20, 20 20)) - - - POLYGON( - (20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) - - - true - - - - -A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (150 150, 330 150, 250 70, 70 70, 150 150)) - - - POLYGON( - (150 150, 270 150, 140 20, 20 20, 150 150)) - - - true - - - - -A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) - - - POLYGON( - (150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) - - - true - - - - -A/A-6-3: spiky polygons overlapping; boundary <-> boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, - 80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, - 100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, - 190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, - 290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, - 240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, - 240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, - 250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, - 160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, - 70 40, 20 20)) - - - POLYGON( - (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, - 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, - 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, - 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, - 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, - 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, - 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, - 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, - 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, - 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, - 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, - 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, - 200 120, 120 120, 190 140)) - - - true - - - - -A/A-6-4: spiky polygons overlapping; boundary <-> boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, - 20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, - 200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, - 270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, - 350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, - 360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, - 410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, - 240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, - 170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, - 410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, - 420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, - 460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, - 140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, - 90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, - 50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, - 40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) - - - POLYGON( - (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, - 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, - 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, - 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, - 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, - 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, - 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, - 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, - 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, - 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, - 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, - 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, - 200 120, 120 120, 190 140)) - - - true - - - - -A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) - - - true - - - - -A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (60 160, 20 200, 260 200, 140 80, 60 160)) - - - true - - - - -A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (20 200, 140 80, 260 200, 20 200)) - - - true - - - - -A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) - - - true - - - - -A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - - POLYGON( - (60 160, 220 160, 220 20, 60 20, 60 160)) - - - POLYGON( - (20 200, 60 160, 140 80, 260 200, 20 200)) - - - true - - - - -A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (0 0, 0 200, 200 200, 200 0, 0 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 0, 100 200, 200 200, 200 0, 100 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 0, 120 200, 200 200, 200 0, 120 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (0 0, 0 200, 110 200, 110 0, 0 0)) - - - POLYGON( - (100 100, 1000000 110, 10000000 100, 100 100)) - - - true - - - - -A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 2100 110, 2100 100, 100 100)) - - - true - - - - -A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 2101 110, 2101 100, 100 100)) - - - true - - - - -A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 2101 110, 2101 100, 100 100)) - - - true - - - - -A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 1000000 110, 1000000 100, 100 100)) - - - true - - - - -A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 100 200, 200 200, 200 100, 100 100)) - - - POLYGON( - (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - - true - - - - -A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 500 110, 500 100, 100 100)) - - - true - - - - -A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 501 110, 501 100, 100 100)) - - - true - - - - -A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 130 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 501 110, 501 100, 100 100)) - - - true - - - - -A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 17 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 501 110, 501 100, 100 100)) - - - true - - - - -A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 1000000 110, 1000000 100, 100 100)) - - - true - - - - -A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (120 100, 120 200, 200 200, 200 100, 120 100)) - - - POLYGON( - (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - - true - - - - -A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (101 99, 101 1000000, 102 1000000, 101 99)) - - - POLYGON( - (100 100, 1000000 110, 1000000 100, 100 100)) - - - true - - - - -A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (100 100, 200 101, 200 100, 100 100)) - - - POLYGON( - (100 100, 2101 110, 2101 100, 100 100)) - - - true - - - - -A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - - POLYGON( - (16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) - - - POLYGON( - (10 307, 22 307, 153 34, 22 34, 10 307)) - - - true - - - - -A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}] - - POLYGON( - (160 200, 210 70, 120 70, 160 200)) - - - POLYGON( - (160 200, 310 20, 20 20, 160 200), - (160 200, 260 40, 70 40, 160 200)) - - - true - - - - -A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - - POLYGON( - (170 120, 240 100, 260 50, 190 70, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - - POLYGON( - (270 90, 200 50, 150 80, 210 120, 270 90)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}] - - POLYGON( - (170 120, 260 100, 240 60, 150 80, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}] - - POLYGON( - (220 120, 270 80, 200 60, 160 100, 220 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}] - - POLYGON( - (260 50, 180 70, 180 110, 260 90, 260 50)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}] - - POLYGON( - (230 110, 290 80, 190 60, 140 90, 230 110)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}] - - POLYGON( - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - - POLYGON( - (170 120, 330 120, 280 70, 120 70, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - - POLYGON( - (170 120, 300 120, 250 70, 120 70, 170 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}] - - POLYGON( - (190 100, 310 100, 260 50, 140 50, 190 100)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}] - - POLYGON( - (280 130, 360 130, 270 40, 190 40, 280 130)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}] - - POLYGON( - (220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, - 390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}] - - POLYGON( - (260 130, 360 130, 280 40, 170 40, 260 130)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}] - - POLYGON( - (240 110, 340 110, 290 60, 190 60, 240 110)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}] - - POLYGON( - (250 120, 350 120, 280 50, 180 50, 250 120)) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 250 120, 180 50, 100 50, 170 120)) - - - true - - - - -Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (120 180, 50 50, 200 50, 120 180)) - - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (120 180, 50 50, 200 50, 120 180)) - - - true - - - - -A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (140 40, 40 40, 40 170, 140 40), - (110 190, 210 190, 210 50, 110 190)) - - - POLYGON( - (230 210, 230 20, 20 20, 20 210, 230 210), - (140 40, 40 40, 40 170, 140 40), - (110 190, 210 190, 210 50, 110 190)) - - - true - - - - -A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - - POLYGON( - (280 190, 330 150, 200 110, 150 150, 280 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - - POLYGON( - (80 190, 220 190, 140 110, 0 110, 80 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - - POLYGON( - (330 150, 200 110, 150 150, 280 190, 330 150)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}] - - POLYGON( - (290 190, 340 150, 220 120, 170 170, 290 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}] - - POLYGON( - (220 190, 340 190, 260 110, 140 110, 220 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - - POLYGON( - (140 190, 220 190, 100 70, 20 70, 140 190)) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - - POLYGON( - (140 220, 60 140, 140 60, 220 140, 140 220)) - - - MULTIPOLYGON( - ( - (100 20, 180 20, 180 100, 100 100, 100 20)), - ( - (20 100, 100 100, 100 180, 20 180, 20 100)), - ( - (100 180, 180 180, 180 260, 100 260, 100 180)), - ( - (180 100, 260 100, 260 180, 180 180, 180 100))) - - - true - - - - -mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 150 200, 110 110)), - ( - (110 110, 150 20, 70 20, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110))) - - - true - - - - -mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 150 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 150 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - - MULTIPOLYGON( - ( - (110 110, 20 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 20 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 160 160, 210 110, 160 60, 110 110), - (110 110, 160 130, 160 90, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - -mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - - MULTIPOLYGON( - ( - (110 110, 70 200, 200 200, 110 110), - (110 110, 100 180, 120 180, 110 110)), - ( - (110 110, 200 20, 70 20, 110 110), - (110 110, 120 40, 100 40, 110 110))) - - - MULTIPOLYGON( - ( - (110 110, 70 200, 210 110, 70 20, 110 110), - (110 110, 110 140, 150 110, 110 80, 110 110)), - ( - (110 110, 60 60, 10 110, 60 160, 110 110), - (110 110, 60 90, 60 130, 110 110))) - - - true - - - - - - -AC A-shells overlapping B-shell at A-vertex - - POLYGON( - (100 60, 140 100, 100 140, 60 100, 100 60)) - - - MULTIPOLYGON( - ( - (80 40, 120 40, 120 80, 80 80, 80 40)), - ( - (120 80, 160 80, 160 120, 120 120, 120 80)), - ( - (80 120, 120 120, 120 160, 80 160, 80 120)), - ( - (40 80, 80 80, 80 120, 40 120, 40 80))) - - - true - - - - - - -L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}] - - LINESTRING(150 150, 40 230) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - - LINESTRING(40 40, 50 130, 130 130) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}] - - LINESTRING(40 230, 150 150) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}] - - LINESTRING(210 150, 330 150) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}] - - LINESTRING(200 150, 310 150, 360 220) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}] - - LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}] - - LINESTRING(210 210, 220 150, 320 150, 370 210) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}] - - LINESTRING(20 60, 150 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}] - - LINESTRING(60 90, 310 180) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}] - - LINESTRING(90 210, 210 90) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}] - - LINESTRING(290 10, 130 170) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - - LINESTRING(30 100, 100 100, 180 100) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}] - - LINESTRING(20 100, 100 100, 360 100, 410 100) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}] - - LINESTRING(90 210, 150 150, 210 90) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}] - - LINESTRING(180 90, 280 120) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - - LINESTRING(70 70, 80 20) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}] - - LINESTRING(130 20, 150 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}] - - LINESTRING(70 70, 80 20, 140 20, 150 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - - LINESTRING(170 50, 170 20, 240 20, 260 60) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150)) - - - true - - - - -L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}] - - LINESTRING(50 100, 140 190, 280 190) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - - LINESTRING(140 60, 180 100, 290 100) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - - LINESTRING(170 120, 210 80, 270 80) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}] - - LINESTRING(170 120, 260 50) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(190 90, 190 270) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (190 190, 280 50, 100 50, 190 190)) - - - true - - - - -L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(60 160, 150 70) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (110 110, 250 100, 140 30, 110 110)) - - - true - - - - -L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(60 160, 150 70) - - - POLYGON( - (190 190, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - - LINESTRING(60 160, 150 70) - - - POLYGON( - (190 190, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(190 90, 190 190, 190 270) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (190 190, 280 50, 100 50, 190 190)) - - - true - - - - -L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(60 160, 110 110, 150 70) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (110 110, 250 100, 140 30, 110 110)) - - - true - - - - -L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(60 160, 110 110, 150 70) - - - POLYGON( - (190 190, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - - LINESTRING(60 160, 110 110, 150 70) - - - POLYGON( - (190 190, 110 110, 20 20, 360 20, 190 190), - (250 100, 110 110, 140 30, 250 100)) - - - true - - - - -L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}] - - LINESTRING(130 110, 180 110, 190 60) - - - POLYGON( - (20 200, 240 200, 240 20, 20 20, 20 200), - (130 110, 60 180, 60 40, 130 110), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - - LINESTRING(80 110, 180 110) - - - POLYGON( - (20 200, 240 200, 240 20, 20 20, 20 200), - (130 110, 60 180, 60 40, 130 110), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}] - - LINESTRING(80 110, 180 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (60 180, 130 110, 60 40, 60 180), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - - LINESTRING(80 110, 170 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (130 110, 60 40, 60 180, 130 110), - (130 180, 130 40, 200 110, 130 180)) - - - true - - - - -L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - - LINESTRING(80 110, 130 110, 170 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (130 110, 60 40, 60 180, 130 110), - (130 180, 130 40, 200 110, 130 180)) - - - true - - - - -L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - - LINESTRING(80 110, 130 110, 180 110) - - - POLYGON( - (20 200, 240 200, 240 20, 20 20, 20 200), - (130 110, 60 180, 60 40, 130 110), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}] - - LINESTRING(80 110, 130 110, 180 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (60 180, 130 110, 60 40, 60 180), - (130 110, 200 40, 200 180, 130 110)) - - - true - - - - -L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - - LINESTRING(80 110, 130 110, 170 110) - - - POLYGON( - (20 200, 20 20, 240 20, 240 200, 20 200), - (130 110, 60 40, 60 180, 130 110), - (130 180, 130 40, 200 110, 130 180)) - - - true - - - - -L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}] - - LINESTRING(160 70, 320 230) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}] - - LINESTRING(160 70, 200 110, 280 190, 320 230) - - - MULTIPOLYGON( - ( - (140 110, 260 110, 170 20, 50 20, 140 110)), - ( - (300 270, 420 270, 340 190, 220 190, 300 270))) - - - true - - - - -L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP] - - LINESTRING(70 50, 70 150) - - - MULTIPOLYGON( - ( - (0 0, 0 100, 140 100, 140 0, 0 0)), - ( - (20 170, 70 100, 130 170, 20 170))) - - - true - - - - -RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}] - - LINESTRING(110 110, 20 200, 200 200, 110 110) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}] - - LINESTRING(150 70, 160 110, 200 60, 150 70) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}] - - LINESTRING(80 60, 120 40, 120 70, 80 60) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}] - - LINESTRING(20 20, 200 20, 110 110, 20 20) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}] - - LINESTRING(110 90, 170 30, 50 30, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}] - - LINESTRING(110 110, 170 50, 170 110, 110 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}] - - LINESTRING(110 90, 70 50, 130 50, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}] - - LINESTRING(110 60, 20 150, 200 150, 110 60) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}] - - LINESTRING(110 130, 110 70, 200 100, 110 130) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 50 30, 170 30, 110 90)) - - - true - - - - -RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}] - - LINESTRING(110 90, 160 40, 60 40, 110 90) - - - POLYGON( - (20 20, 200 20, 110 110, 20 20)) - - - true - - - - -RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}] - - LINESTRING(110 100, 40 30, 180 30, 110 100) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}] - - LINESTRING(110 110, 180 30, 40 30, 110 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}] - - LINESTRING(110 90, 180 30, 40 30, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}] - - LINESTRING(110 90, 50 30, 180 30, 110 90) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110), - (110 90, 60 40, 160 40, 110 90)) - - - true - - - - -nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}] - - LINESTRING(110 110, 200 200, 200 110, 110 200) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}] - - LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}] - - LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}] - - LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}] - - LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}] - - LINESTRING(110 110, 180 40, 110 40, 110 180) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}] - - LINESTRING(110 60, 50 30, 170 30, 90 70) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}] - - LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}] - - LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90) - - - POLYGON( - (150 150, 410 150, 280 20, 20 20, 150 150), - (170 120, 330 120, 260 50, 100 50, 170 120)) - - - true - - - - -mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (200 200, 110 110, 20 210, 110 110)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (60 180, 60 110, 160 110, 110 110)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (200 200, 110 110, 20 200, 110 200, 110 110)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 50, 110 170, 110 70, 110 150, 200 150)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 60, 110 160, 200 160)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 60, 110 160, 200 160)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - - MULTILINESTRING( - (110 100, 40 30, 180 30), - (170 30, 110 90, 50 30)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - - MULTILINESTRING( - (110 110, 60 40, 70 20, 150 20, 170 40), - (180 30, 40 30, 110 80)) - - - POLYGON( - (110 110, 200 20, 20 20, 110 110)) - - - true - - - - -mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}] - - MULTILINESTRING( - (20 110, 200 110, 200 160), - (110 110, 200 110, 200 70, 20 150)) - - - MULTIPOLYGON( - ( - (110 110, 20 20, 200 20, 110 110)), - ( - (110 110, 20 200, 200 200, 110 110))) - - - true - - - - -mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}] - - MULTILINESTRING( - (20 160, 70 110, 150 110, 200 160), - (110 110, 20 110, 50 80, 70 110, 200 110)) - - - MULTIPOLYGON( - ( - (110 110, 20 20, 200 20, 110 110)), - ( - (110 110, 20 200, 200 200, 110 110))) - - - true - - - - -mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}] - - MULTILINESTRING( - (20 110, 200 110), - (110 110, 20 170, 20 130, 200 90)) - - - MULTIPOLYGON( - ( - (110 110, 20 20, 200 20, 110 110)), - ( - (110 110, 20 200, 200 200, 110 110))) - - - true - - - - - - -LC - topographically equal with no boundary - - LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) - - - MULTILINESTRING( - (0 0, 0 50), - (0 50, 50 50), - (50 50, 50 0), - (50 0, 0 0)) - - - true - - - - -LC - intersection (containment) along mod-2 A-Int line segment - - LINESTRING(40 180, 140 180) - - - MULTIPOLYGON( - ( - (20 320, 180 320, 180 180, 20 180, 20 320)), - ( - (20 180, 20 80, 180 80, 180 180, 20 180))) - - - true - - - - -LC - intersection (overlap) along mod-2 A-Int line segment - - LINESTRING(40 180, 140 180) - - - MULTIPOLYGON( - ( - (20 320, 180 320, 180 180, 20 180, 20 320)), - ( - (60 180, 60 80, 180 80, 180 180, 60 180))) - - - true - - - - -LC - equal with boundary intersection - - LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) - - - MULTILINESTRING( - (0 0, 60 0), - (60 0, 120 0), - (60 0, 60 60)) - - - true - - - - - - -L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(40 40, 60 120) - - - true - - - - -L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(60 240, 40 40) - - - true - - - - -L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}] - - LINESTRING(40 40, 180 180) - - - LINESTRING(120 120, 20 200) - - - true - - - - -L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(60 240, 120 120) - - - true - - - - -L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}] - - LINESTRING(40 40, 180 180) - - - LINESTRING(20 180, 140 140) - - - true - - - - -L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(40 40, 120 120) - - - LINESTRING(40 120, 120 40) - - - true - - - - -L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(40 40, 100 100) - - - LINESTRING(40 40, 100 100) - - - true - - - - -L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - - LINESTRING(40 40, 100 100) - - - LINESTRING(100 100, 40 40) - - - true - - - - -L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext} - - LINESTRING(40 40, 120 120) - - - LINESTRING(40 120, 120 160) - - - true - - - - -L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(20 20, 180 180) - - - LINESTRING(20 20, 180 180) - - - true - - - - -L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}] - - LINESTRING(20 20, 180 180) - - - LINESTRING(20 20, 110 110) - - - true - - - - -L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - - LINESTRING(20 20, 180 180) - - - LINESTRING(50 50, 140 140) - - - true - - - - -L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV] - - LINESTRING(180 180, 40 40) - - - LINESTRING(120 120, 260 260) - - - true - - - - -L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP] - - LINESTRING(40 40, 180 180) - - - LINESTRING(260 260, 120 120) - - - true - - - - -L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV] - - LINESTRING(40 40, 180 180) - - - LINESTRING(120 120, 260 260) - - - true - - - - -L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(40 40, 20 100, 40 160, 20 200) - - - true - - - - -L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(20 200, 40 160, 20 100, 40 40) - - - true - - - - -L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - - LINESTRING(80 240, 200 120, 100 100, 40 40) - - - LINESTRING(20 200, 40 160, 20 100, 40 40) - - - true - - - - -L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(20 20, 60 60, 250 160, 310 230) - - - true - - - - -L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(20 20, 110 110, 200 110, 320 230) - - - true - - - - -L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - - LINESTRING(60 110, 60 250, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}] - - LINESTRING(60 110, 60 250, 360 210) - - - LINESTRING(360 210, 310 160, 110 160, 60 110) - - - true - - - - -L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(160 160, 240 240) - - - true - - - - -L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(240 240, 160 160) - - - true - - - - -L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(60 150, 110 100, 170 100, 110 230) - - - true - - - - -L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(200 120, 200 190, 150 240, 200 240) - - - true - - - - -L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(200 240, 150 240, 200 200, 200 120) - - - true - - - - -L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - - LINESTRING(60 60, 60 230, 140 230, 250 160) - - - LINESTRING(60 230, 80 140, 120 140, 140 230) - - - true - - - - -L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(60 110, 200 110, 250 160, 300 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - - LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(60 110, 220 110, 250 160, 280 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - - LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(130 160, 160 110, 190 110, 230 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - - LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - - LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - - LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(110 160, 180 110, 250 160, 320 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - - LINESTRING(140 160, 180 80, 220 160, 250 80) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}] - - LINESTRING(40 40, 100 100, 200 120, 130 190) - - - LINESTRING(20 130, 70 130, 160 40) - - - true - - - - -L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(40 40, 100 100, 200 120, 130 190) - - - LINESTRING(40 160, 40 100, 110 40, 170 40) - - - true - - - - -L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - - LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-16: two LineStrings crossing at vertices for both LineString [dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(40 40, 100 100, 200 120, 130 190) - - - LINESTRING(30 140, 80 140, 100 100, 200 30) - - - true - - - - -L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, - 240 80, 300 80, 270 110, 200 110) - - - true - - - - -L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}] - - LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, - 230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, - 80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, - 70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, - 40 190, 230 190, 20 200, 230 200) - - - LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, - 70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, - 120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, - 150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, - 190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) - - - true - - - - -L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - true - - - - -L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(80 240, 200 120, 100 100, 40 40) - - - true - - - - -L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40) - - - true - - - - -L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(260 210, 240 130, 280 120, 260 40) - - - true - - - - -L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - - LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) - - - LINESTRING(140 130, 100 110, 120 60, 170 60) - - - true - - - - -L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 310 160, 360 210) - - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - true - - - - -L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(60 110, 110 160, 250 160) - - - true - - - - -L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(110 160, 310 160, 340 190) - - - true - - - - -L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(140 160, 250 160, 310 160, 340 190) - - - true - - - - -L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}] - - LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - - LINESTRING(110 160, 250 160, 310 160) - - - true - - - - -L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40) - - - true - - - - -L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40) - - - true - - - - -L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(80 190, 140 140, 40 40) - - - true - - - - -L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(240 200, 200 260, 80 240, 140 180) - - - true - - - - -L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(140 180, 80 240, 200 260, 240 200) - - - true - - - - -L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(280 240, 240 140, 200 120, 80 240) - - - true - - - - -L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(20 80, 120 80, 200 80, 260 20) - - - true - - - - -L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(100 100, 200 120, 240 140, 280 240) - - - true - - - - -L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}] - - LINESTRING(40 40, 100 100, 200 120, 80 240) - - - LINESTRING(280 240, 240 140, 200 120, 100 100) - - - true - - - - -L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(80 20, 80 80, 240 80, 300 20) - - - true - - - - -L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}] - - LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - - LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, - 300 80) - - - true - - - - -L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}] - - LINESTRING(100 100, 20 180, 180 180) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - - LINESTRING(20 100, 180 100, 100 180) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - - LINESTRING(100 40, 100 160, 180 160) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}] - - LINESTRING(20 100, 100 100, 180 100, 100 180) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - - LINESTRING(100 100, 160 40) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - - LINESTRING(100 100, 180 20) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}] - - LINESTRING(60 60, 100 100, 140 60) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}] - - LINESTRING(100 100, 190 10, 190 100) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}] - - LINESTRING(100 100, 160 40, 160 100) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}] - - LINESTRING(60 140, 160 40, 160 140) - - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 140 80, 80 20, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 140 80, 80 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(20 140, 140 20, 100 20, 100 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 140 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 80 140, 80 20) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 80 80, 140 80) - - - true - - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}] - - LINESTRING(20 20, 140 140) - - - LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20) - - - true - - - - -L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - - LINESTRING(130 150, 220 150, 220 240) - - - LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - - true - - - - -L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - - LINESTRING(30 150, 130 150, 250 150) - - - LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - - true - - - - -L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - - LINESTRING(30 150, 250 150) - - - LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - - true - - - - -L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - - LINESTRING(30 150, 130 150, 250 150) - - - LINESTRING(130 240, 130 20, 30 20, 130 150) - - - true - - - - -L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - - LINESTRING(30 150, 250 150) - - - LINESTRING(120 240, 120 20, 20 20, 120 170) - - - true - - - - -nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}] - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - LINESTRING(110 110, 200 110) - - - true - - - - -L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - - LINESTRING(110 110, 200 110) - - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - - LINESTRING(20 110, 200 110) - - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV} - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - LINESTRING(20 110, 200 110) - - - true - - - - -L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}] - - LINESTRING(90 200, 90 130, 110 110, 150 200) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}] - - LINESTRING(200 110, 110 110, 90 130, 90 200) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx] - - LINESTRING(80 80, 150 80, 210 80) - - - MULTILINESTRING( - (20 20, 140 140), - (20 140, 140 20)) - - - true - - - - -LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - true - - - - -LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(40 80, 260 20, 160 200, 40 80) - - - true - - - - -LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(260 20, 40 80, 160 200, 260 20) - - - true - - - - -LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}] - - LINESTRING(40 80, 160 200, 260 20, 40 80) - - - LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140) - - - true - - - - -LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}] - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - LINESTRING(100 100, 180 180, 20 180, 100 100) - - - true - - - - -LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150) - - - true - - - - -LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}] - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - LINESTRING(180 100, 20 100, 100 180, 180 100) - - - true - - - - -LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}] - - LINESTRING(100 100, 180 20, 20 20, 100 100) - - - LINESTRING(180 180, 100 100, 20 180, 180 180) - - - true - - - - -LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}] - - LINESTRING(20 180, 100 100, 20 20, 20 180) - - - LINESTRING(100 20, 100 180, 180 100, 100 20) - - - true - - - - -LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(170 20, 20 170, 170 170, 170 20) - - - true - - - - -LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(40 150, 150 150, 90 210, 40 150) - - - true - - - - -LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(20 150, 170 150, 90 230, 20 150) - - - true - - - - -LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}] - - LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - - LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150) - - - true - - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - - true - - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - - true - - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - - true - - - - -LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40) - - - true - - - - -LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}] - - LINESTRING(110 110, 200 20, 20 20, 110 110) - - - LINESTRING(200 20, 20 200, 200 200, 20 20) - - - true - - - - -nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}] - - LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110) - - - LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110) - - - true - - - - -nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}] - - LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - - LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100) - - - true - - - - -nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}] - - LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - - LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160) - - - true - - - - -nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}] - - LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200) - - - LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110) - - - true - - - - -nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - - LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - - LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200) - - - true - - - - -nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - - LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - - LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120) - - - true - - - - -mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - - MULTILINESTRING( - (70 20, 20 90, 70 170), - (70 170, 120 90, 70 20)) - - - MULTILINESTRING( - (70 20, 20 90, 70 170), - (70 170, 120 90, 70 20)) - - - true - - - - -mL/mL-1-1: non-simple MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - true - - - - -mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 140, 90 60, 90 20), - (170 20, 130 20, 20 20)) - - - true - - - - -mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (130 100, 130 60, 90 20, 50 90)) - - - true - - - - -mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) - - - true - - - - -mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60)) - - - true - - - - -mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (130 100, 90 20)) - - - true - - - - -mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (120 100, 170 100, 90 20)) - - - true - - - - -mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60), - (120 100, 170 100, 90 20)) - - - true - - - - -mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (130 140, 130 60, 90 20, 20 90, 90 20)) - - - true - - - - -mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}] - - MULTILINESTRING( - (20 20, 90 20, 170 20), - (90 20, 90 80, 90 140)) - - - MULTILINESTRING( - (90 20, 170 100, 170 140), - (170 60, 90 20, 20 60, 20 140, 90 20)) - - - true - - - - -mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}] - - MULTILINESTRING( - (20 20, 90 90, 20 160), - (90 160, 90 20)) - - - MULTILINESTRING( - (160 160, 90 90, 160 20), - (160 120, 120 120, 90 90, 160 60)) - - - true - - - - -mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}] - - MULTILINESTRING( - (20 20, 90 90, 20 160), - (90 160, 90 20)) - - - MULTILINESTRING( - (160 160, 90 90, 160 20), - (160 120, 120 120, 90 90, 120 60, 160 60)) - - - true - - - - -mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}] - - MULTILINESTRING( - (20 20, 90 90, 20 160), - (90 160, 90 20)) - - - MULTILINESTRING( - (160 160, 90 90, 160 20), - (160 120, 90 90, 160 60)) - - - true - - - - - - -P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(20 20) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(70 170) - - - POLYGON( - (110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) - - - true - - - - -P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(110 130) - - - POLYGON( - (20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) - - - true - - - - -P/A-2-4: dim(0){A.P.Int = B.A.Ext} - - POINT(100 70) - - - POLYGON( - (20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) - - - true - - - - -P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - - POINT(100 70) - - - POLYGON( - (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - - true - - - - -P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}] - - POINT(60 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}] - - POINT(110 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V] - - POINT(160 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}] - - POINT(100 150) - - - POLYGON( - (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - - true - - - - -P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}] - - POINT(100 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}] - - POINT(60 160) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}] - - POINT(190 90) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}] - - POINT(190 190) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}] - - POINT(360 20) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}] - - POINT(130 130) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}] - - POINT(280 50) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}] - - POINT(150 100) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}] - - POINT(100 50) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}] - - POINT(140 120) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - - POINT(190 50) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (90 50, 150 110, 190 50, 90 50), - (190 50, 230 110, 290 50, 190 50)) - - - true - - - - -P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - - POINT(180 90) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (180 140, 180 40, 80 40, 180 140), - (180 90, 210 140, 310 40, 230 40, 180 90)) - - - true - - - - -mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}] - - MULTIPOINT(20 80, 110 160, 20 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}] - - MULTIPOINT(20 80, 60 120, 20 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}] - - MULTIPOINT(10 80, 110 170, 110 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}] - - MULTIPOINT(10 80, 110 170, 160 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}] - - MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}] - - MULTIPOINT(60 120, 110 120, 160 120) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}] - - MULTIPOINT(60 120, 160 120, 160 40, 60 40) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}] - - MULTIPOINT(20 150, 60 120, 110 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}] - - MULTIPOINT(110 80, 160 120, 200 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}] - - MULTIPOINT(110 80, 110 120, 110 160) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}] - - MULTIPOINT(110 170, 110 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}] - - MULTIPOINT(60 120, 160 120, 110 80, 110 170) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int] - - MULTIPOINT(90 80, 130 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}] - - MULTIPOINT(60 120, 160 120, 110 80) - - - POLYGON( - (60 120, 60 40, 160 40, 160 120, 60 120)) - - - true - - - - -mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}] - - MULTIPOINT(40 170, 40 90, 130 170) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}] - - MULTIPOINT(90 170, 280 170, 190 90) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}] - - MULTIPOINT(190 110, 150 70, 230 70) - - - POLYGON( - (190 190, 360 20, 20 20, 190 190), - (280 50, 100 50, 190 140, 280 50)) - - - true - - - - -P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}] - - POINT(100 100) - - - MULTIPOLYGON( - ( - (20 100, 20 20, 100 20, 100 100, 20 100)), - ( - (100 180, 100 100, 180 100, 180 180, 100 180))) - - - true - - - - -P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}] - - POINT(20 100) - - - MULTIPOLYGON( - ( - (20 100, 20 20, 100 20, 100 100, 20 100)), - ( - (100 180, 100 100, 180 100, 180 180, 100 180))) - - - true - - - - -P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}] - - POINT(60 100) - - - MULTIPOLYGON( - ( - (20 100, 20 20, 100 20, 100 100, 20 100)), - ( - (100 180, 100 100, 180 100, 180 180, 100 180))) - - - true - - - - -P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}] - - POINT(110 110) - - - MULTIPOLYGON( - ( - (110 110, 20 200, 200 200, 110 110), - (110 110, 80 180, 140 180, 110 110)), - ( - (110 110, 20 20, 200 20, 110 110), - (110 110, 80 40, 140 40, 110 110))) - - - true - - - - - - -P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}] - - POINT(110 200) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-3-1: a point touching the start point of a line [dim(0){A.P.Int = B.L.Bdy.SP}] - - POINT(90 80) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}] - - POINT(340 240) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - - POINT(230 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}] - - POINT(160 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - - POINT(90 150) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-2-2: a point inside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - - POINT(150 80) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}] - - POINT(150 150) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - - POINT(100 20) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}] - - POINT(20 20) - - - LINESTRING(150 150, 20 20, 280 20, 150 150) - - - true - - - - -P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}] - - POINT(220 220) - - - LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - - true - - - - -P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - - true - - - - -P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 220 20, 20 20, 220 220) - - - true - - - - -P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(110 20) - - - LINESTRING(110 110, 220 20, 20 20, 220 220) - - - true - - - - -P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(220 20) - - - LINESTRING(110 110, 220 20, 20 20, 220 220) - - - true - - - - -P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(110 20) - - - LINESTRING(220 220, 20 20, 220 20, 110 110) - - - true - - - - -P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(20 20) - - - LINESTRING(220 220, 20 20, 220 20, 110 110) - - - true - - - - -P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(20 110) - - - LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200) - - - true - - - - -P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}] - - POINT(20 200) - - - LINESTRING(20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(80 140) - - - LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - - POINT(110 110) - - - LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, - 20 140) - - - true - - - - -P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - - true - - - - -P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - - true - - - - -P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - - true - - - - -P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 110) - - - LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) - - - true - - - - -P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) - - - true - - - - -P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 160) - - - LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(110 160) - - - LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(110 110) - - - LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(140 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(110 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - - true - - - - -P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - - true - - - - -P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}] - - POINT(140 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - - true - - - - -P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - - POINT(110 200) - - - LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - - true - - - - -P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - - true - - - - -P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - - POINT(90 130) - - - LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - - POINT(90 130) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - - true - - - - -P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, - 110 110) - - - true - - - - -P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) - - - true - - - - -P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, - 110 110) - - - true - - - - -P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(110 110) - - - LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) - - - true - - - - -P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200) - - - true - - - - -P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) - - - true - - - - -P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - - POINT(110 110) - - - LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) - - - true - - - - -P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, - 90 130) - - - true - - - - -P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, - 90 130) - - - true - - - - -P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - - POINT(90 130) - - - LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - - true - - - - -P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - - POINT(110 110) - - - LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - - true - - - - -P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}] - - POINT(110 200) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 150) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 110) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}] - - POINT(110 200) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - - true - - - - -P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 150) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - - true - - - - -P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 110) - - - LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - - true - - - - -P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - - POINT(110 150) - - - LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 110) - - - LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - - POINT(110 200) - - - LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - - true - - - - -mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}] - - MULTIPOINT(50 250, 90 220, 130 190) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}] - - MULTIPOINT(180 180, 230 130, 280 80) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}] - - MULTIPOINT(50 120, 90 80, 130 40) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}] - - MULTIPOINT(300 280, 340 240, 380 200) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV] - - MULTIPOINT(230 150, 260 120, 290 90) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV] - - MULTIPOINT(200 190, 240 150, 270 110) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V] - - MULTIPOINT(160 150, 190 120, 220 90) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V] - - MULTIPOINT(120 190, 160 150, 200 110) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}] - - MULTIPOINT(90 80, 160 150, 340 240) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - - MULTIPOINT(90 80, 160 150, 300 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(90 80, 160 150, 240 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(90 80, 130 120, 210 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(130 120, 210 150, 340 200) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - - MULTIPOINT(160 150, 240 150, 340 210) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - - MULTIPOINT(160 150, 300 150, 340 150) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - -mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}] - - MULTIPOINT(160 150, 240 150, 340 240) - - - LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - - true - - - - - - -P/P: same point [dim(0){A.P.Int = B.P.Int}] - - POINT(20 20) - - - POINT(20 20) - - - true - - - - -P/P: different point [dim(0){A.P.Int = B.P.Ext}] - - POINT(20 20) - - - POINT(40 60) - - - true - - - - -P/mP: different points [dim(0){A.P.Int = B.3P.Ext}] - - POINT(40 40) - - - MULTIPOINT(20 20, 80 80, 20 120) - - - true - - - - -P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}] - - POINT(20 20) - - - MULTIPOINT(20 20, 80 80, 20 120) - - - true - - - - -mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}] - - MULTIPOINT(40 40, 80 60, 120 100) - - - MULTIPOINT(40 40, 80 60, 120 100) - - - true - - - - -mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}] - - MULTIPOINT(40 40, 80 60, 120 100) - - - MULTIPOINT(40 40, 120 100, 80 60) - - - true - - - - -mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}] - - MULTIPOINT(40 40, 60 100, 100 60, 120 120) - - - MULTIPOINT(20 120, 60 60, 100 100, 140 40) - - - true - - - - -mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}] - - MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - - MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - - true - - - - -mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}] - - MULTIPOINT(20 20, 140 120, 80 70, 200 170) - - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - true - - - - -mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}] - - MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - - MULTIPOINT(80 70, 140 120) - - - true - - - - -mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}] - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - MULTIPOINT(140 120, 80 70) - - - true - - - - -mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}] - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - MULTIPOINT(80 170, 140 120, 200 80) - - - true - - - - -mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int} - - MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - - MULTIPOINT(80 170, 140 120, 200 80, 80 70) - - - true - - - -P - pointPOINT(10 10) -true - - - -mP - multipoint with repeated pointsMULTIPOINT (80 280, 80 220, 160 220, 80 220) -false - - - -mP - multipoint with no repeated pointsMULTIPOINT (80 280, 80 220, 160 220) -true - - - -mP - emptyMULTIPOINT EMPTY -true - - - -L - simple lineLINESTRING(10 10, 20 20) -true - - - -L - non-simple, proper interior intersectionLINESTRING (20 60, 160 60, 80 160, 80 20) -false - - - -L - non-simple, interior intersection at verticesLINESTRING (20 80, 80 20, 80 80, 140 60, 80 20, 160 20) -false - - - -L - non-simple, interior intersection at Bdy/non-vertexLINESTRING (20 60, 100 60, 60 100, 60 60) -false - - - -L - non-simple, interior intersection at Bdy/vertexLINESTRING (20 60, 60 60, 100 60, 60 100, 60 60) -false - - - -L - simple, intersection at Bdy/Bdy (ring)LINESTRING (20 20, 80 20, 80 80, 20 20) -true - - - -L - simple, intersection at Bdy/Bdy + non-vertexLINESTRING (80 80, 20 20, 20 80, 140 80, 140 140, 80 80) -false - - - -L - emptyLINESTRING EMPTY -true - - - - -mL - intersection between elements at non-vertexMULTILINESTRING((40 140, 160 40), (160 140, 40 40)) -false - - - -mL - no intersection between elementsMULTILINESTRING((20 160, 20 20), (100 160, 100 20)) -true - - - -mL - mutual intersection at endpoints onlyMULTILINESTRING ((60 140, 20 80, 60 40), (60 40, 100 80, 60 140)) -true - - - -mL - one element is non-simpleMULTILINESTRING ((60 40, 140 40, 100 120, 100 0), (100 200, 200 120)) -false - - - -mL - proper intersection between elements at vertexMULTILINESTRING ((40 120, 100 60), (160 120, 100 60), (40 60, 160 60)) -false - - - -mL - intersection between closed linesMULTILINESTRING ((80 160, 40 220, 40 100, 80 160), (80 160, 120 220, 120 100, 80 160)) -false - - - -mL - intersection between closed and open linesMULTILINESTRING ((80 160, 40 220), (80 160, 120 220, 120 100, 80 160), (40 100, 80 160)) -false - - - -APOLYGON ((180 260, 80 300, 40 180, 160 120, 180 260)) -true - - - -A - emptyPOLYGON EMPTY -true - - - -mAMULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340))) -true - - - -mA - with touching elementsMULTIPOLYGON (((240 160, 100 240, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340))) -true - - - - - PP - disjoint points - POINT(10 10) - POINT(100 100) -true -false - - - - PP - overlapping points - POINT(10 10) - POINT(10 10) -true -true - - - - PL - point on linestring - POINT (340 200) - LINESTRING (80 280, 340 200, 80 80) -true -true - - - - PL - point not on linestring - LINESTRING (100 100, 200 100, 200 200, 100 200, 100 100) - POINT (10 10) -true -false - - - - PA - point inside polygon - POINT (240 160) - POLYGON ((100 260, 340 180, 100 60, 180 160, 100 260)) -true -true - - - - mPA - points outside polygon - POLYGON ((200 180, 60 140, 60 260, 200 180)) - MULTIPOINT (140 280, 140 320) -true -false - - - - LL - disjoint linestrings - LINESTRING (40 300, 240 260, 60 160, 140 60) - LINESTRING (140 360, 260 280, 240 120, 120 160) -true -false - - - - LL - crossing linestrings - LINESTRING (40 300, 280 220, 60 160, 140 60) - LINESTRING (140 360, 260 280, 240 120, 120 160) -true -true - - - - AA - overlapping polygons - POLYGON ((60 260, 260 180, 100 60, 60 160, 60 260)) - POLYGON ((220 280, 120 160, 300 60, 360 220, 220 280)) -true -true - - - - AA - disjoint polygons - POLYGON ((100 320, 60 120, 240 180, 200 260, 100 320)) - POLYGON ((420 320, 280 260, 400 100, 420 320)) -true -false - - - - mAmA - overlapping multipolygons - MULTIPOLYGON (((40 240, 160 320, 40 380, 40 240)), ((100 240, 240 60, 40 40, 100 240))) - MULTIPOLYGON (((220 280, 120 160, 300 60, 360 220, 220 280)), ((240 380, 280 300, 420 340, 240 380))) -true -true - - - - Multipoint buffer - - MULTIPOINT(0 0, 5 5) - - - - POLYGON ((-10.0 -2.0, -10.0 -0.0, -10.0 2.0, -9.0 4.0, -8.0 6.0, -7.0 7.0, -6.0 8.0, -4.0 9.0, -3.0 11.0, -2.0 12.0, -1.0 13.0, 1.0 14.0, 3.0 15.0, 5.0 15.0, 7.0 15.0, 9.0 14.0, 11.0 13.0, 12.0 12.0, 13.0 11.0, 14.0 9.0, 15.0 7.0, 15.0 5.0, 15.0 3.0, 14.0 1.0, 13.0 -1.0, 12.0 -2.0, 11.0 -3.0, 9.0 -4.0, 8.0 -6.0, 7.0 -7.0, 6.0 -8.0, 4.0 -9.0, 2.0 -10.0, 0.0 -10.0, -2.0 -10.0, -4.0 -9.0, -6.0 -8.0, -7.0 -7.0, -8.0 -6.0, -9.0 -4.0, -10.0 -2.0)) - - - - - - - Multipolygon buffering - - MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) - - - - - MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) - - - - - - - - diff -Nru geos-3.1.0/tests/xmltester/TestRobustOverlayFixed.xml geos-3.2.2/tests/xmltester/TestRobustOverlayFixed.xml --- geos-3.1.0/tests/xmltester/TestRobustOverlayFixed.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestRobustOverlayFixed.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ - - - - - AA - -POLYGON ((545 317, 617 379, 581 321, 545 317)) - - -POLYGON ((484 290, 558 359, 543 309, 484 290)) - - - - POINT (545 317) - - - - diff -Nru geos-3.1.0/tests/xmltester/tests/badguy3.xml geos-3.2.2/tests/xmltester/tests/badguy3.xml --- geos-3.1.0/tests/xmltester/tests/badguy3.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/badguy3.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,56 @@ + + + + + + +Extreme simplification of the Big Bad Nasty buffer. +If the first element is reordered backward, things are fine !! + + + +MULTIPOLYGON((( +3135840 10098400, + 3135702 10098200, + 3135830 10098461, +3135840 10098400 +)) , (( +3129627 10098250, +3130490 10098813, +3130663 10098320, +3130263 10097448, +3129627 10098250 +),( +3130240 10098310, +3130210 10098340, +3130193 10098318, +3130240 10098310 +))) + + + + + + +MULTIPOLYGON((( +3135840 10098400, +3135702 10098200, +3135830 10098461, +3135840 10098400 +)) , (( +3129627 10098250, +3130490 10098813, +3130663 10098320, +3130263 10097448, +3129627 10098250 +),( +3130240 10098310, +3130210 10098340, +3130193 10098318, +3130240 10098310 +))) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/buffer.xml geos-3.2.2/tests/xmltester/tests/buffer.xml --- geos-3.1.0/tests/xmltester/tests/buffer.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/buffer.xml 2009-10-22 19:18:38.000000000 +0100 @@ -0,0 +1,363 @@ + + + +Case #1 + +POINT (100 100) + + + + POLYGON ((70.0000000000000000 99.9999999999999005, 70.5764415879030622 105.8527096604837396, 72.2836140246613610 111.4805029709525854, 75.0559116309235748 116.6671069905879676, 78.7867965644034882 121.2132034355963413, 83.3328930094118192 124.9440883690762831, 88.5194970290471872 127.7163859753385537, 94.1472903395160330 129.4235584120968952, 99.9999999999998863 130.0000000000000000, 105.8527096604837396 129.4235584120969236, 111.4805029709525996 127.7163859753386390, 116.6671069905879961 124.9440883690764110, 121.2132034355963697 121.2132034355964834, 124.9440883690763116 116.6671069905881382, 127.7163859753385680 111.4805029709527560, 129.4235584120968952 105.8527096604839102, 130.0000000000000000 100.0000000000000000, 129.4235584120969236 94.1472903395161609, 127.7163859753386106 88.5194970290473151, 124.9440883690763684 83.3328930094119471, 121.2132034355964407 78.7867965644035877, 116.6671069905880955 75.0559116309236600, 111.4805029709527275 72.2836140246614036, 105.8527096604838817 70.5764415879030906, 100.0000000000000426 70.0000000000000000, 94.1472903395162035 70.5764415879030764, 88.5194970290473577 72.2836140246613752, 83.3328930094119897 75.0559116309236032, 78.7867965644036303 78.7867965644035309, 75.0559116309236884 83.3328930094118761, 72.2836140246614320 88.5194970290472298, 70.5764415879031048 94.1472903395160614, 70.0000000000000000 99.9999999999999005)) + + + +Case #2 + +LINESTRING (10 10, 100 100) + + + + POLYGON ((-10.0000000000000000 9.9999999999999805, -9.6157056080646157 13.9018064403225328, -8.4775906502257463 17.6536686473017674, -6.6293922460509283 21.1114046603920080, -4.1421356237309501 24.1421356237309510, 85.8578643762690490 114.1421356237309510, 85.8578643762690774 114.1421356237309794, 88.8885953396079884 116.6293922460509265, 92.3463313526982290 118.4775906502257499, 96.0981935596774548 119.6157056080646157, 100.0000000000000142 120.0000000000000000, 103.9018064403225736 119.6157056080646015, 107.6536686473017994 118.4775906502257357, 111.1114046603920542 116.6293922460508981, 114.1421356237309510 114.1421356237309510, 116.6293922460508981 111.1114046603920542, 118.4775906502257357 107.6536686473017994, 119.6157056080646015 103.9018064403225736, 120.0000000000000000 100.0000000000000142, 119.6157056080646157 96.0981935596774548, 118.4775906502257499 92.3463313526982290, 116.6293922460509265 88.8885953396079884, 114.1421356237309510 85.8578643762690490, 24.1421356237309510 -4.1421356237309501, 24.1421356237309297 -4.1421356237309723, 21.1114046603920222 -6.6293922460509194, 17.6536686473017745 -8.4775906502257428, 13.9018064403225488 -9.6157056080646122, 9.9999999999999876 -10.0000000000000000, 6.0981935596774273 -9.6157056080646068, 2.3463313526982019 -8.4775906502257339, -1.1114046603920393 -6.6293922460509078, -4.1421356237309492 -4.1421356237309519, -6.6293922460508963 -1.1114046603920573, -8.4775906502257303 2.3463313526981944, -9.6157056080646051 6.0981935596774104, -10.0000000000000000 9.9999999999999805)) + + + +Case #3 + +LINESTRING (100 100, 200 100, 200 200, 100 200, 100 100) + + + + POLYGON ((90.0000000000000000 100.0000000000000000, 90.0000000000000000 200.0000000000000000, 90.1921471959676921 201.9509032201612797, 90.7612046748871251 203.8268343236508997, 91.6853038769745439 205.5557023301960271, 92.9289321881345245 207.0710678118654755, 94.4442976698039729 208.3146961230254419, 96.1731656763491003 209.2387953251128749, 98.0490967798387203 209.8078528040323079, 100.0000000000000000 210.0000000000000000, 200.0000000000000000 210.0000000000000000, 201.9509032201612797 209.8078528040323079, 203.8268343236508997 209.2387953251128749, 205.5557023301960271 208.3146961230254419, 207.0710678118654755 207.0710678118654755, 208.3146961230254419 205.5557023301960271, 209.2387953251128749 203.8268343236508997, 209.8078528040323079 201.9509032201612797, 210.0000000000000000 200.0000000000000000, 210.0000000000000000 100.0000000000000000, 209.8078528040323079 98.0490967798387203, 209.2387953251128749 96.1731656763491003, 208.3146961230254419 94.4442976698039729, 207.0710678118654755 92.9289321881345245, 205.5557023301960271 91.6853038769745439, 203.8268343236508997 90.7612046748871251, 201.9509032201612797 90.1921471959676921, 200.0000000000000000 90.0000000000000000, 100.0000000000000000 90.0000000000000000, 98.0490967798387061 90.1921471959676921, 97.2322523941698904 90.4399342313836030, 96.1731656763491145 90.7612046748871251, 96.1731656763490861 90.7612046748871393, 94.4442976698039587 91.6853038769745581, 92.9289321881345245 92.9289321881345245, 91.6853038769745581 94.4442976698039587, 90.7612046748871393 96.1731656763490861, 90.7612046748871251 96.1731656763491145, 90.5373906437101397 96.9109816581012069, 90.1921471959676921 98.0490967798386919, 90.0000000000000000 100.0000000000000000), (110.0000000000000000 110.0000000000000000, 190.0000000000000000 110.0000000000000000, 190.0000000000000000 190.0000000000000000, 110.0000000000000000 190.0000000000000000, 110.0000000000000000 110.0000000000000000)) + + + +Case #4 + +LINESTRING (40 40, 160 40, 100 180, 40 80) + + + + POLYGON ((-10.0000000000000000 40.0000000000000071, -9.0392640201615233 49.7545161008064056, -6.1939766255643445 59.1341716182544701, -5.7089632597009334 60.0415678037439804, -8.5071250072665823 67.8732187481833051, -9.9408918612425712 77.5695020872925056, -9.4554582481658347 87.3591880981481808, -7.0694791095526091 96.8660646374722063, -2.8746462856272093 105.7247877713763273, 57.1253537143727925 205.7247877713763273, 63.0793179783294420 213.7174026142983507, 70.5002381509231526 220.3703362736521001, 79.0932615344621155 225.4192501780203202, 88.5169646845435523 228.6635376842249343, 98.3969190624655141 229.9742947074564938, 108.3405680669374220 229.2994414199672519, 117.9528243414483342 226.6657915197535260, 126.8517676352035579 222.1779868517338627, 134.6838195002822829 216.0143397117292352, 141.1377918943432235 208.4197480294549791, 145.9572515009028848 199.6959649289583751, 205.9572515009028848 59.6959649289583822, 205.9572515009028848 59.6959649289583894, 208.9292730958345885 50.2920471390894264, 209.9976214261368739 40.4877004497635937, 209.1207306555521086 30.6643789780913245, 206.3327176513530503 21.2042750860734870, 201.7420546119134031 12.4754495626896720, 195.5273487787097508 4.8175116179098252, 187.9303934299507546 -1.4715941681551830, 179.2467605182728221 -6.1471798656456880, 169.8143009612940659 -9.0273341784064609, 160.0000000000000000 -10.0000000000000000, 40.0000000000000000 -10.0000000000000000, 39.9999999999999005 -10.0000000000000000, 30.2454838991935233 -9.0392640201615091, 20.8658283817454411 -6.1939766255643089, 12.2214883490198183 -1.5734806151272143, 4.6446609406725869 4.6446609406726607, -1.5734806151272844 12.2214883490199231, -6.1939766255643489 20.8658283817455370, -9.0392640201615251 30.2454838991936050, -10.0000000000000000 40.0000000000000071)) + + + +Case #5 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300)) + + + + POLYGON ((70.0000000000000000 80.0000000000000000, 70.0000000000000000 300.0000000000000000, 70.1921471959676921 301.9509032201613081, 70.7612046748871393 303.8268343236508713, 71.6853038769745439 305.5557023301960271, 72.9289321881345245 307.0710678118654755, 74.4442976698039871 308.3146961230254419, 76.1731656763491003 309.2387953251128465, 78.0490967798387203 309.8078528040322794, 80.0000000000000000 310.0000000000000000, 280.0000000000000000 310.0000000000000000, 281.9509032201613081 309.8078528040322794, 283.8268343236508713 309.2387953251128465, 285.5557023301960271 308.3146961230254419, 287.0710678118654755 307.0710678118654755, 288.3146961230254419 305.5557023301960271, 289.2387953251128465 303.8268343236508713, 289.8078528040322794 301.9509032201613081, 290.0000000000000000 300.0000000000000000, 290.0000000000000000 80.0000000000000000, 289.8078528040322794 78.0490967798387203, 289.2387953251128465 76.1731656763491003, 288.3146961230254419 74.4442976698039729, 287.0710678118654755 72.9289321881345245, 285.5557023301960271 71.6853038769745439, 283.8268343236508713 70.7612046748871393, 281.9509032201613081 70.1921471959676921, 280.0000000000000000 70.0000000000000000, 80.0000000000000000 70.0000000000000000, 79.9999999982041317 70.0000000000000000, 78.0490967782975389 70.1921471962742629, 76.1731656751047410 70.7612046754025670, 74.4442976688707176 71.6853038775981304, 72.9289321874995977 72.9289321887694655, 71.6853038766004005 74.4442976703639232, 70.7612046747153158 76.1731656767638867, 70.1921471959238943 78.0490967800588891, 70.0000000000000000 80.0000000000000000)) + + + +Case #6 + +POLYGON ((60 300, 60 160, 240 160, 240 300, 60 300)) + + + + POLYGON ((50.0000000000000000 159.9999999982041459, 50.0000000000000000 160.0000000000000000, 50.0000000000000000 300.0000000000000000, 50.1921471959676992 301.9509032201613081, 50.7612046748871322 303.8268343236508713, 51.6853038769745439 305.5557023301960271, 52.9289321881345245 307.0710678118654755, 54.4442976698039800 308.3146961230254419, 56.1731656763491003 309.2387953251128465, 58.0490967798387203 309.8078528040322794, 60.0000000000000000 310.0000000000000000, 240.0000000000000000 310.0000000000000000, 241.9509032201612797 309.8078528040322794, 243.8268343236508997 309.2387953251128465, 245.5557023301960271 308.3146961230254419, 247.0710678118654755 307.0710678118654755, 248.3146961230254419 305.5557023301960271, 249.2387953251128749 303.8268343236508713, 249.8078528040323079 301.9509032201613081, 250.0000000000000000 300.0000000000000000, 250.0000000000000000 160.0000000000000000, 249.8078528040323079 158.0490967798387203, 249.2387953251128749 156.1731656763491003, 248.3146961230254419 154.4442976698039729, 247.0710678118654755 152.9289321881345245, 245.5557023301960271 151.6853038769745581, 243.8268343236508997 150.7612046748871251, 241.9509032201612797 150.1921471959676921, 240.0000000000000000 150.0000000000000000, 60.0000000000000000 150.0000000000000000, 58.0490967800588891 150.1921471959238943, 56.1731656767638938 150.7612046747153158, 54.4442976703639303 151.6853038766004147, 52.9289321887694584 152.9289321874995835, 51.6853038775981304 154.4442976688707176, 50.7612046754025670 156.1731656751047410, 50.1921471962742558 158.0490967782975247, 50.0000000000000000 159.9999999982041459)) + + + +Case #7 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280)) + + + + POLYGON ((70.0000000000000000 80.0000000000000000, 70.0000000000000000 300.0000000000000000, 70.1921471959676921 301.9509032201613081, 70.7612046748871393 303.8268343236508713, 71.6853038769745439 305.5557023301960271, 72.9289321881345245 307.0710678118654755, 74.4442976698039871 308.3146961230254419, 76.1731656763491003 309.2387953251128465, 78.0490967798387203 309.8078528040322794, 80.0000000000000000 310.0000000000000000, 280.0000000000000000 310.0000000000000000, 281.9509032201613081 309.8078528040322794, 283.8268343236508713 309.2387953251128465, 285.5557023301960271 308.3146961230254419, 287.0710678118654755 307.0710678118654755, 288.3146961230254419 305.5557023301960271, 289.2387953251128465 303.8268343236508713, 289.8078528040322794 301.9509032201613081, 290.0000000000000000 300.0000000000000000, 290.0000000000000000 80.0000000000000000, 289.8078528040322794 78.0490967798387203, 289.2387953251128465 76.1731656763491003, 288.3146961230254419 74.4442976698039729, 287.0710678118654755 72.9289321881345245, 285.5557023301960271 71.6853038769745439, 283.8268343236508713 70.7612046748871393, 281.9509032201613081 70.1921471959676921, 280.0000000000000000 70.0000000000000000, 80.0000000000000000 70.0000000000000000, 79.9999999982041317 70.0000000000000000, 78.0490967782975389 70.1921471962742629, 76.1731656751047410 70.7612046754025670, 74.4442976688707176 71.6853038775981304, 72.9289321874995977 72.9289321887694655, 71.6853038766004005 74.4442976703639232, 70.7612046747153158 76.1731656767638867, 70.1921471959238943 78.0490967800588891, 70.0000000000000000 80.0000000000000000), (110.0000000000000000 110.0000000000000000, 250.0000000000000000 110.0000000000000000, 250.0000000000000000 255.8578643762690490, 187.0710678118654755 192.9289321881345245, 185.5557023301960271 191.6853038769745581, 183.8268343236508997 190.7612046748871251, 181.9509032201612797 190.1921471959676921, 180.0000000000000000 190.0000000000000000, 178.0490967798387203 190.1921471959676921, 176.1731656763491003 190.7612046748871251, 174.4442976698039729 191.6853038769745581, 172.9289321881345245 192.9289321881345245, 110.0000000000000000 255.8578643762690490, 110.0000000000000000 110.0000000000000000)) + + + +Case #8 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280)) + + + + POLYGON ((-120.0000000000000000 80.0000000000000000, -120.0000000000000000 300.0000000000000000, -116.1570560806460719 339.0180644032257078, -104.7759065022573424 376.5366864730179941, -86.2939224605090658 411.1140466039204284, -61.4213562373094888 441.4213562373095101, -31.1140466039203929 466.2939224605090658, 3.4633135269820596 484.7759065022573850, 40.9819355967743633 496.1570560806461003, 80.0000000000000000 500.0000000000000000, 280.0000000000000000 500.0000000000000000, 319.0180644032256509 496.1570560806461003, 356.5366864730179373 484.7759065022573282, 391.1140466039204284 466.2939224605090658, 421.4213562373095101 441.4213562373095101, 446.2939224605090658 411.1140466039204284, 464.7759065022573282 376.5366864730179373, 476.1570560806461003 339.0180644032256509, 480.0000000000000000 300.0000000000000000, 480.0000000000000000 80.0000000000000000, 476.1570560806461003 40.9819355967743491, 464.7759065022573282 3.4633135269820485, 446.2939224605090658 -31.1140466039204426, 421.4213562373095101 -61.4213562373095030, 391.1140466039204284 -86.2939224605090374, 356.5366864730179373 -104.7759065022573424, 319.0180644032256509 -116.1570560806460861, 280.0000000000000000 -120.0000000000000000, 80.0000000000000000 -120.0000000000000000, 79.9999999640827326 -120.0000000000000000, 40.9819355659506570 -116.1570560745148697, 3.4633135020947048 -104.7759064919486747, -31.1140466225855583 -86.2939224480374207, -61.4213562500081807 -61.4213562246108253, -86.2939224679919903 -31.1140465927214258, -104.7759065056935981 3.4633135352778681, -116.1570560815219864 40.9819356011778027, -120.0000000000000000 80.0000000000000000)) + + + +Case #9 + +POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300)) + + + + POLYGON ((90.0000000000000000 90.0000000000000000, 90.0000000000000000 290.0000000000000000, 270.0000000000000000 290.0000000000000000, 270.0000000000000000 90.0000000000000000, 90.0000000000000000 90.0000000000000000)) + + + +Case #10 + +POLYGON ((100 300, 300 300, 300 100, 100 100, 100 300), (220 220, 180 220, 180 180, 220 180, 220 220)) + + + + POLYGON ((90.0000000000000000 100.0000000000000000, 90.0000000000000000 300.0000000000000000, 90.1921471959676921 301.9509032201613081, 90.7612046748871393 303.8268343236508713, 91.6853038769745439 305.5557023301960271, 92.9289321881345245 307.0710678118654755, 94.4442976698039871 308.3146961230254419, 96.1731656763491003 309.2387953251128465, 98.0490967798387203 309.8078528040322794, 100.0000000000000000 310.0000000000000000, 300.0000000000000000 310.0000000000000000, 301.9509032201613081 309.8078528040322794, 303.8268343236508713 309.2387953251128465, 305.5557023301960271 308.3146961230254419, 307.0710678118654755 307.0710678118654755, 308.3146961230254419 305.5557023301960271, 309.2387953251128465 303.8268343236508713, 309.8078528040322794 301.9509032201613081, 310.0000000000000000 300.0000000000000000, 310.0000000000000000 100.0000000000000000, 309.8078528040322794 98.0490967798387203, 309.2387953251128465 96.1731656763491003, 308.3146961230254419 94.4442976698039729, 307.0710678118654755 92.9289321881345245, 305.5557023301960271 91.6853038769745439, 303.8268343236508713 90.7612046748871393, 301.9509032201613081 90.1921471959676921, 300.0000000000000000 90.0000000000000000, 100.0000000000000000 90.0000000000000000, 99.9999999982041317 90.0000000000000000, 98.0490967782975389 90.1921471962742629, 96.1731656751047410 90.7612046754025670, 94.4442976688707176 91.6853038775981304, 92.9289321874995977 92.9289321887694655, 91.6853038766004005 94.4442976703639232, 90.7612046747153158 96.1731656767638867, 90.1921471959238943 98.0490967800588891, 90.0000000000000000 100.0000000000000000), (190.0000000000000000 190.0000000000000000, 210.0000000000000000 190.0000000000000000, 210.0000000000000000 210.0000000000000000, 190.0000000000000000 210.0000000000000000, 190.0000000000000000 190.0000000000000000)) + + + +Case #11 + +GEOMETRYCOLLECTION (POINT (100 100), POLYGON ((400 260, 280 380, 240 220, 120 300, 120 100, 260 40, 200 160, 400 260)), LINESTRING (260 400, 220 280, 120 400, 20 280, 160 160, 60 40, 160 20, 360 140)) + + + + POLYGON ((0.0700425798558265 278.3276372309692306, 0.1228569041891950 282.2134096658008957, 0.9261335993623063 286.0156147259132808, 2.4495449200752391 289.5906999998719016, 4.6355744080524834 292.8036879932895999, 104.6355744080524772 412.8036879932895999, 107.4027140469530792 415.5341039850120524, 110.6457864955514481 417.6776324691173841, 114.2422665854686130 419.1532896894290161, 118.0562772015389754 419.9053244556008622, 121.9437227984610246 419.9053244556008622, 125.7577334145313870 419.1532896894290161, 129.3542135044485519 417.6776324691173841, 132.5972859530469066 415.5341039850120524, 135.3644255919475086 412.8036879932895999, 212.3798679762521431 320.3851571321240499, 241.0263340389897166 406.3245553203367422, 241.0263340389897451 406.3245553203367990, 242.6247672442066516 409.9046093654421838, 244.8909209000858880 413.1040348272026108, 247.7377079925056762 415.7998795793810132, 251.0557280900008550 417.8885438199983469, 254.7174715409918520 419.2897613536241010, 258.5822195981864411 419.9496841762528447, 262.5014521611223017 419.8429518239000231, 266.3245553203367422 418.9736659610102834, 269.9046093654421838 417.3752327557933768, 273.1040348272025540 415.1090790999141404, 275.7998795793809563 412.2622920074943522, 277.8885438199982900 408.9442719099992019, 279.2897613536240442 405.2825284590081765, 279.9496841762528447 401.4177804018136158, 279.9100410175586262 399.9620759689305487, 280.3536479122308833 399.9968730844143465, 284.1616087256720107 399.5622343512802672, 287.8167399063642620 398.4091981692916988, 291.1848115464001125 396.5801082828645576, 294.1421356237309510 394.1421356237309510, 414.1421356237309510 274.1421356237309510, 416.5501405931683507 271.2291071036998460, 418.3671308115406759 267.9150809062039116, 419.5282205447628598 264.3184027550822748, 419.9919466308888332 260.5675120330809023, 419.7417491527499465 256.7963551398606228, 418.7865628018326447 253.1396021913596144, 417.1604978154628043 249.7278378748436296, 414.9216218812061925 246.6828981968932624, 412.1498865073597813 244.1135196516573842, 408.9442719099991450 242.1114561800016816, 226.8328157299974634 151.0557280900008550, 252.8452122963902013 99.0309349572153366, 349.7100848914494691 157.1498585142508944, 353.2535741450111004 158.8277916438210298, 357.0563247607407220 159.7821832992663360, 360.9721991650829978 159.9763567444970249, 364.8507125007266723 159.4028500029066322, 368.5428156752783480 158.0837026169481874, 371.9066232342952958 156.0696086808776784, 374.8128659397295337 153.4379686951414214, 377.1498585142508659 150.2899151085505309, 378.8277916438210013 146.7464258549889280, 379.7821832992663076 142.9436752392593064, 379.9763567444970249 139.0278008349170591, 379.4028500029066322 135.1492874992733562, 378.0837026169481874 131.4571843247216805, 376.0696086808777068 128.0933767657047042, 373.4379686951414214 125.1871340602704805, 370.2899151085505309 122.8501414857491199, 270.7866027420680552 63.1481540658596430, 277.8885438199982900 48.9442719099991592, 279.3258977375772929 45.1487548627513107, 279.9674142813494768 41.1412129148242087, 279.7866759027806438 37.0866760018289554, 278.7911253793552078 33.1521093045119386, 277.0217593221912011 29.4995376493510548, 274.5514399421601865 26.2793733521494808, 271.4818945957121059 23.6242222629593108, 267.9395266686285595 21.6434230784131323, 264.0702103048396339 20.4185447917071947, 260.0332833325381898 20.0000276945247961, 255.9949857579331365 20.4051062539027406, 252.1216140284166443 21.6170993996388425, 222.6321098525542084 34.2554583321513206, 170.2899151085505309 2.8501414857491163, 170.2899151085505309 2.8501414857491159, 166.9699144252653014 1.2537925727767922, 163.4134465985324027 0.2934431642925626, 159.7411713289505428 0.0016748771542679, 156.0776772972363062 0.3883864861815968, 56.0776772972363204 20.3883864861815951, 56.0776772972361996 20.3883864861816200, 52.4812515061284230 21.4670989565609567, 49.1498221084192508 23.1989988476563624, 46.2008044925838703 25.5230457848307566, 43.7381360403424253 28.3573293202294003, 41.8486128798686963 31.6019558458453318, 40.5988307781546069 35.1425693185266184, 40.0328379900072235 38.8543817098608457, 40.1705827884231823 42.6065711287477029, 41.0072103927405820 46.2668926059394607, 42.5132340741584116 49.7063390346116378, 44.6355744080524843 52.8036879932895999, 80.4723709979361956 95.8078439011500365, 80.3842943919353985 96.0981935596773695, 80.0000000000000000 99.9999999999999289, 80.3842943919353843 103.9018064403225026, 81.5224093497742359 107.6536686473017284, 83.3706077539490451 111.1114046603919832, 85.8578643762689921 114.1421356237308942, 88.8885953396078889 116.6293922460508554, 92.3463313526981295 118.4775906502257072, 96.0981935596773553 119.6157056080645873, 99.9999999999999289 120.0000000000000000, 100.0000000000000000 120.0000000000000000, 100.0000000000000000 185.0870158363060227, 6.9841725308806293 264.8148679526940441, 6.9841725308805440 264.8148679526941578, 4.2932660917386549 267.6186224540613807, 2.1953680497354338 270.8898363837075749, 0.7696846333914061 274.5050049225884550, 0.0700425798558265 278.3276372309692306), (47.9915194493919586 282.3488246356437230, 100.0000000000000000 237.7701270208368101, 100.0000000000000000 300.0000000000000000, 100.3839234475633617 303.8999411135228002, 101.5209540688945395 307.6501543432858057, 103.3674385923808785 311.1066602100622163, 105.8524861476094685 314.1367553489624243, 108.8806899321040760 316.6241073027693460, 112.3357901021779242 318.4732207977419876, 116.0851372609338910 319.6131040310878006, 119.9847851796418183 319.9999942127302006, 123.8850172309783346 319.6190377214327327, 127.6360943613988326 318.4848603701465208, 131.0940039245045909 316.6410058867568864, 203.8537364874001696 268.1345175114931862, 120.0000000000000000 368.7590012963734125, 47.9915194493919586 282.3488246356437230), (215.0040775095006609 260.7009568300928208, 227.4803348551585884 252.3834519329875548, 230.0892518816914674 262.8191200391190705, 229.1695405949105009 262.2258748378918085, 225.5864699071360917 260.7960588946783673, 221.7955438638937835 260.0807625087496717, 217.9378111584315434 260.1065996576324437, 215.0040775095006609 260.7009568300928208), (96.8836262557126844 53.0193528032286068, 156.3403380937374152 41.1280104356236578, 177.2802617815351880 53.6919646483023243, 118.4536428779042296 78.9033727498584483, 96.8836262557126844 53.0193528032286068)) + + + +Case #12 + +GEOMETRYCOLLECTION (POINT (100 100), POLYGON ((400 260, 120 300, 120 100, 400 260)), LINESTRING (20 280, 160 160, 60 40)) + + + + POLYGON ((0.0589102899683682 278.4660700223052459, 0.1428178439019948 282.3858576695903366, 0.9898257720584154 286.2139581446373882, 2.5673840347661048 289.8032596930139562, 4.8148679526940592 293.0158274691193583, 7.6459079792798290 295.7282042949466359, 10.9517088339672366 297.8361550501977035, 14.6052304438251515 299.2586723695006867, 18.4660700223052352 299.9410897100316333, 22.3858576695902869 299.8571821560980197, 26.2139581446373811 299.0101742279416044, 29.8032596930139349 297.4326159652339356, 33.0158274691193370 295.1851320473059559, 33.0158274691193725 295.1851320473059559, 100.0000000000000000 237.7701270208368385, 100.0000000000000000 300.0000000000000000, 100.3610465527466715 303.7830553123919231, 101.4311507496616827 307.4295247168449805, 103.1716768476074293 310.8077536925416666, 105.5197837518210235 313.7957724468756737, 108.3906938719777600 316.2856995927674575, 111.6807539878648328 318.1876371689555185, 115.2711776131651931 319.4329163748977862, 119.0323337405973660 319.9765768341428611, 122.8284271247461845 319.7989898732233200, 402.8284271247462129 279.7989898732233200, 406.5320848573002763 278.9032237308092022, 409.9986364407343444 277.3212952554368371, 413.1022505800438012 275.1106263846917273, 415.7302701354329884 272.3514615113477362, 417.7873014293543292 269.1439547167125284, 419.1986769124150101 265.6045343082814156, 419.9131654979004225 261.8616766242365088, 419.9048321833120667 258.0512425101661620, 419.1739794570858635 254.3115457478108112, 417.7471363186568851 250.7783324454299532, 415.6760953104280247 247.5798536313625959, 413.0360325161242372 244.8322099092006283, 409.9227787671366627 242.6351371575108260, 129.9227787671366627 82.6351371575108118, 126.4648010002813976 81.0736599410567322, 122.7741579330332939 80.1933332495700171, 119.4045292180186522 80.0444363579957638, 75.3644255919475228 27.1963120067104036, 75.3644255919474944 27.1963120067103752, 72.5713268488278942 24.4448805449800837, 69.2951190649891373 22.2912236004947175, 65.6617050682456949 20.8181050018461171, 61.8107149208503515 20.0821358706459208, 57.8901400145073524 20.1115990878699122, 54.0506458441837196 20.9053623986033301, 50.4397820176318632 22.4329219239622866, 47.1963120067104001 24.6355744080524843, 44.4448805449801085 27.4286731511720845, 42.2912236004947317 30.7048809350108236, 40.8181050018461278 34.3382949317542696, 40.0821358706459208 38.1892850791496201, 40.1115990878699051 42.1098599854926121, 40.9053623986033230 45.9493541558162519, 42.4329219239622688 49.5602179823681013, 44.6355744080524701 52.8036879932895786, 44.6355744080524843 52.8036879932895999, 80.4723709979361956 95.8078439011500365, 80.3842943919353985 96.0981935596773695, 80.0000000000000000 99.9999999999999289, 80.3842943919353843 103.9018064403225026, 81.5224093497742359 107.6536686473017284, 83.3706077539490451 111.1114046603919832, 85.8578643762689921 114.1421356237308942, 88.8885953396078889 116.6293922460508554, 92.3463313526981295 118.4775906502257072, 96.0981935596773553 119.6157056080645873, 99.9999999999999289 120.0000000000000000, 100.0000000000000000 120.0000000000000000, 100.0000000000000000 185.0870158363060227, 6.9841725308806293 264.8148679526940441, 6.9841725308806115 264.8148679526941009, 4.2717957050533339 267.6459079792798548, 2.1638449498022680 270.9517088339672455, 0.7413276304993075 274.6052304438251781, 0.0589102899683682 278.4660700223052459)) + + + +Case #13 + +POLYGON ((260 400, 220 300, 80 300, 180 220, 40 200, 180 160, 60 20, 200 80, 280 20, 260 140, 440 20, 340 180, 520 160, 280 220, 460 340, 300 300, 260 400), (260 320, 240 260, 220 220, 160 180, 220 160, 200 100, 260 160, 300 140, 320 180, 260 200, 260 320)) + + + + POLYGON ((35.0116240372882501 200.3407422114144651, 35.1713912564989570 201.2978973773705036, 35.5130370199346430 202.2061648205705353, 36.0236926034150855 203.0313329556259703, 36.6841232130156953 203.7423202874070967, 37.4694524994158655 204.3123461534630394, 38.3500995719418896 204.7199394675666895, 39.2928932179245507 204.9497474681788560, 39.2928932188134539 204.9497474683058442, 167.8519380725216195 223.3153253045498730, 76.8765247622278736 296.0956559527848526, 76.1961497616868115 296.7548923955460509, 75.6523334151183633 297.5306285685009584, 75.2645987908988161 298.3950154552634899, 75.0468656059109946 299.3170214687909265, 75.0069505061331085 300.2635464888699062, 75.1462864481637354 301.2006101601772912, 75.4598712559176619 302.0945717908817301, 75.9364471993134771 302.9133380572862961, 76.5589051480572351 303.6275151577812608, 77.3048987913560381 304.2114640536476031, 78.1476468730040352 304.6442209134480663, 79.0568946415105529 304.9102497169480444, 79.9999999991020729 305.0000000000000000, 80.0000000000000000 305.0000000000000000, 216.6148351928655131 305.0000000000000000, 255.3576165455737055 401.8569533817704951, 255.8146424205861820 402.7354674065766744, 256.4358447295115297 403.5066789427960430, 257.1968559534740848 404.1403361523463786, 258.0678243757334371 404.6115829556661083, 259.0145850565194792 404.9019340457787735, 260.0000000000000000 405.0000000000000000, 260.9854149434805208 404.9019340457787735, 261.9321756242665629 404.6115829556661083, 262.8031440465259152 404.1403361523463786, 263.5641552704884703 403.5066789427960430, 264.1853575794138465 402.7354674065766744, 264.6423834544262945 401.8569533817704951, 303.0214654493869375 305.9092483943688308, 458.7873218748183604 344.8507125007266723, 459.7746718505221679 344.9949201420095619, 460.7709957975484372 344.9401989312336809, 461.7366138865052676 344.6887282080748491, 462.6330691866506868 344.2505231040791500, 463.4246592605662727 343.6430356777030966, 464.0798580577391022 342.8904598645719375, 464.5725714783865214 342.0227679241687611, 464.8831766031471489 341.0745167576526455, 464.9993032000341486 340.0834716366707084, 464.9163263841733738 339.0891021548600861, 464.6375508095448481 338.1310103026260094, 464.1740790570639206 337.2473532690553384, 463.5443694606101417 336.4733237848231511, 462.7735009811261193 335.8397485283107926, 292.1779645357767663 222.1093908980778906, 521.2126781251816965 164.8507125007266723, 521.2126781251816965 164.8507125007266438, 522.1543805669399489 164.5120554487718039, 523.0097792050349881 163.9926468835772653, 523.7446070407530669 163.3132941478750126, 524.3294271035638303 162.5012118972463213, 524.7408116868432444 161.5889318896323061, 524.9622808543857673 160.6129997734068411, 524.9849626214331693 159.6125110802694280, 524.8079483635763154 158.6275450706185381, 524.4383292159610619 157.6975591710650235, 523.8909120046585031 156.8598083224101458, 523.1876260898992541 156.1478525585079637, 522.3566448828429429 155.5902126019307730, 521.4312572276436413 155.2092273328493377, 520.4485338608891425 155.0201589005636151, 519.4478423696257323 155.0305813266319035, 349.7151310357609759 173.8897714748391081, 444.2399915200254554 22.6499947000158990, 444.2399915200254554 22.6499947000158883, 444.6715115921828101 21.7824083269838624, 444.9275854436395434 20.8478807083734132, 444.9985958041454523 19.8815095498393895, 444.8818757640429453 18.9195884930036193, 444.5818089343991346 17.9982440486761526, 444.1096648133582221 17.1520788069461005, 443.4831755417974932 16.4128718805953362, 442.7258699439179281 15.8083853887976744, 441.8661898639580272 15.3613218055506042, 440.9364219864447136 15.0884713313161907, 439.9714852572094514 15.0000813097167676, 439.0076194455472773 15.0994713718677183, 438.0810241007007448 15.3829087622282490, 437.2264990188738807 15.8397485283107695, 437.2264990188738807 15.8397485283107819, 266.8293246457370742 129.4378647770686541, 284.9319696191607250 20.8219949365267851, 284.9972548509964554 19.8343378311375389, 284.8667019190206133 18.8531728851298759, 284.5454270815070004 17.9169511175436220, 284.0460208258600119 17.0623622625131048, 283.3880544581302843 16.3228969298177553, 282.5973131201902788 15.7275341363929542, 281.7047852919733941 15.2996056433240497, 280.7454483793235909 15.0558816039900698, 279.7568979792339974 15.0059133560280014, 278.7778745404031611 15.1516591125411484, 277.8467451580276020 15.4874072213945020, 277.0000000000000000 16.0000000000000000, 199.3125897611296296 74.2655576791527636, 61.9695964928958389 15.4042748499097097, 61.0577229412326901 15.1131582612499038, 60.1070833258100023 15.0011468153852068, 59.1525190540580397 15.0723457866581878, 58.2290153739834082 15.3241456979057968, 57.3704191476974827 15.7473179590752430, 56.6081983473453221 16.3263530995686352, 55.9702887385167855 17.0400291979353362, 55.4800700207576227 17.8621896756854248, 55.1555089501321589 18.7627019487001512, 55.0085008488152880 19.7085618011956996, 55.0444336357096375 20.6651030063937284, 55.2619903565793607 21.5972678607087296, 55.6531974510677969 22.4708920657520679, 56.2037169875891536 23.2539568665980845, 56.2037169881735181 23.2539568672798431, 171.1297155297759502 157.3342884991493520, 38.6263943605131104 195.1923802617958756, 37.7236070748838870 195.5482548084508210, 36.9065643697948431 196.0718126315338168, 36.2060416809180552 196.7433329502282788, 35.6484255004332908 197.5375217006599371, 35.2547194806408726 198.4244642839367998, 35.0397532922671431 199.3707523552484702, 35.0116240372882501 200.3407422114144651), (171.2797148927206194 181.5105578027070976, 221.5811388300841998 164.7434164902525708, 222.4761523413605460 164.3438081889483442, 223.2760087068006385 163.7772697749785209, 223.9499698948452533 163.0655730018735881, 224.4721359549995725 162.2360679774997720, 224.8224403384060111 161.3206321147520441, 224.9874210440632112 160.3544451004533755, 224.9607379559749916 159.3746369597194246, 224.7434164902525708 158.4188611699158002, 211.4412280563536797 118.5122958682191552, 256.4644660940672907 163.5355339059327378, 256.4644660940672907 163.5355339059327662, 257.2715015137021624 164.1899040574063804, 258.1963542034216061 164.6633530683924107, 259.1990887849651699 164.9354372881874724, 260.2364069198474681 164.9944080498341634, 261.2635169428083373 164.8377189805977991, 262.2360679774997720 164.4721359549995725, 297.7639320225001711 146.7082039324993730, 312.9496560052372729 177.0796518979736049, 258.4188611699158287 195.2565835097474292, 258.4188611690639732 195.2565835100313620, 257.4726575011026739 195.6857747053187495, 256.6355851356503308 196.3012552642088053, 255.9437890738596764 197.0764485770453973, 255.4271412485323651 197.9778815961655880, 255.1079506463375708 198.9666302107517879, 255.0000000000000000 200.0000000000000000, 255.0000000000000000 289.1886116991581162, 244.7434164902525708 258.4188611699158287, 244.4721359549995725 257.7639320225002280, 224.4721359549995725 217.7639320225001995, 224.0203216174686531 217.0272884276953107, 223.4484154518346486 216.3794432925932369, 222.7735009811261477 215.8397485283107926, 171.2797148927206194 181.5105578027070976)) + + + +Case #14 + +POLYGON ((260 320, 240 260, 220 220, 160 180, 220 160, 260 160, 260 200, 260 320)) + + + + POLYGON ((198.3510306352500834 185.1358965292041319, 229.4299033358288966 205.8551449962566551, 231.7246125362377711 207.6901071948169886, 233.6690934993933979 209.8927806541640280, 235.2052622469985579 212.3973688765007068, 243.0000000000000000 227.9868443825035911, 243.0000000000000000 177.0000000000000000, 222.7587202228624506 177.0000000000000000, 198.3510306352500834 185.1358965292041319)) + + + +Case #15 + +POLYGON ((260 320, 240 260, 220 220, 260 160, 260 320)) + + + + POLYGON ((239.6172404168401044 221.2213252161837715, 243.0000000000000000 227.9868443825035627, 243.0000000000000000 216.1471858414438998, 239.6172404168401044 221.2213252161837715)) + + + +Case #16 + +POLYGON ((260 320, 240 260, 220 220, 260 160, 260 320)) + + + + POLYGON ((236.1553744609271348 221.0057972368572052, 246.0000000000000000 240.6950483150029356, 246.0000000000000000 206.2388589282479074, 236.1553744609271348 221.0057972368572052)) + + + +Case #17 + +LINESTRING (260 160, 260 200, 260 320, 240 260, 220 220) + + + + POLYGON ((194.0654105708713075 221.8431145223576380, 194.9233102402886857 226.8672869967105612, 196.7448930340021889 231.6275534829989056, 215.9185482506166807 269.9748639162278891, 235.3342342506866487 328.2219219164377932, 237.4777395232139554 332.9902957247247173, 240.5318638861003819 337.2334464414602166, 244.3731231112844569 340.7798151749462932, 248.8462075669875730 343.4860152933884478, 253.7702616902279829 345.2426298271744827, 258.9461963313527804 345.9786354111978994, 264.1647383181811506 345.6642738985748906, 269.2148917801190464 344.3122555407904315, 273.8924691243435632 341.9772450873434195, 278.0083467399866208 338.7536515828895176, 281.3961116360320602 334.7718112247094950, 283.9187898443843778 330.1927176150511514, 285.4743845455978999 325.2015124745599906, 286.0000000000000000 320.0000000000000000, 286.0000000000000000 160.0000000000000000, 286.0000000000000000 159.9999999999999716, 285.5004172904839947 154.9276516275806443, 284.0208678452934237 150.0502307585076380, 281.6182099198661604 145.5551739414903238, 278.3847763108502136 141.6152236891497580, 274.4448260585096477 138.3817900801338112, 269.9497692414923335 135.9791321547065479, 265.0723483724193557 134.4995827095160053, 260.0000000000000000 134.0000000000000000, 254.9276516275806728 134.4995827095160053, 250.0502307585076949 135.9791321547065479, 245.5551739414903807 138.3817900801338112, 241.6152236891497864 141.6152236891497580, 238.3817900801338396 145.5551739414902954, 235.9791321547065479 150.0502307585076380, 234.4995827095160053 154.9276516275806159, 234.0000000000000000 160.0000000000000000, 234.0000000000000000 198.2083323711141816, 232.8759921750747992 197.4121974174686045, 228.2219219164377648 195.3342342506866487, 223.2518878094589638 194.2041626289299927, 218.1568854776423336 194.0654105708713075, 213.1327130032893820 194.9233102402887141, 208.3724465170010944 196.7448930340021889, 204.0590203902573592 199.4601565468047113, 200.3581971701116515 202.9647547246366344, 197.4121974174686329 207.1240078249251440, 195.3342342506866487 211.7780780835621783, 194.2041626289299927 216.7481121905409793, 194.0654105708713075 221.8431145223576380)) + + + +Case #18 + +POLYGON ((260 400, 220 300, 80 300, 180 220, 40 200, 180 160, 60 20, 200 80, 280 20, 260 140, 440 20, 340 180, 520 160, 280 220, 460 340, 300 300, 260 400), (260 320, 240 260, 220 220, 160 180, 220 160, 200 100, 260 160, 300 140, 320 180, 260 200, 260 320)) + + + + POLYGON ((73.4860813026739379 197.7126580885165197, 180.9899494936611575 213.0703535443718408, 182.3056363280740300 213.3906096254900149, 183.5350455074643037 213.9581912261180889, 184.6321721438235670 214.7518592597011207, 185.5559614045681940 215.7419144124444017, 186.2718447976156142 216.8913085012144109, 186.7530337355075574 218.1570308285006945, 186.9815219729924536 219.4917176565886905, 186.9487594065303711 220.8454245739010844, 186.6559720219250664 222.1674954309872589, 186.1141160175398568 223.4084579099737482, 185.3434678198210861 224.5218747946550195, 184.3728653328809628 225.4660816661012177, 99.9554674155074849 293.0000000000000000, 220.0000000000000000 293.0000000000000000, 221.3795809208727405 293.1372923359097058, 222.7050458739731766 293.5437838620674711, 223.9244016651362870 294.2035293867151040, 224.9898173786838527 295.0906494800855171, 225.8595006111793566 296.1703456307926672, 226.4993368361968180 297.4002652655212842, 260.0000000000000000 381.1519231750292533, 293.5006631638032104 297.4002652655212842, 294.1661219403375753 296.1314257426036534, 295.0759831943759082 295.0246549367977309, 296.1921295120130253 294.1263195229296343, 297.4678014439602407 293.4740540553273149, 298.8495564298037834 293.0951843187675081, 300.2795077022184955 293.0055825514628509, 301.6977493752543182 293.2090024989826702, 422.4918692298074916 323.4075324626209635, 276.1170986264233989 225.8243520603649017, 275.0751191377321447 224.9744897720738948, 274.2148564119547700 223.9410802663354616, 273.5680521626788959 222.7622539741994387, 273.1585719772567700 221.4815068712711650, 273.0015247315887450 220.1460955763733693, 273.1027051073951384 218.8052936911329880, 273.4583797818045241 217.5085737175472218, 274.0554251783708537 216.3037816365840911, 274.8718116968233858 215.2353715016632805, 275.8774165545875121 214.3427651864527661, 277.0351352480957985 213.6588978085102610, 278.3022506235261062 213.2090024992875783, 278.3022506247456818 213.2090024989826702, 417.3387123436478987 178.4498870692571018, 340.7730206825239065 186.9571861427153294, 339.3500498878744907 186.9697607456603521, 337.9539393295281116 186.6942987483938907, 336.6423855272677770 186.1421840620824071, 335.4695905565998828 185.3362337163163147, 334.4840220605933041 184.3097549085741491, 333.7264102463850008 183.1051685305852743, 333.2280646437002360 181.7722560565836432, 333.0095801880563045 180.3661022436220946, 333.0799861018467709 178.9448186651734716, 333.4363727471683205 177.5671421566632660, 334.0640118712981348 176.2900074210437538, 334.0640118719643965 176.2900074199777407, 416.8351501132551675 43.8561862339125383, 263.8829013735766011 145.8243520603649017, 262.6893944488330703 146.4627515423839270, 261.3953364072212366 146.8595215803059375, 260.0491095087077724 146.9998277304626981, 258.7010465032032016 146.8784242245705798, 257.4015487890115423 146.4998500985878707, 256.1992020046532161 145.8782594871754270, 255.1389595083396387 145.0368924287141965, 254.2604616611944550 144.0072059664286428, 253.5965537528831817 142.8276980320192422, 253.1720579814688108 141.5424680844595855, 253.0028454007270966 140.1995683188137320, 253.0952425329683138 138.8492070901025102, 253.0952425331749964 138.8492070888624994, 270.2229832929357372 36.0827625302982113, 204.1999999999999886 85.5999999999999943, 202.9423960790961701 86.3515592820755131, 201.5559026611282718 86.8248931793174563, 200.1012540709528764 86.9992676483411742, 198.6421701206390367 86.8670443437271160, 197.2425649099458269 86.4340152101264039, 84.8909725436656686 38.2833327674349064, 185.3147962165570846 155.4444603858082132, 186.1142829007226851 156.5918414634981559, 186.6697395331827920 157.8752471768465000, 186.9589970202038671 159.2434549102705148, 186.9705106687025307 160.6418574744477041, 186.7038209519796794 162.0146425598100848, 186.1695718501092358 163.3070202881657167, 185.6570600448659434 164.0689987779851435, 211.1456225515285325 155.5728112757642805, 193.3592169136464065 102.2135943621178598, 193.3592169132488721 102.2135943609252706, 193.0594928825265981 100.9106925673908677, 193.0129397948266501 99.5745711701319181, 193.2212557809792770 98.2539682668711265, 193.6768420367806414 96.9970558826086204, 194.3630800068345650 95.8496827843342061, 195.2549375845420059 94.8537020419132375, 196.3198822157007442 94.0454443412052683, 197.5190675981640709 93.4543927388270106, 198.8087506899613288 93.1021071999245748, 200.1418873372542748 93.0014381489103812, 201.4698483179327297 93.1560577207087448, 202.7441932042174528 93.5603258111976857, 203.9184373385559468 94.1994958129649973, 204.9497474683058442 95.0502525316941700, 261.3821713435749530 151.4826764069632645, 296.8695048315003078 133.7390096630005871, 298.1511150393471326 133.2485835262315845, 299.5037768593652459 133.0176105383115157, 300.8755082563928340 133.0549668616349948, 302.2135943621178740 133.3592169136464065, 303.4666132779047416 133.9186685354723068, 304.5864121895208996 134.7118223150300480, 305.5299578527833546 135.7081977973769824, 306.2609903369993845 136.8695048315003078, 326.2609903369993845 176.8695048315003078, 326.7401067069822034 178.1103011937101428, 326.9758738477949578 179.4193244798940441, 326.9597794680934726 180.7493128555578323, 326.6924046499087808 182.0522475488787961, 326.1834028688805915 183.2810865519092260, 325.4511514588469936 184.3914630560566081, 324.5220881045417514 185.3432873004136354, 323.4297563181003738 186.1021939987557232, 322.2135943621178740 186.6407830863535935, 267.0000000000000000 205.0453145403928943, 267.0000000000000000 320.0000000000000000, 266.8584881468917160 321.4004072046892020, 266.4396741888727433 322.7441932040522374, 265.7604915943163064 323.9770260989602662, 264.8484010453810242 325.0490600415471931, 263.7402801488617001 325.9169506004386108, 262.4809324023397608 326.5456072609820239, 261.1212757010487735 326.9096122034624727, 259.7162836276718849 326.9942479953224961, 258.3227627627537117 326.7960926457777759, 256.9970558834197618 326.3231579636045581, 255.7927639145765966 325.5945656240240282, 254.7585787385654896 324.6397740419316165, 253.9363144870191604 323.4973873105028019, 253.3592169136464065 322.2135943621178740, 233.5165322213198635 262.6855402851382451, 214.5703578501880884 224.7931915428746947, 156.1170986264233989 185.8243520603649017, 156.1170986253774231 185.8243520596676035, 155.0231091408172404 184.9224544056581294, 154.1332973523846590 183.8186123192153332, 153.4841679225465896 182.5581110879766982, 153.1023514838049664 181.1926629645598155, 153.0035121129924391 179.7782856636201529, 153.1917047101640605 178.3730042266809903, 153.6592086457127948 177.0344705360768103, 154.3868445003602119 175.8175981378084032, 155.3447609037176562 174.7723094050580812, 156.3685660265952038 174.0319481673961661, 73.4860813026739379 197.7126580885165197)) + + + +Case #19 + +POLYGON ((32 136, 27 163, 30 236, 34 252, 49 291, 72 326, 83 339, 116 369, 155 391, 176 400, 219 414, 264 417, 279 416, 339 401, 353 395, 380 381, 394 372, 441 328, 458 303, 463 294, 480 251, 486 205, 486 183, 473 115, 469 105, 460 85, 454 74, 423 33, 382 2, 373 -3, 336 -19, 319 -24, 275 -31, 252 -32, 203 -27, 190 -24, 149 -10, 139 -5, 84 37, 76 46, 52 81, 36 121, 32 136)) + + + + POLYGON ((210.7267553108988238 176.9256915755600801, 211.8671630388668063 204.6756129561149464, 212.7392713423978705 206.9430945452957076, 217.1208592864501838 213.6107283732014253, 223.8552432300779174 219.7328955946811675, 236.2393055009007128 226.7187768756581363, 240.5016559451048010 228.5454984946027537, 253.9490540002205137 232.9237211171985678, 256.1814740341310426 233.0725491194592678, 278.4949667339785151 227.4941759444973854, 283.1893383949868621 225.0600573054560130, 299.5152762254757022 209.7762006130834607, 301.4726576684510633 204.8251769632046262, 302.4401896474719820 197.4074317907112288, 297.2128574239011982 170.0644632366487485, 292.3573443617199246 163.6426556382799902, 285.7526778147497453 158.6488833710586164, 276.1059779842289004 154.4773374984009706, 257.0088333017464493 151.4391553898242080, 236.3522756410080490 153.5469673960220121, 230.1160214134394835 155.6764200590941982, 214.5153345565076393 167.5896718407512651, 214.3853233124629014 167.7792715716498435, 210.7267553108988238 176.9256915755600801)) + + + +Case #20 + +POLYGON ((13841 1031, 13851 903, 13853 885, 13853 875, 13856 862, 13859 831, 13670 900, 13841 1031)) + + + + POLYGON ((13506.2449358346930239 891.0401473105671357, 13507.5974451398560632 922.8344076975459984, 13515.0648325523125095 953.7688933116278349, 13528.3659315359454922 982.6788404026061698, 13546.9999211581762211 1008.4757143553580363, 13570.2651832991996343 1030.1881958460821807, 13741.2651832991996343 1161.1881958460821807, 13741.2651832991996343 1161.1881958460819533, 13768.4021467823731655 1178.0562875506921046, 13798.2948576844864874 1189.3422584776781150, 13829.8086163241805480 1194.6177036002541172, 13861.7471895460166706 1193.6823718967168588, 13892.8982186255980196 1186.5717676941726495, 13922.0792392863841087 1173.5558029570918279, 13948.1825669508853025 1155.1285516785676464, 13970.2173434235901368 1131.9894952881238623, 13987.3471489523926721 1105.0169709830538523, 13998.9217519494322914 1075.2348308601026474, 14004.5017911812756211 1043.7735774360371579, 14014.2929847110062838 918.4463002554892910, 14015.9969324864741793 903.1107702762748204, 14015.9969324864741793 903.1107702762747067, 14016.4532573949691141 894.8716483052672857, 14019.2374022230687842 877.7971679570712240, 14022.2374022230687842 846.7971679570712240, 14022.0923450200498337 813.7695909549128146, 14015.3326253785835434 781.4408409853512012, 14002.2324024788667884 751.1221001770096564, 13983.3229921980455401 724.0430291616075920, 13959.3713181210496259 701.3018947762033122, 13931.3488068273163663 683.8210268052406491, 13900.3919889913086081 672.3094103377792408, 13867.7564042285048345 667.2339309106217797, 13834.7656792036668776 668.8004386703205455, 13802.7578442799749610 676.9453995494958463, 13802.7578442799749610 676.9453995494959599, 13613.7578442799749610 745.9453995494959599, 13613.7578442799731420 745.9453995494963010, 13585.0645211260962242 759.7075752990896262, 13559.5692394115667412 778.7521253140495219, 13538.2319627288889023 802.3619728091613297, 13521.8560949787515710 829.6481456885808257, 13511.0582301259437372 859.5832486547654980, 13506.2449358346930239 891.0401473105671357)) + + + +Case #21 + +POLYGON ((20 60, 20 20, 240 20, 40 21, 240 22, 40 22, 240 23, 240 60, 20 60)) + + + + POLYGON ((-140.0000000000000000 19.9999999712661989, -140.0000000000000000 20.0000000000000000, -140.0000000000000000 60.0000000000000000, -136.9256448645168689 91.2144515225805748, -127.8207252018058711 121.2293491784143811, -113.0351379684072555 148.8912372831363484, -93.1370849898475939 173.1370849898476081, -68.8912372831363200 193.0351379684072697, -41.2293491784143527 207.8207252018058853, -11.2144515225805126 216.9256448645168689, 20.0000000000000107 220.0000000000000000, 240.0000000000000000 220.0000000000000000, 271.2144515225805321 216.9256448645168689, 301.2293491784143953 207.8207252018058853, 328.8912372831363768 193.0351379684072413, 353.1370849898476081 173.1370849898476081, 373.0351379684072413 148.8912372831363484, 387.8207252018058853 121.2293491784143669, 396.9256448645168689 91.2144515225805179, 400.0000000000000000 60.0000000000000000, 400.0000000000000000 23.0000000000000000, 399.9699034646581026 22.6934426863818643, 399.9995000085935999 22.3999962500605676, 399.8653662226012102 21.0000000000001599, 399.9995000085935999 19.6000037499394679, 396.8569884248131530 -11.5576485546376748, 387.7056613593456973 -41.5064029382169224, 372.8960842304180119 -69.0989943614496838, 352.9955764620684135 -93.2784167439007064, 328.7664788360034436 -113.1184143349722859, 301.1369500424084436 -127.8589643528996618, 271.1654111438951986 -136.9353916369152557, 240.0000000000000000 -140.0000000000000000, 20.0000000000000000 -140.0000000000000000, -11.2144515190578034 -136.9256448652175777, -41.2293491717777130 -127.8207252045548756, -68.8912372741771435 -113.0351379743935922, -93.1370849796886660 -93.1370850000065360, -113.0351379584299423 -68.8912372980684324, -127.8207251935589142 -41.2293491983242930, -136.9256448596119071 -11.2144515472394666, -140.0000000000000000 19.9999999712661989)) + + + +Case #22 + +POLYGON ((635074.6769928858 6184832.427381967, 635075.6723193424 6184799.950949265, 634717.5983159657 6184655.107092909, 634701.0176852546 6184648.498845058, 634697.7188197445 6184647.20632975, 634694.416887708 6184645.922033237, 634691.1138635761 6184644.642692243, 634687.8077729489 6184643.371570057, 634684.498667351 6184642.107006015, 634681.1875340013 6184640.847368483, 634677.8742698929 6184639.595978798, 634674.5570551592 6184638.351118257, 634671.2386969016 6184637.112873929, 634667.9173237421 6184635.881187774, 634664.5938713895 6184634.656088823, 634661.2674041622 6184633.437548058, 634657.9388577675 6184632.2255945075, 634654.6082322216 6184631.02022817, 634651.2745403448 6184629.823080709, +634647.9388208436 6184628.630859804, 634644.6000865338 6184627.4451971175, 634641.2592216335 6184626.267782336, 634637.9163291481 6184625.095294129, 634634.5713061031 6184623.931053837, 634631.2232683088 6184622.773371783, 634636.1918816608 6184608.365992378, 634633.2495506873 6184607.353869728, 634630.3051410569 6184606.348333739, 634627.3587557608 6184605.346063082, 634624.4102918282 6184604.3503790945, 634621.4607364619 6184603.359650123, 634618.5091539674 6184602.37384716, 634615.5564800596 6184601.392999219, 634612.6017790422 6184600.417077295, 634609.6450509242 6184599.446081388, 634606.6862442375 6184598.481672177, 634603.7263976521 6184597.52055733, 634600.7654082242 6184596.566058185, 634597.80145603 6184595.61645607, 634594.8364124894 6184594.671808995, 634591.8702261405 6184593.733777636, 634588.9020642313 6184592.799011653, 634585.9318238292 6184591.870832384, 634582.960543591 6184590.945947501, 634579.9871848791 6184590.027649342, 634577.0127348808 6184589.11430624, +634574.0362578988 6184588.205889201, 634571.0586381858 6184587.304087893, 634568.0790429743 6184586.405551985, 634565.0983050519 6184585.513631817, 634562.115540186 6184584.626637723, 634559.1316840936 6184583.744598703, 634556.1458010782 6184582.867485766, 634553.1587753976 6184581.996988578, 634550.1697742692 6184581.12975681, 634547.1796305005 6184580.269140797, 634544.1874598458 6184579.41345088, 634541.194198027 6184578.562716054, 634538.1998450506 6184577.716936321, 634535.2034137691 6184576.877743362, 634532.2059428038 6184576.041844833, 634529.2063935531 6184575.212533085, 634526.2057531879 6184574.388176442, 634523.2040217179 6184573.568774906, 634520.2002119992 6184572.755960159, 634517.1953626422 6184571.946439856, 634514.1893707667 6184571.143535337, 634510.267712847 6184585.871039091, 634281.9449709259 6184525.076957544, 633860.4859191478 6184412.861324424, 633664.3557212166 6184360.639468017, 633645.5884675509 6184355.641948889, 633486.222 6184313.208, 633485.7474265156 6184328.852301474, +633485.2749953512 6184344.496113185, 633650.4562371405 6184388.478170839, 633669.5206846121 6184393.553017912, 633852.6461183216 6184442.312440121, 634280.9949861752 6184556.364455, 634502.4254528129 6184615.324425217, 634505.716566367 6184616.204307566, 634509.0065372197 6184617.090806118, 634512.2953653594 6184617.983920872, 634515.5812308139 6184618.88193318, 634518.8659020835 6184619.788222348, 634522.1484948951 6184620.7010987215, 634525.4299963829 6184621.61893061, 634528.7093679372 6184622.545010364, 634531.9867124417 6184623.476016638, 634535.2619784358 6184624.413610098, 634538.5360501477 6184625.3594804, 634541.807159074 6184626.310248219, 634545.0771251463 6184627.267632202, 634548.3459483465 6184628.231632348, 634551.611808724 6184629.200529998, 634554.8764747474 6184630.177704472, 634558.138126462 6184631.161437107, 634561.3986867118 6184632.150125222, 634564.6571168633 6184633.147061154, 634567.9135198268 6184634.14892356, 634571.1678441261 6184635.157373106, +634574.421025444 6184636.172438785, 634577.6711923747 6184637.194062597, 634580.9192805979 6184638.222273537, 634584.1662257991 6184639.257100599, 634587.410208043 6184640.296825108, 634590.6529957657 6184641.3448264, 634593.8928205046 6184642.397725132, 634597.131502168 6184643.457239971, 634600.3671178726 6184644.524973575, 634603.6016934284 6184645.596001944, 634605.6958877691 6184646.2958191885, 634606.946276627 6184646.713661825, 634608.6177147877 6184647.275847967, 634610.2887808911 6184647.8379089665, 634613.6292576884 6184648.967082693, 634616.9666683461 6184650.104475331, 634620.3029357173 6184651.248484221, 634623.6361369188 6184652.4007120095, 634626.9663749042 6184653.557837355, 634630.2954695637 6184654.721578941, 634633.6214980055 6184655.893539405, 634636.9454988878 6184657.070426424, 634640.2664335228 6184658.255532312, 634643.5852890809 6184659.44722541, 634646.9020655481 6184660.6455057105, 634650.2167629072 6184661.850373212, 634653.5284454564 6184663.061798892, +634656.8370616816 6184664.2814434115, 634660.1436502574 6184665.506014449, 634663.4481081718 6184666.7388333315, 634666.7496027217 6184667.976549702, 634670.0489665787 6184669.222513908, 634673.3453155413 6184670.475036258, 634676.6396367943 6184671.732485097, 634679.9308916207 6184672.9981527375, 634683.2200672035 6184674.270407524, 634686.5062278372 6184675.54922043, 634689.789322 6184676.8362521175, 634693.0703883899 6184678.128210268, 634696.3493754807 6184679.426755545, 634699.6253475712 6184680.731858918, 634702.8982531315 6184682.04518105, 634706.1681951834 6184683.363400595, 635074.6769928858 6184832.427381967)) + + + + POLYGON ((633485.1750409196829423 6184344.4930946370586753, 633485.1762941706692800 6184344.5121779590845108, 633485.1811573562445119 6184344.5306737218052149, 633485.1894526082323864 6184344.5479054534807801, 633485.2008765331702307 6184344.5632429160177708, 633485.2150113079696894 6184344.5761251496151090, 633485.2313399621052667 6184344.5860809953883290, 633485.2492652848595753 6184344.5927463248372078, 633650.4305070741102099 6184388.5748039791360497, 633669.4949609669856727 6184393.6496527614071965, 633852.6203885280992836 6184442.4090733332559466, 634280.9692566331941634 6184556.4610882792621851, 634502.3996737367706373 6184615.4210453070700169, 634505.6906436235876754 6184616.3008892470970750, 634508.9804253297625110 6184617.1873368322849274, 634512.2690805093152449 6184618.0804046178236604, 634515.5547503855777904 6184618.9783634738996625, 634518.8392070047557354 6184619.8845934178680182, 634522.1216303266119212 6184620.7974226567894220, 634525.4029398488346487 6184621.7152008526027203, 634528.6821164987049997 6184622.6412255661562085, 634531.9592889761552215 6184623.5721829719841480, 634535.2343404222046956 6184624.5097150141373277, 634538.5082174637354910 6184625.4555290760472417, 634541.7791545332875103 6184626.4062469452619553, 634545.0489324463997036 6184627.3635758385062218, 634548.3175845359219238 6184628.3275255225598812, 634551.5832501659169793 6184629.2963653961196542, 634554.8476990603376180 6184630.2734748786315322, 634558.1091800214489922 6184631.2571560135111213, 634561.3695489823585376 6184632.2457861248403788, 634564.6277857733657584 6184633.2426628973335028, 634567.8840174116194248 6184634.2444725930690765, 634571.1381510894279927 6184635.2528630699962378, 634574.3911394432652742 6184636.2678685393184423, 634577.6411091837799177 6184637.2894303686916828, 634580.8890075180679560 6184638.3175811972469091, 634584.1357820932753384 6184639.3523538792505860, 634587.3795713706640527 6184640.3920165412127972, 634590.6221661970485002 6184641.4399554934352636, 634593.8618204926606268 6184642.4927988341078162, 634597.1002870653755963 6184643.5522433063015342, 634600.3357321795774624 6184644.6199206169694662, 634603.5701296605402604 6184645.6908900216221809, 634605.6641935704974458 6184646.3906636806204915, 634606.9144892485346645 6184646.8084751795977354, 634608.5858348999172449 6184647.3706302056089044, 634610.2568298997357488 6184647.9326672898605466, 634613.5971169143449515 6184649.0617768643423915, 634616.9343211946543306 6184650.1990991681814194, 634620.2703821876784787 6184651.3430372914299369, 634623.6033904763171449 6184652.4951983932405710, 634626.9334648980293423 6184653.6522669075056911, 634630.2623536150204018 6184654.8159365020692348, 634633.5881937453523278 6184655.9878306137397885, 634636.9120060630375519 6184657.1646508695557714, 634640.2327314324211329 6184658.3496820786967874, 634643.5514026361051947 6184659.5413089804351330, 634646.8679948954377323 6184660.7395227318629622, 634650.1825049890903756 6184661.9443221632391214, 634653.4939745524898171 6184663.1556699322536588, 634656.8024032171815634 6184664.3752453122287989, 634660.1088086073286831 6184665.5997485080733895, 634663.4130791015923023 6184666.8324974682182074, 634666.7143862942466512 6184668.0701435990631580, 634670.0135425933403894 6184669.3160294229164720, 634673.3097255165921524 6184670.5684886835515499, 634676.6038596450816840 6184671.8258660966530442, 634679.8949075534474105 6184673.0914541659876704, 634683.1838965658098459 6184674.3636367861181498, 634686.4698460333747789 6184675.6423675166442990, 634689.7527541010640562 6184676.9293262520805001, 634693.0336594296386465 6184678.2212209822610021, 634696.3124607891077176 6184679.5196927059441805, 634699.5882220339262858 6184680.8247120818123221, 634702.8609382446156815 6184682.1379582323133945, 634706.1307511236518621 6184683.4561257045716047, 635074.6394940027967095 6184832.5200848998501897, 635074.6579174628714100 6184832.5255457498133183, 635074.6770452730124816 6184832.5273819537833333, 635074.6961711487965658 6184832.5255257096141577, 635074.7145888772793114 6184832.5200455598533154, 635074.7316183934453875 6184832.5111438557505608, 635074.7466308913426474 6184832.4991492871195078, 635074.7590720423031598 6184832.4845047481358051, 635074.7684824634343386 6184832.4677509795874357, 635074.7745146797969937 6184832.4495066069066525, 635074.7769459548871964 6184832.4304452938959002, 635075.7722724115010351 6184799.9540125913918018, 635075.7708403052529320 6184799.9338139239698648, 635075.7653684740653262 6184799.9143178695812821, 635075.7560812836745754 6184799.8963238382712007, 635075.7433595430338755 6184799.8805696517229080, 635075.7277248908067122 6184799.8677012901753187, 635075.7098184056812897 6184799.8582464046776295, 634717.6358150290325284 6184655.0143900485709310, 634717.6353390680160373 6184655.0141989374533296, 634701.0547083568526432 6184648.4059510864317417, 634701.0541656919522211 6184648.4057366382330656, 634697.7553001819178462 6184647.1132213305681944, 634697.7550695642130449 6184647.1131313024088740, 634694.4531375276856124 6184645.8288347898051143, 634694.4530055567156523 6184645.8287835670635104, 634691.1499814247945324 6184644.5494425725191832, 634691.1497503885766491 6184644.5493534151464701, 634687.8436597613617778 6184643.2782312296330929, 634687.8434698932105675 6184643.2781584514304996, 634684.5343642953084782 6184642.0135944094508886, 634684.5342238259036094 6184642.0135408500209451, 634681.2230904762400314 6184640.7539033181965351, 634681.2228669453179464 6184640.7538185874000192, 634677.9096028369385749 6184639.5024289023131132, 634677.9094046299578622 6184639.5023542810231447, 634674.5921898962697014 6184638.2574937399476767, 634674.5920154738705605 6184638.2574284691363573, 634671.2736572162248194 6184637.0191841404885054, 634671.2734667608747259 6184637.0191132929176092, 634667.9520936013432220 6184635.7874271385371685, 634667.9519109108950943 6184635.7873595925047994, 634664.6284585583489388 6184634.5622606417164207, 634664.6282678926363587 6184634.5621905773878098, 634661.3018006653292105 6184633.3436498120427132, 634661.3016176864039153 6184633.3435829859226942, 634657.9730712916934863 6184632.1316294353455305, 634657.9728881521150470 6184632.1315629547461867, 634654.6422626061830670 6184630.9261966170743108, 634654.6420296394499019 6184630.9261126313358545, 634651.3083377627190202 6184629.7289651706814766, 634651.3081963286967948 6184629.7289145011454821, 634647.9724768274463713 6184628.5366935962811112, 634647.9722856546286494 6184628.5366254877299070, 634644.6335513448575512 6184627.3509628009051085, 634644.6333255147328600 6184627.3508829073980451, 634641.2924606144661084 6184626.1734681259840727, 634641.2923189303837717 6184626.1734183123335242, 634637.9494264449458569 6184625.0009301053360105, 634637.9492002010811120 6184625.0008510565385222, 634634.6041771561140195 6184623.8366107642650604, 634634.6039855444105342 6184623.8365442920476198, 634631.3503801986807957 6184622.7115150215104222, 634636.2864178437739611 6184608.3985946811735630, 634636.2909630801295862 6184608.3795154085382819, 634636.2916968743083999 6184608.3599159354344010, 634636.2885909986216575 6184608.3405502084642649, 634636.2817649291828275 6184608.3221631860360503, 634636.2714812498306856 6184608.3054621759802103, 634636.2581355508882552 6184608.2910896278917789, 634636.2422412118175998 6184608.2795984223484993, 634636.2244096524082124 6184608.2714306013658643, 634633.2820786787196994 6184607.2593079507350922, 634633.2818687518592924 6184607.2592359986156225, 634630.3374591214815155 6184606.2537000095471740, 634630.3373457209672779 6184606.2536613587290049, 634627.3909604249056429 6184605.2513907020911574, 634627.3907502815127373 6184605.2513194773346186, 634624.4422863489016891 6184604.2556354897096753, 634624.4421327267773449 6184604.2555837510153651, 634621.4925773604772985 6184603.2648547794669867, 634621.4924154026666656 6184603.2648005327209830, 634618.5408329081255943 6184602.2789975693449378, 634618.5406790509587154 6184602.2789463214576244, 634615.5880051432177424 6184601.2980983806774020, 634615.5878430343000218 6184601.2980446834117174, 634612.6331420168280602 6184600.3221227591857314, 634612.6329798559891060 6184600.3220693515613675, 634609.6762517379829660 6184599.3510734448209405, 634609.6760408123955131 6184599.3510044356808066, 634606.7172341257100925 6184598.3865952249616385, 634606.7171285666991025 6184598.3865608833730221, 634603.7572819812921807 6184597.4254460362717509, 634603.7570787509903312 6184597.4253802839666605, 634600.7960893231211230 6184596.4708811389282346, 634600.7959189455723390 6184596.4708263846114278, 634597.8319667513715103 6184595.5212242696434259, 634597.8318121144548059 6184595.5211748648434877, 634594.8667685738764703 6184594.5765277901664376, 634594.8665648184251040 6184594.5764631144702435, 634591.9003784694941714 6184593.6384317548945546, 634591.9002648042514920 6184593.6383958831429482, 634588.9321028951089829 6184592.7036299007013440, 634588.9318911200389266 6184592.7035634648054838, 634585.9616507178870961 6184591.7753841951489449, 634585.9615447405958548 6184591.7753511425107718, 634582.9902645023539662 6184590.8504662597551942, 634582.9900525119155645 6184590.8504005307331681, 634580.0166938001057133 6184589.9321023719385266, 634580.0165384906576946 6184589.9320545438677073, 634577.0420884923078120 6184589.0187114421278238, 634577.0419255199376494 6184589.0186615511775017, 634574.0654485379345715 6184588.1102445116266608, 634574.0652436920208856 6184588.1101822322234511, 634571.0876239790813997 6184587.2083809245377779, 634571.0875102396821603 6184587.2083465512841940, 634568.1079150281148031 6184586.3098106430843472, 634568.1077099002432078 6184586.3097490239888430, 634565.1269719778792933 6184585.4178288560360670, 634565.1268087561475113 6184585.4177801664918661, 634562.1440438901772723 6184584.5307860728353262, 634562.1438879584893584 6184584.5307398410513997, 634559.1600318661658093 6184583.6487008212134242, 634559.1598685485078022 6184583.6486526951193810, 634556.1739855330670252 6184582.7715397579595447, 634556.1737797906389460 6184582.7714795600622892, 634553.1867541100364178 6184581.9009823715314269, 634553.1866403331514448 6184581.9009492872282863, 634550.1976392047945410 6184581.0337175196036696, 634550.1974332017125562 6184581.0336579885333776, 634547.2072894329903647 6184580.1730419751256704, 634547.2071259034564719 6184580.1729950597509742, 634544.2149552487535402 6184579.3173051429912448, 634544.2147987458156422 6184579.3172605242580175, 634541.2215369270415977 6184578.4665256980806589, 634541.2213803209597245 6184578.4664813252165914, 634538.2270273445174098 6184577.6207015924155712, 634538.2268137707142159 6184577.6206415230408311, 634535.2303824892733246 6184576.7814485644921660, 634535.2302756285062060 6184576.7814187007024884, 634532.2328046631300822 6184575.9455201709643006, 634532.2325909376377240 6184575.9454608252272010, 634529.2330416869372129 6184575.1161490771919489, 634529.2328847182216123 6184575.1161058163270354, 634526.2322443530429155 6184574.2917491737753153, 634526.2320872879354283 6184574.2917061606422067, 634523.2303558179410174 6184573.4723046245053411, 634523.2301417967537418 6184573.4722464568912983, 634520.2263320781057701 6184572.6594317099079490, 634520.2262249983614311 6184572.6594027988612652, 634517.2213756412966177 6184571.8498824955895543, 634517.2211681139888242 6184571.8498268257826567, 634514.2151762385619804 6184571.0469223074615002, 634514.1958225757116452 6184571.0437436839565635, 634514.1762207322753966 6184571.0444037253037095, 634514.1571247286628932 6184571.0488770408555865, 634514.1392691265791655 6184571.0569915585219860, 634514.1233407737454399 6184571.0684351371601224, 634514.1099523830926046 6184571.0827675797045231, 634514.0996189627330750 6184571.0994375636801124, 634514.0927380063803867 6184571.1178038464859128, 634510.1968111586757004 6184585.7486764127388597, 634281.9707008437253535 6184524.9803243651986122, 633860.5116482827579603 6184412.7646910361945629, 633664.3814508970826864 6184360.5428347745910287, 633645.6141997708473355 6184355.5453163227066398, 633486.2477301596663892 6184313.1113668847829103, 633486.2280114791356027 6184313.1081808526068926, 633486.2080529544036835 6184313.1089773764833808, 633486.1886508848983794 6184313.1137246768921614, 633486.1705793688306585 6184313.1222333470359445, 633486.1545594186754897 6184313.1341639105230570, 633486.1412301935488358 6184313.1490403665229678, 633486.1311234992463142 6184313.1662691766396165, 633486.1246425698045641 6184313.1851629503071308, 633486.1220459794858471 6184313.2049678713083267, 633485.6474724950967357 6184328.8492693454027176, 633485.1750409196829423 6184344.4930946370586753)) + + + +Case #23 + +MULTILINESTRING (( 80 285, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 98 123, 294 92, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 393 159 ), ( 51 235, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 251 233, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 382 83 )) + + + + POLYGON ((21.0014998875093717 235.2999850011248952, 21.6364368259640045 241.1466379203916972, 23.3997990299208922 246.7570789914520901, 26.2238214787868884 251.9157021103168574, 29.9999785735821156 256.4242642835171750, 34.5831547148468843 260.1095039951677563, 39.7972210137471762 262.8297995498561477, 45.4418038264983366 264.4806115149748962, 51.2999850011248952 264.9985001124906034, 52.0385924241797255 264.9911140382600365, 50.1834879597914352 281.6870542177546213, 50.1100802185175240 287.5676244773218286, 51.1853253319858510 293.3495223681659354, 53.3679022334902413 298.8105527968675688, 56.5739357167091015 303.7408514266327302, 60.6802197128466361 307.9509496460630089, 65.5289520307618574 311.2790557416359434, 70.9337986066776978 313.5972724625220280, 76.6870542177545929 314.8165120402085790, 82.5676244773217860 314.8899197814824902, 88.3495223681659070 313.8146746680141632, 93.8105527968674977 311.6320977665097871, 98.7408514266327018 308.4260642832909411, 102.9509496460629805 304.3197802871534350, 106.2790557416359150 299.4710479692382137, 108.5972724625220138 294.0662013933223307, 109.8165120402085648 288.3129457822453787, 112.4749782182002917 264.3867501803198365, 251.2999850011248952 262.9985001124906034, 257.5681863594468268 262.2721527726878321, 263.5457970774100431 260.2507426631358385, 268.9683548466559273 257.0237012990224912, 273.5959540907721248 252.7337999059409981, 349.5195865880894530 165.7983428479440420, 376.1856554292177179 183.8450763060813244, 381.3557722824174903 186.6480010283036961, 386.9733702766457668 188.3884285761859587, 392.8225682713696756 188.9994752951060093, 398.6785848679199944 188.4576590023347080, 404.3163766325831716 186.7838013941491511, 409.5192863895533719 184.0422278797218212, 414.0873692346955863 180.3382955917199411, 417.8450763060812960 175.8143445707823105, 420.6480010283036677 170.6442277175825950, 422.3884285761859587 165.0266297233542900, 422.9994752951059809 159.1774317286303813, 422.4576590023347080 153.3214151320800909, 420.7838013941491795 147.6836233674168568, 418.0422278797218496 142.4807136104466565, 414.3382955917199979 137.9126307653044705, 409.8143445707822821 134.1549236939186756, 389.2872504397274156 120.2628498880532533, 404.5959540907721248 102.7337999059410123, 408.0116525471484010 97.9463685143391842, 410.4277377836404526 92.5845565627513594, 411.7513609995662591 86.8544154775382395, 411.9316560970342493 80.9761513671044355, 410.9616944365592985 75.1756626246454260, 408.8787511007927264 69.6758587795823274, 405.7628724339999735 64.6880942093553983, 401.7337999059409981 60.4040459092278610, 396.9463685143392127 56.9883474528516558, 391.5845565627514020 54.5722622163595474, 385.8544154775382822 53.2486390004337267, 379.9761513671044781 53.0683439029657649, 374.1756626246454971 54.0383055634406944, 368.6758587795823701 56.1212488992072451, 363.6880942093554268 59.2371275659999696, 359.4040459092278752 63.2662000940589877, 339.2193138224577638 86.3784887430323778, 310.8143445707822821 67.1549236939186756, 305.8758593966222747 64.4506993992286823, 300.5190607344155183 62.7168675319561828, 294.9326356558352131 62.0145003254328842, 289.3133595589631568 62.3683378566703084, 93.3133595589631568 93.3683378566703084, 87.9092837190495118 94.7479656495791289, 82.8539812499324739 97.1040907473283994, 78.3221825506699076 100.3552765432906995, 74.4705237473907005 104.3891497432842925, 71.4321327555545196 109.0662844122064570, 69.3120278750040910 114.2250210623923437, 68.1834879597914352 119.6870542177546071, 58.7130084336350890 204.9213699531617863, 50.7000149988751048 205.0014998875093681, 44.8533620796082459 205.6364368259640116, 39.2429210085478530 207.3997990299209278, 34.0842978896831070 210.2238214787869026, 29.5757357164827823 213.9999785735821547, 25.8904960048322081 218.5831547148469269, 23.1702004501438559 223.7972210137472189, 21.5193884850250754 229.4418038264983863, 21.0014998875093717 235.2999850011248952), (119.1493942276556623 204.3170060952215863, 125.2894246846412329 149.0567319823514367, 286.9915584344174135 123.4813945015195031, 299.4516499708198012 131.9139817029231381, 237.2510968713003763 203.1359890687851077, 119.1493942276556623 204.3170060952215863)) + + + +Case #24 + +MULTILINESTRING (( 80 285, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 98 123, 294 92, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 393 159 ), ( 51 235, 85.5939933259177 234.65406006674084 ), ( 85.5939933259177 234.65406006674084, 251 233, 344.3694502052736 126.0884157954882 ), ( 344.3694502052736 126.0884157954882, 382 83 )) + + + + POLYGON ((21.0014998875093717 235.2999850011248952, 21.6364368259640045 241.1466379203916972, 23.3997990299208922 246.7570789914520901, 26.2238214787868884 251.9157021103168574, 29.9999785735821156 256.4242642835171750, 34.5831547148468843 260.1095039951677563, 39.7972210137471762 262.8297995498561477, 45.4418038264983366 264.4806115149748962, 51.2999850011248952 264.9985001124906034, 52.0385924241797255 264.9911140382600365, 50.1834879597914352 281.6870542177546213, 50.1100802185175240 287.5676244773218286, 51.1853253319858510 293.3495223681659354, 53.3679022334902413 298.8105527968675688, 56.5739357167091015 303.7408514266327302, 60.6802197128466361 307.9509496460630089, 65.5289520307618574 311.2790557416359434, 70.9337986066776978 313.5972724625220280, 76.6870542177545929 314.8165120402085790, 82.5676244773217860 314.8899197814824902, 88.3495223681659070 313.8146746680141632, 93.8105527968674977 311.6320977665097871, 98.7408514266327018 308.4260642832909411, 102.9509496460629805 304.3197802871534350, 106.2790557416359150 299.4710479692382137, 108.5972724625220138 294.0662013933223307, 109.8165120402085648 288.3129457822453787, 112.4749782182002917 264.3867501803198365, 251.2999850011248952 262.9985001124906034, 257.5681863594468268 262.2721527726878321, 263.5457970774100431 260.2507426631358385, 268.9683548466559273 257.0237012990224912, 273.5959540907721248 252.7337999059409981, 349.5195865880894530 165.7983428479440420, 376.1856554292177179 183.8450763060813244, 381.3557722824174903 186.6480010283036961, 386.9733702766457668 188.3884285761859587, 392.8225682713696756 188.9994752951060093, 398.6785848679199944 188.4576590023347080, 404.3163766325831716 186.7838013941491511, 409.5192863895533719 184.0422278797218212, 414.0873692346955863 180.3382955917199411, 417.8450763060812960 175.8143445707823105, 420.6480010283036677 170.6442277175825950, 422.3884285761859587 165.0266297233542900, 422.9994752951059809 159.1774317286303813, 422.4576590023347080 153.3214151320800909, 420.7838013941491795 147.6836233674168568, 418.0422278797218496 142.4807136104466565, 414.3382955917199979 137.9126307653044705, 409.8143445707822821 134.1549236939186756, 389.2872504397274156 120.2628498880532533, 404.5959540907721248 102.7337999059410123, 408.0116525471484010 97.9463685143391842, 410.4277377836404526 92.5845565627513594, 411.7513609995662591 86.8544154775382395, 411.9316560970342493 80.9761513671044355, 410.9616944365592985 75.1756626246454260, 408.8787511007927264 69.6758587795823274, 405.7628724339999735 64.6880942093553983, 401.7337999059409981 60.4040459092278610, 396.9463685143392127 56.9883474528516558, 391.5845565627514020 54.5722622163595474, 385.8544154775382822 53.2486390004337267, 379.9761513671044781 53.0683439029657649, 374.1756626246454971 54.0383055634406944, 368.6758587795823701 56.1212488992072451, 363.6880942093554268 59.2371275659999696, 359.4040459092278752 63.2662000940589877, 339.2193138224577638 86.3784887430323778, 310.8143445707822821 67.1549236939186756, 305.8758593966222747 64.4506993992286823, 300.5190607344155183 62.7168675319561828, 294.9326356558352131 62.0145003254328842, 289.3133595589631568 62.3683378566703084, 93.3133595589631568 93.3683378566703084, 87.9092837190495118 94.7479656495791289, 82.8539812499324739 97.1040907473283994, 78.3221825506699076 100.3552765432906995, 74.4705237473907005 104.3891497432842925, 71.4321327555545196 109.0662844122064570, 69.3120278750040910 114.2250210623923437, 68.1834879597914352 119.6870542177546071, 58.7130084336350890 204.9213699531617863, 50.7000149988751048 205.0014998875093681, 44.8533620796082459 205.6364368259640116, 39.2429210085478530 207.3997990299209278, 34.0842978896831070 210.2238214787869026, 29.5757357164827823 213.9999785735821547, 25.8904960048322081 218.5831547148469269, 23.1702004501438559 223.7972210137472189, 21.5193884850250754 229.4418038264983863, 21.0014998875093717 235.2999850011248952), (119.1493942276556623 204.3170060952215863, 125.2894246846412329 149.0567319823514367, 286.9915584344174135 123.4813945015195031, 299.4516499708198012 131.9139817029231381, 237.2510968713003763 203.1359890687851077, 119.1493942276556623 204.3170060952215863)) + + + +Case #25 - Invalid input! + +MULTIPOLYGON ((( 708258.754920656 2402197.91172757, 708257.029447455 2402206.56901508, 708652.961095455 2402312.65463437, 708657.068786251 2402304.6356364, 708258.754920656 2402197.91172757 )), (( 708653.498611049 2402311.54647056, 708708.895756966 2402203.47250014, 708280.326454234 2402089.6337791, 708247.896591321 2402252.48269854, 708367.379593851 2402324.00761653, 708248.882609455 2402253.07294874, 708249.523621829 2402244.3124463, 708261.854734465 2402182.39086576, 708262.818392579 2402183.35452387, 708653.498611049 2402311.54647056 ))) + + false + + + POLYGON ((708247.8964913242962211 2402252.4826993490569293, 708247.8964935755357146 2402252.4827196551486850, 708247.8964999067829922 2402252.4827390797436237, 708247.8965100536588579 2402252.4827568121254444, 708247.8965235925279558 2402252.4827721123583615, 708247.8965399585431442 2402252.4827843415550888, 708367.3795424886047840 2402324.0077023315243423, 708367.3795424884883687 2402324.0077023315243423, 708367.3795602144673467 2402324.0077107031829655, 708367.3795792331220582 2402324.0077154561877251, 708367.3795988133642823 2402324.0077164070680737, 708367.3796182030346245 2402324.0077135199680924, 708367.3796366568421945 2402324.0077069052495062, 708367.3796534657012671 2402324.0076968176290393, 708367.3796679835068062 2402324.0076836450025439, 708367.3796796525130048 2402324.0076678926125169, 708367.3796880241716281 2402324.0076501667499542, 708367.3796927768271416 2402324.0076311482116580, 708367.3796937278239056 2402324.0076115676201880, 708367.3796908406075090 2402324.0075921779498458, 708367.3796842261217535 2402324.0075737242586911, 708367.3796741386177018 2402324.0075569157488644, 708367.3796609656419605 2402324.0075423978269100, 708367.3796452134847641 2402324.0075307288207114, 708248.8827136848121881 2402253.0728945857845247, 708249.5237211110070348 2402244.3124597654677927, 708257.0394274791469797 2402206.5717926472425461, 708652.9610695739975199 2402312.6547309630550444, 708652.9610886982409284 2402312.6547341416589916, 708652.9611080762697384 2402312.6547335702925920, 708652.9611269800225273 2402312.6547292708419263, 708652.9611446990165859 2402312.6547214044257998, 708652.9611605671234429 2402312.6547102672047913, 708652.9611739881802350 2402312.6546962773427367, 708652.9611844575265422 2402312.6546799610368907, 708657.0688752535497770 2402304.6356819909997284, 708657.0688824839890003 2402304.6356635885313153, 708657.0688859523506835 2402304.6356441229581833, 708657.0688855230109766 2402304.6356243551708758, 708657.0688812127336860 2402304.6356050586327910, 708657.0688731900881976 2402304.6355869872495532, 708657.0688617686973885 2402304.6355708478949964, 708657.0688473950140178 2402304.6355572710745037, 708657.0688306309748441 2402304.6355467871762812, 708657.0688121319981292 2402304.6355398069135845, 708657.0445044980151579 2402304.6290268381126225, 708708.8958459561690688 2402203.4725457550957799, 708708.8958531989483163 2402203.4725273284129798, 708708.8958566694054753 2402203.4725078358314931, 708708.8958562314510345 2402203.4724880419671535, 708708.8958519023144618 2402203.4724687216803432, 708708.8958438517292961 2402203.4724506335332990, 708708.8958323950646445 2402203.4724344857968390, 708708.8958179816836491 2402203.4724209117703140, 708708.8958011765498668 2402203.4724104437045753, 708708.8957826382247731 2402203.4724034913815558, 708280.3264799062162638 2402089.6336824516765773, 708280.3264597709057853 2402089.6336792535148561, 708280.3264394054422155 2402089.6336802057921886, 708280.3264196563977748 2402089.6336852684617043, 708280.3264013445004821 2402089.6336942315101624, 708280.3263852309901267 2402089.6337067219428718, 708280.3263719857204705 2402089.6337222210131586, 708280.3263621591031551 2402089.6337400842458010, 708280.3263561597559601 2402089.6337595693767071, 708258.7633657812839374 2402197.9138868227601051, 708258.7549465369665995 2402197.9116309769451618, 708258.7549263836117461 2402197.9116277340799570, 708258.7549059916054830 2402197.9116286509670317, 708258.7548862107796595 2402197.9116336894221604, 708258.7548678650055081 2402197.9116426398977637, 708258.7548517190152779 2402197.9116551289334893, 708258.7548384453402832 2402197.9116706363856792, 708258.7548285971861333 2402197.9116885163821280, 708258.7548225849168375 2402197.9117080233991146, 708257.0293493838980794 2402206.5689955335110426, 708257.0293474586214870 2402206.5690142284147441, 708257.0293490652693436 2402206.5690329535864294, 708257.0293541471473873 2402206.5690510477870703, 708257.0293625248596072 2402206.5690678711980581, 708257.0293739024782553 2402206.5690828296355903, 708257.0293878779048100 2402206.5690953955054283, 708257.0294039577711374 2402206.5691051245667040, 708257.0294215739704669 2402206.5691116731613874, 708257.0392338818637654 2402206.5717407753691077, 708247.8964932467788458 2402252.4826790094375610, 708247.8964913242962211 2402252.4826993490569293), (708258.7635593785671517 2402197.9139386950992048, 708261.8547960097203031 2402182.3910687258467078, 708262.8183218683116138 2402183.3545945808291435, 708262.8183402057038620 2402183.3546090582385659, 708262.8183614019071683 2402183.3546188860200346, 708522.7761432345723733 2402268.6532660527154803, 708258.7635593785671517 2402197.9139386950992048)) + + + +Case #26 - Invalid output + +GEOMETRYCOLLECTION (POLYGON ((0 10, 10 0, 10 10, 0 10), (4 8, 8 4, 8 8, 4 8)), LINESTRING (6 6, 20 20)) + + + + POLYGON ((-1.0000000000000000 9.9999999999999982, -0.9807852804032310 10.1950903220161262, -0.9238795325112880 10.3826834323650861, -0.8314696123025475 10.5555702330195995, -0.7071067811865505 10.7071067811865444, -0.5555702330196066 10.8314696123025431, -0.3826834323650944 10.9238795325112843, -0.1950903220161339 10.9807852804032287, -0.0000000000000064 11.0000000000000000, 0.0000000000000000 11.0000000000000000, 9.5857864376269042 11.0000000000000000, 19.2928932188134539 20.7071067811865461, 19.2928932188134539 20.7071067811865497, 19.4444297669803987 20.8314696123025449, 19.6173165676349122 20.9238795325112861, 19.8049096779838720 20.9807852804032322, 20.0000000000000000 21.0000000000000000, 20.1950903220161280 20.9807852804032287, 20.3826834323650914 20.9238795325112861, 20.5555702330196013 20.8314696123025449, 20.7071067811865461 20.7071067811865461, 20.8314696123025449 20.5555702330196013, 20.9238795325112861 20.3826834323650914, 20.9807852804032287 20.1950903220161280, 21.0000000000000000 20.0000000000000000, 20.9807852804032322 19.8049096779838720, 20.9238795325112861 19.6173165676349122, 20.8314696123025449 19.4444297669803987, 20.7071067811865461 19.2928932188134539, 11.0000000000000000 9.5857864376269042, 11.0000000000000000 0.0000000000000000, 10.9807852804032304 -0.1950903220161285, 10.9238795325112861 -0.3826834323650899, 10.8314696123025449 -0.5555702330196024, 10.7071067811865479 -0.7071067811865477, 10.5555702330196013 -0.8314696123025453, 10.3826834323650896 -0.9238795325112868, 10.1950903220161280 -0.9807852804032304, 10.0000000000000000 -1.0000000000000000, 9.8049096779838720 -0.9807852804032304, 9.6173165676349104 -0.9238795325112866, 9.4444297669803969 -0.8314696123025451, 9.2928932188134521 -0.7071067811865472, 9.2928932188134521 -0.7071067811865476, -0.7071067811865476 9.2928932188134521, -0.8314696123025448 9.4444297669803969, -0.9238795325112862 9.6173165676349086, -0.9807852804032300 9.8049096779838703, -1.0000000000000000 9.9999999999999982)) + + + +Case #27 + +POLYGON ((-140 700, 880 1120, 1280 -120, 300 -600, -480 -480, -140 700), (0 360, 780 500, 240 -220, 0 360)) + + + + POLYGON ((-778.7369624023256165 -452.5004128279801421, -768.2720863281218726 -396.9385513969818362, -428.2720863281219295 783.0614486030182206, -428.2720863281218726 783.0614486030182206, -408.7534841560095060 833.3100324581969289, -380.5574411245926285 879.2543375195929229, -344.5943435555216752 919.4109263119892148, -302.0253583570249702 952.4832336003277078, -254.2249415762884723 977.4034295424147558, -254.2249415762884439 977.4034295424147558, 765.7750584237115845 1397.4034295424148695, 824.9820997649247829 1414.9119032079297540, 886.5194673034418429 1419.9291525445289608, 947.7806977050495334 1412.2426680322651009, 1006.1710236399521818 1392.1780167347219503, 1059.2172771825498785 1360.5850526513920613, 1104.6726427733435685 1318.8019204868039651, 1140.6118228493280640 1268.5983774849189558, 1165.5125853281651871 1212.1008339768277438, 1165.5125853281651871 1212.1008339768275164, 1565.5125853281651871 -27.8991660231724943, 1565.5125853281651871 -27.8991660231724730, 1578.2479052970841167 -87.6242840094385542, 1578.6248988264201216 -148.6909358667574566, 1566.6279446527257733 -208.5687379618446755, 1542.7541536469450421 -264.7765683433532899, 1507.9927703179562286 -314.9853755612036252, 1463.7841820583996650 -357.1146862282575398, 1411.9602346430190210 -389.4188123961639008, 431.9602346430190778 -869.4188123961638439, 431.9602346430191346 -869.4188123961638439, 375.0205313378135656 -890.4684490229396943, 315.0089731600441496 -899.6243159769932163, 254.3828447238176693 -896.5115092951851921, -525.6171552761823023 -776.5115092951851921, -525.6171552761842349 -776.5115092951848510, -580.4397169479343574 -762.6868643206097431, -631.6948450433227435 -738.8217030839614381, -677.5620519058279569 -705.7636721147999879, -716.4122189080046610 -664.6869317277042910, -746.8654597417037166 -617.0504520125676891, -767.8401314357936371 -564.5461929067481606, -778.5912523203892306 -509.0390088973724687, -778.7369624023256165 -452.5004128279801421)) + + + +Case #28 + +POLYGON ((-140 700, 880 1120, 1280 -120, 300 -600, -480 -480, -140 700), (0 360, 240 -220, 780 500, 0 360)) + + + + POLYGON ((-709.0316711751162302 -458.9169831681181222, -701.0085995182267879 -416.3195560710194059, -361.0085995182267879 763.6804439289805941, -346.0443378529406573 802.2043582179510395, -324.4273715288543940 837.4283254316878811, -296.8556633925666119 868.2150435058583753, -264.2194414070523862 893.5704790935845949, -227.5724552084877814 912.6759626491847257, 792.4275447915122186 1332.6759626491846120, 837.8196098197755646 1346.0991257927460083, 884.9982582659720265 1349.9456836174722412, 931.9652015738713544 1344.0527121580698804, 976.7311181239632560 1328.6698128299535711, 1017.3999125066216038 1304.4485403660671636, 1052.2490261262300919 1272.4148057065497142, 1079.8023975178182354 1233.9254227384378737, 1098.8929820849266434 1190.6106393822344671, 1498.8929820849266434 -49.3893606177655755, 1498.8929820849266434 -49.3893606177655542, 1508.6567273944313001 -95.1786177405695497, 1508.9457557669220478 -141.9963841645140405, 1499.7480909004232217 -187.9026991040809094, 1481.4448511293244337 -230.9953690632375469, 1454.7944572437663737 -269.4887879302561373, 1420.9012062447729932 -301.7879261083307938, 1381.1695132263146206 -326.5544228370590076, 401.1695132263146206 -806.5544228370589508, 357.5157406923237318 -822.6924775842537656, 311.5068794227005355 -829.7119755823614469, 265.0268476215935607 -827.3254904596419692, -514.9731523784064393 -707.3254904596419692, -514.9731523784079172 -707.3254904596417418, -557.0037829934162801 -696.7265959791341174, -596.2993811998808269 -678.4299723643704283, -631.4642397944680852 -653.0854819546800627, -661.2493678294702022 -621.5933143245732708, -684.5968524686394403 -585.0720132096352017, -700.6774341007751445 -544.8187478951736011, -708.9199601122983267 -502.2632401546522374, -709.0316711751162302 -458.9169831681181222)) + + + +Case #29 + +MULTIPOLYGON (((0 400, 440 400, 440 0, 0 0, 0 400),(380 360, 160 120, 260 80, 380 360)), ((360 320, 200 120, 240 100, 360 320))) + + + + POLYGON ((-30.0000000000000000 0.0000000000000000, -30.0000000000000000 400.0000000000000000, -29.4235584120969129 405.8527096604838675, -27.7163859753385999 411.4805029709526707, -24.9440883690763577 416.6671069905880813, -21.2132034355964230 421.2132034355964265, -16.6671069905880600 424.9440883690763826, -11.4805029709526902 427.7163859753385964, -5.8527096604838462 429.4235584120968952, 0.0000000000000000 430.0000000000000000, 440.0000000000000000 430.0000000000000000, 445.8527096604838675 429.4235584120968952, 451.4805029709526707 427.7163859753385964, 456.6671069905880813 424.9440883690763826, 461.2132034355964265 421.2132034355964265, 464.9440883690763826 416.6671069905880813, 467.7163859753385964 411.4805029709526707, 469.4235584120968952 405.8527096604838675, 470.0000000000000000 400.0000000000000000, 470.0000000000000000 0.0000000000000000, 469.4235584120968952 -5.8527096604838480, 467.7163859753385964 -11.4805029709526920, 464.9440883690763826 -16.6671069905880671, 461.2132034355964265 -21.2132034355964265, 456.6671069905880813 -24.9440883690763577, 451.4805029709526707 -27.7163859753386035, 445.8527096604838675 -29.4235584120969129, 440.0000000000000000 -30.0000000000000000, 0.0000000000000000 -30.0000000000000000, -0.0000000053875892 -30.0000000000000000, -5.8527096651074020 -29.4235584111772326, -11.4805029746857947 -27.7163859737923026, -16.6671069933878329 -24.9440883672056124, -21.2132034375012282 -21.2132034336916249, -24.9440883701987985 -16.6671069889082126, -27.7163859758540383 -11.4805029697083203, -29.4235584122282994 -5.8527096598233301, -30.0000000000000000 0.0000000000000000)) + + + +Case #30 + +POLYGON ((60 320, 260 240, 280 60, 60 60, 60 320), (140 240, 100 100, 80 240, 140 240)) + + + + POLYGON ((47.7999999999999972 60.0000000000000000, 47.7999999999999972 320.0000000000000000, 48.0315264859667153 322.3655108843300354, 48.7173183186694629 324.6412384206985280, 49.8313461582508239 326.7408070026280598, 51.3313268979948205 328.5845271652299857, 53.1603285264767607 330.1024202117251320, 55.2489309912589661 331.2368742661907959, 57.5178610482016879 331.9448309416234792, 59.8810010902576906 332.1994196279774201, 62.2486577551672084 331.9909773705118141, 64.5309662515200699 331.3274156288001677, 264.5309662515200557 251.3274156288001677, 266.8526771887014775 250.0936026941548675, 268.8561264807556199 248.3910085065419082, 270.4482671257503057 246.2987073331728141, 271.5551546948153714 243.9138727596698857, 272.1253815630181521 241.3472646181131154, 292.1253815630181521 61.3472646181131296, 292.1646248250303870 59.0716127606139096, 291.7804983265691590 56.8282718941085747, 290.9863709586593927 54.6953178079431552, 289.8098810182789293 52.7469844611216772, 288.2919743028874109 51.0510803914519897, 286.4854790592872291 49.6666287509086999, 284.4532673833778631 48.6418131019012137, 282.2660670602604682 48.0123004676292240, 280.0000000000000000 47.7999999999999972, 60.0000000000000000 47.7999999999999972, 59.9999999978090486 47.7999999999999972, 57.6198980695229892 48.0344195794545925, 55.3312621236277806 48.7286697039911303, 53.2220431560222806 49.8560707306697211, 51.3732972687495035 51.3732972702987425, 49.8560707294524903 53.2220431578439914, 48.7286697031526899 55.3312621256519535, 48.0344195790271584 57.6198980716718481, 47.7999999999999972 60.0000000000000000), (94.0667181863941124 227.8000000000000114, 103.9865101885854841 158.3614559846603811, 123.8260941929682275 227.8000000000000114, 94.0667181863941124 227.8000000000000114)) + + + +Case #31 + +MULTILINESTRING ((635074.5625 6184832.5, 635074.5625 6184832.5, 635074.625 6184832.5), (635074.6875 6184832.5, 635074.6875 6184832.5, 635074.5625 6184832.5)) + + + + POLYGON ((635074.5524999999906868 6184832.5000000000000000, 635074.5526921472046524 6184832.5019509028643370, 635074.5532612046226859 6184832.5038268342614174, 635074.5541853038594127 6184832.5055557023733854, 635074.5554289321880788 6184832.5070710675790906, 635074.5569442976266146 6184832.5083146961405873, 635074.5586731656221673 6184832.5092387953773141, 635074.5605490967864171 6184832.5098078530281782, 635074.5625000000000000 6184832.5099999997764826, 635074.6250000000000000 6184832.5099999997764826, 635074.6875000000000000 6184832.5099999997764826, 635074.6894509032135829 6184832.5098078530281782, 635074.6913268343778327 6184832.5092387953773141, 635074.6930557023733854 6184832.5083146961405873, 635074.6945710678119212 6184832.5070710675790906, 635074.6958146961405873 6184832.5055557023733854, 635074.6967387953773141 6184832.5038268342614174, 635074.6973078527953476 6184832.5019509028643370, 635074.6975000000093132 6184832.5000000000000000, 635074.6973078527953476 6184832.4980490971356630, 635074.6967387953773141 6184832.4961731657385826, 635074.6958146961405873 6184832.4944442976266146, 635074.6945710678119212 6184832.4929289324209094, 635074.6930557023733854 6184832.4916853038594127, 635074.6913268343778327 6184832.4907612046226859, 635074.6894509032135829 6184832.4901921469718218, 635074.6875000000000000 6184832.4900000002235174, 635074.6250000000000000 6184832.4900000002235174, 635074.5625000000000000 6184832.4900000002235174, 635074.5605490967864171 6184832.4901921469718218, 635074.5586731656221673 6184832.4907612046226859, 635074.5569442976266146 6184832.4916853038594127, 635074.5554289321880788 6184832.4929289324209094, 635074.5541853038594127 6184832.4944442976266146, 635074.5532612046226859 6184832.4961731657385826, 635074.5526921472046524 6184832.4980490971356630, 635074.5524999999906868 6184832.5000000000000000)) + + + +Case #32 (previously in buffer_snapround.xml) + +MULTILINESTRING ( +( 85.5939933259177 234.65406006674084, 251 233, 344.3694502052736 126.0884157954882 ), +( 344.3694502052736 126.0884157954882, 382 83 )) + + + +POLYGON ((251.2999850011249 262.9985001124906, 257.5681863594468 +262.27215277268783, 263.54579707741004 260.25074266313584, +268.9683548466559 257.0237012990225, 273.5959540907721 252.733799905941, +366.9654042960458 145.8222157014292, 366.96540429604596 +145.822215701429, 404.5959540907721 102.73379990594101, +408.01165254714834 97.94636851433921, 410.42773778364045 +92.58455656275139, + 411.75136099956626 86.85441547753827, 411.93165609703425 +80.97615136710445, 410.9616944365593 75.17566262464543, +408.8787511007927 69.67585877958233, 405.762872434 64.6880942093554, +401.733799905941 60.40404590922786, 396.9463685143392 56.98834745285165, +391.5845565627514 54.57226221635955, 385.8544154775383 +53.24863900043373, 379.9761513671045 53.068343902965765, + 374.17566262464544 54.0383055634407, 368.6758587795823 +56.12124889920727, 363.68809420935537 59.23712756600002, +359.4040459092279 63.26620009405899, 321.77349611450177 +106.35461588954689, 321.7734961145014 106.35461588954719, +237.25109687130038 203.1359890687851, 85.29400832479278 +204.6555599542502, 85.29400832479277 204.6555599542502, +79.44735540552597 205.29049689270485, + 73.83691433446558 207.05385909666174, 68.67829121560081 +209.87788154552774, 64.16972904240048 213.654038640323, 60.4844893307499 +218.23721478158777, 57.764193776061546 223.45128108048806, +56.11338181094277 229.09586389323925, 55.59549321342706 +234.95404506786576, 56.230430151881706 240.80069798713257, +57.99379235583859 246.41113905819296, 60.81781480470461 +251.56976217705773, + 64.59397189949983 256.0783243502581, 69.1771480407646 +259.7635640619086, 74.39121433966491 262.483859616597, 80.03579715241607 +264.13467158171574, 85.89397832704257 264.65256017923144, +85.8939783270426 264.65256017923144, 251.2999850011249 +262.9985001124906)) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/bug176.xml geos-3.2.2/tests/xmltester/tests/bug176.xml --- geos-3.1.0/tests/xmltester/tests/bug176.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/bug176.xml 2009-06-15 07:57:10.000000000 +0100 @@ -0,0 +1,40 @@ + + + http://trac.osgeo.org/geos/ticket/176 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + Polygon 1 + + +POLYGON ((413.3999999999999773 243.0999999999999943, 607.2999999999999545 244.1999999999999886, 607.0000000000000000 294.8999999999999773, 697.8999999999999773 295.3999999999999773, 699.2000000000000455 241.8000000000000114, 416.8999999999999773 240.9000000000000057, 416.6999999999999886 162.3000000000000114, 413.1999999999999886 162.3000000000000114, 413.3999999999999773 243.0999999999999943)) + + + +POLYGON ((609.1722610376851890 243.5129929302678704, 609.2638333893902427 243.8213729820575395, 609.2999649881396635 244.2118341123558309, 609.0118040315680901 292.9110357729544489, 695.9481804295313623 293.3892336629322699, 697.1510625643339836 243.7934779510754595, 609.1722610376851890 243.5129929302678704)) + + + + + + + + + Polygon 2 + + +POLYGON ((513.3999999999999773 343.1000000000000227, 707.2999999999999545 344.1999999999999886, 707.0000000000000000 394.8999999999999773, 797.8999999999999773 395.3999999999999773, 799.2000000000000455 341.8000000000000114, 516.8999999999999773 340.8999999999999773, 516.7000000000000455 262.3000000000000114, 513.2000000000000455 262.3000000000000114, 513.3999999999999773 343.1000000000000227)) + + + +POLYGON ((709.1722610376851890 343.5129929302678988, 709.2638333893902427 343.8213729820575963, 709.2999649881396635 344.2118341123558594, 709.0118040315680901 392.9110357729544489, 795.9481804295313623 393.3892336629322699, 797.1510625643339836 343.7934779510754879, 709.1722610376851890 343.5129929302678988)) + + + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/bug188.xml geos-3.2.2/tests/xmltester/tests/bug188.xml --- geos-3.1.0/tests/xmltester/tests/bug188.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/bug188.xml 2009-05-07 16:36:51.000000000 +0100 @@ -0,0 +1,22 @@ + + +http://trac.osgeo.org/geos/ticket/188 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + Caused crash in RightmostEdgeFinder creating BufferSubgraphs + + +0103000000010000000B000000713D0AD7C3F9C3403D0AD7A3E8B01441295C8FC255FBC340C3F5285C0BB1144153BB8CF8AD01C44092DD2F29FEB0144148E17A14AE01C4408FC2F528FEB0144148E17A146E01C440A4703D0AF0B014411F85EB517801C44085EB51B8EFB014419A999999B9FFC34066666666CBB0144133333333F3FCC340CDCCCCCCC9B01441295C8FC2F5FBC3408FC2F528CAB014413D0AD7A3F0FBC340CDCCCCCCC9B01441713D0AD7C3F9C3403D0AD7A3E8B01441 + + + +0103000000010000000F000000693B38D7C3F9C340F428D7A3E8B0144168CCA9C255FBC3400F64275C0BB11441F72C82F8AD01C440D4982E29FEB01441501A4C14AE01C4402CC9F428FEB01441FB5951146E01C440B39F3D0AF0B01441E41853146E01C44058063D0AF0B01441C8385D146E01C44060833C0AF0B01441AA97BA517801C440699851B8EFB0144145027C99B9FFC340C0A56766CBB01441F3A43233F3FCC340E51CCECCC9B01441B94391C2F5FBC340C211F728CAB014412A4F79C2F5FBC340FDDFF628CAB014412F0869C2F5FBC340D64AF628CAB01441FD95D2A3F0FBC340CFB6CFCCC9B01441693B38D7C3F9C340F428D7A3E8B01441 + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/bug244.xml geos-3.2.2/tests/xmltester/tests/bug244.xml --- geos-3.1.0/tests/xmltester/tests/bug244.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/bug244.xml 2009-05-12 17:49:42.000000000 +0100 @@ -0,0 +1,23 @@ + + +http://trac.osgeo.org/geos/ticket/244 + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + +http://trac.osgeo.org/geos/ticket/244 + + + MULTIPOLYGON(((144.520538330078 -1.12083339691162,144.516387939453 -1.12083339691162,144.514434814453 -1.11611104011536,144.514984130859 -1.10305547714233,144.517211914062 -1.09833335876465,144.521362304688 -1.09972214698792,144.522491455078 -1.10527777671814,144.523315429688 -1.11138892173767,144.522491455078 -1.11611104011536,144.520538330078 -1.12083339691162)),((149.731903076172 -1.60333347320557,149.715515136719 -1.57861113548279,149.7099609375 -1.57027792930603,149.703308105469 -1.56361126899719,149.699127197266 -1.56083345413208,149.681915283203 -1.55722236633301,149.680541992188 -1.56277775764465,149.681915283203 -1.57527780532837,149.681365966797 -1.5813889503479,149.678588867188 -1.58555555343628,149.673034667969 -1.58694458007812,149.663299560547 -1.58277773857117,149.659423828125 -1.58000016212463,149.558013916016 -1.50055575370789,149.533325195312 -1.469722032547,149.530548095703 -1.46555542945862,149.527770996094 -1.45444440841675,149.528594970703 -1.44833326339722,149.542755126953 -1.41472220420837,149.544982910156 -1.41000008583069,149.564147949219 -1.37027788162231,149.579956054688 -1.35527777671814,149.622467041016 -1.35944437980652,149.627166748047 -1.36138892173767,149.663299560547 -1.38666677474976,149.710784912109 -1.42166662216187,149.716918945312 -1.42916655540466,149.719696044922 -1.43333315849304,149.790252685547 -1.57666683197021,149.790802001953 -1.5813889503479,149.731903076172 -1.60333347320557)),((144.517761230469 -1.39833331108093,144.506103515625 -1.38944435119629,144.503326416016 -1.38555550575256,144.505554199219 -1.38055562973022,144.516387939453 -1.38194441795349,144.519989013672 -1.38555550575256,144.521911621094 -1.39555549621582,144.517761230469 -1.39833331108093)),((142.818298339844 -1.73333311080933,142.813598632812 -1.73277759552002,142.812194824219 -1.72722220420837,142.812744140625 -1.72111105918884,142.818298339844 -1.69972205162048,142.821075439453 -1.69583320617676,142.832183837891 -1.69361114501953,142.863006591797 -1.69444441795349,142.866363525391 -1.69777774810791,142.866912841797 -1.70944428443909,142.864410400391 -1.71361112594604,142.859405517578 -1.71555542945862,142.852752685547 -1.70861101150513,142.847198486328 -1.70722222328186,142.841644287109 -1.70861101150513,142.837463378906 -1.71138882637024,142.818298339844 -1.73333311080933)),((147.391937255859 -1.96083331108093,147.399993896484 -1.96638870239258,147.430816650391 -1.9902777671814,147.434417724609 -1.99361109733582,147.44580078125 -2.00944471359253,147.448028564453 -2.01416683197021,147.447204589844 -2.0188889503479,147.439697265625 -2.06083345413208,147.437744140625 -2.06555557250977,147.426086425781 -2.06777811050415,147.275268554688 -2.1211109161377,147.255554199219 -2.14916658401489,147.239135742188 -2.16694450378418,147.22802734375 -2.17638874053955,147.212188720703 -2.18805551528931,147.207458496094 -2.19027757644653,147.201904296875 -2.19166660308838,146.980529785156 -2.1991662979126,146.893035888672 -2.18944406509399,146.8388671875 -2.18194437026978,146.798309326172 -2.16888904571533,146.793579101562 -2.16694450378418,146.726348876953 -2.16083335876465,146.571624755859 -2.23472213745117,146.568023681641 -2.23666667938232,146.563293457031 -2.23472213745117,146.5283203125 -2.20111131668091,146.524993896484 -2.19083309173584,146.518035888672 -2.1497220993042,146.518859863281 -2.14361143112183,146.578308105469 -2.00194454193115,146.580535888672 -1.99722218513489,146.583862304688 -1.99361109733582,146.638580322266 -1.97861099243164,146.844970703125 -1.95055556297302,146.857177734375 -1.94916653633118,146.869689941406 -1.94916653633118,147.093566894531 -1.96638870239258,147.099975585938 -1.96694445610046,147.118286132812 -1.96888875961304,147.164428710938 -1.98333311080933,147.203308105469 -2.003333568573,147.300811767578 -2.02527761459351,147.417755126953 -2.05055570602417,147.419982910156 -2.04583358764648,147.422760009766 -2.03472232818604,147.422760009766 -2.02916669845581,147.420532226562 -2.01083374023438,147.418579101562 -2.00583362579346,147.391937255859 -1.96083331108093)),((147.756927490234 -2.35249996185303,147.766662597656 -2.32388925552368,147.795532226562 -2.26500034332275,147.815246582031 -2.24361133575439,147.832458496094 -2.24555540084839,147.877746582031 -2.28944444656372,147.879119873047 -2.29361152648926,147.856353759766 -2.3313889503479,147.848297119141 -2.33666658401489,147.829132080078 -2.34555530548096,147.824127197266 -2.34777784347534,147.81884765625 -2.34916639328003,147.812469482422 -2.34972190856934,147.756927490234 -2.35249996185303)),((150.367736816406 -2.68666648864746,150.356353759766 -2.66805553436279,150.347473144531 -2.66333341598511,150.341064453125 -2.66249990463257,150.273315429688 -2.67277765274048,150.257476806641 -2.6777777671814,150.242462158203 -2.68305540084839,150.190521240234 -2.68583297729492,150.184143066406 -2.68527746200562,150.109405517578 -2.625,149.972473144531 -2.50111150741577,149.965789794922 -2.4941668510437,149.949127197266 -2.47638845443726,149.948577880859 -2.47166633605957,149.951354980469 -2.46749973297119,149.960784912109 -2.46000003814697,150.079956054688 -2.41416645050049,150.189697265625 -2.37722206115723,150.206085205078 -2.37444448471069,150.216369628906 -2.37777757644653,150.248016357422 -2.39000034332275,150.417205810547 -2.46055555343628,150.443298339844 -2.47583293914795,150.446075439453 -2.47972202301025,150.467193603516 -2.54472255706787,150.468017578125 -2.55777788162231,150.459686279297 -2.64833354949951,150.458312988281 -2.6536111831665,150.448852539062 -2.66472196578979,150.443298339844 -2.66611099243164,150.41943359375 -2.66249990463257,150.406921386719 -2.66388893127441,150.4013671875 -2.6652774810791,150.371887207031 -2.68388891220093,150.367736816406 -2.68666648864746)),((152.659423828125 -3.84277772903442,152.670837402344 -3.85989284515381,152.701080322266 -3.88305521011353,152.739685058594 -3.89611101150513,152.769714355469 -3.90027761459351,152.919128417969 -4.0041675567627,152.989685058594 -4.07583332061768,153.006927490234 -4.09361171722412,153.118560791016 -4.23916625976562,153.12939453125 -4.25555610656738,153.131622314453 -4.26027870178223,153.134429931641 -4.27138900756836,153.132171630859 -4.37861061096191,153.130798339844 -4.39083385467529,153.128021240234 -4.39500045776367,153.121337890625 -4.40194416046143,153.108856201172 -4.40999984741211,153.092468261719 -4.42083358764648,153.080810546875 -4.43000030517578,153.066375732422 -4.44277763366699,153.063018798828 -4.44638824462891,153.0546875 -4.45861148834229,153.04052734375 -4.48527717590332,153.039154052734 -4.49749946594238,153.039703369141 -4.50361156463623,153.041076660156 -4.5091667175293,153.043304443359 -4.51388931274414,153.046630859375 -4.51722240447998,153.059692382812 -4.52555561065674,153.066375732422 -4.53222274780273,153.077453613281 -4.54861068725586,153.079406738281 -4.58916664123535,153.077453613281 -4.60055541992188,152.980255126953 -4.7605562210083,152.974670410156 -4.76666641235352,152.910247802734 -4.82333374023438,152.891662597656 -4.82250022888184,152.743560791016 -4.67305564880371,152.735504150391 -4.66083335876465,152.733306884766 -4.6561107635498,152.693023681641 -4.55833339691162,152.681365966797 -4.5222225189209,152.664978027344 -4.4688892364502,152.662750244141 -4.4572229385376,152.666381835938 -4.45388889312744,152.678588867188 -4.44555473327637,152.681365966797 -4.44138813018799,152.692199707031 -4.39361190795898,152.69775390625 -4.36499977111816,152.69775390625 -4.35805511474609,152.694427490234 -4.19138813018799,152.693572998047 -4.18527698516846,152.691650390625 -4.18055534362793,152.603302001953 -4.00611114501953,152.581909179688 -3.96583318710327,152.538726806641 -3.90009546279907,152.512176513672 -3.8687310218811,152.491577148438 -3.85225462913513,152.374969482422 -3.7277774810791,152.359954833984 -3.70472240447998,152.357177734375 -3.69361114501953,152.356628417969 -3.6875,152.358001708984 -3.66166639328003,152.355224609375 -3.65055561065674,152.349700927734 -3.64249992370605,152.289428710938 -3.57944440841675,152.282470703125 -3.57277774810791,152.190521240234 -3.50888919830322,152.182464599609 -3.50361156463623,152.156372070312 -3.48861122131348,152.151641845703 -3.48638868331909,152.146087646484 -3.4850001335144,152.136657714844 -3.48916673660278,152.131072998047 -3.49055576324463,152.124969482422 -3.49000024795532,151.984405517578 -3.46444463729858,151.956359863281 -3.45833349227905,151.934967041016 -3.44555521011353,151.758331298828 -3.32444477081299,151.708862304688 -3.28055572509766,151.688293457031 -3.25305557250977,151.620513916016 -3.17722225189209,151.6171875 -3.17388916015625,151.608306884766 -3.16916656494141,151.574676513672 -3.1594443321228,151.532745361328 -3.14499998092651,151.493011474609 -3.13000011444092,151.483581542969 -3.12583303451538,151.462188720703 -3.11305570602417,151.455535888672 -3.1061110496521,151.452758789062 -3.10194444656372,151.450531005859 -3.09722232818604,151.449981689453 -3.08416652679443,151.448577880859 -3.07888889312744,151.44384765625 -3.06972217559814,151.438293457031 -3.06361103057861,151.417205810547 -3.05055570602417,151.369689941406 -3.02250003814697,151.281372070312 -2.97416639328003,151.237457275391 -2.95361137390137,151.214965820312 -2.94194412231445,151.150543212891 -2.89527797698975,151.122467041016 -2.86861085891724,151.119689941406 -2.86444473266602,151.113586425781 -2.8502779006958,151.110778808594 -2.84611082077026,151.106628417969 -2.84333324432373,151.004425048828 -2.78916692733765,150.999694824219 -2.78722238540649,150.930541992188 -2.76861095428467,150.923583984375 -2.76861095428467,150.903045654297 -2.77138900756836,150.876342773438 -2.77611112594604,150.861907958984 -2.78249979019165,150.832458496094 -2.78722238540649,150.819427490234 -2.7877779006958,150.754425048828 -2.77083349227905,150.750274658203 -2.76805543899536,150.729675292969 -2.74055576324463,150.730529785156 -2.7344446182251,150.733856201172 -2.7311110496521,150.747467041016 -2.71749973297119,150.752471923828 -2.71527767181396,150.763305664062 -2.7180552482605,150.824401855469 -2.71527767181396,150.874969482422 -2.71250009536743,150.88720703125 -2.71111106872559,150.891357421875 -2.70833349227905,150.894989013672 -2.70499992370605,150.896942138672 -2.70027780532837,150.885650634766 -2.6851110458374,150.884307861328 -2.67811107635498,150.876983642578 -2.65594434738159,150.875640869141 -2.65294456481934,150.873641967773 -2.65094447135925,150.867797851562 -2.64844417572021,150.861633300781 -2.64977788925171,150.856292724609 -2.65261125564575,150.853134155273 -2.65344452857971,150.838012695312 -2.64277791976929,150.831909179688 -2.64222240447998,150.822204589844 -2.6380558013916,150.792755126953 -2.61666631698608,150.805816650391 -2.56666660308838,150.807739257812 -2.56333351135254,150.811370849609 -2.55999994277954,150.817474365234 -2.559166431427,150.834686279297 -2.57083368301392,150.838012695312 -2.57416677474976,150.906524658203 -2.63594436645508,150.964691162109 -2.68722200393677,150.968841552734 -2.69000005722046,151.086639404297 -2.75027799606323,151.190246582031 -2.82611131668091,151.280822753906 -2.87083339691162,151.311370849609 -2.86999988555908,151.419128417969 -2.89805555343628,151.427185058594 -2.9036111831665,151.464416503906 -2.93499994277954,151.598022460938 -3.02750015258789,151.641937255859 -3.04805564880371,151.717742919922 -3.11555576324463,151.72607421875 -3.12805557250977,151.815246582031 -3.19777774810791,151.820526123047 -3.1991662979126,151.825531005859 -3.1972222328186,151.833587646484 -3.19166660308838,151.855529785156 -3.18611097335815,151.861907958984 -3.18694448471069,151.921905517578 -3.20333337783813,151.948852539062 -3.21083354949951,152.055816650391 -3.24777793884277,152.054412841797 -3.26000022888184,152.054412841797 -3.27361106872559,152.057739257812 -3.28388929367065,152.164703369141 -3.41111087799072,152.204406738281 -3.45444440841675,152.210510253906 -3.46055555343628,152.238006591797 -3.47833299636841,152.252471923828 -3.4844446182251,152.277191162109 -3.49472236633301,152.306640625 -3.50638914108276,152.327178955078 -3.51999998092651,152.355224609375 -3.54000043869019,152.361907958984 -3.54666709899902,152.367462158203 -3.55499982833862,152.392211914062 -3.59861087799072,152.411926269531 -3.63361120223999,152.488006591797 -3.64916658401489,152.493011474609 -3.64861106872559,152.496917724609 -3.65138864517212,152.503051757812 -3.6588888168335,152.511383056641 -3.67111110687256,152.553314208984 -3.74583339691162,152.556640625 -3.756667137146,152.555816650391 -3.76944446563721,152.549713134766 -3.78388929367065,152.546356201172 -3.79416704177856,152.549133300781 -3.79833364486694,152.573852539062 -3.8216667175293,152.577758789062 -3.82444477081299,152.582733154297 -3.82638883590698,152.603302001953 -3.83305549621582,152.659423828125 -3.84277772903442)),((149.6640625 -10.3398141860962,149.639434814453 -10.3413887023926,149.572204589844 -10.3413887023926,149.566925048828 -10.3413887023926,149.536651611328 -10.361665725708,149.335784912109 -10.307222366333,149.224975585938 -10.2761116027832,149.186645507812 -10.2600002288818,149.176361083984 -10.2563896179199,149.161102294922 -10.2511119842529,149.139984130859 -10.2449989318848,149.093292236328 -10.2341651916504,149.049407958984 -10.2424983978271,149.03857421875 -10.2449989318848,148.993835449219 -10.2605571746826,148.981628417969 -10.268611907959,148.934967041016 -10.2672233581543,148.79443359375 -10.2391662597656,148.723297119141 -10.1869449615479,148.680267333984 -10.1494445800781,148.677459716797 -10.1533336639404,148.642486572266 -10.1863880157471,148.637481689453 -10.1883344650269,148.468292236328 -10.2038879394531,148.462738037109 -10.2038879394531,148.4033203125 -10.2005558013916,148.372467041016 -10.1919441223145,148.3369140625 -10.1797218322754,148.332733154297 -10.176944732666,148.327178955078 -10.1688899993896,148.322479248047 -10.1599998474121,148.314971923828 -10.1405563354492,148.312194824219 -10.1363887786865,148.3046875 -10.130277633667,148.157562255859 -10.0737085342407,148.154418945312 -10.0791664123535,148.150543212891 -10.0952777862549,148.148315429688 -10.0999984741211,148.115509033203 -10.1216659545898,148.10302734375 -10.1297206878662,148.0888671875 -10.1358337402344,148.083312988281 -10.1372222900391,148.055236816406 -10.1433334350586,147.999694824219 -10.1519451141357,147.952453613281 -10.1458339691162,147.940795898438 -10.1211109161377,147.923034667969 -10.0980548858643,147.872192382812 -10.0475006103516,147.86328125 -10.0427780151367,147.857727050781 -10.0427780151367,147.781097412109 -10.0508327484131,147.775543212891 -10.0522232055664,147.766082763672 -10.0561103820801,147.619964599609 -9.9908332824707,147.612457275391 -9.98472213745117,147.601348876953 -9.97527694702148,147.574127197266 -9.94833374023438,147.51025390625 -9.87861061096191,147.504150390625 -9.87138748168945,147.501373291016 -9.86722183227539,147.499389648438 -9.85583305358887,147.501373291016 -9.85111045837402,147.503601074219 -9.83944320678711,147.503601074219 -9.8125,147.499389648438 -9.79638862609863,147.490509033203 -9.77138900756836,147.48828125 -9.76666641235352,147.386932373047 -9.63555717468262,147.316375732422 -9.55527877807617,147.296600341797 -9.53412532806396,147.248565673828 -9.50583457946777,147.12939453125 -9.44361114501953,147.080001831055 -9.43415546417236,147.099975585938 -9.44972229003906,147.102752685547 -9.45388793945312,147.102752685547 -9.48361015319824,147.101348876953 -9.48888778686523,147.09912109375 -9.49110984802246,147.094421386719 -9.49305534362793,147.0888671875 -9.49166679382324,147.062194824219 -9.47333335876465,147.055236816406 -9.46666526794434,147.008026123047 -9.39833450317383,147.001922607422 -9.3841667175293,146.926635742188 -9.28277778625488,146.91748046875 -9.28750038146973,146.911376953125 -9.28694534301758,146.901092529297 -9.28333282470703,146.896942138672 -9.28083419799805,146.893585205078 -9.27722358703613,146.891662597656 -9.27250099182129,146.888885498047 -9.1833324432373,146.905044555664 -9.13727760314941,146.905868530273 -9.13410949707031,146.907043457031 -9.13127708435059,146.909881591797 -9.13077735900879,146.915374755859 -9.13361072540283,146.918548583984 -9.13444423675537,146.969696044922 -9.09138870239258,146.977172851562 -9.07444381713867,146.981353759766 -9.05944442749023,146.981048583984 -9.05097389221191,146.974395751953 -9.03388977050781,146.972473144531 -9.02916717529297,146.969116210938 -9.02833366394043,146.951080322266 -9.03388977050781,146.94580078125 -9.04194450378418,146.944427490234 -9.04722213745117,146.94580078125 -9.05277824401855,146.951904296875 -9.06027793884277,146.954681396484 -9.06833267211914,146.953308105469 -9.07361030578613,146.925262451172 -9.09999847412109,146.91748046875 -9.10610961914062,146.844604492188 -9.09577751159668,146.840911865234 -9.09627723693848,146.83757019043 -9.09544467926025,146.630523681641 -9.0302791595459,146.621612548828 -9.02555656433105,146.586639404297 -8.99916648864746,146.578308105469 -8.9869441986084,146.55859375 -8.9416675567627,146.545532226562 -8.90250015258789,146.546081542969 -8.89777946472168,146.555816650391 -8.85972213745117,146.559143066406 -8.85638809204102,146.567474365234 -8.8075008392334,146.541351318359 -8.76361274719238,146.517486572266 -8.72500038146973,146.441345214844 -8.62472152709961,146.431915283203 -8.61388778686523,146.419982910156 -8.60499954223633,146.403594970703 -8.59444427490234,146.379104614258 -8.58470821380615,146.372192382812 -8.57805633544922,146.351623535156 -8.55777740478516,146.318572998047 -8.50889015197754,146.275543212891 -8.44305610656738,146.269439697266 -8.42888832092285,146.268035888672 -8.42361068725586,146.263305664062 -8.38750076293945,146.264709472656 -8.37527656555176,146.264709472656 -8.36861038208008,146.262481689453 -8.35972213745117,146.243286132812 -8.29472351074219,146.238555908203 -8.28583335876465,146.229675292969 -8.27444458007812,146.218566894531 -8.26472282409668,146.111083984375 -8.16388893127441,146.110229492188 -8.13472366333008,146.089691162109 -8.09111022949219,145.998016357422 -8.05444526672363,145.987731933594 -8.05111122131348,145.930816650391 -8.04111099243164,145.918579101562 -8.03972244262695,145.898590087891 -8.03888893127441,145.880798339844 -8.04166793823242,145.835510253906 -8.02805709838867,145.797760009766 -8.00777816772461,145.786376953125 -7.99888896942139,145.718292236328 -7.96777820587158,145.649993896484 -7.9597225189209,145.630798339844 -7.94472217559814,145.616912841797 -7.93777751922607,145.528045654297 -7.93777751922607,145.502471923828 -7.9399995803833,145.484130859375 -7.94861030578613,145.465515136719 -7.95083332061768,145.443572998047 -7.94944381713867,145.432739257812 -7.94805526733398,145.422485351562 -7.94472217559814,145.244110107422 -7.86861038208008,145.19807434082 -7.82955169677734,145.182723999023 -7.81383991241455,145.168106079102 -7.81822443008423,145.162994384766 -7.82626342773438,145.164459228516 -7.83649444580078,145.161529541016 -7.84489870071411,145.155685424805 -7.84599494934082,145.044967651367 -7.82041692733765,144.995513916016 -7.81555557250977,144.879669189453 -7.78250026702881,144.844696044922 -7.75722312927246,144.838562011719 -7.74972152709961,144.840515136719 -7.74499988555908,144.850250244141 -7.74111080169678,144.871337890625 -7.70777797698975,144.873565673828 -7.7030553817749,144.874114990234 -7.69694423675537,144.874114990234 -7.6899995803833,144.862457275391 -7.61055564880371,144.844696044922 -7.60777759552002,144.833862304688 -7.67722225189209,144.831085205078 -7.68111133575439,144.824127197266 -7.68805503845215,144.819427490234 -7.6899995803833,144.787750244141 -7.69138813018799,144.783599853516 -7.69138813018799,144.599395751953 -7.6602783203125,144.588287353516 -7.65750026702881,144.584411621094 -7.65472221374512,144.552185058594 -7.6119441986084,144.547210693359 -7.60305500030518,144.547210693359 -7.5963888168335,144.545806884766 -7.57472229003906,144.536376953125 -7.52694511413574,144.534973144531 -7.52166652679443,144.530822753906 -7.51222229003906,144.525268554688 -7.5038890838623,144.520538330078 -7.50194454193115,144.514984130859 -7.50194454193115,144.51025390625 -7.5038890838623,144.508880615234 -7.50944519042969,144.508331298828 -7.61472225189209,144.508331298828 -7.62138843536377,144.424682617188 -7.53305530548096,144.418579101562 -7.52583312988281,144.410247802734 -7.52027797698975,144.406921386719 -7.51944446563721,144.412200927734 -7.56583309173584,144.435516357422 -7.68000030517578,144.467742919922 -7.74305534362793,144.395812988281 -7.75583362579346,144.378021240234 -7.75333404541016,144.363006591797 -7.74777793884277,144.358856201172 -7.74499988555908,144.356628417969 -7.74027729034424,144.354125976562 -7.72944450378418,144.354125976562 -7.72277736663818,144.356628417969 -7.70499992370605,144.359680175781 -7.69416618347168,144.360229492188 -7.68249988555908,144.319122314453 -7.62083339691162,144.315795898438 -7.61749935150146,144.310791015625 -7.61666584014893,144.260803222656 -7.63777828216553,144.250549316406 -7.65472221374512,144.243560791016 -7.66694450378418,144.255249023438 -7.73416614532471,144.263031005859 -7.74027729034424,144.272491455078 -7.76749992370605,144.271911621094 -7.77361106872559,144.268310546875 -7.77694511413574,144.224395751953 -7.79333305358887,144.219116210938 -7.79472255706787,144.213012695312 -7.79527759552002,144.147216796875 -7.77888870239258,144.121612548828 -7.77166652679443,143.911926269531 -7.69694423675537,143.899719238281 -7.68861103057861,143.848037719727 -7.63533353805542,143.838531494141 -7.62833404541016,143.829193115234 -7.61733341217041,143.822525024414 -7.60766696929932,143.812713623047 -7.58883380889893,143.810211181641 -7.58316707611084,143.806549072266 -7.57049989700317,143.773040771484 -7.51555633544922,143.768310546875 -7.506667137146,143.758605957031 -7.50250053405762,143.664825439453 -7.46764850616455,143.691345214844 -7.51222229003906,143.755126953125 -7.58950042724609,143.839416503906 -7.71527767181396,143.845520019531 -7.73611068725586,143.852447509766 -7.77027797698975,143.85302734375 -7.78305530548096,143.851898193359 -7.79527759552002,143.85302734375 -7.80749988555908,143.854400634766 -7.81305503845215,143.896362304688 -7.88027763366699,143.901641845703 -7.88833332061768,143.9580078125 -7.97862243652344,143.957183837891 -7.98472213745117,143.955230712891 -7.9894437789917,143.893585205078 -8.03694534301758,143.889434814453 -8.03972244262695,143.884704589844 -8.04166793823242,143.847747802734 -8.04583358764648,143.833862304688 -8.04583358764648,143.755249023438 -8.04111099243164,143.750274658203 -8.03888893127441,143.743560791016 -8.03222274780273,143.738006591797 -8.02416801452637,143.724395751953 -8.01055717468262,143.719421386719 -8.00833511352539,143.661376953125 -7.99138832092285,143.631896972656 -7.98666667938232,143.618835449219 -7.98611068725586,143.597473144531 -7.99222183227539,143.588562011719 -7.99694442749023,143.568908691406 -8.0041675567627,143.56575012207 -8.00483322143555,143.546081542969 -8.00638961791992,143.501647949219 -7.9961109161377,143.485778808594 -7.99138832092285,143.481628417969 -7.98888874053955,143.474975585938 -7.98194408416748,143.473571777344 -7.97305583953857,143.460510253906 -7.93861103057861,143.454406738281 -7.92416667938232,143.444122314453 -7.91333389282227,143.439971923828 -7.91055583953857,143.435241699219 -7.90861129760742,143.424133300781 -7.90722274780273,143.362457275391 -7.8997220993042,143.358306884766 -7.90250015258789,143.356903076172 -7.90805530548096,143.356903076172 -7.91333389282227,143.360504150391 -7.91694450378418,143.446624755859 -7.98055553436279,143.538635253906 -8.05216693878174,143.541458129883 -8.05333423614502,143.543975830078 -8.05500030517578,143.547958374023 -8.05900001525879,143.628295898438 -8.19361114501953,143.630523681641 -8.19833374023438,143.632446289062 -8.20999908447266,143.631896972656 -8.21611022949219,143.629669189453 -8.22749900817871,143.625518798828 -8.2369441986084,143.622192382812 -8.24055480957031,143.611907958984 -8.24388885498047,143.56884765625 -8.24722099304199,143.554962158203 -8.24722099304199,143.512481689453 -8.2458324432373,143.469421386719 -8.24527740478516,143.382446289062 -8.25,143.373565673828 -8.25055694580078,143.338562011719 -8.2538890838623,143.234954833984 -8.27500152587891,143.178039550781 -8.28666687011719,143.080810546875 -8.30833435058594,143.069976806641 -8.31083297729492,143.049407958984 -8.31777763366699,143.034149169922 -8.32305526733398,143.023864746094 -8.3266658782959,143 -8.33666610717773,142.991058349609 -8.34138870239258,142.979949951172 -8.34416580200195,142.973297119141 -8.34416580200195,142.967193603516 -8.3436107635498,142.961639404297 -8.34222221374512,142.94580078125 -8.33749961853027,142.941070556641 -8.33527755737305,142.908874511719 -8.31916618347168,142.882171630859 -8.30500030517578,142.865509033203 -8.29416656494141,142.845794677734 -8.28666687011719,142.799987792969 -8.27500152587891,142.776641845703 -8.27083396911621,142.696350097656 -8.26749992370605,142.654693603516 -8.27361106872559,142.638031005859 -8.27777862548828,142.595794677734 -8.29000091552734,142.575256347656 -8.29666709899902,142.565521240234 -8.30083274841309,142.548309326172 -8.31083297729492,142.540802001953 -8.31694412231445,142.533874511719 -8.32388877868652,142.529968261719 -8.3266658782959,142.521087646484 -8.33138847351074,142.511383056641 -8.33527755737305,142.505828857422 -8.33666610717773,142.485229492188 -8.33666610717773,142.466918945312 -8.33611106872559,142.442749023438 -8.33277702331543,142.437469482422 -8.33138847351074,142.427764892578 -8.32722282409668,142.419708251953 -8.32194519042969,142.411926269531 -8.31583404541016,142.403213500977 -8.28638935089111,142.396194458008 -8.26155567169189,142.395050048828 -8.25055599212646,142.394195556641 -8.23922157287598,142.39453125 -8.23155498504639,142.394195556641 -8.2278881072998,142.386657714844 -8.19361114501953,142.383880615234 -8.18972206115723,142.379943847656 -8.18694496154785,142.338562011719 -8.16638946533203,142.327758789062 -8.16388893127441,142.316925048828 -8.16388893127441,142.221618652344 -8.1733341217041,142.2119140625 -8.17722320556641,142.140808105469 -8.22222137451172,142.13720703125 -8.22555541992188,142.13525390625 -8.23027801513672,142.135803222656 -8.23638725280762,142.144714355469 -8.23916625976562,142.155822753906 -8.24055480957031,142.163879394531 -8.23638725280762,142.172210693359 -8.23083305358887,142.182464599609 -8.22083282470703,142.186645507812 -8.21805572509766,142.195526123047 -8.21333312988281,142.223571777344 -8.20027732849121,142.228302001953 -8.19833374023438,142.309143066406 -8.18083381652832,142.314147949219 -8.18000030517578,142.324401855469 -8.1833324432373,142.338012695312 -8.19027709960938,142.355224609375 -8.19916725158691,142.361358642578 -8.20638847351074,142.374572753906 -8.26111125946045,142.377410888672 -8.2746114730835,142.377075195312 -8.28644466400146,142.377410888672 -8.29327774047852,142.382446289062 -8.31916618347168,142.388031005859 -8.32722282409668,142.408599853516 -8.34749984741211,142.439422607422 -8.37138748168945,142.44970703125 -8.37472152709961,142.466918945312 -8.37805557250977,142.473022460938 -8.37888717651367,142.486633300781 -8.37888717651367,142.493011474609 -8.37805557250977,142.512756347656 -8.37194442749023,142.522491455078 -8.36805534362793,142.5263671875 -8.36527633666992,142.540252685547 -8.35166549682617,142.548309326172 -8.34611129760742,142.556640625 -8.34083366394043,142.590240478516 -8.3266658782959,142.619689941406 -8.31500053405762,142.635528564453 -8.31027793884277,142.641662597656 -8.31083297729492,142.734680175781 -8.32250022888184,142.771636962891 -8.33194351196289,142.776641845703 -8.33388900756836,142.783325195312 -8.34083366394043,142.788879394531 -8.3488883972168,142.799133300781 -8.35916519165039,142.807464599609 -8.36444473266602,142.906097412109 -8.42361068725586,142.917205810547 -8.42611122131348,142.9580078125 -8.43166732788086,143.01025390625 -8.44111061096191,143.04443359375 -8.44777870178223,143.049987792969 -8.44916725158691,143.086364746094 -8.45999908447266,143.096618652344 -8.4636116027832,143.110229492188 -8.47027778625488,143.213012695312 -8.5494441986084,143.220520019531 -8.55555534362793,143.239135742188 -8.57138824462891,143.246063232422 -8.57805633544922,143.249389648438 -8.58138847351074,143.281646728516 -8.61861038208008,143.374664306641 -8.741943359375,143.392761230469 -8.77027893066406,143.395263671875 -8.7813892364502,143.406921386719 -8.96194458007812,143.405548095703 -8.96749877929688,143.403045654297 -8.97138786315918,143.384429931641 -8.99388885498047,143.3671875 -9.01083374023438,143.363006591797 -9.01361274719238,143.331634521484 -9.02833366394043,143.321899414062 -9.03250122070312,143.316650390625 -9.03388977050781,143.310241699219 -9.03305625915527,143.299407958984 -9.02361106872559,143.289154052734 -9.02027893066406,143.283050537109 -9.01972198486328,143.269989013672 -9.02027893066406,143.248016357422 -9.02555656433105,143.232177734375 -9.0302791595459,143.174133300781 -9.04861068725586,143.047210693359 -9.09000015258789,143.04248046875 -9.09194374084473,143.039154052734 -9.09527778625488,143.030822753906 -9.10750007629395,143.023864746094 -9.11416625976562,142.902770996094 -9.19750022888184,142.842468261719 -9.2327766418457,142.807464599609 -9.25222396850586,142.797760009766 -9.25638961791992,142.788299560547 -9.26027870178223,142.769134521484 -9.2672233581543,142.752471923828 -9.27138900756836,142.723846435547 -9.28333282470703,142.66552734375 -9.32055473327637,142.654693603516 -9.32999992370605,142.638885498047 -9.3347225189209,142.625244140625 -9.3347225189209,142.582733154297 -9.33083343505859,142.571624755859 -9.32805633544922,142.543029785156 -9.30916595458984,142.532470703125 -9.29888916015625,142.5244140625 -9.28694534301758,142.521087646484 -9.28333282470703,142.517486572266 -9.28000068664551,142.497741699219 -9.26527786254883,142.477172851562 -9.25166702270508,142.425811767578 -9.22805595397949,142.2099609375 -9.16500091552734,142.203033447266 -9.16500091552734,142.054412841797 -9.18722152709961,141.944702148438 -9.20694351196289,141.721343994141 -9.21444511413574,141.615783691406 -9.23611068725586,141.608856201172 -9.23611068725586,141.522491455078 -9.22111129760742,141.509429931641 -9.21388816833496,141.501922607422 -9.20777702331543,141.495788574219 -9.20027732849121,141.48828125 -9.19416618347168,141.460784912109 -9.17388916015625,141.448577880859 -9.16583442687988,141.429412841797 -9.15750122070312,141.388305664062 -9.14416694641113,141.375244140625 -9.14333343505859,141.323028564453 -9.14999961853027,141.312194824219 -9.15277862548828,141.307464599609 -9.15500068664551,141.294982910156 -9.16305541992188,141.284698486328 -9.17305564880371,141.266387939453 -9.18888854980469,141.226623535156 -9.21722221374512,141.213592529297 -9.22472190856934,141.176361083984 -9.23388862609863,141.160797119141 -9.23749923706055,141.122467041016 -9.23194313049316,141.117462158203 -9.22999954223633,141.109405517578 -9.22472190856934,141.090789794922 -9.20916557312012,141.033874511719 -9.15694427490234,141.013305664062 -9.13666725158691,141.007019042969 -9.12846755981445,141.006134033203 -6.90478563308716,141.006134033203 -6.89328384399414,140.998565673828 -6.89388942718506,140.990509033203 -6.89944458007812,140.983581542969 -6.9061107635498,140.978851318359 -6.90694427490234,140.949401855469 -6.9036111831665,140.902770996094 -6.85583305358887,140.875244140625 -6.79611110687256,140.871063232422 -6.7863883972168,140.859405517578 -6.72861099243164,140.858856201172 -6.6783332824707,140.863006591797 -6.63138866424561,140.891082763672 -6.60333347320557,140.895263671875 -6.60055541992188,140.898040771484 -6.59666728973389,140.947204589844 -6.5,140.951354980469 -6.48361110687256,140.950805664062 -6.47749996185303,140.948577880859 -6.47277736663818,140.94580078125 -6.4686107635498,140.928039550781 -6.45083332061768,140.932189941406 -6.43444442749023,140.963592529297 -6.3386116027832,140.967742919922 -6.33583354949951,140.973297119141 -6.33444499969482,140.985504150391 -6.33305549621582,141.006134033203 -6.33292484283447,141.006103515625 -6,141.006103515625 -4.90555477142334,141.006103515625 -2.61388921737671,141.002471923828 -2.60708522796631,141.029968261719 -2.59277772903442,141.034698486328 -2.59083318710327,141.039428710938 -2.59000015258789,141.046356201172 -2.59000015258789,141.199127197266 -2.61805534362793,141.204681396484 -2.61944437026978,141.214141845703 -2.62222194671631,141.270538330078 -2.64555549621582,141.273864746094 -2.65583324432373,141.278045654297 -2.6652774810791,141.284149169922 -2.67277765274048,141.345794677734 -2.70777797698975,141.369689941406 -2.7180552482605,141.380798339844 -2.72083330154419,141.410797119141 -2.72499990463257,141.426635742188 -2.72972202301025,141.436370849609 -2.73388910293579,141.568572998047 -2.79388904571533,141.608856201172 -2.8125,141.704132080078 -2.86250019073486,141.840515136719 -2.93694448471069,141.881622314453 -2.96444463729858,141.889984130859 -2.96999979019165,141.894714355469 -2.9719443321228,141.913879394531 -2.9719443321228,141.931091308594 -2.9686107635498,141.935791015625 -2.96638870239258,141.962463378906 -2.95888900756836,141.973571777344 -2.95611095428467,141.991912841797 -2.95416688919067,142.003601074219 -2.95611095428467,142.011932373047 -2.96166658401489,142.066070556641 -3.00833368301392,142.076904296875 -3.01777791976929,142.077758789062 -3.02055549621582,142.124969482422 -3.05944442749023,142.252471923828 -3.10472249984741,142.551910400391 -3.21833324432373,142.663604736328 -3.24777793884277,142.946624755859 -3.33249998092651,142.992462158203 -3.34833335876465,143.032745361328 -3.36277770996094,143.041076660156 -3.36416673660278,143.073181152344 -3.36020636558533,143.087738037109 -3.35583353042603,143.093841552734 -3.35500001907349,143.106079101562 -3.35388898849487,143.123840332031 -3.35388898849487,143.172760009766 -3.35722255706787,143.194702148438 -3.3600001335144,143.209686279297 -3.3652777671814,143.2138671875 -3.36805534362793,143.229400634766 -3.37972211837769,143.23828125 -3.38444471359253,143.255554199219 -3.3880558013916,143.336364746094 -3.40166664123535,143.346069335938 -3.40166664123535,143.370788574219 -3.40166664123535,143.384429931641 -3.40305519104004,143.408325195312 -3.40638875961304,143.442749023438 -3.41194438934326,143.516082763672 -3.43444442749023,143.520812988281 -3.43666648864746,143.529144287109 -3.44194412231445,143.536651611328 -3.44805526733398,143.569427490234 -3.47555541992188,143.598846435547 -3.51444482803345,143.602172851562 -3.5247220993042,143.605804443359 -3.54194450378418,143.609130859375 -3.54527807235718,143.61328125 -3.54805564880371,143.648864746094 -3.56722259521484,143.731079101562 -3.60416698455811,143.768310546875 -3.61083364486694,143.790802001953 -3.61083364486694,143.794982910156 -3.61222219467163,143.798858642578 -3.61500024795532,143.949127197266 -3.73333311080933,143.955230712891 -3.73944425582886,143.9580078125 -3.74361133575439,143.964691162109 -3.7572226524353,143.966064453125 -3.76277780532837,143.976348876953 -3.77972221374512,143.981903076172 -3.78805589675903,143.988861083984 -3.79500007629395,143.993011474609 -3.79777812957764,144.016937255859 -3.81055545806885,144.243011474609 -3.87277746200562,144.249114990234 -3.87361097335815,144.253875732422 -3.87138891220093,144.255249023438 -3.86611127853394,144.253875732422 -3.86194467544556,144.253875732422 -3.85500001907349,144.258026123047 -3.84555530548096,144.275268554688 -3.809166431427,144.278594970703 -3.80583333969116,144.284973144531 -3.80527782440186,144.338287353516 -3.80249977111816,144.375244140625 -3.80249977111816,144.511657714844 -3.82083368301392,144.515808105469 -3.82361125946045,144.532196044922 -3.84611082077026,144.534973144531 -3.8502779006958,144.549987792969 -3.87611103057861,144.552185058594 -3.88111114501953,144.547210693359 -3.8938889503479,144.545257568359 -3.90416669845581,144.54248046875 -3.93444442749023,144.543853759766 -3.95361137390137,144.547210693359 -3.96388912200928,144.551361083984 -3.9719443321228,144.571350097656 -3.99194431304932,144.591064453125 -4.00611114501953,144.608306884766 -4.0130558013916,144.613861083984 -4.01444530487061,144.653594970703 -4.0130558013916,144.673309326172 -4.01361179351807,144.678863525391 -4.01500034332275,144.729675292969 -4.0313892364502,144.766662597656 -4.04638862609863,144.850250244141 -4.09305572509766,144.858306884766 -4.09833335876465,144.876342773438 -4.11361122131348,144.978302001953 -4.22277736663818,144.981628417969 -4.22638893127441,144.986633300781 -4.23499965667725,144.991333007812 -4.24388885498047,144.994689941406 -4.25277805328369,144.996063232422 -4.26250076293945,145.004974365234 -4.28166675567627,145.033050537109 -4.33555603027344,145.036651611328 -4.33888912200928,145.054962158203 -4.35194396972656,145.089965820312 -4.37166595458984,145.094696044922 -4.37388896942139,145.157196044922 -4.38277721405029,145.228576660156 -4.3880558013916,145.253051757812 -4.37861061096191,145.293579101562 -4.37666606903076,145.305236816406 -4.37722206115723,145.333862304688 -4.38944435119629,145.338012695312 -4.39222240447998,145.451080322266 -4.49416637420654,145.459411621094 -4.50444507598877,145.527191162109 -4.59249973297119,145.614135742188 -4.70027828216553,145.620513916016 -4.70777797698975,145.675811767578 -4.76194477081299,145.679412841797 -4.76527786254883,145.69384765625 -4.77694511413574,145.735504150391 -4.80277729034424,145.780822753906 -4.92777729034424,145.813598632812 -5.06555557250977,145.813598632812 -5.07250022888184,145.786926269531 -5.23138904571533,145.765808105469 -5.26361179351807,145.738861083984 -5.30527782440186,145.724395751953 -5.41222190856934,145.723846435547 -5.42527770996094,145.725250244141 -5.430832862854,145.734130859375 -5.4491662979126,145.747741699219 -5.46972179412842,145.754699707031 -5.47638893127441,145.766387939453 -5.48527717590332,145.782745361328 -5.4894437789917,145.787750244141 -5.48999977111816,145.793029785156 -5.48999977111816,145.872467041016 -5.48611068725586,145.930816650391 -5.47722244262695,145.935516357422 -5.47638893127441,145.963592529297 -5.47305583953857,145.976623535156 -5.47638893127441,146.082183837891 -5.51250076293945,146.174682617188 -5.55138874053955,146.194702148438 -5.55888843536377,146.289154052734 -5.58888912200928,146.376342773438 -5.59916687011719,146.439971923828 -5.59861087799072,146.445526123047 -5.59861087799072,146.465240478516 -5.60472202301025,146.47021484375 -5.60666751861572,146.474090576172 -5.60944557189941,146.531188964844 -5.65468120574951,146.580535888672 -5.69472217559814,146.605224609375 -5.71777820587158,146.640808105469 -5.74388885498047,146.653045654297 -5.75194454193115,146.662750244141 -5.75611114501953,146.688873291016 -5.76416683197021,146.714691162109 -5.76972198486328,146.770782470703 -5.79138946533203,146.775787353516 -5.79361248016357,146.783843994141 -5.79889011383057,146.786071777344 -5.80388927459717,146.796310424805 -5.83441781997681,146.875213623047 -5.82555675506592,146.894958496094 -5.82888984680176,146.923004150391 -5.84194564819336,146.930511474609 -5.84805679321289,146.946319580078 -5.86638927459717,146.953826904297 -5.88611221313477,146.956604003906 -5.89027881622314,146.962707519531 -5.897780418396,146.992156982422 -5.91611289978027,147.014129638672 -5.92833518981934,147.041625976562 -5.94222354888916,147.046325683594 -5.94416904449463,147.102722167969 -5.96611404418945,147.112152099609 -5.96667003631592,147.228820800781 -5.97223472595215,147.234924316406 -5.97140216827393,147.24658203125 -5.96251487731934,147.269683837891 -5.93807125091553,147.274658203125 -5.93612670898438,147.284942626953 -5.93529415130615,147.423278808594 -5.96058177947998,147.466613769531 -5.97085952758789,147.476867675781 -5.97419261932373,147.484375 -5.98030376434326,147.573303222656 -6.05527782440186,147.590515136719 -6.07222270965576,147.641937255859 -6.13694477081299,147.786651611328 -6.30249977111816,147.826354980469 -6.3372220993042,147.830261230469 -6.34694480895996,147.850250244141 -6.41166687011719,147.863861083984 -6.45916652679443,147.866638183594 -6.47000026702881,147.869964599609 -6.65472221374512,147.869415283203 -6.66083335876465,147.866058349609 -6.67083358764648,147.845520019531 -6.69138813018799,147.838562011719 -6.69805526733398,147.819427490234 -6.71305561065674,147.810516357422 -6.71777820587158,147.770812988281 -6.72611141204834,147.759155273438 -6.72805595397949,147.568023681641 -6.75194454193115,147.416381835938 -6.73499965667725,147.305541992188 -6.74583339691162,147.219696044922 -6.74638843536377,147.199981689453 -6.74583339691162,147.188873291016 -6.74305534362793,147.180816650391 -6.74027729034424,147.174682617188 -6.73555564880371,147.166381835938 -6.72333335876465,147.160247802734 -6.71722221374512,147.149993896484 -6.71388912200928,147.0888671875 -6.71444511413574,146.971069335938 -6.74305534362793,146.961364746094 -6.74722194671631,146.948577880859 -6.79805564880371,146.944976806641 -6.81527709960938,146.943023681641 -6.84027767181396,146.941650390625 -6.90444469451904,146.944976806641 -6.95388889312744,146.946350097656 -6.95944499969482,146.948577880859 -6.96416664123535,146.955230712891 -6.97111129760742,147.0244140625 -7.03694438934326,147.037475585938 -7.04444408416748,147.130798339844 -7.20361137390137,147.140258789062 -7.22111129760742,147.144439697266 -7.23083305358887,147.146362304688 -7.24916648864746,147.145812988281 -7.26194477081299,147.141662597656 -7.27166652679443,147.140258789062 -7.27694511413574,147.137481689453 -7.29472255706787,147.139709472656 -7.32527828216553,147.1533203125 -7.38305473327637,147.154693603516 -7.38861179351807,147.178588867188 -7.46388912200928,147.210784912109 -7.49027729034424,147.216369628906 -7.49166679382324,147.297210693359 -7.5038890838623,147.303314208984 -7.50472259521484,147.320526123047 -7.50527858734131,147.332183837891 -7.50333404541016,147.3369140625 -7.50527858734131,147.418579101562 -7.56722259521484,147.457733154297 -7.5977783203125,147.641357421875 -7.77555561065674,147.666656494141 -7.79111099243164,147.670806884766 -7.79388904571533,147.693298339844 -7.82583332061768,147.696075439453 -7.83527755737305,147.701629638672 -7.87055492401123,147.701629638672 -7.8841667175293,147.700805664062 -7.89027786254883,147.701629638672 -7.90333366394043,147.703033447266 -7.90861129760742,147.710510253906 -7.92166614532471,147.715240478516 -7.92916679382324,147.718566894531 -7.93249988555908,147.731628417969 -7.9399995803833,147.741333007812 -7.94388866424561,147.756927490234 -7.94861030578613,147.776916503906 -7.93638801574707,147.782470703125 -7.93527698516846,147.804412841797 -7.93527698516846,147.854949951172 -7.93527698516846,147.866638183594 -7.93722152709961,147.876342773438 -7.94111061096191,147.888031005859 -7.94999980926514,147.911926269531 -7.96722221374512,147.935791015625 -7.98277759552002,147.939422607422 -7.98472213745117,147.974395751953 -7.99610900878906,147.979675292969 -8.03694534301758,147.982452392578 -8.04777908325195,147.985229492188 -8.05194473266602,147.9921875 -8.0586109161377,148.004425048828 -8.06666564941406,148.009979248047 -8.06666564941406,148.0263671875 -8.06277847290039,148.114685058594 -8.05527877807617,148.13525390625 -8.06611061096191,148.194976806641 -8.25194549560547,148.19970703125 -8.26749992370605,148.205810546875 -8.29527854919434,148.206634521484 -8.30138969421387,148.207183837891 -8.31083297729492,148.207183837891 -8.32055473327637,148.206634521484 -8.34000015258789,148.210784912109 -8.39305686950684,148.220245361328 -8.51027870178223,148.222198486328 -8.53388977050781,148.230529785156 -8.55972290039062,148.235229492188 -8.56861114501953,148.2421875 -8.57527732849121,148.271087646484 -8.59444427490234,148.300537109375 -8.61138916015625,148.318298339844 -8.60861015319824,148.327178955078 -8.60638809204102,148.331359863281 -8.60638809204102,148.347198486328 -8.61138916015625,148.351898193359 -8.61333274841309,148.376617431641 -8.62944412231445,148.443023681641 -8.67500114440918,148.44580078125 -8.67888832092285,148.478576660156 -8.73305511474609,148.479949951172 -8.73861122131348,148.479949951172 -8.75889015197754,148.489685058594 -8.84027671813965,148.494415283203 -8.86666488647461,148.530822753906 -8.99305534362793,148.534698486328 -9.00277900695801,148.536926269531 -9.00750160217285,148.5888671875 -9.07027816772461,148.604125976562 -9.08250045776367,148.614410400391 -9.0858325958252,148.695251464844 -9.10222244262695,148.719970703125 -9.10472106933594,148.725250244141 -9.10472106933594,148.753601074219 -9.10416603088379,148.782196044922 -9.10138893127441,148.842468261719 -9.09055519104004,149.067199707031 -9.04111099243164,149.071350097656 -9.03861236572266,149.137756347656 -9.00666809082031,149.221343994141 -8.99860954284668,149.255828857422 -8.99777793884277,149.259979248047 -8.99916648864746,149.309967041016 -9.01694488525391,149.314697265625 -9.01889038085938,149.316650390625 -9.02166748046875,149.322204589844 -9.03777885437012,149.338012695312 -9.12972068786621,149.328308105469 -9.15277862548828,149.325531005859 -9.15694427490234,149.316070556641 -9.16777801513672,149.311920166016 -9.17055511474609,149.291351318359 -9.18388938903809,149.181640625 -9.34916687011719,149.1796875 -9.35361099243164,149.178863525391 -9.35972213745117,149.178863525391 -9.37333297729492,149.181091308594 -9.38500022888184,149.184417724609 -9.39500045776367,149.208312988281 -9.45249938964844,149.219970703125 -9.47472190856934,149.227752685547 -9.48749923706055,149.231079101562 -9.49110984802246,149.234405517578 -9.49444389343262,149.243286132812 -9.49916648864746,149.266662597656 -9.51000022888184,149.271636962891 -9.5119457244873,149.2783203125 -9.5119457244873,149.28857421875 -9.50861167907715,149.301635742188 -9.50777816772461,149.307189941406 -9.5091667175293,149.348846435547 -9.52194595336914,149.437469482422 -9.57138824462891,149.439422607422 -9.59111022949219,149.440795898438 -9.59638786315918,149.444122314453 -9.59972190856934,149.454406738281 -9.60305404663086,149.662200927734 -9.60722160339355,149.739410400391 -9.60166549682617,149.746337890625 -9.60166549682617,149.758026123047 -9.6038875579834,149.764984130859 -9.60916519165039,149.771087646484 -9.61666488647461,149.775268554688 -9.61944389343262,149.780548095703 -9.6208324432373,149.874389648438 -9.6422233581543,149.880798339844 -9.64305686950684,149.9033203125 -9.64361190795898,149.910247802734 -9.64361190795898,149.94580078125 -9.6422233581543,149.956634521484 -9.63972282409668,149.960784912109 -9.6369457244873,149.982727050781 -9.63138771057129,150.008880615234 -9.63138771057129,150.049133300781 -9.67944526672363,150.051361083984 -9.68416595458984,150.053314208984 -9.68888854980469,150.056915283203 -9.70999908447266,150.056915283203 -9.71527671813965,150.055541992188 -9.72055435180664,150.051910400391 -9.72416687011719,149.988861083984 -9.75111198425293,149.926635742188 -9.76944541931152,149.863586425781 -9.78222274780273,149.857452392578 -9.78277778625488,149.852752685547 -9.78222274780273,149.841644287109 -9.77944564819336,149.835510253906 -9.77888870239258,149.808013916016 -9.7813892364502,149.769714355469 -9.7902774810791,149.764984130859 -9.79222297668457,149.739410400391 -9.80777740478516,149.727172851562 -9.81583404541016,149.720245361328 -9.82277679443359,149.717468261719 -9.8266658782959,149.716369628906 -9.83222198486328,149.717468261719 -9.83749961853027,149.721069335938 -9.84749984741211,149.723022460938 -9.85249900817871,149.76220703125 -9.90166664123535,149.873840332031 -10.0169448852539,149.914154052734 -10.0488891601562,149.926635742188 -10.0569438934326,149.935516357422 -10.0616655349731,149.982727050781 -10.081111907959,149.98828125 -10.0825004577637,149.994415283203 -10.0819444656372,150.003326416016 -10.0772228240967,150.013610839844 -10.0736103057861,150.019714355469 -10.073055267334,150.184143066406 -10.0933322906494,150.189147949219 -10.0952777862549,150.236358642578 -10.1283321380615,150.259704589844 -10.1527786254883,150.29052734375 -10.1830558776855,150.298583984375 -10.1883344650269,150.308319091797 -10.1924991607666,150.352752685547 -10.1999988555908,150.382171630859 -10.2047214508057,150.400268554688 -10.2072219848633,150.579681396484 -10.2411098480225,150.61328125 -10.2755565643311,150.618011474609 -10.2775001525879,150.63525390625 -10.280834197998,150.641357421875 -10.2813892364502,150.647491455078 -10.280834197998,150.775543212891 -10.2613906860352,150.780548095703 -10.2591667175293,150.803588867188 -10.2486095428467,150.815521240234 -10.2397212982178,150.81884765625 -10.2363872528076,150.824981689453 -10.2316665649414,150.829681396484 -10.2294454574585,150.844116210938 -10.2247219085693,150.862731933594 -10.2227764129639,150.869415283203 -10.2227764129639,150.877746582031 -10.2283334732056,150.878295898438 -10.2316665649414,150.870788574219 -10.2377777099609,150.861907958984 -10.2424983978271,150.727752685547 -10.3125,150.641937255859 -10.3494434356689,150.636383056641 -10.3508319854736,150.631072998047 -10.3508319854736,150.602172851562 -10.3502769470215,150.596069335938 -10.3494434356689,150.547485351562 -10.3355560302734,150.496063232422 -10.3186111450195,150.438568115234 -10.3036117553711,150.421905517578 -10.3011112213135,150.415802001953 -10.3002777099609,150.406372070312 -10.3044452667236,150.369110107422 -10.3219451904297,150.358306884766 -10.3313884735107,150.356353759766 -10.3361110687256,150.348571777344 -10.3758316040039,150.346618652344 -10.3875007629395,150.352172851562 -10.3952789306641,150.356903076172 -10.3975009918213,150.568572998047 -10.4627780914307,150.6494140625 -10.4755554199219,150.657745361328 -10.4811115264893,150.663299560547 -10.4891662597656,150.689971923828 -10.5502777099609,150.691925048828 -10.5550003051758,150.691345214844 -10.5611114501953,150.688568115234 -10.5652770996094,150.680267333984 -10.5774993896484,150.675537109375 -10.5794448852539,150.568023681641 -10.6219444274902,150.556365966797 -10.6238880157471,150.522766113281 -10.6191654205322,150.492736816406 -10.6191654205322,150.481628417969 -10.6219444274902,150.477447509766 -10.6244430541992,150.47412109375 -10.6277770996094,150.44384765625 -10.6588897705078,150.428314208984 -10.6877784729004,150.424133300781 -10.6905555725098,150.369964599609 -10.6872215270996,150.268585205078 -10.6886119842529,150.209686279297 -10.7005558013916,150.113006591797 -10.6674995422363,150.099975585938 -10.6575012207031,150.059417724609 -10.6258316040039,150.028045654297 -10.5894432067871,150.016937255859 -10.5733337402344,150.013031005859 -10.5705547332764,150.007476806641 -10.5691661834717,149.91552734375 -10.5577774047852,149.898590087891 -10.5597229003906,149.896362304688 -10.5625,149.893585205078 -10.5633344650269,149.888305664062 -10.5619449615479,149.862182617188 -10.5544452667236,149.852752685547 -10.5502777099609,149.850524902344 -10.5469455718994,149.875244140625 -10.5100002288818,149.878570556641 -10.5066680908203,149.883331298828 -10.5044460296631,149.901916503906 -10.5025005340576,149.942474365234 -10.5025005340576,149.964416503906 -10.5025005340576,149.968292236328 -10.5052795410156,149.971069335938 -10.5094451904297,149.97802734375 -10.5161113739014,149.989685058594 -10.5180568695068,150.016937255859 -10.5113906860352,150.022491455078 -10.5100002288818,150.031372070312 -10.5052795410156,150.039703369141 -10.5,150.078857421875 -10.4627780914307,150.064422607422 -10.4561100006104,149.990234375 -10.4372215270996,149.866363525391 -10.3980560302734,149.806091308594 -10.3677768707275,149.785522460938 -10.3583335876465,149.758026123047 -10.3461112976074,149.747741699219 -10.3427772521973,149.723846435547 -10.3394432067871,149.683868408203 -10.3380546569824,149.6640625 -10.3398141860962)),((152.004425048828 -2.67000007629395,151.972747802734 -2.66888904571533,151.961090087891 -2.66805553436279,151.957733154297 -2.66472196578979,151.955535888672 -2.65999984741211,151.953582763672 -2.64833354949951,151.954406738281 -2.64222240447998,151.958312988281 -2.63249969482422,151.972747802734 -2.60583353042603,151.979675292969 -2.59888887405396,151.983856201172 -2.59611082077026,151.995239257812 -2.59555530548096,152.000823974609 -2.5969443321228,152.010528564453 -2.60111141204834,152.018585205078 -2.60638904571533,152.022216796875 -2.6100001335144,152.035247802734 -2.63111114501953,152.037200927734 -2.63583326339722,152.038024902344 -2.64222240447998,152.029693603516 -2.66111087799072,152.026916503906 -2.6652774810791,152.022216796875 -2.66750001907349,152.004425048828 -2.67000007629395)),((151.959136962891 -2.84611082077026,151.946624755859 -2.84472227096558,151.941345214844 -2.84333324432373,151.937194824219 -2.8405556678772,151.931640625 -2.83249998092651,151.921905517578 -2.80777788162231,151.920806884766 -2.80222225189209,151.928863525391 -2.7186107635498,151.9296875 -2.71250009536743,151.932464599609 -2.70833349227905,151.939147949219 -2.70833349227905,151.944702148438 -2.70972204208374,151.985778808594 -2.72499990463257,151.989959716797 -2.72749996185303,151.996612548828 -2.7344446182251,152.006378173828 -2.74555540084839,152.009155273438 -2.74944448471069,152.009704589844 -2.75583362579346,152.011932373047 -2.79055595397949,152.011932373047 -2.81805562973022,152.009704589844 -2.82277774810791,152.002197265625 -2.82888889312744,151.959136962891 -2.84611082077026)),((152.063873291016 -3.00222253799438,152.059143066406 -3,152.035247802734 -2.98277759552002,152.0283203125 -2.97555541992188,151.960510253906 -2.88722229003906,151.959686279297 -2.8808331489563,151.959686279297 -2.86861085891724,151.960510253906 -2.86250019073486,151.963287353516 -2.85833358764648,151.973571777344 -2.84805536270142,151.978302001953 -2.84611082077026,151.984954833984 -2.84611082077026,152.072204589844 -2.92138910293579,152.078857421875 -2.9283332824707,152.083862304688 -2.93694448471069,152.087188720703 -2.9472222328186,152.089141845703 -2.95888900756836,152.088562011719 -2.96527767181396,152.086639404297 -2.96999979019165,152.073577880859 -2.99805545806885,152.069976806641 -3.00138902664185,152.063873291016 -3.00222253799438)),((150.773590087891 -2.98555564880371,150.768035888672 -2.9844446182251,150.766082763672 -2.97944402694702,150.773040771484 -2.97249984741211,150.788024902344 -2.96027803421021,150.795532226562 -2.95416688919067,150.870788574219 -2.91249990463257,150.879119873047 -2.9088888168335,150.903045654297 -2.90833330154419,150.908599853516 -2.90833330154419,150.913299560547 -2.91027784347534,150.941345214844 -2.9219446182251,151.021087646484 -2.96305561065674,151.023590087891 -2.96722221374512,151.021636962891 -2.9719443321228,151.003875732422 -2.98166656494141,150.999114990234 -2.98361110687256,150.992736816406 -2.9844446182251,150.882446289062 -2.9686107635498,150.872192382812 -2.96527767181396,150.855804443359 -2.9622220993042,150.838012695312 -2.95972204208374,150.831909179688 -2.96027803421021,150.773590087891 -2.98555564880371)),((152.640808105469 -3.23000001907349,152.636108398438 -3.2277774810791,152.605224609375 -3.20388889312744,152.577178955078 -3.17722225189209,152.538879394531 -3.1061110496521,152.537475585938 -3.10055589675903,152.537475585938 -3.09499979019165,152.539428710938 -3.09027767181396,152.553863525391 -3.07055568695068,152.558013916016 -3.06777811050415,152.590240478516 -3.05194425582886,152.599700927734 -3.04805564880371,152.606079101562 -3.04722261428833,152.640258789062 -3.04305553436279,152.644989013672 -3.04527807235718,152.648590087891 -3.04861116409302,152.667755126953 -3.12944412231445,152.668853759766 -3.14861106872559,152.668853759766 -3.15527772903442,152.667755126953 -3.16083335876465,152.654693603516 -3.21638870239258,152.6533203125 -3.22166633605957,152.646362304688 -3.22861099243164,152.640808105469 -3.23000001907349)),((153.343292236328 -3.41666650772095,153.265258789062 -3.40722227096558,153.262481689453 -3.40444421768188,153.263885498047 -3.39888906478882,153.269989013672 -3.39277791976929,153.301635742188 -3.36944437026978,153.333587646484 -3.37138891220093,153.337188720703 -3.375,153.346069335938 -3.38666677474976,153.348022460938 -3.39138889312744,153.347473144531 -3.39750003814697,153.345245361328 -3.41194438934326,153.343292236328 -3.41666650772095)),((154.818572998047 -3.53027772903442,154.795257568359 -3.44138860702515,154.794708251953 -3.43249988555908,154.796081542969 -3.4283332824707,154.799407958984 -3.42500019073486,154.825531005859 -3.4713888168335,154.830261230469 -3.48027753829956,154.833862304688 -3.50416707992554,154.833038330078 -3.51027822494507,154.818572998047 -3.53027772903442)),((153.242462158203 -3.49944448471069,153.237182617188 -3.49805545806885,153.211090087891 -3.48861122131348,153.206909179688 -3.48583316802979,153.192474365234 -3.47277736663818,153.19384765625 -3.4686107635498,153.197204589844 -3.46527767181396,153.220520019531 -3.44888877868652,153.22412109375 -3.4466667175293,153.22802734375 -3.44555521011353,153.233581542969 -3.4466667175293,153.239959716797 -3.45444440841675,153.255554199219 -3.47972202301025,153.259704589844 -3.48916673660278,153.26025390625 -3.49527788162231,153.258331298828 -3.49888896942139,153.242462158203 -3.49944448471069)),((153.639434814453 -4.14083385467529,153.634429931641 -4.13861179351807,153.588012695312 -4.10583305358887,153.585235595703 -4.10194396972656,153.584411621094 -4.09583377838135,153.585235595703 -4.08944416046143,153.587188720703 -4.0847225189209,153.602172851562 -4.05888843536377,153.629669189453 -4.0313892364502,153.633880615234 -4.0286111831665,153.653045654297 -4.02055549621582,153.658599853516 -4.01916694641113,153.662750244141 -4.02194499969482,153.664703369141 -4.02666664123535,153.671630859375 -4.08000087738037,153.672210693359 -4.08611106872559,153.671630859375 -4.10472202301025,153.670257568359 -4.10999965667725,153.650268554688 -4.1380558013916,153.645538330078 -4.14027786254883,153.639434814453 -4.14083385467529)),((145.057739257812 -4.13527774810791,145.050811767578 -4.13527774810791,145.041351318359 -4.13249969482422,145.037200927734 -4.13000011444092,145.031646728516 -4.12166595458984,145.027770996094 -4.11222171783447,145.0263671875 -4.10666656494141,145.022216796875 -4.07666683197021,145.0263671875 -4.06694507598877,145.031646728516 -4.05888843536377,145.036651611328 -4.05666637420654,145.06884765625 -4.04500007629395,145.079132080078 -4.04777812957764,145.095520019531 -4.05888843536377,145.101623535156 -4.06638813018799,145.107177734375 -4.07527828216553,145.110504150391 -4.09222221374512,145.109954833984 -4.09833335876465,145.094696044922 -4.12444400787354,145.092193603516 -4.12833309173584,145.088012695312 -4.13138866424561,145.083312988281 -4.13333320617676,145.057739257812 -4.13527774810791)),((150.74609375 -6.13554954528809,150.729675292969 -6.14666748046875,150.724975585938 -6.14861106872559,150.707183837891 -6.15555572509766,150.668853759766 -6.16833305358887,150.663879394531 -6.16916656494141,150.661102294922 -6.16499996185303,150.659149169922 -6.15333366394043,150.657196044922 -6.14861106872559,150.652191162109 -6.14666748046875,150.63525390625 -6.14861106872559,150.509704589844 -6.23499965667725,150.484954833984 -6.25833415985107,150.480255126953 -6.26722240447998,150.473571777344 -6.27388954162598,150.468566894531 -6.2761116027832,150.406372070312 -6.29305553436279,150.400268554688 -6.29361152648926,150.222747802734 -6.28833293914795,150.211639404297 -6.2761116027832,150.188293457031 -6.25833415985107,150.184143066406 -6.25555610656738,150.180816650391 -6.25500011444092,150.170532226562 -6.25694465637207,150.080810546875 -6.28000068664551,150.038879394531 -6.29916667938232,150.018310546875 -6.32361125946045,150.016387939453 -6.30388832092285,150.014434814453 -6.29916667938232,150.010803222656 -6.29583358764648,149.98828125 -6.27722263336182,149.984130859375 -6.2747220993042,149.978576660156 -6.27333354949951,149.972473144531 -6.27388954162598,149.894989013672 -6.29249954223633,149.889709472656 -6.29249954223633,149.847198486328 -6.29249954223633,149.844421386719 -6.29249954223633,149.842193603516 -6.29249954223633,149.686645507812 -6.30527782440186,149.634704589844 -6.30805492401123,149.609405517578 -6.29249954223633,149.605224609375 -6.28972244262695,149.574981689453 -6.26500034332275,149.571624755859 -6.26166725158691,149.555236816406 -6.22694492340088,149.539428710938 -6.19777774810791,149.510803222656 -6.15277767181396,149.489410400391 -6.12611103057861,149.482452392578 -6.11944389343262,149.467468261719 -6.10972213745117,149.444976806641 -6.09805583953857,149.341339111328 -6.06083297729492,149.335784912109 -6.05944442749023,149.311920166016 -6.05722236633301,149.289978027344 -6.06277751922607,149.163879394531 -6.11250019073486,149.138580322266 -6.14861106872559,149.131072998047 -6.15472221374512,149.119415283203 -6.15694427490234,149.069427490234 -6.16416645050049,149.063018798828 -6.16499996185303,149.056915283203 -6.16416645050049,149.052185058594 -6.16222190856934,149.049407958984 -6.15805530548096,149.048034667969 -6.15277767181396,149.048034667969 -6.14583396911621,149.050262451172 -6.14111137390137,149.054962158203 -6.13916683197021,149.061096191406 -6.13833332061768,149.067199707031 -6.14583396911621,149.071350097656 -6.14861106872559,149.075531005859 -6.14583396911621,149.079681396484 -6.13638877868652,149.078857421875 -6.11944389343262,149.071899414062 -6.09277820587158,149.055541992188 -6.04444408416748,149.039978027344 -6.03694438934326,148.983032226562 -6.01972198486328,148.942474365234 -6.00833415985107,148.920654296875 -6.00002384185791,148.882995605469 -5.98166465759277,148.878814697266 -5.94748497009277,148.876068115234 -5.9436616897583,148.764434814453 -5.86499118804932,148.704650878906 -5.84858131408691,148.699554443359 -5.84745788574219,148.589721679688 -5.82837104797363,148.528045654297 -5.82837104797363,148.401672363281 -5.78336238861084,148.391967773438 -5.77940940856934,148.3876953125 -5.77660369873047,148.366607666016 -5.75592136383057,148.359771728516 -5.74921321868896,148.339324951172 -5.7143726348877,148.330780029297 -5.69515228271484,148.323089599609 -5.67537689208984,148.321655273438 -5.66980838775635,148.316467285156 -5.62802600860596,148.354675292969 -5.50166702270508,148.358001708984 -5.49277782440186,148.359954833984 -5.48805522918701,148.370239257812 -5.4777774810791,148.378570556641 -5.47249984741211,148.428588867188 -5.45111179351807,148.450531005859 -5.45527839660645,148.504699707031 -5.48333263397217,148.511657714844 -5.48999977111816,148.519714355469 -5.50250053405762,148.618286132812 -5.50500011444092,148.883605957031 -5.49694442749023,148.961639404297 -5.47361087799072,148.973297119141 -5.47166633605957,148.985778808594 -5.47305583953857,149.000823974609 -5.47833347320557,149.122192382812 -5.52416706085205,149.126892089844 -5.5261116027832,149.189147949219 -5.55833339691162,149.209686279297 -5.57194519042969,149.2138671875 -5.57472229003906,149.216064453125 -5.57944488525391,149.220764160156 -5.60611152648926,149.270812988281 -5.59444427490234,149.310516357422 -5.58611106872559,149.425537109375 -5.56722259521484,149.549133300781 -5.53861141204834,149.566925048828 -5.52888870239258,149.581909179688 -5.52333354949951,149.611358642578 -5.51861095428467,149.668304443359 -5.51944446563721,149.680541992188 -5.55416679382324,149.680541992188 -5.561110496521,149.685516357422 -5.56305503845215,149.692199707031 -5.56305503845215,149.710784912109 -5.5625,149.875244140625 -5.5363883972168,149.880798339844 -5.53499984741211,149.887481689453 -5.53166675567627,149.916381835938 -5.51194477081299,149.928588867188 -5.50361156463623,149.956085205078 -5.47638893127441,149.964416503906 -5.46416664123535,149.981353759766 -5.4333324432373,149.984130859375 -5.42249965667725,149.983581542969 -5.41638851165771,149.981353759766 -5.41166687011719,149.97802734375 -5.40833377838135,149.973297119141 -5.4061107635498,149.954132080078 -5.40472221374512,149.950531005859 -5.40138912200928,149.923034667969 -5.36055564880371,149.917755126953 -5.35222244262695,149.918304443359 -5.34611129760742,149.928588867188 -5.31527709960938,149.934692382812 -5.30722236633301,150.002777099609 -5.16944408416748,150.015533447266 -5.05749988555908,150.019714355469 -5.04777812957764,150.029968261719 -5.03083324432373,150.034149169922 -5.02805614471436,150.0888671875 -5.00777816772461,150.095794677734 -5.00777816772461,150.121337890625 -5.00972270965576,150.126617431641 -5.01111125946045,150.154693603516 -5.02388954162598,150.181640625 -5.03888893127441,150.19384765625 -5.04722213745117,150.199401855469 -5.05527782440186,150.203582763672 -5.0649995803833,150.204956054688 -5.07055568695068,150.203582763672 -5.07583332061768,150.184143066406 -5.09833335876465,150.180816650391 -5.10194396972656,150.164428710938 -5.11277770996094,150.154693603516 -5.11694431304932,150.132720947266 -5.12222194671631,150.101348876953 -5.13194370269775,150.091644287109 -5.13583374023438,150.082733154297 -5.14138889312744,150.072479248047 -5.15166664123535,150.064422607422 -5.16388893127441,150.061645507812 -5.17472171783447,150.04248046875 -5.3086109161377,150.062194824219 -5.36388874053955,150.121337890625 -5.51250076293945,150.123291015625 -5.51722240447998,150.143859863281 -5.5377779006958,150.164428710938 -5.55138874053955,150.178863525391 -5.55749988555908,150.184143066406 -5.55888843536377,150.282196044922 -5.57055568695068,150.291076660156 -5.57055568695068,150.296630859375 -5.569167137146,150.300811767578 -5.56638813018799,150.306915283203 -5.55888843536377,150.318023681641 -5.54194450378418,150.319976806641 -5.53722190856934,150.323303222656 -5.53361129760742,150.326904296875 -5.53027820587158,150.345245361328 -5.51472282409668,150.412475585938 -5.45861148834229,150.422760009766 -5.45527839660645,150.488555908203 -5.44694423675537,150.511108398438 -5.4505558013916,150.574127197266 -5.47638893127441,150.578308105469 -5.47916698455811,150.595520019531 -5.4961109161377,150.601623535156 -5.51722240447998,150.611083984375 -5.54194450378418,150.61328125 -5.54666709899902,150.616058349609 -5.55083274841309,150.624114990234 -5.55611038208008,150.644134521484 -5.55694389343262,150.677917480469 -5.55129909515381,150.693298339844 -5.54749965667725,150.698852539062 -5.54611110687256,150.914154052734 -5.4908332824707,150.924407958984 -5.48722171783447,150.979125976562 -5.44499969482422,151.003051757812 -5.42111110687256,151.011383056641 -5.4088888168335,151.015533447266 -5.39944458007812,151.018859863281 -5.38916683197021,151.023040771484 -5.37277698516846,151.023040771484 -5.3658332824707,151.018310546875 -5.34333324432373,151.018310546875 -5.33666706085205,151.018859863281 -5.33027839660645,151.0244140625 -5.28805541992188,151.028594970703 -5.27166652679443,151.038879394531 -5.24111080169678,151.046936035156 -5.22194480895996,151.066070556641 -5.18583297729492,151.071075439453 -5.17694473266602,151.084686279297 -5.1563892364502,151.096923828125 -5.14277839660645,151.26220703125 -4.98638820648193,151.266387939453 -4.98388862609863,151.357452392578 -4.94749927520752,151.441070556641 -4.93666648864746,151.513610839844 -4.93805503845215,151.604675292969 -4.96805572509766,151.608856201172 -4.97083377838135,151.614959716797 -4.97000026702881,151.641082763672 -4.95499992370605,151.648590087891 -4.94888877868652,151.654144287109 -4.94083309173584,151.676086425781 -4.90805530548096,151.684417724609 -4.88890266418457,151.687744140625 -4.86499977111816,151.682189941406 -4.81444454193115,151.658325195312 -4.61638832092285,151.630798339844 -4.50638961791992,151.62744140625 -4.49749946594238,151.598022460938 -4.43805503845215,151.592468261719 -4.43000030517578,151.588287353516 -4.42722225189209,151.547210693359 -4.35999965667725,151.501373291016 -4.23916625976562,151.5 -4.23388862609863,151.5 -4.22694492340088,151.503326416016 -4.21666622161865,151.508331298828 -4.20777797698975,151.511657714844 -4.20444488525391,151.536926269531 -4.18194389343262,151.783050537109 -4.20583343505859,151.841918945312 -4.22472190856934,151.852172851562 -4.22833347320557,151.857727050781 -4.23638820648193,151.859680175781 -4.24111080169678,151.861083984375 -4.24666690826416,151.863861083984 -4.27138900756836,151.869964599609 -4.28555583953857,151.878295898438 -4.29805564880371,151.884429931641 -4.30555534362793,151.895263671875 -4.3149995803833,151.904144287109 -4.32000064849854,151.9638671875 -4.33555603027344,151.969421386719 -4.33694458007812,151.974975585938 -4.33694458007812,151.984405517578 -4.33277797698975,151.991912841797 -4.32666683197021,152.138580322266 -4.20444488525391,152.141357421875 -4.20027828216553,152.145538330078 -4.19083309173584,152.150817871094 -4.17555522918701,152.153594970703 -4.16472244262695,152.153594970703 -4.15777778625488,152.156372070312 -4.15388870239258,152.161926269531 -4.14833354949951,152.166076660156 -4.14555549621582,152.171356201172 -4.14416694641113,152.177764892578 -4.14500045776367,152.185241699219 -4.14888954162598,152.214691162109 -4.16611099243164,152.235229492188 -4.2072229385376,152.239410400391 -4.21666622161865,152.2421875 -4.2344446182251,152.2421875 -4.24111080169678,152.240783691406 -4.24666690826416,152.238006591797 -4.24805545806885,152.226898193359 -4.25083351135254,152.202453613281 -4.24666690826416,152.198303222656 -4.24388885498047,152.195526123047 -4.23999977111816,152.194122314453 -4.2344446182251,152.194122314453 -4.22749996185303,152.192749023438 -4.22222232818604,152.189971923828 -4.21805572509766,152.186645507812 -4.21472263336182,152.181640625 -4.21527767181396,152.176910400391 -4.21749973297119,152.172760009766 -4.22694492340088,152.16943359375 -4.24388885498047,152.170806884766 -4.28222274780273,152.171356201172 -4.28833293914795,152.172210693359 -4.29333305358887,152.174133300781 -4.29666709899902,152.1796875 -4.30472183227539,152.186645507812 -4.31166648864746,152.190521240234 -4.31444454193115,152.195526123047 -4.31638813018799,152.263885498047 -4.33500003814697,152.286651611328 -4.33972263336182,152.305236816406 -4.34166717529297,152.355804443359 -4.34305572509766,152.401641845703 -4.61083316802979,152.403045654297 -4.62305545806885,152.405242919922 -4.66888904571533,152.405822753906 -4.68888854980469,152.394989013672 -4.76111125946045,152.389434814453 -4.78305530548096,152.386108398438 -4.79333305358887,152.336090087891 -4.87527751922607,152.333312988281 -4.87916660308838,152.294128417969 -4.92916679382324,152.268035888672 -4.95777797698975,152.241333007812 -4.9844446182251,152.233306884766 -4.98999977111816,152.161102294922 -5.00694465637207,152.157196044922 -5.00694465637207,152.123565673828 -4.99944400787354,152.112457275391 -4.99666690826416,152.088562011719 -4.98638820648193,152.083038330078 -4.98499965667725,152.050262451172 -4.97972202301025,151.996612548828 -4.97277736663818,151.990509033203 -4.97222232818604,151.984954833984 -4.97361087799072,151.978302001953 -4.98027801513672,151.974975585938 -4.98388862609863,151.970794677734 -4.993332862854,151.968017578125 -5.0041675567627,151.966644287109 -5.02333354949951,151.964691162109 -5.10472202301025,151.969970703125 -5.14833354949951,151.97412109375 -5.15777778625488,151.979675292969 -5.16583347320557,151.993286132812 -5.17555522918701,152.069427490234 -5.23499965667725,152.07275390625 -5.23833274841309,152.118011474609 -5.29222202301025,152.124114990234 -5.29972171783447,152.129669189453 -5.30777740478516,152.144134521484 -5.34138870239258,152.145538330078 -5.34666728973389,152.147491455078 -5.36388874053955,152.144134521484 -5.37416648864746,152.131072998047 -5.40222263336182,152.123565673828 -5.41638851165771,152.096069335938 -5.4572229385376,151.972747802734 -5.53111171722412,151.968566894531 -5.53361129760742,151.841918945312 -5.59722232818604,151.825531005859 -5.60111141204834,151.818572998047 -5.60111141204834,151.808319091797 -5.5977783203125,151.779418945312 -5.58555603027344,151.771362304688 -5.58000087738037,151.759155273438 -5.55138874053955,151.752777099609 -5.54388904571533,151.748565673828 -5.54111099243164,151.705535888672 -5.53111171722412,151.699401855469 -5.53027820587158,151.491638183594 -5.52833366394043,151.473297119141 -5.53027820587158,151.467742919922 -5.53166675567627,151.459411621094 -5.53583335876465,151.454132080078 -5.54111099243164,151.44384765625 -5.58555603027344,151.444427490234 -5.59166717529297,151.402770996094 -5.75137805938721,151.384704589844 -5.80720043182373,151.317779541016 -5.84993076324463,151.165649414062 -5.95807075500488,151.003051757812 -6.02250003814697,150.940795898438 -6.0286111831665,150.855804443359 -6.04083347320557,150.811920166016 -6.07638931274414,150.812744140625 -6.08944416046143,150.793304443359 -6.11805534362793,150.775543212891 -6.13916683197021,150.771636962891 -6.14166736602783,150.74609375 -6.13554954528809)),((154.153869628906 -4.44222164154053,154.128570556641 -4.3841667175293,154.126617431641 -4.37944412231445,154.128021240234 -4.37388896942139,154.132720947266 -4.37166595458984,154.140808105469 -4.37055492401123,154.150543212891 -4.37444400787354,154.152770996094 -4.37944412231445,154.1533203125 -4.3855562210083,154.155242919922 -4.43805503845215,154.153869628906 -4.44222164154053)),((145.951354980469 -4.76444530487061,145.944427490234 -4.76444530487061,145.93359375 -4.76194477081299,145.918579101562 -4.75638961791992,145.898590087891 -4.74194431304932,145.891662597656 -4.73527717590332,145.875244140625 -4.69694423675537,145.873840332031 -4.69138813018799,145.872467041016 -4.67249965667725,145.873840332031 -4.66694450378418,145.892486572266 -4.6094446182251,145.8994140625 -4.59583377838135,145.904693603516 -4.58777809143066,145.914978027344 -4.57750034332275,145.966369628906 -4.53305530548096,145.970520019531 -4.53027820587158,145.975250244141 -4.52833366394043,145.981628417969 -4.52750015258789,146.011657714844 -4.5494441986084,146.026916503906 -4.56166648864746,146.053588867188 -4.5963888168335,146.055541992188 -4.60138893127441,146.054138183594 -4.66138935089111,146.04052734375 -4.70916652679443,146.037750244141 -4.71333408355713,146.027465820312 -4.72361087799072,146.019989013672 -4.72972202301025,145.994415283203 -4.74555492401123,145.961639404297 -4.76111125946045,145.951354980469 -4.76444530487061)),((159.513305664062 -4.58166694641113,159.511383056641 -4.57666683197021,159.515533447266 -4.53972244262695,159.518859863281 -4.5363883972168,159.522216796875 -4.55083274841309,159.523040771484 -4.56388854980469,159.519714355469 -4.57388973236084,159.516937255859 -4.57805633544922,159.513305664062 -4.58166694641113)),((149.552459716797 -4.72083377838135,149.546356201172 -4.72027778625488,149.475799560547 -4.71138954162598,149.470245361328 -4.71000003814697,149.465515136719 -4.70777797698975,149.461364746094 -4.70527839660645,149.457733154297 -4.70166683197021,149.455810546875 -4.69694423675537,149.454406738281 -4.68472194671631,149.455810546875 -4.67916679382324,149.468017578125 -4.66416645050049,149.506652832031 -4.64777851104736,149.512756347656 -4.64694499969482,149.518859863281 -4.64777851104736,149.529968261719 -4.65055561065674,149.540252685547 -4.65388870239258,149.543579101562 -4.65722274780273,149.549133300781 -4.66555595397949,149.559967041016 -4.68194389343262,149.563293457031 -4.69222164154053,149.564147949219 -4.70527839660645,149.562744140625 -4.71055603027344,149.560516357422 -4.71527767181396,149.557189941406 -4.7188892364502,149.552459716797 -4.72083377838135)),((146.240509033203 -4.85805511474609,146.234405517578 -4.85750007629395,146.215789794922 -4.85138893127441,146.2119140625 -4.84861087799072,146.201629638672 -4.83833312988281,146.199401855469 -4.83361148834229,146.198028564453 -4.82805633544922,146.200256347656 -4.81638813018799,146.202178955078 -4.81166648864746,146.215789794922 -4.79111099243164,146.219970703125 -4.78833293914795,146.232177734375 -4.78833293914795,146.238555908203 -4.79055595397949,146.241333007812 -4.79333305358887,146.256927490234 -4.81166648864746,146.262481689453 -4.81972217559814,146.263885498047 -4.82527828216553,146.263885498047 -4.83083343505859,146.261932373047 -4.83555603027344,146.250823974609 -4.85472202301025,146.246612548828 -4.85750007629395,146.240509033203 -4.85805511474609)),((149.152191162109 -4.92361068725586,149.133026123047 -4.91555595397949,149.128845214844 -4.9127779006958,149.122741699219 -4.90527820587158,149.118560791016 -4.89555549621582,149.118011474609 -4.88944435119629,149.119415283203 -4.8841667175293,149.122192382812 -4.88138866424561,149.156921386719 -4.86694431304932,149.161926269531 -4.86638832092285,149.165802001953 -4.86777782440186,149.175537109375 -4.87805557250977,149.178314208984 -4.88194370269775,149.181640625 -4.89222240447998,149.178863525391 -4.89638900756836,149.156921386719 -4.92305564880371,149.152191162109 -4.92361068725586)),((154.63720703125 -5.45861148834229,154.618011474609 -5.43138885498047,154.5869140625 -5.34472274780273,154.565795898438 -5.27666664123535,154.5302734375 -5.13388919830322,154.532196044922 -5.12222194671631,154.541076660156 -5.10388851165771,154.546630859375 -5.09555530548096,154.558319091797 -5.08000087738037,154.598846435547 -5.03083324432373,154.605529785156 -5.02388954162598,154.620513916016 -5.01861095428467,154.63916015625 -5.01638889312744,154.646087646484 -5.01638889312744,154.6513671875 -5.01777839660645,154.658874511719 -5.02388954162598,154.665802001953 -5.03083324432373,154.671356201172 -5.03888893127441,154.726898193359 -5.19722175598145,154.728302001953 -5.20277786254883,154.728302001953 -5.21638870239258,154.69384765625 -5.41833305358887,154.692474365234 -5.42388916015625,154.687194824219 -5.43194389343262,154.675537109375 -5.44083309173584,154.63720703125 -5.45861148834229)),((147.135528564453 -5.45111179351807,147.121887207031 -5.44444370269775,147.009979248047 -5.35499954223633,147.008026123047 -5.3502779006958,147.002471923828 -5.30388832092285,147.008026123047 -5.25888919830322,147.009979248047 -5.24722194671631,147.013610839844 -5.23833274841309,147.017761230469 -5.23555564880371,147.109405517578 -5.19333267211914,147.121063232422 -5.19111061096191,147.128570556641 -5.19194412231445,147.134979248047 -5.19527721405029,147.191070556641 -5.248610496521,147.211639404297 -5.26916694641113,147.228851318359 -5.36388874053955,147.229949951172 -5.42111110687256,147.224670410156 -5.42944431304932,147.220520019531 -5.43194389343262,147.158874511719 -5.44833278656006,147.1533203125 -5.44972133636475,147.135528564453 -5.45111179351807)),((147.596618652344 -5.36305522918701,147.591918945312 -5.36111068725586,147.567199707031 -5.33916664123535,147.563873291016 -5.33583354949951,147.561645507812 -5.33111190795898,147.560516357422 -5.31888961791992,147.561645507812 -5.31333351135254,147.563873291016 -5.3086109161377,147.57080078125 -5.30166625976562,147.583038330078 -5.29361152648926,147.591918945312 -5.2902774810791,147.602172851562 -5.28805541992188,147.609130859375 -5.28805541992188,147.620788574219 -5.2902774810791,147.625518798828 -5.29222202301025,147.628845214844 -5.29555511474609,147.640533447266 -5.31666660308838,147.642761230469 -5.3216667175293,147.643310546875 -5.32777786254883,147.642761230469 -5.33388900756836,147.640533447266 -5.3386116027832,147.626892089844 -5.35222244262695,147.602172851562 -5.3619441986084,147.596618652344 -5.36305522918701)),((148.114685058594 -5.4688892364502,148.087463378906 -5.45527839660645,148.079132080078 -5.44972133636475,148.077178955078 -5.44499969482422,148.073028564453 -5.43000030517578,148.071624755859 -5.4244441986084,148.072204589844 -5.41833305358887,148.084686279297 -5.38972282409668,148.090789794922 -5.38222217559814,148.099700927734 -5.3774995803833,148.117462158203 -5.3841667175293,148.122192382812 -5.38638877868652,148.136657714844 -5.39944458007812,148.139434814453 -5.40333366394043,148.143585205078 -5.41305541992188,148.144989013672 -5.41833305358887,148.145538330078 -5.43833255767822,148.143585205078 -5.44972133636475,148.138031005859 -5.45805549621582,148.133880615234 -5.46083354949951,148.125793457031 -5.4661111831665,148.120788574219 -5.46833324432373,148.114685058594 -5.4688892364502)),((155.404083251953 -6,155.41552734375 -6.07638931274414,155.418853759766 -6.08666706085205,155.428588867188 -6.11111068725586,155.430541992188 -6.1158332824707,155.432739257812 -6.12083339691162,155.477172851562 -6.16916656494141,155.490783691406 -6.18277740478516,155.499114990234 -6.18805503845215,155.562744140625 -6.21749973297119,155.577178955078 -6.22361087799072,155.582733154297 -6.22500038146973,155.5888671875 -6.22416687011719,155.614959716797 -6.22000026702881,155.767761230469 -6.35583305358887,155.772491455078 -6.35777759552002,155.795257568359 -6.36250019073486,155.809692382812 -6.36861038208008,155.813598632812 -6.37138843536377,155.832733154297 -6.39861106872559,155.909698486328 -6.51222229003906,155.917755126953 -6.52444458007812,155.921905517578 -6.53416633605957,155.965789794922 -6.70555591583252,155.967193603516 -6.71111106872559,155.967742919922 -6.71722221374512,155.966644287109 -6.72277736663818,155.948028564453 -6.77583312988281,155.940521240234 -6.78861141204834,155.918579101562 -6.80777740478516,155.913024902344 -6.80916595458984,155.909698486328 -6.80555534362793,155.908874511719 -6.7994441986084,155.890533447266 -6.77972221374512,155.860778808594 -6.77500057220459,155.854675292969 -6.77444458007812,155.848571777344 -6.77500057220459,155.823852539062 -6.77777767181396,155.816375732422 -6.78055572509766,155.775268554688 -6.81444454193115,155.748565673828 -6.84249973297119,155.742462158203 -6.84999942779541,155.719696044922 -6.875,155.713012695312 -6.88194370269775,155.707458496094 -6.88333320617676,155.69384765625 -6.88333320617676,155.623840332031 -6.868332862854,155.558868408203 -6.85249996185303,155.4921875 -6.83027839660645,155.47802734375 -6.82416725158691,155.444976806641 -6.80916595458984,155.342742919922 -6.74361133575439,155.3388671875 -6.74111080169678,155.335235595703 -6.73750019073486,155.239959716797 -6.62249946594238,155.192749023438 -6.56055545806885,155.201629638672 -6.53472232818604,155.207183837891 -6.53472232818604,155.2099609375 -6.53055572509766,155.216064453125 -6.51638889312744,155.224975585938 -6.47749996185303,155.232452392578 -6.44416618347168,155.233306884766 -6.43805503845215,155.233306884766 -6.4244441986084,155.230529785156 -6.36305522918701,155.226348876953 -6.34694480895996,155.218841552734 -6.32916736602783,155.214141845703 -6.32027816772461,155.204406738281 -6.3086109161377,155.190795898438 -6.29500007629395,155.187194824219 -6.29166698455811,155.174987792969 -6.28333282470703,155.127746582031 -6.2761116027832,155.101623535156 -6.27722263336182,155.063293457031 -6.25694561004639,154.994110107422 -6.21666622161865,154.981628417969 -6.20861148834229,154.972198486328 -6.19777774810791,154.969970703125 -6.19277763366699,154.888580322266 -6.07916736602783,154.880249023438 -6.07361125946045,154.823577880859 -6.02805614471436,154.755645751953 -5.95617389678955,154.746643066406 -5.94450378417969,154.744384765625 -5.93978023529053,154.700469970703 -5.78020095825195,154.698577880859 -5.76851844787598,154.699432373047 -5.7623987197876,154.71826171875 -5.6700611114502,154.753601074219 -5.51805591583252,154.79052734375 -5.47916698455811,154.794128417969 -5.48250007629395,154.882446289062 -5.54333305358887,154.920806884766 -5.54999923706055,154.961090087891 -5.54666709899902,154.967468261719 -5.54611110687256,155.073577880859 -5.56166648864746,155.162353515625 -5.73234081268311,155.216064453125 -5.86872386932373,155.268798828125 -5.88423919677734,155.277679443359 -5.88895511627197,155.365020751953 -5.95777797698975,155.371643066406 -5.96472263336182,155.400543212891 -5.99583339691162,155.404083251953 -6)),((147.990478515625 -5.85603713989258,147.983520507812 -5.82075119018555,147.982116699219 -5.81519317626953,147.974609375 -5.79546737670898,147.972381591797 -5.79074478149414,147.968475341797 -5.78796863555908,147.945220947266 -5.77992534637451,147.93359375 -5.7777099609375,147.927490234375 -5.77854824066162,147.922790527344 -5.78049659729004,147.865112304688 -5.74775314331055,147.802154541016 -5.67277145385742,147.793273925781 -5.66138458251953,147.769958496094 -5.62221908569336,147.766052246094 -5.61277484893799,147.765228271484 -5.60666275024414,147.761108398438 -5.52833366394043,147.761932373047 -5.5222225189209,147.7802734375 -5.49416637420654,147.783874511719 -5.4908332824707,147.814697265625 -5.48472213745117,147.841918945312 -5.48999977111816,147.852172851562 -5.49361133575439,148.008605957031 -5.57611179351807,148.020812988281 -5.58416652679443,148.040802001953 -5.59861087799072,148.044128417969 -5.60194396972656,148.065307617188 -5.62758445739746,148.074279785156 -5.64482402801514,148.078460693359 -5.65427875518799,148.080444335938 -5.66595458984375,148.078552246094 -5.69124603271484,148.076629638672 -5.70347595214844,148.072540283203 -5.72654151916504,148.067840576172 -5.74905109405518,148.061492919922 -5.77711772918701,148.057586669922 -5.78656482696533,148.017150878906 -5.84463882446289,148.000762939453 -5.85269927978516,147.990478515625 -5.85603713989258)),((149.048034667969 -6.09555530548096,149.043304443359 -6.09333324432373,149.043853759766 -6.0886116027832,149.045257568359 -6.0872220993042,149.054138183594 -6.08388900756836,149.058319091797 -6.08666706085205,149.057739257812 -6.09138870239258,149.053588867188 -6.09416675567627,149.048034667969 -6.09555530548096)),((143.994415283203 -7.82583332061768,143.984680175781 -7.8230562210083,143.943572998047 -7.80277729034424,143.934692382812 -7.79805564880371,143.923583984375 -7.78861141204834,143.91748046875 -7.78111171722412,143.914703369141 -7.77694511413574,143.877746582031 -7.7186107635498,143.875793457031 -7.71388912200928,143.877166748047 -7.7097225189209,143.88134765625 -7.70694446563721,143.886657714844 -7.70833396911621,143.959411621094 -7.74222183227539,143.966918945312 -7.74833297729492,143.979125976562 -7.76333427429199,144.000549316406 -7.78999996185303,144.008026123047 -7.80277729034424,144.009429931641 -7.80833339691162,144.008605957031 -7.81416606903076,144.006652832031 -7.819167137146,143.999694824219 -7.82444477081299,143.994415283203 -7.82583332061768)),((145.193572998047 -7.86722183227539,145.186645507812 -7.86722183227539,145.182464599609 -7.86444473266602,145.180541992188 -7.86111068725586,145.177764892578 -7.83666706085205,145.178314208984 -7.83055591583252,145.182464599609 -7.82777786254883,145.185241699219 -7.83055591583252,145.191345214844 -7.84083366394043,145.197479248047 -7.85499954223633,145.198852539062 -7.86055564880371,145.197479248047 -7.86444473266602,145.193572998047 -7.86722183227539)),((143.727752685547 -8.10222244262695,143.697479248047 -8.08444404602051,143.683319091797 -8.07833290100098,143.661376953125 -8.07277679443359,143.618011474609 -8.07222175598145,143.599700927734 -8.07416725158691,143.588562011719 -8.0716667175293,143.582458496094 -8.06416702270508,143.569427490234 -8.04305648803711,143.566070556641 -8.03277778625488,143.565246582031 -8.02000045776367,143.568023681641 -8.01583480834961,143.574127197266 -8.01388931274414,143.629669189453 -8.00638961791992,143.635803222656 -8.00583457946777,143.642761230469 -8.00583457946777,143.651092529297 -8.00833511352539,143.66943359375 -8.0172233581543,143.682464599609 -8.02472305297852,143.697479248047 -8.03694534301758,143.707733154297 -8.04722213745117,143.731079101562 -8.0716667175293,143.737182617188 -8.07888793945312,143.739959716797 -8.08305549621582,143.741333007812 -8.0886116027832,143.739410400391 -8.09333229064941,143.733306884766 -8.10083198547363,143.727752685547 -8.10222244262695)),((143.66552734375 -8.17611122131348,143.654968261719 -8.17250061035156,143.625518798828 -8.15416717529297,143.621612548828 -8.15166664123535,143.618835449219 -8.14750099182129,143.607727050781 -8.13055419921875,143.604949951172 -8.11972045898438,143.604400634766 -8.11361122131348,143.604949951172 -8.10888862609863,143.609130859375 -8.10610961914062,143.636657714844 -8.09249877929688,143.642211914062 -8.09055519104004,143.654968261719 -8.0897216796875,143.679138183594 -8.09333229064941,143.688568115234 -8.09722137451172,143.700256347656 -8.10610961914062,143.707183837891 -8.11277770996094,143.710510253906 -8.11638832092285,143.716064453125 -8.12444305419922,143.718841552734 -8.13527870178223,143.719421386719 -8.15500068664551,143.7119140625 -8.16111183166504,143.702453613281 -8.1652774810791,143.683319091797 -8.1733341217041,143.677764892578 -8.17472267150879,143.66552734375 -8.17611122131348)),((143.685791015625 -8.24722099304199,143.659973144531 -8.241943359375,143.654418945312 -8.24055480957031,143.650268554688 -8.23777770996094,143.648315429688 -8.23305511474609,143.648864746094 -8.22694396972656,143.651641845703 -8.19972229003906,143.666656494141 -8.19305610656738,143.726898193359 -8.17388916015625,143.733306884766 -8.17472267150879,143.737182617188 -8.17722320556641,143.755828857422 -8.20527839660645,143.756378173828 -8.20861053466797,143.755249023438 -8.21388816833496,143.752471923828 -8.21805572509766,143.7421875 -8.22833251953125,143.734680175781 -8.23444366455078,143.718841552734 -8.23916625976562,143.697479248047 -8.24527740478516,143.685791015625 -8.24722099304199)),((143.687194824219 -8.43972206115723,143.680541992188 -8.43972206115723,143.670257568359 -8.43638801574707,143.651641845703 -8.42749977111816,143.630523681641 -8.40722274780273,143.610504150391 -8.38611221313477,143.584411621094 -8.3577766418457,143.607177734375 -8.33277702331543,143.612731933594 -8.33388900756836,143.653045654297 -8.34222221374512,143.658599853516 -8.3436107635498,143.66552734375 -8.34749984741211,143.672210693359 -8.35444450378418,143.677764892578 -8.36249923706055,143.692199707031 -8.39583396911621,143.694976806641 -8.40666770935059,143.698303222656 -8.42361068725586,143.698303222656 -8.43027877807617,143.696929931641 -8.43555641174316,143.692749023438 -8.43833351135254,143.687194824219 -8.43972206115723)),((143.57275390625 -8.49388885498047,143.559143066406 -8.49388885498047,143.509155273438 -8.48250007629395,143.498016357422 -8.47972106933594,143.493286132812 -8.4777774810791,143.354949951172 -8.41805648803711,143.318572998047 -8.39305686950684,143.315795898438 -8.38888931274414,143.314422607422 -8.38361167907715,143.314422607422 -8.37666511535645,143.319427490234 -8.36916542053223,143.326904296875 -8.3630542755127,143.331634521484 -8.36111068725586,143.339141845703 -8.35833358764648,143.342742919922 -8.3577766418457,143.356353759766 -8.3577766418457,143.494689941406 -8.3630542755127,143.573577880859 -8.37194442749023,143.578308105469 -8.37388801574707,143.581085205078 -8.37805557250977,143.616058349609 -8.46277809143066,143.616058349609 -8.4688892364502,143.613861083984 -8.47360992431641,143.610504150391 -8.47694396972656,143.583862304688 -8.49138832092285,143.578857421875 -8.49333190917969,143.57275390625 -8.49388885498047)),((143.632446289062 -8.73444366455078,143.60107421875 -8.6924991607666,143.585784912109 -8.67972183227539,143.487731933594 -8.62888717651367,143.3671875 -8.54472351074219,143.278869628906 -8.51027870178223,143.269989013672 -8.50555610656738,143.252777099609 -8.49527740478516,143.240509033203 -8.48722076416016,143.182189941406 -8.42972183227539,143.180816650391 -8.42416763305664,143.18359375 -8.42000007629395,143.211639404297 -8.4152774810791,143.217742919922 -8.41611099243164,143.227447509766 -8.42611122131348,143.233032226562 -8.43444442749023,143.251373291016 -8.45666694641113,143.261657714844 -8.46694374084473,143.274688720703 -8.47444343566895,143.324676513672 -8.48583221435547,143.371337890625 -8.49388885498047,143.422760009766 -8.51083374023438,143.467193603516 -8.52777862548828,143.644134521484 -8.66472244262695,143.647491455078 -8.66805648803711,143.651641845703 -8.67777824401855,143.653045654297 -8.68305587768555,143.653594970703 -8.68916702270508,143.653045654297 -8.7005558013916,143.641357421875 -8.72972106933594,143.638031005859 -8.73305511474609,143.632446289062 -8.73444366455078)),((151.144439697266 -8.8305549621582,151.094970703125 -8.7711124420166,151.10107421875 -8.63888931274414,151.05859375 -8.55166625976562,151.052459716797 -8.55222320556641,151.034698486328 -8.55222320556641,151.029144287109 -8.55083274841309,151.003051757812 -8.54277801513672,150.999694824219 -8.53944396972656,150.997741699219 -8.53472328186035,150.996917724609 -8.52861213684082,150.997741699219 -8.52250099182129,151.024993896484 -8.46694374084473,151.033325195312 -8.45472145080566,151.054412841797 -8.43499946594238,151.062744140625 -8.42972183227539,151.076354980469 -8.42611122131348,151.118286132812 -8.42000007629395,151.124969482422 -8.42000007629395,151.124969482422 -8.42555618286133,151.123840332031 -8.62472152709961,151.103302001953 -8.72916603088379,151.102447509766 -8.741943359375,151.103851318359 -8.7541675567627,151.107177734375 -8.76444625854492,151.144439697266 -8.8305549621582)),((152.835510253906 -9.23555564880371,152.829956054688 -9.22333335876465,152.679962158203 -9.09055519104004,152.6533203125 -9.06972122192383,152.649139404297 -9.06694412231445,152.573028564453 -9.02027893066406,152.563598632812 -9.01611137390137,152.556640625 -9.01611137390137,152.540252685547 -9.02027893066406,152.499694824219 -9.02500152587891,152.497741699219 -9.02166748046875,152.5244140625 -8.99305534362793,152.527770996094 -8.98972129821777,152.532470703125 -8.98777770996094,152.619689941406 -8.96138954162598,152.625793457031 -8.96055603027344,152.647216796875 -8.96138954162598,152.8046875 -8.96944427490234,152.810241699219 -8.97083282470703,152.814971923828 -8.97277641296387,152.93359375 -9.04388999938965,152.937744140625 -9.04666709899902,152.952758789062 -9.05888938903809,153.017761230469 -9.11777687072754,153.020538330078 -9.12166595458984,153.019989013672 -9.12638854980469,153.002777099609 -9.16500091552734,152.997192382812 -9.17305564880371,152.993011474609 -9.17583274841309,152.98828125 -9.17777824401855,152.982177734375 -9.17722320556641,152.835510253906 -9.23555564880371)),((150.334411621094 -9.52666664123535,150.310241699219 -9.5261116027832,150.193023681641 -9.45388793945312,150.180816650391 -9.44555473327637,150.173858642578 -9.43888854980469,150.110778808594 -9.37277603149414,150.108306884766 -9.36861038208008,150.103302001953 -9.33694458007812,150.102752685547 -9.33083343505859,150.104125976562 -9.31861114501953,150.106903076172 -9.30777740478516,150.123291015625 -9.2630558013916,150.126068115234 -9.26027870178223,150.143859863281 -9.24555397033691,150.189147949219 -9.21111106872559,150.198028564453 -9.20777702331543,150.206909179688 -9.2055549621582,150.2138671875 -9.2055549621582,150.232177734375 -9.20777702331543,150.326904296875 -9.26916694641113,150.330810546875 -9.27194595336914,150.333038330078 -9.27666664123535,150.376892089844 -9.38333320617676,150.37744140625 -9.38944435119629,150.363006591797 -9.48749923706055,150.344696044922 -9.51666641235352,150.339141845703 -9.52472305297852,150.334411621094 -9.52666664123535)),((150.846923828125 -9.71805572509766,150.844116210938 -9.68555641174316,150.801635742188 -9.65861129760742,150.763305664062 -9.66250038146973,150.691345214844 -9.66333389282227,150.661102294922 -9.66333389282227,150.654968261719 -9.66250038146973,150.622741699219 -9.65388870239258,150.514434814453 -9.62333297729492,150.490509033203 -9.58361053466797,150.427459716797 -9.44083404541016,150.423309326172 -9.43138885498047,150.419982910156 -9.41472244262695,150.419982910156 -9.4011116027832,150.421905517578 -9.38944435119629,150.426086425781 -9.37666511535645,150.435791015625 -9.35916519165039,150.442474365234 -9.35499954223633,150.473571777344 -9.33888816833496,150.478851318359 -9.33749961853027,150.481628417969 -9.33694458007812,150.487731933594 -9.33749961853027,150.498840332031 -9.34027671813965,150.505554199219 -9.34222221374512,150.5302734375 -9.35166549682617,150.571350097656 -9.37055397033691,150.598022460938 -9.38500022888184,150.618011474609 -9.39777946472168,150.624969482422 -9.40444564819336,150.63525390625 -9.42194557189941,150.639434814453 -9.42472267150879,150.666656494141 -9.43833351135254,150.676910400391 -9.4416675567627,150.683044433594 -9.44083404541016,150.731903076172 -9.42805671691895,150.7421875 -9.42472267150879,150.746063232422 -9.42138862609863,150.748291015625 -9.41805648803711,150.754974365234 -9.40444564819336,150.760528564453 -9.40444564819336,150.765258789062 -9.4063892364502,150.777770996094 -9.41472244262695,150.804412841797 -9.43277740478516,150.828308105469 -9.45638847351074,150.885803222656 -9.52083396911621,150.888031005859 -9.52555656433105,150.931915283203 -9.64166831970215,150.932464599609 -9.64777946472168,150.930541992188 -9.65916633605957,150.921630859375 -9.67083358764648,150.906646728516 -9.68277740478516,150.901092529297 -9.68138885498047,150.896362304688 -9.67416763305664,150.893585205078 -9.67194557189941,150.888580322266 -9.67138862609863,150.876892089844 -9.67749977111816,150.873565673828 -9.68083381652832,150.846923828125 -9.71805572509766)),((151.229125976562 -10.2011108398438,151.19775390625 -10.1727771759033,151.190246582031 -10.1669454574585,151.148315429688 -10.1472234725952,151.143585205078 -10.1452789306641,151.086639404297 -10.1269435882568,151.075805664062 -10.1244430541992,151.025817871094 -10.1141662597656,151.001647949219 -10.1108322143555,150.994964599609 -10.1108322143555,150.983306884766 -10.1127777099609,150.970245361328 -10.1122207641602,150.958587646484 -10.1102771759033,150.94970703125 -10.1055545806885,150.91552734375 -10.0041675567627,150.877746582031 -9.92666625976562,150.826904296875 -9.83888816833496,150.762481689453 -9.80500030517578,150.758605957031 -9.80249977111816,150.750274658203 -9.74833297729492,150.748840332031 -9.73083305358887,150.757202148438 -9.71194458007812,150.759979248047 -9.70777702331543,150.763885498047 -9.70499992370605,150.769439697266 -9.70666694641113,150.788024902344 -9.71944427490234,150.803039550781 -9.73138809204102,150.821624755859 -9.74694442749023,150.900268554688 -9.81916618347168,150.931915283203 -9.8488883972168,150.938873291016 -9.85583305358887,150.962738037109 -9.89361190795898,151.030548095703 -9.98527717590332,151.039428710938 -9.99694442749023,151.059967041016 -10.0169448852539,151.073028564453 -10.0244445800781,151.111358642578 -10.0447244644165,151.116058349609 -10.046667098999,151.122467041016 -10.0475006103516,151.136657714844 -10.041389465332,151.147216796875 -10.0325012207031,151.149139404297 -10.0277786254883,151.149719238281 -10.0219459533691,151.147766113281 -10.0169448852539,151.143585205078 -10.0088901519775,151.140808105469 -10.0050010681152,151.136657714844 -10.0022239685059,151.134704589844 -9.99749946594238,151.134704589844 -9.9908332824707,151.138031005859 -9.98749923706055,151.184143066406 -9.94472312927246,151.192199707031 -9.93944358825684,151.200531005859 -9.93666648864746,151.26416015625 -9.91972160339355,151.281372070312 -9.9233341217041,151.284149169922 -9.92722320556641,151.298583984375 -9.95083236694336,151.299133300781 -9.96249961853027,151.296356201172 -9.97305488586426,151.271087646484 -10.0616655349731,151.252471923828 -10.0974998474121,151.246337890625 -10.1047210693359,151.243560791016 -10.1088886260986,151.234130859375 -10.1330547332764,151.221618652344 -10.1708335876465,151.221618652344 -10.1816673278809,151.222473144531 -10.1877784729004,151.223846435547 -10.1930561065674,151.229125976562 -10.2011108398438)),((150.880523681641 -10.6527786254883,150.856353759766 -10.6494445800781,150.794128417969 -10.6394443511963,150.785247802734 -10.6347236633301,150.769439697266 -10.6111106872559,150.767486572266 -10.6075000762939,150.788024902344 -10.5463886260986,150.790802001953 -10.5422229766846,150.794708251953 -10.539722442627,150.798858642578 -10.5383338928223,150.868835449219 -10.5383338928223,150.874969482422 -10.5388889312744,150.892211914062 -10.547779083252,150.900268554688 -10.5530548095703,150.904418945312 -10.5625,150.894989013672 -10.6466665267944,150.892211914062 -10.6508331298828,150.880523681641 -10.6527786254883)),((150.927185058594 -10.6838893890381,150.923034667969 -10.6825008392334,150.920257568359 -10.6783332824707,150.911926269531 -10.65944480896,150.909973144531 -10.6547222137451,150.909149169922 -10.6419448852539,150.909973144531 -10.6358337402344,150.91943359375 -10.6130542755127,150.922210693359 -10.6088886260986,150.9296875 -10.6030540466309,150.934692382812 -10.6008319854736,150.94970703125 -10.59694480896,151.016082763672 -10.5908336639404,151.064147949219 -10.5922222137451,151.066925048828 -10.5947227478027,151.06884765625 -10.5980548858643,151.069702148438 -10.6111106872559,151.063293457031 -10.6438903808594,151.049133300781 -10.6702785491943,151.042205810547 -10.676944732666,151.036651611328 -10.6783332824707,151.031372070312 -10.676944732666,151.009979248047 -10.6683330535889,151.008026123047 -10.6636123657227,151.003875732422 -10.6472234725952,151.001647949219 -10.6427783966064,150.994110107422 -10.6366672515869,150.988861083984 -10.6352787017822,150.941345214844 -10.6347236633301,150.936096191406 -10.6347236633301,150.929138183594 -10.6547222137451,150.927185058594 -10.6838893890381)),((152.744415283203 -10.7166652679443,152.702453613281 -10.7066669464111,152.686920166016 -10.7019443511963,152.573852539062 -10.6569442749023,152.564971923828 -10.6522235870361,152.544982910156 -10.6380558013916,152.541656494141 -10.6338901519775,152.540802001953 -10.6305541992188,152.542205810547 -10.6277770996094,152.555236816406 -10.6230554580688,152.562194824219 -10.6230554580688,152.573852539062 -10.6252765655518,152.614959716797 -10.6386127471924,152.690246582031 -10.6627788543701,152.693023681641 -10.6627788543701,152.759429931641 -10.6372222900391,152.784973144531 -10.6211109161377,152.790252685547 -10.6197204589844,152.814971923828 -10.6291656494141,152.870513916016 -10.6580562591553,152.873291015625 -10.6622219085693,152.873840332031 -10.6683330535889,152.873291015625 -10.6730556488037,152.870513916016 -10.676944732666,152.863586425781 -10.6825008392334,152.844970703125 -10.6952781677246,152.814971923828 -10.6966667175293,152.744415283203 -10.7166652679443)),((153.210510253906 -11.2858333587646,153.181640625 -11.2522239685059,153.143859863281 -11.2247219085693,153.13916015625 -11.2227764129639,153.120513916016 -11.2166652679443,153.114959716797 -11.2152767181396,153.106079101562 -11.2147216796875,153.093292236328 -11.2019443511963,153.091064453125 -11.1972217559814,153.093841552734 -11.1930561065674,153.102172851562 -11.1888885498047,153.112457275391 -11.1844444274902,153.123840332031 -11.1849994659424,153.12939453125 -11.1863880157471,153.198028564453 -11.2172222137451,153.2138671875 -11.2247219085693,153.222747802734 -11.2294454574585,153.251373291016 -11.2469444274902,153.250579833984 -11.25,153.25 -11.2522239685059,153.241058349609 -11.2688903808594,153.210510253906 -11.2858333587646)),((154.112182617188 -11.4397220611572,154.106628417969 -11.4397220611572,154.062744140625 -11.4330558776855,154.058013916016 -11.4308338165283,154.006652832031 -11.3872222900391,154.003326416016 -11.3838901519775,154.021087646484 -11.3488883972168,154.089691162109 -11.3152770996094,154.153869628906 -11.3141670227051,154.225250244141 -11.3194446563721,154.268310546875 -11.338888168335,154.276641845703 -11.344165802002,154.286376953125 -11.3605556488037,154.288299560547 -11.3649997711182,154.297760009766 -11.3919448852539,154.289703369141 -11.4108333587646,154.285522460938 -11.4136123657227,154.266387939453 -11.421667098999,154.263031005859 -11.4180555343628,154.26025390625 -11.4075012207031,154.256103515625 -11.4047222137451,154.250549316406 -11.4033336639404,154.190246582031 -11.3994445800781,154.137481689453 -11.3986110687256,154.134704589844 -11.4027786254883,154.112182617188 -11.4397220611572)),((153.566070556641 -11.6424999237061,153.522216796875 -11.602222442627,153.479125976562 -11.5733337402344,153.421356201172 -11.5686111450195,153.376068115234 -11.5672225952148,153.3671875 -11.557222366333,153.364410400391 -11.5530548095703,153.363861083984 -11.5472221374512,153.376068115234 -11.5269451141357,153.382446289062 -11.5197219848633,153.38720703125 -11.5108337402344,153.388580322266 -11.5055561065674,153.387756347656 -11.5008344650269,153.384429931641 -11.4974994659424,153.325531005859 -11.4752769470215,153.276916503906 -11.4624996185303,153.271911621094 -11.4605560302734,153.268585205078 -11.4572219848633,153.190521240234 -11.3730554580688,153.188293457031 -11.3683319091797,153.187194824219 -11.3536109924316,153.187194824219 -11.3497219085693,153.198028564453 -11.3241672515869,153.200805664062 -11.3199996948242,153.220520019531 -11.3274993896484,153.291931152344 -11.3569431304932,153.398040771484 -11.4047222137451,153.413879394531 -11.4161109924316,153.426910400391 -11.4302787780762,153.437744140625 -11.4397220611572,153.507751464844 -11.4724998474121,153.559143066406 -11.491943359375,153.570251464844 -11.494722366333,153.576354980469 -11.4955539703369,153.645538330078 -11.5150012969971,153.686645507812 -11.5269451141357,153.751098632812 -11.5644445419312,153.754425048828 -11.5680561065674,153.7763671875 -11.5974998474121,153.777770996094 -11.6027765274048,153.7763671875 -11.6080551147461,153.7744140625 -11.6130542755127,153.770812988281 -11.6163883209229,153.676361083984 -11.6283321380615,153.670257568359 -11.6277770996094,153.605804443359 -11.6174983978271,153.598846435547 -11.6174983978271,153.582458496094 -11.6283321380615,153.566070556641 -11.6424999237061))) + + + + MULTIPOLYGON(((144.520538330078 -1.12083339691162,144.516387939453 -1.12083339691162,144.514434814453 -1.11611104011536,144.514984130859 -1.10305547714233,144.517211914062 -1.09833335876465,144.521362304688 -1.09972214698792,144.522491455078 -1.10527777671814,144.523315429688 -1.11138892173767,144.522491455078 -1.11611104011536,144.520538330078 -1.12083339691162)),((149.731903076172 -1.60333347320557,149.715515136719 -1.57861113548279,149.7099609375 -1.57027792930603,149.703308105469 -1.56361126899719,149.699127197266 -1.56083345413208,149.681915283203 -1.55722236633301,149.680541992188 -1.56277775764465,149.681915283203 -1.57527780532837,149.681365966797 -1.5813889503479,149.678588867188 -1.58555555343628,149.673034667969 -1.58694458007812,149.663299560547 -1.58277773857117,149.659423828125 -1.58000016212463,149.558013916016 -1.50055575370789,149.533325195312 -1.469722032547,149.530548095703 -1.46555542945862,149.527770996094 -1.45444440841675,149.528594970703 -1.44833326339722,149.542755126953 -1.41472220420837,149.544982910156 -1.41000008583069,149.564147949219 -1.37027788162231,149.579956054688 -1.35527777671814,149.622467041016 -1.35944437980652,149.627166748047 -1.36138892173767,149.663299560547 -1.38666677474976,149.710784912109 -1.42166662216187,149.716918945312 -1.42916655540466,149.719696044922 -1.43333315849304,149.790252685547 -1.57666683197021,149.790802001953 -1.5813889503479,149.731903076172 -1.60333347320557)),((144.517761230469 -1.39833331108093,144.506103515625 -1.38944435119629,144.503326416016 -1.38555550575256,144.505554199219 -1.38055562973022,144.516387939453 -1.38194441795349,144.519989013672 -1.38555550575256,144.521911621094 -1.39555549621582,144.517761230469 -1.39833331108093)),((142.818298339844 -1.73333311080933,142.813598632812 -1.73277759552002,142.812194824219 -1.72722220420837,142.812744140625 -1.72111105918884,142.818298339844 -1.69972205162048,142.821075439453 -1.69583320617676,142.832183837891 -1.69361114501953,142.863006591797 -1.69444441795349,142.866363525391 -1.69777774810791,142.866912841797 -1.70944428443909,142.864410400391 -1.71361112594604,142.859405517578 -1.71555542945862,142.852752685547 -1.70861101150513,142.847198486328 -1.70722222328186,142.841644287109 -1.70861101150513,142.837463378906 -1.71138882637024,142.818298339844 -1.73333311080933)),((147.391937255859 -1.96083331108093,147.399993896484 -1.96638870239258,147.430816650391 -1.9902777671814,147.434417724609 -1.99361109733582,147.44580078125 -2.00944471359253,147.448028564453 -2.01416683197021,147.447204589844 -2.0188889503479,147.439697265625 -2.06083345413208,147.437744140625 -2.06555557250977,147.426086425781 -2.06777811050415,147.275268554688 -2.1211109161377,147.255554199219 -2.14916658401489,147.239135742188 -2.16694450378418,147.22802734375 -2.17638874053955,147.212188720703 -2.18805551528931,147.207458496094 -2.19027757644653,147.201904296875 -2.19166660308838,146.980529785156 -2.1991662979126,146.893035888672 -2.18944406509399,146.8388671875 -2.18194437026978,146.798309326172 -2.16888904571533,146.793579101562 -2.16694450378418,146.726348876953 -2.16083335876465,146.571624755859 -2.23472213745117,146.568023681641 -2.23666667938232,146.563293457031 -2.23472213745117,146.5283203125 -2.20111131668091,146.524993896484 -2.19083309173584,146.518035888672 -2.1497220993042,146.518859863281 -2.14361143112183,146.578308105469 -2.00194454193115,146.580535888672 -1.99722218513489,146.583862304688 -1.99361109733582,146.638580322266 -1.97861099243164,146.844970703125 -1.95055556297302,146.857177734375 -1.94916653633118,146.869689941406 -1.94916653633118,147.093566894531 -1.96638870239258,147.099975585938 -1.96694445610046,147.118286132812 -1.96888875961304,147.164428710938 -1.98333311080933,147.203308105469 -2.003333568573,147.300811767578 -2.02527761459351,147.417755126953 -2.05055570602417,147.419982910156 -2.04583358764648,147.422760009766 -2.03472232818604,147.422760009766 -2.02916669845581,147.420532226562 -2.01083374023438,147.418579101562 -2.00583362579346,147.391937255859 -1.96083331108093)),((147.756927490234 -2.35249996185303,147.766662597656 -2.32388925552368,147.795532226562 -2.26500034332275,147.815246582031 -2.24361133575439,147.832458496094 -2.24555540084839,147.877746582031 -2.28944444656372,147.879119873047 -2.29361152648926,147.856353759766 -2.3313889503479,147.848297119141 -2.33666658401489,147.829132080078 -2.34555530548096,147.824127197266 -2.34777784347534,147.81884765625 -2.34916639328003,147.812469482422 -2.34972190856934,147.756927490234 -2.35249996185303)),((150.367736816406 -2.68666648864746,150.356353759766 -2.66805553436279,150.347473144531 -2.66333341598511,150.341064453125 -2.66249990463257,150.273315429688 -2.67277765274048,150.257476806641 -2.6777777671814,150.242462158203 -2.68305540084839,150.190521240234 -2.68583297729492,150.184143066406 -2.68527746200562,150.109405517578 -2.625,149.972473144531 -2.50111150741577,149.965789794922 -2.4941668510437,149.949127197266 -2.47638845443726,149.948577880859 -2.47166633605957,149.951354980469 -2.46749973297119,149.960784912109 -2.46000003814697,150.079956054688 -2.41416645050049,150.189697265625 -2.37722206115723,150.206085205078 -2.37444448471069,150.216369628906 -2.37777757644653,150.248016357422 -2.39000034332275,150.417205810547 -2.46055555343628,150.443298339844 -2.47583293914795,150.446075439453 -2.47972202301025,150.467193603516 -2.54472255706787,150.468017578125 -2.55777788162231,150.459686279297 -2.64833354949951,150.458312988281 -2.6536111831665,150.448852539062 -2.66472196578979,150.443298339844 -2.66611099243164,150.41943359375 -2.66249990463257,150.406921386719 -2.66388893127441,150.4013671875 -2.6652774810791,150.371887207031 -2.68388891220093,150.367736816406 -2.68666648864746)),((152.659423828125 -3.84277772903442,152.670837402344 -3.85989284515381,152.701080322266 -3.88305521011353,152.739685058594 -3.89611101150513,152.769714355469 -3.90027761459351,152.919128417969 -4.0041675567627,152.989685058594 -4.07583332061768,153.006927490234 -4.09361171722412,153.118560791016 -4.23916625976562,153.12939453125 -4.25555610656738,153.131622314453 -4.26027870178223,153.134429931641 -4.27138900756836,153.132171630859 -4.37861061096191,153.130798339844 -4.39083385467529,153.128021240234 -4.39500045776367,153.121337890625 -4.40194416046143,153.108856201172 -4.40999984741211,153.092468261719 -4.42083358764648,153.080810546875 -4.43000030517578,153.066375732422 -4.44277763366699,153.063018798828 -4.44638824462891,153.0546875 -4.45861148834229,153.04052734375 -4.48527717590332,153.039154052734 -4.49749946594238,153.039703369141 -4.50361156463623,153.041076660156 -4.5091667175293,153.043304443359 -4.51388931274414,153.046630859375 -4.51722240447998,153.059692382812 -4.52555561065674,153.066375732422 -4.53222274780273,153.077453613281 -4.54861068725586,153.079406738281 -4.58916664123535,153.077453613281 -4.60055541992188,152.980255126953 -4.7605562210083,152.974670410156 -4.76666641235352,152.910247802734 -4.82333374023438,152.891662597656 -4.82250022888184,152.743560791016 -4.67305564880371,152.735504150391 -4.66083335876465,152.733306884766 -4.6561107635498,152.693023681641 -4.55833339691162,152.681365966797 -4.5222225189209,152.664978027344 -4.4688892364502,152.662750244141 -4.4572229385376,152.666381835938 -4.45388889312744,152.678588867188 -4.44555473327637,152.681365966797 -4.44138813018799,152.692199707031 -4.39361190795898,152.69775390625 -4.36499977111816,152.69775390625 -4.35805511474609,152.694427490234 -4.19138813018799,152.693572998047 -4.18527698516846,152.691650390625 -4.18055534362793,152.603302001953 -4.00611114501953,152.581909179688 -3.96583318710327,152.538726806641 -3.90009546279907,152.512176513672 -3.8687310218811,152.491577148438 -3.85225462913513,152.374969482422 -3.7277774810791,152.359954833984 -3.70472240447998,152.357177734375 -3.69361114501953,152.356628417969 -3.6875,152.358001708984 -3.66166639328003,152.355224609375 -3.65055561065674,152.349700927734 -3.64249992370605,152.289428710938 -3.57944440841675,152.282470703125 -3.57277774810791,152.190521240234 -3.50888919830322,152.182464599609 -3.50361156463623,152.156372070312 -3.48861122131348,152.151641845703 -3.48638868331909,152.146087646484 -3.4850001335144,152.136657714844 -3.48916673660278,152.131072998047 -3.49055576324463,152.124969482422 -3.49000024795532,151.984405517578 -3.46444463729858,151.956359863281 -3.45833349227905,151.934967041016 -3.44555521011353,151.758331298828 -3.32444477081299,151.708862304688 -3.28055572509766,151.688293457031 -3.25305557250977,151.620513916016 -3.17722225189209,151.6171875 -3.17388916015625,151.608306884766 -3.16916656494141,151.574676513672 -3.1594443321228,151.532745361328 -3.14499998092651,151.493011474609 -3.13000011444092,151.483581542969 -3.12583303451538,151.462188720703 -3.11305570602417,151.455535888672 -3.1061110496521,151.452758789062 -3.10194444656372,151.450531005859 -3.09722232818604,151.449981689453 -3.08416652679443,151.448577880859 -3.07888889312744,151.44384765625 -3.06972217559814,151.438293457031 -3.06361103057861,151.417205810547 -3.05055570602417,151.369689941406 -3.02250003814697,151.281372070312 -2.97416639328003,151.237457275391 -2.95361137390137,151.214965820312 -2.94194412231445,151.150543212891 -2.89527797698975,151.122467041016 -2.86861085891724,151.119689941406 -2.86444473266602,151.113586425781 -2.8502779006958,151.110778808594 -2.84611082077026,151.106628417969 -2.84333324432373,151.004425048828 -2.78916692733765,150.999694824219 -2.78722238540649,150.930541992188 -2.76861095428467,150.923583984375 -2.76861095428467,150.903045654297 -2.77138900756836,150.876342773438 -2.77611112594604,150.861907958984 -2.78249979019165,150.832458496094 -2.78722238540649,150.819427490234 -2.7877779006958,150.754425048828 -2.77083349227905,150.750274658203 -2.76805543899536,150.729675292969 -2.74055576324463,150.730529785156 -2.7344446182251,150.733856201172 -2.7311110496521,150.747467041016 -2.71749973297119,150.752471923828 -2.71527767181396,150.763305664062 -2.7180552482605,150.824401855469 -2.71527767181396,150.874969482422 -2.71250009536743,150.88720703125 -2.71111106872559,150.891357421875 -2.70833349227905,150.894989013672 -2.70499992370605,150.896942138672 -2.70027780532837,150.885650634766 -2.6851110458374,150.884307861328 -2.67811107635498,150.876983642578 -2.65594434738159,150.875640869141 -2.65294456481934,150.873641967773 -2.65094447135925,150.867797851562 -2.64844417572021,150.861633300781 -2.64977788925171,150.856292724609 -2.65261125564575,150.853134155273 -2.65344452857971,150.838012695312 -2.64277791976929,150.831909179688 -2.64222240447998,150.822204589844 -2.6380558013916,150.792755126953 -2.61666631698608,150.805816650391 -2.56666660308838,150.807739257812 -2.56333351135254,150.811370849609 -2.55999994277954,150.817474365234 -2.559166431427,150.834686279297 -2.57083368301392,150.838012695312 -2.57416677474976,150.906524658203 -2.63594436645508,150.964691162109 -2.68722200393677,150.968841552734 -2.69000005722046,151.086639404297 -2.75027799606323,151.190246582031 -2.82611131668091,151.280822753906 -2.87083339691162,151.311370849609 -2.86999988555908,151.419128417969 -2.89805555343628,151.427185058594 -2.9036111831665,151.464416503906 -2.93499994277954,151.598022460938 -3.02750015258789,151.641937255859 -3.04805564880371,151.717742919922 -3.11555576324463,151.72607421875 -3.12805557250977,151.815246582031 -3.19777774810791,151.820526123047 -3.1991662979126,151.825531005859 -3.1972222328186,151.833587646484 -3.19166660308838,151.855529785156 -3.18611097335815,151.861907958984 -3.18694448471069,151.921905517578 -3.20333337783813,151.948852539062 -3.21083354949951,152.055816650391 -3.24777793884277,152.054412841797 -3.26000022888184,152.054412841797 -3.27361106872559,152.057739257812 -3.28388929367065,152.164703369141 -3.41111087799072,152.204406738281 -3.45444440841675,152.210510253906 -3.46055555343628,152.238006591797 -3.47833299636841,152.252471923828 -3.4844446182251,152.277191162109 -3.49472236633301,152.306640625 -3.50638914108276,152.327178955078 -3.51999998092651,152.355224609375 -3.54000043869019,152.361907958984 -3.54666709899902,152.367462158203 -3.55499982833862,152.392211914062 -3.59861087799072,152.411926269531 -3.63361120223999,152.488006591797 -3.64916658401489,152.493011474609 -3.64861106872559,152.496917724609 -3.65138864517212,152.503051757812 -3.6588888168335,152.511383056641 -3.67111110687256,152.553314208984 -3.74583339691162,152.556640625 -3.756667137146,152.555816650391 -3.76944446563721,152.549713134766 -3.78388929367065,152.546356201172 -3.79416704177856,152.549133300781 -3.79833364486694,152.573852539062 -3.8216667175293,152.577758789062 -3.82444477081299,152.582733154297 -3.82638883590698,152.603302001953 -3.83305549621582,152.659423828125 -3.84277772903442)),((149.6640625 -10.3398141860962,149.639434814453 -10.3413887023926,149.572204589844 -10.3413887023926,149.566925048828 -10.3413887023926,149.536651611328 -10.361665725708,149.335784912109 -10.307222366333,149.224975585938 -10.2761116027832,149.186645507812 -10.2600002288818,149.176361083984 -10.2563896179199,149.161102294922 -10.2511119842529,149.139984130859 -10.2449989318848,149.093292236328 -10.2341651916504,149.049407958984 -10.2424983978271,149.03857421875 -10.2449989318848,148.993835449219 -10.2605571746826,148.981628417969 -10.268611907959,148.934967041016 -10.2672233581543,148.79443359375 -10.2391662597656,148.723297119141 -10.1869449615479,148.680267333984 -10.1494445800781,148.677459716797 -10.1533336639404,148.642486572266 -10.1863880157471,148.637481689453 -10.1883344650269,148.468292236328 -10.2038879394531,148.462738037109 -10.2038879394531,148.4033203125 -10.2005558013916,148.372467041016 -10.1919441223145,148.3369140625 -10.1797218322754,148.332733154297 -10.176944732666,148.327178955078 -10.1688899993896,148.322479248047 -10.1599998474121,148.314971923828 -10.1405563354492,148.312194824219 -10.1363887786865,148.3046875 -10.130277633667,148.157562255859 -10.0737085342407,148.154418945312 -10.0791664123535,148.150543212891 -10.0952777862549,148.148315429688 -10.0999984741211,148.115509033203 -10.1216659545898,148.10302734375 -10.1297206878662,148.0888671875 -10.1358337402344,148.083312988281 -10.1372222900391,148.055236816406 -10.1433334350586,147.999694824219 -10.1519451141357,147.952453613281 -10.1458339691162,147.940795898438 -10.1211109161377,147.923034667969 -10.0980548858643,147.872192382812 -10.0475006103516,147.86328125 -10.0427780151367,147.857727050781 -10.0427780151367,147.781097412109 -10.0508327484131,147.775543212891 -10.0522232055664,147.766082763672 -10.0561103820801,147.619964599609 -9.9908332824707,147.612457275391 -9.98472213745117,147.601348876953 -9.97527694702148,147.574127197266 -9.94833374023438,147.51025390625 -9.87861061096191,147.504150390625 -9.87138748168945,147.501373291016 -9.86722183227539,147.499389648438 -9.85583305358887,147.501373291016 -9.85111045837402,147.503601074219 -9.83944320678711,147.503601074219 -9.8125,147.499389648438 -9.79638862609863,147.490509033203 -9.77138900756836,147.48828125 -9.76666641235352,147.386932373047 -9.63555717468262,147.316375732422 -9.55527877807617,147.296600341797 -9.53412532806396,147.248565673828 -9.50583457946777,147.12939453125 -9.44361114501953,147.080001831055 -9.43415546417236,147.099975585938 -9.44972229003906,147.102752685547 -9.45388793945312,147.102752685547 -9.48361015319824,147.101348876953 -9.48888778686523,147.09912109375 -9.49110984802246,147.094421386719 -9.49305534362793,147.0888671875 -9.49166679382324,147.062194824219 -9.47333335876465,147.055236816406 -9.46666526794434,147.008026123047 -9.39833450317383,147.001922607422 -9.3841667175293,146.926635742188 -9.28277778625488,146.91748046875 -9.28750038146973,146.911376953125 -9.28694534301758,146.901092529297 -9.28333282470703,146.896942138672 -9.28083419799805,146.893585205078 -9.27722358703613,146.891662597656 -9.27250099182129,146.888885498047 -9.1833324432373,146.905044555664 -9.13727760314941,146.905868530273 -9.13410949707031,146.907043457031 -9.13127708435059,146.909881591797 -9.13077735900879,146.915374755859 -9.13361072540283,146.918548583984 -9.13444423675537,146.969696044922 -9.09138870239258,146.977172851562 -9.07444381713867,146.981353759766 -9.05944442749023,146.981048583984 -9.05097389221191,146.974395751953 -9.03388977050781,146.972473144531 -9.02916717529297,146.969116210938 -9.02833366394043,146.951080322266 -9.03388977050781,146.94580078125 -9.04194450378418,146.944427490234 -9.04722213745117,146.94580078125 -9.05277824401855,146.951904296875 -9.06027793884277,146.954681396484 -9.06833267211914,146.953308105469 -9.07361030578613,146.925262451172 -9.09999847412109,146.91748046875 -9.10610961914062,146.844604492188 -9.09577751159668,146.840911865234 -9.09627723693848,146.83757019043 -9.09544467926025,146.630523681641 -9.0302791595459,146.621612548828 -9.02555656433105,146.586639404297 -8.99916648864746,146.578308105469 -8.9869441986084,146.55859375 -8.9416675567627,146.545532226562 -8.90250015258789,146.546081542969 -8.89777946472168,146.555816650391 -8.85972213745117,146.559143066406 -8.85638809204102,146.567474365234 -8.8075008392334,146.541351318359 -8.76361274719238,146.517486572266 -8.72500038146973,146.441345214844 -8.62472152709961,146.431915283203 -8.61388778686523,146.419982910156 -8.60499954223633,146.403594970703 -8.59444427490234,146.379104614258 -8.58470821380615,146.372192382812 -8.57805633544922,146.351623535156 -8.55777740478516,146.318572998047 -8.50889015197754,146.275543212891 -8.44305610656738,146.269439697266 -8.42888832092285,146.268035888672 -8.42361068725586,146.263305664062 -8.38750076293945,146.264709472656 -8.37527656555176,146.264709472656 -8.36861038208008,146.262481689453 -8.35972213745117,146.243286132812 -8.29472351074219,146.238555908203 -8.28583335876465,146.229675292969 -8.27444458007812,146.218566894531 -8.26472282409668,146.111083984375 -8.16388893127441,146.110229492188 -8.13472366333008,146.089691162109 -8.09111022949219,145.998016357422 -8.05444526672363,145.987731933594 -8.05111122131348,145.930816650391 -8.04111099243164,145.918579101562 -8.03972244262695,145.898590087891 -8.03888893127441,145.880798339844 -8.04166793823242,145.835510253906 -8.02805709838867,145.797760009766 -8.00777816772461,145.786376953125 -7.99888896942139,145.718292236328 -7.96777820587158,145.649993896484 -7.9597225189209,145.630798339844 -7.94472217559814,145.616912841797 -7.93777751922607,145.528045654297 -7.93777751922607,145.502471923828 -7.9399995803833,145.484130859375 -7.94861030578613,145.465515136719 -7.95083332061768,145.443572998047 -7.94944381713867,145.432739257812 -7.94805526733398,145.422485351562 -7.94472217559814,145.244110107422 -7.86861038208008,145.19807434082 -7.82955169677734,145.182723999023 -7.81383991241455,145.168106079102 -7.81822443008423,145.162994384766 -7.82626342773438,145.164459228516 -7.83649444580078,145.161529541016 -7.84489870071411,145.155685424805 -7.84599494934082,145.044967651367 -7.82041692733765,144.995513916016 -7.81555557250977,144.879669189453 -7.78250026702881,144.844696044922 -7.75722312927246,144.838562011719 -7.74972152709961,144.840515136719 -7.74499988555908,144.850250244141 -7.74111080169678,144.871337890625 -7.70777797698975,144.873565673828 -7.7030553817749,144.874114990234 -7.69694423675537,144.874114990234 -7.6899995803833,144.862457275391 -7.61055564880371,144.844696044922 -7.60777759552002,144.833862304688 -7.67722225189209,144.831085205078 -7.68111133575439,144.824127197266 -7.68805503845215,144.819427490234 -7.6899995803833,144.787750244141 -7.69138813018799,144.783599853516 -7.69138813018799,144.599395751953 -7.6602783203125,144.588287353516 -7.65750026702881,144.584411621094 -7.65472221374512,144.552185058594 -7.6119441986084,144.547210693359 -7.60305500030518,144.547210693359 -7.5963888168335,144.545806884766 -7.57472229003906,144.536376953125 -7.52694511413574,144.534973144531 -7.52166652679443,144.530822753906 -7.51222229003906,144.525268554688 -7.5038890838623,144.520538330078 -7.50194454193115,144.514984130859 -7.50194454193115,144.51025390625 -7.5038890838623,144.508880615234 -7.50944519042969,144.508331298828 -7.61472225189209,144.508331298828 -7.62138843536377,144.424682617188 -7.53305530548096,144.418579101562 -7.52583312988281,144.410247802734 -7.52027797698975,144.406921386719 -7.51944446563721,144.412200927734 -7.56583309173584,144.435516357422 -7.68000030517578,144.467742919922 -7.74305534362793,144.395812988281 -7.75583362579346,144.378021240234 -7.75333404541016,144.363006591797 -7.74777793884277,144.358856201172 -7.74499988555908,144.356628417969 -7.74027729034424,144.354125976562 -7.72944450378418,144.354125976562 -7.72277736663818,144.356628417969 -7.70499992370605,144.359680175781 -7.69416618347168,144.360229492188 -7.68249988555908,144.319122314453 -7.62083339691162,144.315795898438 -7.61749935150146,144.310791015625 -7.61666584014893,144.260803222656 -7.63777828216553,144.250549316406 -7.65472221374512,144.243560791016 -7.66694450378418,144.255249023438 -7.73416614532471,144.263031005859 -7.74027729034424,144.272491455078 -7.76749992370605,144.271911621094 -7.77361106872559,144.268310546875 -7.77694511413574,144.224395751953 -7.79333305358887,144.219116210938 -7.79472255706787,144.213012695312 -7.79527759552002,144.147216796875 -7.77888870239258,144.121612548828 -7.77166652679443,143.911926269531 -7.69694423675537,143.899719238281 -7.68861103057861,143.848037719727 -7.63533353805542,143.838531494141 -7.62833404541016,143.829193115234 -7.61733341217041,143.822525024414 -7.60766696929932,143.812713623047 -7.58883380889893,143.810211181641 -7.58316707611084,143.806549072266 -7.57049989700317,143.773040771484 -7.51555633544922,143.768310546875 -7.506667137146,143.758605957031 -7.50250053405762,143.664825439453 -7.46764850616455,143.691345214844 -7.51222229003906,143.755126953125 -7.58950042724609,143.839416503906 -7.71527767181396,143.845520019531 -7.73611068725586,143.852447509766 -7.77027797698975,143.85302734375 -7.78305530548096,143.851898193359 -7.79527759552002,143.85302734375 -7.80749988555908,143.854400634766 -7.81305503845215,143.896362304688 -7.88027763366699,143.901641845703 -7.88833332061768,143.9580078125 -7.97862243652344,143.957183837891 -7.98472213745117,143.955230712891 -7.9894437789917,143.893585205078 -8.03694534301758,143.889434814453 -8.03972244262695,143.884704589844 -8.04166793823242,143.847747802734 -8.04583358764648,143.833862304688 -8.04583358764648,143.755249023438 -8.04111099243164,143.750274658203 -8.03888893127441,143.743560791016 -8.03222274780273,143.738006591797 -8.02416801452637,143.724395751953 -8.01055717468262,143.719421386719 -8.00833511352539,143.661376953125 -7.99138832092285,143.631896972656 -7.98666667938232,143.618835449219 -7.98611068725586,143.597473144531 -7.99222183227539,143.588562011719 -7.99694442749023,143.568908691406 -8.0041675567627,143.56575012207 -8.00483322143555,143.546081542969 -8.00638961791992,143.501647949219 -7.9961109161377,143.485778808594 -7.99138832092285,143.481628417969 -7.98888874053955,143.474975585938 -7.98194408416748,143.473571777344 -7.97305583953857,143.460510253906 -7.93861103057861,143.454406738281 -7.92416667938232,143.444122314453 -7.91333389282227,143.439971923828 -7.91055583953857,143.435241699219 -7.90861129760742,143.424133300781 -7.90722274780273,143.362457275391 -7.8997220993042,143.358306884766 -7.90250015258789,143.356903076172 -7.90805530548096,143.356903076172 -7.91333389282227,143.360504150391 -7.91694450378418,143.446624755859 -7.98055553436279,143.538635253906 -8.05216693878174,143.541458129883 -8.05333423614502,143.543975830078 -8.05500030517578,143.547958374023 -8.05900001525879,143.628295898438 -8.19361114501953,143.630523681641 -8.19833374023438,143.632446289062 -8.20999908447266,143.631896972656 -8.21611022949219,143.629669189453 -8.22749900817871,143.625518798828 -8.2369441986084,143.622192382812 -8.24055480957031,143.611907958984 -8.24388885498047,143.56884765625 -8.24722099304199,143.554962158203 -8.24722099304199,143.512481689453 -8.2458324432373,143.469421386719 -8.24527740478516,143.382446289062 -8.25,143.373565673828 -8.25055694580078,143.338562011719 -8.2538890838623,143.234954833984 -8.27500152587891,143.178039550781 -8.28666687011719,143.080810546875 -8.30833435058594,143.069976806641 -8.31083297729492,143.049407958984 -8.31777763366699,143.034149169922 -8.32305526733398,143.023864746094 -8.3266658782959,143 -8.33666610717773,142.991058349609 -8.34138870239258,142.979949951172 -8.34416580200195,142.973297119141 -8.34416580200195,142.967193603516 -8.3436107635498,142.961639404297 -8.34222221374512,142.94580078125 -8.33749961853027,142.941070556641 -8.33527755737305,142.908874511719 -8.31916618347168,142.882171630859 -8.30500030517578,142.865509033203 -8.29416656494141,142.845794677734 -8.28666687011719,142.799987792969 -8.27500152587891,142.776641845703 -8.27083396911621,142.696350097656 -8.26749992370605,142.654693603516 -8.27361106872559,142.638031005859 -8.27777862548828,142.595794677734 -8.29000091552734,142.575256347656 -8.29666709899902,142.565521240234 -8.30083274841309,142.548309326172 -8.31083297729492,142.540802001953 -8.31694412231445,142.533874511719 -8.32388877868652,142.529968261719 -8.3266658782959,142.521087646484 -8.33138847351074,142.511383056641 -8.33527755737305,142.505828857422 -8.33666610717773,142.485229492188 -8.33666610717773,142.466918945312 -8.33611106872559,142.442749023438 -8.33277702331543,142.437469482422 -8.33138847351074,142.427764892578 -8.32722282409668,142.419708251953 -8.32194519042969,142.411926269531 -8.31583404541016,142.403213500977 -8.28638935089111,142.396194458008 -8.26155567169189,142.395050048828 -8.25055599212646,142.394195556641 -8.23922157287598,142.39453125 -8.23155498504639,142.394195556641 -8.2278881072998,142.386657714844 -8.19361114501953,142.383880615234 -8.18972206115723,142.379943847656 -8.18694496154785,142.338562011719 -8.16638946533203,142.327758789062 -8.16388893127441,142.316925048828 -8.16388893127441,142.221618652344 -8.1733341217041,142.2119140625 -8.17722320556641,142.140808105469 -8.22222137451172,142.13720703125 -8.22555541992188,142.13525390625 -8.23027801513672,142.135803222656 -8.23638725280762,142.144714355469 -8.23916625976562,142.155822753906 -8.24055480957031,142.163879394531 -8.23638725280762,142.172210693359 -8.23083305358887,142.182464599609 -8.22083282470703,142.186645507812 -8.21805572509766,142.195526123047 -8.21333312988281,142.223571777344 -8.20027732849121,142.228302001953 -8.19833374023438,142.309143066406 -8.18083381652832,142.314147949219 -8.18000030517578,142.324401855469 -8.1833324432373,142.338012695312 -8.19027709960938,142.355224609375 -8.19916725158691,142.361358642578 -8.20638847351074,142.374572753906 -8.26111125946045,142.377410888672 -8.2746114730835,142.377075195312 -8.28644466400146,142.377410888672 -8.29327774047852,142.382446289062 -8.31916618347168,142.388031005859 -8.32722282409668,142.408599853516 -8.34749984741211,142.439422607422 -8.37138748168945,142.44970703125 -8.37472152709961,142.466918945312 -8.37805557250977,142.473022460938 -8.37888717651367,142.486633300781 -8.37888717651367,142.493011474609 -8.37805557250977,142.512756347656 -8.37194442749023,142.522491455078 -8.36805534362793,142.5263671875 -8.36527633666992,142.540252685547 -8.35166549682617,142.548309326172 -8.34611129760742,142.556640625 -8.34083366394043,142.590240478516 -8.3266658782959,142.619689941406 -8.31500053405762,142.635528564453 -8.31027793884277,142.641662597656 -8.31083297729492,142.734680175781 -8.32250022888184,142.771636962891 -8.33194351196289,142.776641845703 -8.33388900756836,142.783325195312 -8.34083366394043,142.788879394531 -8.3488883972168,142.799133300781 -8.35916519165039,142.807464599609 -8.36444473266602,142.906097412109 -8.42361068725586,142.917205810547 -8.42611122131348,142.9580078125 -8.43166732788086,143.01025390625 -8.44111061096191,143.04443359375 -8.44777870178223,143.049987792969 -8.44916725158691,143.086364746094 -8.45999908447266,143.096618652344 -8.4636116027832,143.110229492188 -8.47027778625488,143.213012695312 -8.5494441986084,143.220520019531 -8.55555534362793,143.239135742188 -8.57138824462891,143.246063232422 -8.57805633544922,143.249389648438 -8.58138847351074,143.281646728516 -8.61861038208008,143.374664306641 -8.741943359375,143.392761230469 -8.77027893066406,143.395263671875 -8.7813892364502,143.406921386719 -8.96194458007812,143.405548095703 -8.96749877929688,143.403045654297 -8.97138786315918,143.384429931641 -8.99388885498047,143.3671875 -9.01083374023438,143.363006591797 -9.01361274719238,143.331634521484 -9.02833366394043,143.321899414062 -9.03250122070312,143.316650390625 -9.03388977050781,143.310241699219 -9.03305625915527,143.299407958984 -9.02361106872559,143.289154052734 -9.02027893066406,143.283050537109 -9.01972198486328,143.269989013672 -9.02027893066406,143.248016357422 -9.02555656433105,143.232177734375 -9.0302791595459,143.174133300781 -9.04861068725586,143.047210693359 -9.09000015258789,143.04248046875 -9.09194374084473,143.039154052734 -9.09527778625488,143.030822753906 -9.10750007629395,143.023864746094 -9.11416625976562,142.902770996094 -9.19750022888184,142.842468261719 -9.2327766418457,142.807464599609 -9.25222396850586,142.797760009766 -9.25638961791992,142.788299560547 -9.26027870178223,142.769134521484 -9.2672233581543,142.752471923828 -9.27138900756836,142.723846435547 -9.28333282470703,142.66552734375 -9.32055473327637,142.654693603516 -9.32999992370605,142.638885498047 -9.3347225189209,142.625244140625 -9.3347225189209,142.582733154297 -9.33083343505859,142.571624755859 -9.32805633544922,142.543029785156 -9.30916595458984,142.532470703125 -9.29888916015625,142.5244140625 -9.28694534301758,142.521087646484 -9.28333282470703,142.517486572266 -9.28000068664551,142.497741699219 -9.26527786254883,142.477172851562 -9.25166702270508,142.425811767578 -9.22805595397949,142.2099609375 -9.16500091552734,142.203033447266 -9.16500091552734,142.054412841797 -9.18722152709961,141.944702148438 -9.20694351196289,141.721343994141 -9.21444511413574,141.615783691406 -9.23611068725586,141.608856201172 -9.23611068725586,141.522491455078 -9.22111129760742,141.509429931641 -9.21388816833496,141.501922607422 -9.20777702331543,141.495788574219 -9.20027732849121,141.48828125 -9.19416618347168,141.460784912109 -9.17388916015625,141.448577880859 -9.16583442687988,141.429412841797 -9.15750122070312,141.388305664062 -9.14416694641113,141.375244140625 -9.14333343505859,141.323028564453 -9.14999961853027,141.312194824219 -9.15277862548828,141.307464599609 -9.15500068664551,141.294982910156 -9.16305541992188,141.284698486328 -9.17305564880371,141.266387939453 -9.18888854980469,141.226623535156 -9.21722221374512,141.213592529297 -9.22472190856934,141.176361083984 -9.23388862609863,141.160797119141 -9.23749923706055,141.122467041016 -9.23194313049316,141.117462158203 -9.22999954223633,141.109405517578 -9.22472190856934,141.090789794922 -9.20916557312012,141.033874511719 -9.15694427490234,141.013305664062 -9.13666725158691,141.007019042969 -9.12846755981445,141.006134033203 -6.90478563308716,141.006134033203 -6.89328384399414,140.998565673828 -6.89388942718506,140.990509033203 -6.89944458007812,140.983581542969 -6.9061107635498,140.978851318359 -6.90694427490234,140.949401855469 -6.9036111831665,140.902770996094 -6.85583305358887,140.875244140625 -6.79611110687256,140.871063232422 -6.7863883972168,140.859405517578 -6.72861099243164,140.858856201172 -6.6783332824707,140.863006591797 -6.63138866424561,140.891082763672 -6.60333347320557,140.895263671875 -6.60055541992188,140.898040771484 -6.59666728973389,140.947204589844 -6.5,140.951354980469 -6.48361110687256,140.950805664062 -6.47749996185303,140.948577880859 -6.47277736663818,140.94580078125 -6.4686107635498,140.928039550781 -6.45083332061768,140.932189941406 -6.43444442749023,140.963592529297 -6.3386116027832,140.967742919922 -6.33583354949951,140.973297119141 -6.33444499969482,140.985504150391 -6.33305549621582,141.006134033203 -6.33292484283447,141.006103515625 -6,141.006103515625 -4.90555477142334,141.006103515625 -2.61388921737671,141.002471923828 -2.60708522796631,141.029968261719 -2.59277772903442,141.034698486328 -2.59083318710327,141.039428710938 -2.59000015258789,141.046356201172 -2.59000015258789,141.199127197266 -2.61805534362793,141.204681396484 -2.61944437026978,141.214141845703 -2.62222194671631,141.270538330078 -2.64555549621582,141.273864746094 -2.65583324432373,141.278045654297 -2.6652774810791,141.284149169922 -2.67277765274048,141.345794677734 -2.70777797698975,141.369689941406 -2.7180552482605,141.380798339844 -2.72083330154419,141.410797119141 -2.72499990463257,141.426635742188 -2.72972202301025,141.436370849609 -2.73388910293579,141.568572998047 -2.79388904571533,141.608856201172 -2.8125,141.704132080078 -2.86250019073486,141.840515136719 -2.93694448471069,141.881622314453 -2.96444463729858,141.889984130859 -2.96999979019165,141.894714355469 -2.9719443321228,141.913879394531 -2.9719443321228,141.931091308594 -2.9686107635498,141.935791015625 -2.96638870239258,141.962463378906 -2.95888900756836,141.973571777344 -2.95611095428467,141.991912841797 -2.95416688919067,142.003601074219 -2.95611095428467,142.011932373047 -2.96166658401489,142.066070556641 -3.00833368301392,142.076904296875 -3.01777791976929,142.077758789062 -3.02055549621582,142.124969482422 -3.05944442749023,142.252471923828 -3.10472249984741,142.551910400391 -3.21833324432373,142.663604736328 -3.24777793884277,142.946624755859 -3.33249998092651,142.992462158203 -3.34833335876465,143.032745361328 -3.36277770996094,143.041076660156 -3.36416673660278,143.073181152344 -3.36020636558533,143.087738037109 -3.35583353042603,143.093841552734 -3.35500001907349,143.106079101562 -3.35388898849487,143.123840332031 -3.35388898849487,143.172760009766 -3.35722255706787,143.194702148438 -3.3600001335144,143.209686279297 -3.3652777671814,143.2138671875 -3.36805534362793,143.229400634766 -3.37972211837769,143.23828125 -3.38444471359253,143.255554199219 -3.3880558013916,143.336364746094 -3.40166664123535,143.346069335938 -3.40166664123535,143.370788574219 -3.40166664123535,143.384429931641 -3.40305519104004,143.408325195312 -3.40638875961304,143.442749023438 -3.41194438934326,143.516082763672 -3.43444442749023,143.520812988281 -3.43666648864746,143.529144287109 -3.44194412231445,143.536651611328 -3.44805526733398,143.569427490234 -3.47555541992188,143.598846435547 -3.51444482803345,143.602172851562 -3.5247220993042,143.605804443359 -3.54194450378418,143.609130859375 -3.54527807235718,143.61328125 -3.54805564880371,143.648864746094 -3.56722259521484,143.731079101562 -3.60416698455811,143.768310546875 -3.61083364486694,143.790802001953 -3.61083364486694,143.794982910156 -3.61222219467163,143.798858642578 -3.61500024795532,143.949127197266 -3.73333311080933,143.955230712891 -3.73944425582886,143.9580078125 -3.74361133575439,143.964691162109 -3.7572226524353,143.966064453125 -3.76277780532837,143.976348876953 -3.77972221374512,143.981903076172 -3.78805589675903,143.988861083984 -3.79500007629395,143.993011474609 -3.79777812957764,144.016937255859 -3.81055545806885,144.243011474609 -3.87277746200562,144.249114990234 -3.87361097335815,144.253875732422 -3.87138891220093,144.255249023438 -3.86611127853394,144.253875732422 -3.86194467544556,144.253875732422 -3.85500001907349,144.258026123047 -3.84555530548096,144.275268554688 -3.809166431427,144.278594970703 -3.80583333969116,144.284973144531 -3.80527782440186,144.338287353516 -3.80249977111816,144.375244140625 -3.80249977111816,144.511657714844 -3.82083368301392,144.515808105469 -3.82361125946045,144.532196044922 -3.84611082077026,144.534973144531 -3.8502779006958,144.549987792969 -3.87611103057861,144.552185058594 -3.88111114501953,144.547210693359 -3.8938889503479,144.545257568359 -3.90416669845581,144.54248046875 -3.93444442749023,144.543853759766 -3.95361137390137,144.547210693359 -3.96388912200928,144.551361083984 -3.9719443321228,144.571350097656 -3.99194431304932,144.591064453125 -4.00611114501953,144.608306884766 -4.0130558013916,144.613861083984 -4.01444530487061,144.653594970703 -4.0130558013916,144.673309326172 -4.01361179351807,144.678863525391 -4.01500034332275,144.729675292969 -4.0313892364502,144.766662597656 -4.04638862609863,144.850250244141 -4.09305572509766,144.858306884766 -4.09833335876465,144.876342773438 -4.11361122131348,144.978302001953 -4.22277736663818,144.981628417969 -4.22638893127441,144.986633300781 -4.23499965667725,144.991333007812 -4.24388885498047,144.994689941406 -4.25277805328369,144.996063232422 -4.26250076293945,145.004974365234 -4.28166675567627,145.033050537109 -4.33555603027344,145.036651611328 -4.33888912200928,145.054962158203 -4.35194396972656,145.089965820312 -4.37166595458984,145.094696044922 -4.37388896942139,145.157196044922 -4.38277721405029,145.228576660156 -4.3880558013916,145.253051757812 -4.37861061096191,145.293579101562 -4.37666606903076,145.305236816406 -4.37722206115723,145.333862304688 -4.38944435119629,145.338012695312 -4.39222240447998,145.451080322266 -4.49416637420654,145.459411621094 -4.50444507598877,145.527191162109 -4.59249973297119,145.614135742188 -4.70027828216553,145.620513916016 -4.70777797698975,145.675811767578 -4.76194477081299,145.679412841797 -4.76527786254883,145.69384765625 -4.77694511413574,145.735504150391 -4.80277729034424,145.780822753906 -4.92777729034424,145.813598632812 -5.06555557250977,145.813598632812 -5.07250022888184,145.786926269531 -5.23138904571533,145.765808105469 -5.26361179351807,145.738861083984 -5.30527782440186,145.724395751953 -5.41222190856934,145.723846435547 -5.42527770996094,145.725250244141 -5.430832862854,145.734130859375 -5.4491662979126,145.747741699219 -5.46972179412842,145.754699707031 -5.47638893127441,145.766387939453 -5.48527717590332,145.782745361328 -5.4894437789917,145.787750244141 -5.48999977111816,145.793029785156 -5.48999977111816,145.872467041016 -5.48611068725586,145.930816650391 -5.47722244262695,145.935516357422 -5.47638893127441,145.963592529297 -5.47305583953857,145.976623535156 -5.47638893127441,146.082183837891 -5.51250076293945,146.174682617188 -5.55138874053955,146.194702148438 -5.55888843536377,146.289154052734 -5.58888912200928,146.376342773438 -5.59916687011719,146.439971923828 -5.59861087799072,146.445526123047 -5.59861087799072,146.465240478516 -5.60472202301025,146.47021484375 -5.60666751861572,146.474090576172 -5.60944557189941,146.531188964844 -5.65468120574951,146.580535888672 -5.69472217559814,146.605224609375 -5.71777820587158,146.640808105469 -5.74388885498047,146.653045654297 -5.75194454193115,146.662750244141 -5.75611114501953,146.688873291016 -5.76416683197021,146.714691162109 -5.76972198486328,146.770782470703 -5.79138946533203,146.775787353516 -5.79361248016357,146.783843994141 -5.79889011383057,146.786071777344 -5.80388927459717,146.796310424805 -5.83441781997681,146.875213623047 -5.82555675506592,146.894958496094 -5.82888984680176,146.923004150391 -5.84194564819336,146.930511474609 -5.84805679321289,146.946319580078 -5.86638927459717,146.953826904297 -5.88611221313477,146.956604003906 -5.89027881622314,146.962707519531 -5.897780418396,146.992156982422 -5.91611289978027,147.014129638672 -5.92833518981934,147.041625976562 -5.94222354888916,147.046325683594 -5.94416904449463,147.102722167969 -5.96611404418945,147.112152099609 -5.96667003631592,147.228820800781 -5.97223472595215,147.234924316406 -5.97140216827393,147.24658203125 -5.96251487731934,147.269683837891 -5.93807125091553,147.274658203125 -5.93612670898438,147.284942626953 -5.93529415130615,147.423278808594 -5.96058177947998,147.466613769531 -5.97085952758789,147.476867675781 -5.97419261932373,147.484375 -5.98030376434326,147.573303222656 -6.05527782440186,147.590515136719 -6.07222270965576,147.641937255859 -6.13694477081299,147.786651611328 -6.30249977111816,147.826354980469 -6.3372220993042,147.830261230469 -6.34694480895996,147.850250244141 -6.41166687011719,147.863861083984 -6.45916652679443,147.866638183594 -6.47000026702881,147.869964599609 -6.65472221374512,147.869415283203 -6.66083335876465,147.866058349609 -6.67083358764648,147.845520019531 -6.69138813018799,147.838562011719 -6.69805526733398,147.819427490234 -6.71305561065674,147.810516357422 -6.71777820587158,147.770812988281 -6.72611141204834,147.759155273438 -6.72805595397949,147.568023681641 -6.75194454193115,147.416381835938 -6.73499965667725,147.305541992188 -6.74583339691162,147.219696044922 -6.74638843536377,147.199981689453 -6.74583339691162,147.188873291016 -6.74305534362793,147.180816650391 -6.74027729034424,147.174682617188 -6.73555564880371,147.166381835938 -6.72333335876465,147.160247802734 -6.71722221374512,147.149993896484 -6.71388912200928,147.0888671875 -6.71444511413574,146.971069335938 -6.74305534362793,146.961364746094 -6.74722194671631,146.948577880859 -6.79805564880371,146.944976806641 -6.81527709960938,146.943023681641 -6.84027767181396,146.941650390625 -6.90444469451904,146.944976806641 -6.95388889312744,146.946350097656 -6.95944499969482,146.948577880859 -6.96416664123535,146.955230712891 -6.97111129760742,147.0244140625 -7.03694438934326,147.037475585938 -7.04444408416748,147.130798339844 -7.20361137390137,147.140258789062 -7.22111129760742,147.144439697266 -7.23083305358887,147.146362304688 -7.24916648864746,147.145812988281 -7.26194477081299,147.141662597656 -7.27166652679443,147.140258789062 -7.27694511413574,147.137481689453 -7.29472255706787,147.139709472656 -7.32527828216553,147.1533203125 -7.38305473327637,147.154693603516 -7.38861179351807,147.178588867188 -7.46388912200928,147.210784912109 -7.49027729034424,147.216369628906 -7.49166679382324,147.297210693359 -7.5038890838623,147.303314208984 -7.50472259521484,147.320526123047 -7.50527858734131,147.332183837891 -7.50333404541016,147.3369140625 -7.50527858734131,147.418579101562 -7.56722259521484,147.457733154297 -7.5977783203125,147.641357421875 -7.77555561065674,147.666656494141 -7.79111099243164,147.670806884766 -7.79388904571533,147.693298339844 -7.82583332061768,147.696075439453 -7.83527755737305,147.701629638672 -7.87055492401123,147.701629638672 -7.8841667175293,147.700805664062 -7.89027786254883,147.701629638672 -7.90333366394043,147.703033447266 -7.90861129760742,147.710510253906 -7.92166614532471,147.715240478516 -7.92916679382324,147.718566894531 -7.93249988555908,147.731628417969 -7.9399995803833,147.741333007812 -7.94388866424561,147.756927490234 -7.94861030578613,147.776916503906 -7.93638801574707,147.782470703125 -7.93527698516846,147.804412841797 -7.93527698516846,147.854949951172 -7.93527698516846,147.866638183594 -7.93722152709961,147.876342773438 -7.94111061096191,147.888031005859 -7.94999980926514,147.911926269531 -7.96722221374512,147.935791015625 -7.98277759552002,147.939422607422 -7.98472213745117,147.974395751953 -7.99610900878906,147.979675292969 -8.03694534301758,147.982452392578 -8.04777908325195,147.985229492188 -8.05194473266602,147.9921875 -8.0586109161377,148.004425048828 -8.06666564941406,148.009979248047 -8.06666564941406,148.0263671875 -8.06277847290039,148.114685058594 -8.05527877807617,148.13525390625 -8.06611061096191,148.194976806641 -8.25194549560547,148.19970703125 -8.26749992370605,148.205810546875 -8.29527854919434,148.206634521484 -8.30138969421387,148.207183837891 -8.31083297729492,148.207183837891 -8.32055473327637,148.206634521484 -8.34000015258789,148.210784912109 -8.39305686950684,148.220245361328 -8.51027870178223,148.222198486328 -8.53388977050781,148.230529785156 -8.55972290039062,148.235229492188 -8.56861114501953,148.2421875 -8.57527732849121,148.271087646484 -8.59444427490234,148.300537109375 -8.61138916015625,148.318298339844 -8.60861015319824,148.327178955078 -8.60638809204102,148.331359863281 -8.60638809204102,148.347198486328 -8.61138916015625,148.351898193359 -8.61333274841309,148.376617431641 -8.62944412231445,148.443023681641 -8.67500114440918,148.44580078125 -8.67888832092285,148.478576660156 -8.73305511474609,148.479949951172 -8.73861122131348,148.479949951172 -8.75889015197754,148.489685058594 -8.84027671813965,148.494415283203 -8.86666488647461,148.530822753906 -8.99305534362793,148.534698486328 -9.00277900695801,148.536926269531 -9.00750160217285,148.5888671875 -9.07027816772461,148.604125976562 -9.08250045776367,148.614410400391 -9.0858325958252,148.695251464844 -9.10222244262695,148.719970703125 -9.10472106933594,148.725250244141 -9.10472106933594,148.753601074219 -9.10416603088379,148.782196044922 -9.10138893127441,148.842468261719 -9.09055519104004,149.067199707031 -9.04111099243164,149.071350097656 -9.03861236572266,149.137756347656 -9.00666809082031,149.221343994141 -8.99860954284668,149.255828857422 -8.99777793884277,149.259979248047 -8.99916648864746,149.309967041016 -9.01694488525391,149.314697265625 -9.01889038085938,149.316650390625 -9.02166748046875,149.322204589844 -9.03777885437012,149.338012695312 -9.12972068786621,149.328308105469 -9.15277862548828,149.325531005859 -9.15694427490234,149.316070556641 -9.16777801513672,149.311920166016 -9.17055511474609,149.291351318359 -9.18388938903809,149.181640625 -9.34916687011719,149.1796875 -9.35361099243164,149.178863525391 -9.35972213745117,149.178863525391 -9.37333297729492,149.181091308594 -9.38500022888184,149.184417724609 -9.39500045776367,149.208312988281 -9.45249938964844,149.219970703125 -9.47472190856934,149.227752685547 -9.48749923706055,149.231079101562 -9.49110984802246,149.234405517578 -9.49444389343262,149.243286132812 -9.49916648864746,149.266662597656 -9.51000022888184,149.271636962891 -9.5119457244873,149.2783203125 -9.5119457244873,149.28857421875 -9.50861167907715,149.301635742188 -9.50777816772461,149.307189941406 -9.5091667175293,149.348846435547 -9.52194595336914,149.437469482422 -9.57138824462891,149.439422607422 -9.59111022949219,149.440795898438 -9.59638786315918,149.444122314453 -9.59972190856934,149.454406738281 -9.60305404663086,149.662200927734 -9.60722160339355,149.739410400391 -9.60166549682617,149.746337890625 -9.60166549682617,149.758026123047 -9.6038875579834,149.764984130859 -9.60916519165039,149.771087646484 -9.61666488647461,149.775268554688 -9.61944389343262,149.780548095703 -9.6208324432373,149.874389648438 -9.6422233581543,149.880798339844 -9.64305686950684,149.9033203125 -9.64361190795898,149.910247802734 -9.64361190795898,149.94580078125 -9.6422233581543,149.956634521484 -9.63972282409668,149.960784912109 -9.6369457244873,149.982727050781 -9.63138771057129,150.008880615234 -9.63138771057129,150.049133300781 -9.67944526672363,150.051361083984 -9.68416595458984,150.053314208984 -9.68888854980469,150.056915283203 -9.70999908447266,150.056915283203 -9.71527671813965,150.055541992188 -9.72055435180664,150.051910400391 -9.72416687011719,149.988861083984 -9.75111198425293,149.926635742188 -9.76944541931152,149.863586425781 -9.78222274780273,149.857452392578 -9.78277778625488,149.852752685547 -9.78222274780273,149.841644287109 -9.77944564819336,149.835510253906 -9.77888870239258,149.808013916016 -9.7813892364502,149.769714355469 -9.7902774810791,149.764984130859 -9.79222297668457,149.739410400391 -9.80777740478516,149.727172851562 -9.81583404541016,149.720245361328 -9.82277679443359,149.717468261719 -9.8266658782959,149.716369628906 -9.83222198486328,149.717468261719 -9.83749961853027,149.721069335938 -9.84749984741211,149.723022460938 -9.85249900817871,149.76220703125 -9.90166664123535,149.873840332031 -10.0169448852539,149.914154052734 -10.0488891601562,149.926635742188 -10.0569438934326,149.935516357422 -10.0616655349731,149.982727050781 -10.081111907959,149.98828125 -10.0825004577637,149.994415283203 -10.0819444656372,150.003326416016 -10.0772228240967,150.013610839844 -10.0736103057861,150.019714355469 -10.073055267334,150.184143066406 -10.0933322906494,150.189147949219 -10.0952777862549,150.236358642578 -10.1283321380615,150.259704589844 -10.1527786254883,150.29052734375 -10.1830558776855,150.298583984375 -10.1883344650269,150.308319091797 -10.1924991607666,150.352752685547 -10.1999988555908,150.382171630859 -10.2047214508057,150.400268554688 -10.2072219848633,150.579681396484 -10.2411098480225,150.61328125 -10.2755565643311,150.618011474609 -10.2775001525879,150.63525390625 -10.280834197998,150.641357421875 -10.2813892364502,150.647491455078 -10.280834197998,150.775543212891 -10.2613906860352,150.780548095703 -10.2591667175293,150.803588867188 -10.2486095428467,150.815521240234 -10.2397212982178,150.81884765625 -10.2363872528076,150.824981689453 -10.2316665649414,150.829681396484 -10.2294454574585,150.844116210938 -10.2247219085693,150.862731933594 -10.2227764129639,150.869415283203 -10.2227764129639,150.877746582031 -10.2283334732056,150.878295898438 -10.2316665649414,150.870788574219 -10.2377777099609,150.861907958984 -10.2424983978271,150.727752685547 -10.3125,150.641937255859 -10.3494434356689,150.636383056641 -10.3508319854736,150.631072998047 -10.3508319854736,150.602172851562 -10.3502769470215,150.596069335938 -10.3494434356689,150.547485351562 -10.3355560302734,150.496063232422 -10.3186111450195,150.438568115234 -10.3036117553711,150.421905517578 -10.3011112213135,150.415802001953 -10.3002777099609,150.406372070312 -10.3044452667236,150.369110107422 -10.3219451904297,150.358306884766 -10.3313884735107,150.356353759766 -10.3361110687256,150.348571777344 -10.3758316040039,150.346618652344 -10.3875007629395,150.352172851562 -10.3952789306641,150.356903076172 -10.3975009918213,150.568572998047 -10.4627780914307,150.6494140625 -10.4755554199219,150.657745361328 -10.4811115264893,150.663299560547 -10.4891662597656,150.689971923828 -10.5502777099609,150.691925048828 -10.5550003051758,150.691345214844 -10.5611114501953,150.688568115234 -10.5652770996094,150.680267333984 -10.5774993896484,150.675537109375 -10.5794448852539,150.568023681641 -10.6219444274902,150.556365966797 -10.6238880157471,150.522766113281 -10.6191654205322,150.492736816406 -10.6191654205322,150.481628417969 -10.6219444274902,150.477447509766 -10.6244430541992,150.47412109375 -10.6277770996094,150.44384765625 -10.6588897705078,150.428314208984 -10.6877784729004,150.424133300781 -10.6905555725098,150.369964599609 -10.6872215270996,150.268585205078 -10.6886119842529,150.209686279297 -10.7005558013916,150.113006591797 -10.6674995422363,150.099975585938 -10.6575012207031,150.059417724609 -10.6258316040039,150.028045654297 -10.5894432067871,150.016937255859 -10.5733337402344,150.013031005859 -10.5705547332764,150.007476806641 -10.5691661834717,149.91552734375 -10.5577774047852,149.898590087891 -10.5597229003906,149.896362304688 -10.5625,149.893585205078 -10.5633344650269,149.888305664062 -10.5619449615479,149.862182617188 -10.5544452667236,149.852752685547 -10.5502777099609,149.850524902344 -10.5469455718994,149.875244140625 -10.5100002288818,149.878570556641 -10.5066680908203,149.883331298828 -10.5044460296631,149.901916503906 -10.5025005340576,149.942474365234 -10.5025005340576,149.964416503906 -10.5025005340576,149.968292236328 -10.5052795410156,149.971069335938 -10.5094451904297,149.97802734375 -10.5161113739014,149.989685058594 -10.5180568695068,150.016937255859 -10.5113906860352,150.022491455078 -10.5100002288818,150.031372070312 -10.5052795410156,150.039703369141 -10.5,150.078857421875 -10.4627780914307,150.064422607422 -10.4561100006104,149.990234375 -10.4372215270996,149.866363525391 -10.3980560302734,149.806091308594 -10.3677768707275,149.785522460938 -10.3583335876465,149.758026123047 -10.3461112976074,149.747741699219 -10.3427772521973,149.723846435547 -10.3394432067871,149.683868408203 -10.3380546569824,149.6640625 -10.3398141860962)),((152.004425048828 -2.67000007629395,151.972747802734 -2.66888904571533,151.961090087891 -2.66805553436279,151.957733154297 -2.66472196578979,151.955535888672 -2.65999984741211,151.953582763672 -2.64833354949951,151.954406738281 -2.64222240447998,151.958312988281 -2.63249969482422,151.972747802734 -2.60583353042603,151.979675292969 -2.59888887405396,151.983856201172 -2.59611082077026,151.995239257812 -2.59555530548096,152.000823974609 -2.5969443321228,152.010528564453 -2.60111141204834,152.018585205078 -2.60638904571533,152.022216796875 -2.6100001335144,152.035247802734 -2.63111114501953,152.037200927734 -2.63583326339722,152.038024902344 -2.64222240447998,152.029693603516 -2.66111087799072,152.026916503906 -2.6652774810791,152.022216796875 -2.66750001907349,152.004425048828 -2.67000007629395)),((151.959136962891 -2.84611082077026,151.946624755859 -2.84472227096558,151.941345214844 -2.84333324432373,151.937194824219 -2.8405556678772,151.931640625 -2.83249998092651,151.921905517578 -2.80777788162231,151.920806884766 -2.80222225189209,151.928863525391 -2.7186107635498,151.9296875 -2.71250009536743,151.932464599609 -2.70833349227905,151.939147949219 -2.70833349227905,151.944702148438 -2.70972204208374,151.985778808594 -2.72499990463257,151.989959716797 -2.72749996185303,151.996612548828 -2.7344446182251,152.006378173828 -2.74555540084839,152.009155273438 -2.74944448471069,152.009704589844 -2.75583362579346,152.011932373047 -2.79055595397949,152.011932373047 -2.81805562973022,152.009704589844 -2.82277774810791,152.002197265625 -2.82888889312744,151.959136962891 -2.84611082077026)),((152.063873291016 -3.00222253799438,152.059143066406 -3,152.035247802734 -2.98277759552002,152.0283203125 -2.97555541992188,151.960510253906 -2.88722229003906,151.959686279297 -2.8808331489563,151.959686279297 -2.86861085891724,151.960510253906 -2.86250019073486,151.963287353516 -2.85833358764648,151.973571777344 -2.84805536270142,151.978302001953 -2.84611082077026,151.984954833984 -2.84611082077026,152.072204589844 -2.92138910293579,152.078857421875 -2.9283332824707,152.083862304688 -2.93694448471069,152.087188720703 -2.9472222328186,152.089141845703 -2.95888900756836,152.088562011719 -2.96527767181396,152.086639404297 -2.96999979019165,152.073577880859 -2.99805545806885,152.069976806641 -3.00138902664185,152.063873291016 -3.00222253799438)),((150.773590087891 -2.98555564880371,150.768035888672 -2.9844446182251,150.766082763672 -2.97944402694702,150.773040771484 -2.97249984741211,150.788024902344 -2.96027803421021,150.795532226562 -2.95416688919067,150.870788574219 -2.91249990463257,150.879119873047 -2.9088888168335,150.903045654297 -2.90833330154419,150.908599853516 -2.90833330154419,150.913299560547 -2.91027784347534,150.941345214844 -2.9219446182251,151.021087646484 -2.96305561065674,151.023590087891 -2.96722221374512,151.021636962891 -2.9719443321228,151.003875732422 -2.98166656494141,150.999114990234 -2.98361110687256,150.992736816406 -2.9844446182251,150.882446289062 -2.9686107635498,150.872192382812 -2.96527767181396,150.855804443359 -2.9622220993042,150.838012695312 -2.95972204208374,150.831909179688 -2.96027803421021,150.773590087891 -2.98555564880371)),((152.640808105469 -3.23000001907349,152.636108398438 -3.2277774810791,152.605224609375 -3.20388889312744,152.577178955078 -3.17722225189209,152.538879394531 -3.1061110496521,152.537475585938 -3.10055589675903,152.537475585938 -3.09499979019165,152.539428710938 -3.09027767181396,152.553863525391 -3.07055568695068,152.558013916016 -3.06777811050415,152.590240478516 -3.05194425582886,152.599700927734 -3.04805564880371,152.606079101562 -3.04722261428833,152.640258789062 -3.04305553436279,152.644989013672 -3.04527807235718,152.648590087891 -3.04861116409302,152.667755126953 -3.12944412231445,152.668853759766 -3.14861106872559,152.668853759766 -3.15527772903442,152.667755126953 -3.16083335876465,152.654693603516 -3.21638870239258,152.6533203125 -3.22166633605957,152.646362304688 -3.22861099243164,152.640808105469 -3.23000001907349)),((153.343292236328 -3.41666650772095,153.265258789062 -3.40722227096558,153.262481689453 -3.40444421768188,153.263885498047 -3.39888906478882,153.269989013672 -3.39277791976929,153.301635742188 -3.36944437026978,153.333587646484 -3.37138891220093,153.337188720703 -3.375,153.346069335938 -3.38666677474976,153.348022460938 -3.39138889312744,153.347473144531 -3.39750003814697,153.345245361328 -3.41194438934326,153.343292236328 -3.41666650772095)),((154.818572998047 -3.53027772903442,154.795257568359 -3.44138860702515,154.794708251953 -3.43249988555908,154.796081542969 -3.4283332824707,154.799407958984 -3.42500019073486,154.825531005859 -3.4713888168335,154.830261230469 -3.48027753829956,154.833862304688 -3.50416707992554,154.833038330078 -3.51027822494507,154.818572998047 -3.53027772903442)),((153.242462158203 -3.49944448471069,153.237182617188 -3.49805545806885,153.211090087891 -3.48861122131348,153.206909179688 -3.48583316802979,153.192474365234 -3.47277736663818,153.19384765625 -3.4686107635498,153.197204589844 -3.46527767181396,153.220520019531 -3.44888877868652,153.22412109375 -3.4466667175293,153.22802734375 -3.44555521011353,153.233581542969 -3.4466667175293,153.239959716797 -3.45444440841675,153.255554199219 -3.47972202301025,153.259704589844 -3.48916673660278,153.26025390625 -3.49527788162231,153.258331298828 -3.49888896942139,153.242462158203 -3.49944448471069)),((153.639434814453 -4.14083385467529,153.634429931641 -4.13861179351807,153.588012695312 -4.10583305358887,153.585235595703 -4.10194396972656,153.584411621094 -4.09583377838135,153.585235595703 -4.08944416046143,153.587188720703 -4.0847225189209,153.602172851562 -4.05888843536377,153.629669189453 -4.0313892364502,153.633880615234 -4.0286111831665,153.653045654297 -4.02055549621582,153.658599853516 -4.01916694641113,153.662750244141 -4.02194499969482,153.664703369141 -4.02666664123535,153.671630859375 -4.08000087738037,153.672210693359 -4.08611106872559,153.671630859375 -4.10472202301025,153.670257568359 -4.10999965667725,153.650268554688 -4.1380558013916,153.645538330078 -4.14027786254883,153.639434814453 -4.14083385467529)),((145.057739257812 -4.13527774810791,145.050811767578 -4.13527774810791,145.041351318359 -4.13249969482422,145.037200927734 -4.13000011444092,145.031646728516 -4.12166595458984,145.027770996094 -4.11222171783447,145.0263671875 -4.10666656494141,145.022216796875 -4.07666683197021,145.0263671875 -4.06694507598877,145.031646728516 -4.05888843536377,145.036651611328 -4.05666637420654,145.06884765625 -4.04500007629395,145.079132080078 -4.04777812957764,145.095520019531 -4.05888843536377,145.101623535156 -4.06638813018799,145.107177734375 -4.07527828216553,145.110504150391 -4.09222221374512,145.109954833984 -4.09833335876465,145.094696044922 -4.12444400787354,145.092193603516 -4.12833309173584,145.088012695312 -4.13138866424561,145.083312988281 -4.13333320617676,145.057739257812 -4.13527774810791)),((150.74609375 -6.13554954528809,150.729675292969 -6.14666748046875,150.724975585938 -6.14861106872559,150.707183837891 -6.15555572509766,150.668853759766 -6.16833305358887,150.663879394531 -6.16916656494141,150.661102294922 -6.16499996185303,150.659149169922 -6.15333366394043,150.657196044922 -6.14861106872559,150.652191162109 -6.14666748046875,150.63525390625 -6.14861106872559,150.509704589844 -6.23499965667725,150.484954833984 -6.25833415985107,150.480255126953 -6.26722240447998,150.473571777344 -6.27388954162598,150.468566894531 -6.2761116027832,150.406372070312 -6.29305553436279,150.400268554688 -6.29361152648926,150.222747802734 -6.28833293914795,150.211639404297 -6.2761116027832,150.188293457031 -6.25833415985107,150.184143066406 -6.25555610656738,150.180816650391 -6.25500011444092,150.170532226562 -6.25694465637207,150.080810546875 -6.28000068664551,150.038879394531 -6.29916667938232,150.018310546875 -6.32361125946045,150.016387939453 -6.30388832092285,150.014434814453 -6.29916667938232,150.010803222656 -6.29583358764648,149.98828125 -6.27722263336182,149.984130859375 -6.2747220993042,149.978576660156 -6.27333354949951,149.972473144531 -6.27388954162598,149.894989013672 -6.29249954223633,149.889709472656 -6.29249954223633,149.847198486328 -6.29249954223633,149.844421386719 -6.29249954223633,149.842193603516 -6.29249954223633,149.686645507812 -6.30527782440186,149.634704589844 -6.30805492401123,149.609405517578 -6.29249954223633,149.605224609375 -6.28972244262695,149.574981689453 -6.26500034332275,149.571624755859 -6.26166725158691,149.555236816406 -6.22694492340088,149.539428710938 -6.19777774810791,149.510803222656 -6.15277767181396,149.489410400391 -6.12611103057861,149.482452392578 -6.11944389343262,149.467468261719 -6.10972213745117,149.444976806641 -6.09805583953857,149.341339111328 -6.06083297729492,149.335784912109 -6.05944442749023,149.311920166016 -6.05722236633301,149.289978027344 -6.06277751922607,149.163879394531 -6.11250019073486,149.138580322266 -6.14861106872559,149.131072998047 -6.15472221374512,149.119415283203 -6.15694427490234,149.069427490234 -6.16416645050049,149.063018798828 -6.16499996185303,149.056915283203 -6.16416645050049,149.052185058594 -6.16222190856934,149.049407958984 -6.15805530548096,149.048034667969 -6.15277767181396,149.048034667969 -6.14583396911621,149.050262451172 -6.14111137390137,149.054962158203 -6.13916683197021,149.061096191406 -6.13833332061768,149.067199707031 -6.14583396911621,149.071350097656 -6.14861106872559,149.075531005859 -6.14583396911621,149.079681396484 -6.13638877868652,149.078857421875 -6.11944389343262,149.071899414062 -6.09277820587158,149.055541992188 -6.04444408416748,149.039978027344 -6.03694438934326,148.983032226562 -6.01972198486328,148.942474365234 -6.00833415985107,148.920654296875 -6.00002384185791,148.882995605469 -5.98166465759277,148.878814697266 -5.94748497009277,148.876068115234 -5.9436616897583,148.764434814453 -5.86499118804932,148.704650878906 -5.84858131408691,148.699554443359 -5.84745788574219,148.589721679688 -5.82837104797363,148.528045654297 -5.82837104797363,148.401672363281 -5.78336238861084,148.391967773438 -5.77940940856934,148.3876953125 -5.77660369873047,148.366607666016 -5.75592136383057,148.359771728516 -5.74921321868896,148.339324951172 -5.7143726348877,148.330780029297 -5.69515228271484,148.323089599609 -5.67537689208984,148.321655273438 -5.66980838775635,148.316467285156 -5.62802600860596,148.354675292969 -5.50166702270508,148.358001708984 -5.49277782440186,148.359954833984 -5.48805522918701,148.370239257812 -5.4777774810791,148.378570556641 -5.47249984741211,148.428588867188 -5.45111179351807,148.450531005859 -5.45527839660645,148.504699707031 -5.48333263397217,148.511657714844 -5.48999977111816,148.519714355469 -5.50250053405762,148.618286132812 -5.50500011444092,148.883605957031 -5.49694442749023,148.961639404297 -5.47361087799072,148.973297119141 -5.47166633605957,148.985778808594 -5.47305583953857,149.000823974609 -5.47833347320557,149.122192382812 -5.52416706085205,149.126892089844 -5.5261116027832,149.189147949219 -5.55833339691162,149.209686279297 -5.57194519042969,149.2138671875 -5.57472229003906,149.216064453125 -5.57944488525391,149.220764160156 -5.60611152648926,149.270812988281 -5.59444427490234,149.310516357422 -5.58611106872559,149.425537109375 -5.56722259521484,149.549133300781 -5.53861141204834,149.566925048828 -5.52888870239258,149.581909179688 -5.52333354949951,149.611358642578 -5.51861095428467,149.668304443359 -5.51944446563721,149.680541992188 -5.55416679382324,149.680541992188 -5.561110496521,149.685516357422 -5.56305503845215,149.692199707031 -5.56305503845215,149.710784912109 -5.5625,149.875244140625 -5.5363883972168,149.880798339844 -5.53499984741211,149.887481689453 -5.53166675567627,149.916381835938 -5.51194477081299,149.928588867188 -5.50361156463623,149.956085205078 -5.47638893127441,149.964416503906 -5.46416664123535,149.981353759766 -5.4333324432373,149.984130859375 -5.42249965667725,149.983581542969 -5.41638851165771,149.981353759766 -5.41166687011719,149.97802734375 -5.40833377838135,149.973297119141 -5.4061107635498,149.954132080078 -5.40472221374512,149.950531005859 -5.40138912200928,149.923034667969 -5.36055564880371,149.917755126953 -5.35222244262695,149.918304443359 -5.34611129760742,149.928588867188 -5.31527709960938,149.934692382812 -5.30722236633301,150.002777099609 -5.16944408416748,150.015533447266 -5.05749988555908,150.019714355469 -5.04777812957764,150.029968261719 -5.03083324432373,150.034149169922 -5.02805614471436,150.0888671875 -5.00777816772461,150.095794677734 -5.00777816772461,150.121337890625 -5.00972270965576,150.126617431641 -5.01111125946045,150.154693603516 -5.02388954162598,150.181640625 -5.03888893127441,150.19384765625 -5.04722213745117,150.199401855469 -5.05527782440186,150.203582763672 -5.0649995803833,150.204956054688 -5.07055568695068,150.203582763672 -5.07583332061768,150.184143066406 -5.09833335876465,150.180816650391 -5.10194396972656,150.164428710938 -5.11277770996094,150.154693603516 -5.11694431304932,150.132720947266 -5.12222194671631,150.101348876953 -5.13194370269775,150.091644287109 -5.13583374023438,150.082733154297 -5.14138889312744,150.072479248047 -5.15166664123535,150.064422607422 -5.16388893127441,150.061645507812 -5.17472171783447,150.04248046875 -5.3086109161377,150.062194824219 -5.36388874053955,150.121337890625 -5.51250076293945,150.123291015625 -5.51722240447998,150.143859863281 -5.5377779006958,150.164428710938 -5.55138874053955,150.178863525391 -5.55749988555908,150.184143066406 -5.55888843536377,150.282196044922 -5.57055568695068,150.291076660156 -5.57055568695068,150.296630859375 -5.569167137146,150.300811767578 -5.56638813018799,150.306915283203 -5.55888843536377,150.318023681641 -5.54194450378418,150.319976806641 -5.53722190856934,150.323303222656 -5.53361129760742,150.326904296875 -5.53027820587158,150.345245361328 -5.51472282409668,150.412475585938 -5.45861148834229,150.422760009766 -5.45527839660645,150.488555908203 -5.44694423675537,150.511108398438 -5.4505558013916,150.574127197266 -5.47638893127441,150.578308105469 -5.47916698455811,150.595520019531 -5.4961109161377,150.601623535156 -5.51722240447998,150.611083984375 -5.54194450378418,150.61328125 -5.54666709899902,150.616058349609 -5.55083274841309,150.624114990234 -5.55611038208008,150.644134521484 -5.55694389343262,150.677917480469 -5.55129909515381,150.693298339844 -5.54749965667725,150.698852539062 -5.54611110687256,150.914154052734 -5.4908332824707,150.924407958984 -5.48722171783447,150.979125976562 -5.44499969482422,151.003051757812 -5.42111110687256,151.011383056641 -5.4088888168335,151.015533447266 -5.39944458007812,151.018859863281 -5.38916683197021,151.023040771484 -5.37277698516846,151.023040771484 -5.3658332824707,151.018310546875 -5.34333324432373,151.018310546875 -5.33666706085205,151.018859863281 -5.33027839660645,151.0244140625 -5.28805541992188,151.028594970703 -5.27166652679443,151.038879394531 -5.24111080169678,151.046936035156 -5.22194480895996,151.066070556641 -5.18583297729492,151.071075439453 -5.17694473266602,151.084686279297 -5.1563892364502,151.096923828125 -5.14277839660645,151.26220703125 -4.98638820648193,151.266387939453 -4.98388862609863,151.357452392578 -4.94749927520752,151.441070556641 -4.93666648864746,151.513610839844 -4.93805503845215,151.604675292969 -4.96805572509766,151.608856201172 -4.97083377838135,151.614959716797 -4.97000026702881,151.641082763672 -4.95499992370605,151.648590087891 -4.94888877868652,151.654144287109 -4.94083309173584,151.676086425781 -4.90805530548096,151.684417724609 -4.88890266418457,151.687744140625 -4.86499977111816,151.682189941406 -4.81444454193115,151.658325195312 -4.61638832092285,151.630798339844 -4.50638961791992,151.62744140625 -4.49749946594238,151.598022460938 -4.43805503845215,151.592468261719 -4.43000030517578,151.588287353516 -4.42722225189209,151.547210693359 -4.35999965667725,151.501373291016 -4.23916625976562,151.5 -4.23388862609863,151.5 -4.22694492340088,151.503326416016 -4.21666622161865,151.508331298828 -4.20777797698975,151.511657714844 -4.20444488525391,151.536926269531 -4.18194389343262,151.783050537109 -4.20583343505859,151.841918945312 -4.22472190856934,151.852172851562 -4.22833347320557,151.857727050781 -4.23638820648193,151.859680175781 -4.24111080169678,151.861083984375 -4.24666690826416,151.863861083984 -4.27138900756836,151.869964599609 -4.28555583953857,151.878295898438 -4.29805564880371,151.884429931641 -4.30555534362793,151.895263671875 -4.3149995803833,151.904144287109 -4.32000064849854,151.9638671875 -4.33555603027344,151.969421386719 -4.33694458007812,151.974975585938 -4.33694458007812,151.984405517578 -4.33277797698975,151.991912841797 -4.32666683197021,152.138580322266 -4.20444488525391,152.141357421875 -4.20027828216553,152.145538330078 -4.19083309173584,152.150817871094 -4.17555522918701,152.153594970703 -4.16472244262695,152.153594970703 -4.15777778625488,152.156372070312 -4.15388870239258,152.161926269531 -4.14833354949951,152.166076660156 -4.14555549621582,152.171356201172 -4.14416694641113,152.177764892578 -4.14500045776367,152.185241699219 -4.14888954162598,152.214691162109 -4.16611099243164,152.235229492188 -4.2072229385376,152.239410400391 -4.21666622161865,152.2421875 -4.2344446182251,152.2421875 -4.24111080169678,152.240783691406 -4.24666690826416,152.238006591797 -4.24805545806885,152.226898193359 -4.25083351135254,152.202453613281 -4.24666690826416,152.198303222656 -4.24388885498047,152.195526123047 -4.23999977111816,152.194122314453 -4.2344446182251,152.194122314453 -4.22749996185303,152.192749023438 -4.22222232818604,152.189971923828 -4.21805572509766,152.186645507812 -4.21472263336182,152.181640625 -4.21527767181396,152.176910400391 -4.21749973297119,152.172760009766 -4.22694492340088,152.16943359375 -4.24388885498047,152.170806884766 -4.28222274780273,152.171356201172 -4.28833293914795,152.172210693359 -4.29333305358887,152.174133300781 -4.29666709899902,152.1796875 -4.30472183227539,152.186645507812 -4.31166648864746,152.190521240234 -4.31444454193115,152.195526123047 -4.31638813018799,152.263885498047 -4.33500003814697,152.286651611328 -4.33972263336182,152.305236816406 -4.34166717529297,152.355804443359 -4.34305572509766,152.401641845703 -4.61083316802979,152.403045654297 -4.62305545806885,152.405242919922 -4.66888904571533,152.405822753906 -4.68888854980469,152.394989013672 -4.76111125946045,152.389434814453 -4.78305530548096,152.386108398438 -4.79333305358887,152.336090087891 -4.87527751922607,152.333312988281 -4.87916660308838,152.294128417969 -4.92916679382324,152.268035888672 -4.95777797698975,152.241333007812 -4.9844446182251,152.233306884766 -4.98999977111816,152.161102294922 -5.00694465637207,152.157196044922 -5.00694465637207,152.123565673828 -4.99944400787354,152.112457275391 -4.99666690826416,152.088562011719 -4.98638820648193,152.083038330078 -4.98499965667725,152.050262451172 -4.97972202301025,151.996612548828 -4.97277736663818,151.990509033203 -4.97222232818604,151.984954833984 -4.97361087799072,151.978302001953 -4.98027801513672,151.974975585938 -4.98388862609863,151.970794677734 -4.993332862854,151.968017578125 -5.0041675567627,151.966644287109 -5.02333354949951,151.964691162109 -5.10472202301025,151.969970703125 -5.14833354949951,151.97412109375 -5.15777778625488,151.979675292969 -5.16583347320557,151.993286132812 -5.17555522918701,152.069427490234 -5.23499965667725,152.07275390625 -5.23833274841309,152.118011474609 -5.29222202301025,152.124114990234 -5.29972171783447,152.129669189453 -5.30777740478516,152.144134521484 -5.34138870239258,152.145538330078 -5.34666728973389,152.147491455078 -5.36388874053955,152.144134521484 -5.37416648864746,152.131072998047 -5.40222263336182,152.123565673828 -5.41638851165771,152.096069335938 -5.4572229385376,151.972747802734 -5.53111171722412,151.968566894531 -5.53361129760742,151.841918945312 -5.59722232818604,151.825531005859 -5.60111141204834,151.818572998047 -5.60111141204834,151.808319091797 -5.5977783203125,151.779418945312 -5.58555603027344,151.771362304688 -5.58000087738037,151.759155273438 -5.55138874053955,151.752777099609 -5.54388904571533,151.748565673828 -5.54111099243164,151.705535888672 -5.53111171722412,151.699401855469 -5.53027820587158,151.491638183594 -5.52833366394043,151.473297119141 -5.53027820587158,151.467742919922 -5.53166675567627,151.459411621094 -5.53583335876465,151.454132080078 -5.54111099243164,151.44384765625 -5.58555603027344,151.444427490234 -5.59166717529297,151.402770996094 -5.75137805938721,151.384704589844 -5.80720043182373,151.317779541016 -5.84993076324463,151.165649414062 -5.95807075500488,151.003051757812 -6.02250003814697,150.940795898438 -6.0286111831665,150.855804443359 -6.04083347320557,150.811920166016 -6.07638931274414,150.812744140625 -6.08944416046143,150.793304443359 -6.11805534362793,150.775543212891 -6.13916683197021,150.771636962891 -6.14166736602783,150.74609375 -6.13554954528809)),((154.153869628906 -4.44222164154053,154.128570556641 -4.3841667175293,154.126617431641 -4.37944412231445,154.128021240234 -4.37388896942139,154.132720947266 -4.37166595458984,154.140808105469 -4.37055492401123,154.150543212891 -4.37444400787354,154.152770996094 -4.37944412231445,154.1533203125 -4.3855562210083,154.155242919922 -4.43805503845215,154.153869628906 -4.44222164154053)),((145.951354980469 -4.76444530487061,145.944427490234 -4.76444530487061,145.93359375 -4.76194477081299,145.918579101562 -4.75638961791992,145.898590087891 -4.74194431304932,145.891662597656 -4.73527717590332,145.875244140625 -4.69694423675537,145.873840332031 -4.69138813018799,145.872467041016 -4.67249965667725,145.873840332031 -4.66694450378418,145.892486572266 -4.6094446182251,145.8994140625 -4.59583377838135,145.904693603516 -4.58777809143066,145.914978027344 -4.57750034332275,145.966369628906 -4.53305530548096,145.970520019531 -4.53027820587158,145.975250244141 -4.52833366394043,145.981628417969 -4.52750015258789,146.011657714844 -4.5494441986084,146.026916503906 -4.56166648864746,146.053588867188 -4.5963888168335,146.055541992188 -4.60138893127441,146.054138183594 -4.66138935089111,146.04052734375 -4.70916652679443,146.037750244141 -4.71333408355713,146.027465820312 -4.72361087799072,146.019989013672 -4.72972202301025,145.994415283203 -4.74555492401123,145.961639404297 -4.76111125946045,145.951354980469 -4.76444530487061)),((159.513305664062 -4.58166694641113,159.511383056641 -4.57666683197021,159.515533447266 -4.53972244262695,159.518859863281 -4.5363883972168,159.522216796875 -4.55083274841309,159.523040771484 -4.56388854980469,159.519714355469 -4.57388973236084,159.516937255859 -4.57805633544922,159.513305664062 -4.58166694641113)),((149.552459716797 -4.72083377838135,149.546356201172 -4.72027778625488,149.475799560547 -4.71138954162598,149.470245361328 -4.71000003814697,149.465515136719 -4.70777797698975,149.461364746094 -4.70527839660645,149.457733154297 -4.70166683197021,149.455810546875 -4.69694423675537,149.454406738281 -4.68472194671631,149.455810546875 -4.67916679382324,149.468017578125 -4.66416645050049,149.506652832031 -4.64777851104736,149.512756347656 -4.64694499969482,149.518859863281 -4.64777851104736,149.529968261719 -4.65055561065674,149.540252685547 -4.65388870239258,149.543579101562 -4.65722274780273,149.549133300781 -4.66555595397949,149.559967041016 -4.68194389343262,149.563293457031 -4.69222164154053,149.564147949219 -4.70527839660645,149.562744140625 -4.71055603027344,149.560516357422 -4.71527767181396,149.557189941406 -4.7188892364502,149.552459716797 -4.72083377838135)),((146.240509033203 -4.85805511474609,146.234405517578 -4.85750007629395,146.215789794922 -4.85138893127441,146.2119140625 -4.84861087799072,146.201629638672 -4.83833312988281,146.199401855469 -4.83361148834229,146.198028564453 -4.82805633544922,146.200256347656 -4.81638813018799,146.202178955078 -4.81166648864746,146.215789794922 -4.79111099243164,146.219970703125 -4.78833293914795,146.232177734375 -4.78833293914795,146.238555908203 -4.79055595397949,146.241333007812 -4.79333305358887,146.256927490234 -4.81166648864746,146.262481689453 -4.81972217559814,146.263885498047 -4.82527828216553,146.263885498047 -4.83083343505859,146.261932373047 -4.83555603027344,146.250823974609 -4.85472202301025,146.246612548828 -4.85750007629395,146.240509033203 -4.85805511474609)),((149.152191162109 -4.92361068725586,149.133026123047 -4.91555595397949,149.128845214844 -4.9127779006958,149.122741699219 -4.90527820587158,149.118560791016 -4.89555549621582,149.118011474609 -4.88944435119629,149.119415283203 -4.8841667175293,149.122192382812 -4.88138866424561,149.156921386719 -4.86694431304932,149.161926269531 -4.86638832092285,149.165802001953 -4.86777782440186,149.175537109375 -4.87805557250977,149.178314208984 -4.88194370269775,149.181640625 -4.89222240447998,149.178863525391 -4.89638900756836,149.156921386719 -4.92305564880371,149.152191162109 -4.92361068725586)),((154.63720703125 -5.45861148834229,154.618011474609 -5.43138885498047,154.5869140625 -5.34472274780273,154.565795898438 -5.27666664123535,154.5302734375 -5.13388919830322,154.532196044922 -5.12222194671631,154.541076660156 -5.10388851165771,154.546630859375 -5.09555530548096,154.558319091797 -5.08000087738037,154.598846435547 -5.03083324432373,154.605529785156 -5.02388954162598,154.620513916016 -5.01861095428467,154.63916015625 -5.01638889312744,154.646087646484 -5.01638889312744,154.6513671875 -5.01777839660645,154.658874511719 -5.02388954162598,154.665802001953 -5.03083324432373,154.671356201172 -5.03888893127441,154.726898193359 -5.19722175598145,154.728302001953 -5.20277786254883,154.728302001953 -5.21638870239258,154.69384765625 -5.41833305358887,154.692474365234 -5.42388916015625,154.687194824219 -5.43194389343262,154.675537109375 -5.44083309173584,154.63720703125 -5.45861148834229)),((147.135528564453 -5.45111179351807,147.121887207031 -5.44444370269775,147.009979248047 -5.35499954223633,147.008026123047 -5.3502779006958,147.002471923828 -5.30388832092285,147.008026123047 -5.25888919830322,147.009979248047 -5.24722194671631,147.013610839844 -5.23833274841309,147.017761230469 -5.23555564880371,147.109405517578 -5.19333267211914,147.121063232422 -5.19111061096191,147.128570556641 -5.19194412231445,147.134979248047 -5.19527721405029,147.191070556641 -5.248610496521,147.211639404297 -5.26916694641113,147.228851318359 -5.36388874053955,147.229949951172 -5.42111110687256,147.224670410156 -5.42944431304932,147.220520019531 -5.43194389343262,147.158874511719 -5.44833278656006,147.1533203125 -5.44972133636475,147.135528564453 -5.45111179351807)),((147.596618652344 -5.36305522918701,147.591918945312 -5.36111068725586,147.567199707031 -5.33916664123535,147.563873291016 -5.33583354949951,147.561645507812 -5.33111190795898,147.560516357422 -5.31888961791992,147.561645507812 -5.31333351135254,147.563873291016 -5.3086109161377,147.57080078125 -5.30166625976562,147.583038330078 -5.29361152648926,147.591918945312 -5.2902774810791,147.602172851562 -5.28805541992188,147.609130859375 -5.28805541992188,147.620788574219 -5.2902774810791,147.625518798828 -5.29222202301025,147.628845214844 -5.29555511474609,147.640533447266 -5.31666660308838,147.642761230469 -5.3216667175293,147.643310546875 -5.32777786254883,147.642761230469 -5.33388900756836,147.640533447266 -5.3386116027832,147.626892089844 -5.35222244262695,147.602172851562 -5.3619441986084,147.596618652344 -5.36305522918701)),((148.114685058594 -5.4688892364502,148.087463378906 -5.45527839660645,148.079132080078 -5.44972133636475,148.077178955078 -5.44499969482422,148.073028564453 -5.43000030517578,148.071624755859 -5.4244441986084,148.072204589844 -5.41833305358887,148.084686279297 -5.38972282409668,148.090789794922 -5.38222217559814,148.099700927734 -5.3774995803833,148.117462158203 -5.3841667175293,148.122192382812 -5.38638877868652,148.136657714844 -5.39944458007812,148.139434814453 -5.40333366394043,148.143585205078 -5.41305541992188,148.144989013672 -5.41833305358887,148.145538330078 -5.43833255767822,148.143585205078 -5.44972133636475,148.138031005859 -5.45805549621582,148.133880615234 -5.46083354949951,148.125793457031 -5.4661111831665,148.120788574219 -5.46833324432373,148.114685058594 -5.4688892364502)),((155.404083251953 -6,155.41552734375 -6.07638931274414,155.418853759766 -6.08666706085205,155.428588867188 -6.11111068725586,155.430541992188 -6.1158332824707,155.432739257812 -6.12083339691162,155.477172851562 -6.16916656494141,155.490783691406 -6.18277740478516,155.499114990234 -6.18805503845215,155.562744140625 -6.21749973297119,155.577178955078 -6.22361087799072,155.582733154297 -6.22500038146973,155.5888671875 -6.22416687011719,155.614959716797 -6.22000026702881,155.767761230469 -6.35583305358887,155.772491455078 -6.35777759552002,155.795257568359 -6.36250019073486,155.809692382812 -6.36861038208008,155.813598632812 -6.37138843536377,155.832733154297 -6.39861106872559,155.909698486328 -6.51222229003906,155.917755126953 -6.52444458007812,155.921905517578 -6.53416633605957,155.965789794922 -6.70555591583252,155.967193603516 -6.71111106872559,155.967742919922 -6.71722221374512,155.966644287109 -6.72277736663818,155.948028564453 -6.77583312988281,155.940521240234 -6.78861141204834,155.918579101562 -6.80777740478516,155.913024902344 -6.80916595458984,155.909698486328 -6.80555534362793,155.908874511719 -6.7994441986084,155.890533447266 -6.77972221374512,155.860778808594 -6.77500057220459,155.854675292969 -6.77444458007812,155.848571777344 -6.77500057220459,155.823852539062 -6.77777767181396,155.816375732422 -6.78055572509766,155.775268554688 -6.81444454193115,155.748565673828 -6.84249973297119,155.742462158203 -6.84999942779541,155.719696044922 -6.875,155.713012695312 -6.88194370269775,155.707458496094 -6.88333320617676,155.69384765625 -6.88333320617676,155.623840332031 -6.868332862854,155.558868408203 -6.85249996185303,155.4921875 -6.83027839660645,155.47802734375 -6.82416725158691,155.444976806641 -6.80916595458984,155.342742919922 -6.74361133575439,155.3388671875 -6.74111080169678,155.335235595703 -6.73750019073486,155.239959716797 -6.62249946594238,155.192749023438 -6.56055545806885,155.201629638672 -6.53472232818604,155.207183837891 -6.53472232818604,155.2099609375 -6.53055572509766,155.216064453125 -6.51638889312744,155.224975585938 -6.47749996185303,155.232452392578 -6.44416618347168,155.233306884766 -6.43805503845215,155.233306884766 -6.4244441986084,155.230529785156 -6.36305522918701,155.226348876953 -6.34694480895996,155.218841552734 -6.32916736602783,155.214141845703 -6.32027816772461,155.204406738281 -6.3086109161377,155.190795898438 -6.29500007629395,155.187194824219 -6.29166698455811,155.174987792969 -6.28333282470703,155.127746582031 -6.2761116027832,155.101623535156 -6.27722263336182,155.063293457031 -6.25694561004639,154.994110107422 -6.21666622161865,154.981628417969 -6.20861148834229,154.972198486328 -6.19777774810791,154.969970703125 -6.19277763366699,154.888580322266 -6.07916736602783,154.880249023438 -6.07361125946045,154.823577880859 -6.02805614471436,154.755645751953 -5.95617389678955,154.746643066406 -5.94450378417969,154.744384765625 -5.93978023529053,154.700469970703 -5.78020095825195,154.698577880859 -5.76851844787598,154.699432373047 -5.7623987197876,154.71826171875 -5.6700611114502,154.753601074219 -5.51805591583252,154.79052734375 -5.47916698455811,154.794128417969 -5.48250007629395,154.882446289062 -5.54333305358887,154.920806884766 -5.54999923706055,154.961090087891 -5.54666709899902,154.967468261719 -5.54611110687256,155.073577880859 -5.56166648864746,155.162353515625 -5.73234081268311,155.216064453125 -5.86872386932373,155.268798828125 -5.88423919677734,155.277679443359 -5.88895511627197,155.365020751953 -5.95777797698975,155.371643066406 -5.96472263336182,155.400543212891 -5.99583339691162,155.404083251953 -6)),((147.990478515625 -5.85603713989258,147.983520507812 -5.82075119018555,147.982116699219 -5.81519317626953,147.974609375 -5.79546737670898,147.972381591797 -5.79074478149414,147.968475341797 -5.78796863555908,147.945220947266 -5.77992534637451,147.93359375 -5.7777099609375,147.927490234375 -5.77854824066162,147.922790527344 -5.78049659729004,147.865112304688 -5.74775314331055,147.802154541016 -5.67277145385742,147.793273925781 -5.66138458251953,147.769958496094 -5.62221908569336,147.766052246094 -5.61277484893799,147.765228271484 -5.60666275024414,147.761108398438 -5.52833366394043,147.761932373047 -5.5222225189209,147.7802734375 -5.49416637420654,147.783874511719 -5.4908332824707,147.814697265625 -5.48472213745117,147.841918945312 -5.48999977111816,147.852172851562 -5.49361133575439,148.008605957031 -5.57611179351807,148.020812988281 -5.58416652679443,148.040802001953 -5.59861087799072,148.044128417969 -5.60194396972656,148.065307617188 -5.62758445739746,148.074279785156 -5.64482402801514,148.078460693359 -5.65427875518799,148.080444335938 -5.66595458984375,148.078552246094 -5.69124603271484,148.076629638672 -5.70347595214844,148.072540283203 -5.72654151916504,148.067840576172 -5.74905109405518,148.061492919922 -5.77711772918701,148.057586669922 -5.78656482696533,148.017150878906 -5.84463882446289,148.000762939453 -5.85269927978516,147.990478515625 -5.85603713989258)),((149.048034667969 -6.09555530548096,149.043304443359 -6.09333324432373,149.043853759766 -6.0886116027832,149.045257568359 -6.0872220993042,149.054138183594 -6.08388900756836,149.058319091797 -6.08666706085205,149.057739257812 -6.09138870239258,149.053588867188 -6.09416675567627,149.048034667969 -6.09555530548096)),((143.994415283203 -7.82583332061768,143.984680175781 -7.8230562210083,143.943572998047 -7.80277729034424,143.934692382812 -7.79805564880371,143.923583984375 -7.78861141204834,143.91748046875 -7.78111171722412,143.914703369141 -7.77694511413574,143.877746582031 -7.7186107635498,143.875793457031 -7.71388912200928,143.877166748047 -7.7097225189209,143.88134765625 -7.70694446563721,143.886657714844 -7.70833396911621,143.959411621094 -7.74222183227539,143.966918945312 -7.74833297729492,143.979125976562 -7.76333427429199,144.000549316406 -7.78999996185303,144.008026123047 -7.80277729034424,144.009429931641 -7.80833339691162,144.008605957031 -7.81416606903076,144.006652832031 -7.819167137146,143.999694824219 -7.82444477081299,143.994415283203 -7.82583332061768)),((145.193572998047 -7.86722183227539,145.186645507812 -7.86722183227539,145.182464599609 -7.86444473266602,145.180541992188 -7.86111068725586,145.177764892578 -7.83666706085205,145.178314208984 -7.83055591583252,145.182464599609 -7.82777786254883,145.185241699219 -7.83055591583252,145.191345214844 -7.84083366394043,145.197479248047 -7.85499954223633,145.198852539062 -7.86055564880371,145.197479248047 -7.86444473266602,145.193572998047 -7.86722183227539)),((143.727752685547 -8.10222244262695,143.697479248047 -8.08444404602051,143.683319091797 -8.07833290100098,143.661376953125 -8.07277679443359,143.618011474609 -8.07222175598145,143.599700927734 -8.07416725158691,143.588562011719 -8.0716667175293,143.582458496094 -8.06416702270508,143.569427490234 -8.04305648803711,143.566070556641 -8.03277778625488,143.565246582031 -8.02000045776367,143.568023681641 -8.01583480834961,143.574127197266 -8.01388931274414,143.629669189453 -8.00638961791992,143.635803222656 -8.00583457946777,143.642761230469 -8.00583457946777,143.651092529297 -8.00833511352539,143.66943359375 -8.0172233581543,143.682464599609 -8.02472305297852,143.697479248047 -8.03694534301758,143.707733154297 -8.04722213745117,143.731079101562 -8.0716667175293,143.737182617188 -8.07888793945312,143.739959716797 -8.08305549621582,143.741333007812 -8.0886116027832,143.739410400391 -8.09333229064941,143.733306884766 -8.10083198547363,143.727752685547 -8.10222244262695)),((143.66552734375 -8.17611122131348,143.654968261719 -8.17250061035156,143.625518798828 -8.15416717529297,143.621612548828 -8.15166664123535,143.618835449219 -8.14750099182129,143.607727050781 -8.13055419921875,143.604949951172 -8.11972045898438,143.604400634766 -8.11361122131348,143.604949951172 -8.10888862609863,143.609130859375 -8.10610961914062,143.636657714844 -8.09249877929688,143.642211914062 -8.09055519104004,143.654968261719 -8.0897216796875,143.679138183594 -8.09333229064941,143.688568115234 -8.09722137451172,143.700256347656 -8.10610961914062,143.707183837891 -8.11277770996094,143.710510253906 -8.11638832092285,143.716064453125 -8.12444305419922,143.718841552734 -8.13527870178223,143.719421386719 -8.15500068664551,143.7119140625 -8.16111183166504,143.702453613281 -8.1652774810791,143.683319091797 -8.1733341217041,143.677764892578 -8.17472267150879,143.66552734375 -8.17611122131348)),((143.685791015625 -8.24722099304199,143.659973144531 -8.241943359375,143.654418945312 -8.24055480957031,143.650268554688 -8.23777770996094,143.648315429688 -8.23305511474609,143.648864746094 -8.22694396972656,143.651641845703 -8.19972229003906,143.666656494141 -8.19305610656738,143.726898193359 -8.17388916015625,143.733306884766 -8.17472267150879,143.737182617188 -8.17722320556641,143.755828857422 -8.20527839660645,143.756378173828 -8.20861053466797,143.755249023438 -8.21388816833496,143.752471923828 -8.21805572509766,143.7421875 -8.22833251953125,143.734680175781 -8.23444366455078,143.718841552734 -8.23916625976562,143.697479248047 -8.24527740478516,143.685791015625 -8.24722099304199)),((143.687194824219 -8.43972206115723,143.680541992188 -8.43972206115723,143.670257568359 -8.43638801574707,143.651641845703 -8.42749977111816,143.630523681641 -8.40722274780273,143.610504150391 -8.38611221313477,143.584411621094 -8.3577766418457,143.607177734375 -8.33277702331543,143.612731933594 -8.33388900756836,143.653045654297 -8.34222221374512,143.658599853516 -8.3436107635498,143.66552734375 -8.34749984741211,143.672210693359 -8.35444450378418,143.677764892578 -8.36249923706055,143.692199707031 -8.39583396911621,143.694976806641 -8.40666770935059,143.698303222656 -8.42361068725586,143.698303222656 -8.43027877807617,143.696929931641 -8.43555641174316,143.692749023438 -8.43833351135254,143.687194824219 -8.43972206115723)),((143.57275390625 -8.49388885498047,143.559143066406 -8.49388885498047,143.509155273438 -8.48250007629395,143.498016357422 -8.47972106933594,143.493286132812 -8.4777774810791,143.354949951172 -8.41805648803711,143.318572998047 -8.39305686950684,143.315795898438 -8.38888931274414,143.314422607422 -8.38361167907715,143.314422607422 -8.37666511535645,143.319427490234 -8.36916542053223,143.326904296875 -8.3630542755127,143.331634521484 -8.36111068725586,143.339141845703 -8.35833358764648,143.342742919922 -8.3577766418457,143.356353759766 -8.3577766418457,143.494689941406 -8.3630542755127,143.573577880859 -8.37194442749023,143.578308105469 -8.37388801574707,143.581085205078 -8.37805557250977,143.616058349609 -8.46277809143066,143.616058349609 -8.4688892364502,143.613861083984 -8.47360992431641,143.610504150391 -8.47694396972656,143.583862304688 -8.49138832092285,143.578857421875 -8.49333190917969,143.57275390625 -8.49388885498047)),((143.632446289062 -8.73444366455078,143.60107421875 -8.6924991607666,143.585784912109 -8.67972183227539,143.487731933594 -8.62888717651367,143.3671875 -8.54472351074219,143.278869628906 -8.51027870178223,143.269989013672 -8.50555610656738,143.252777099609 -8.49527740478516,143.240509033203 -8.48722076416016,143.182189941406 -8.42972183227539,143.180816650391 -8.42416763305664,143.18359375 -8.42000007629395,143.211639404297 -8.4152774810791,143.217742919922 -8.41611099243164,143.227447509766 -8.42611122131348,143.233032226562 -8.43444442749023,143.251373291016 -8.45666694641113,143.261657714844 -8.46694374084473,143.274688720703 -8.47444343566895,143.324676513672 -8.48583221435547,143.371337890625 -8.49388885498047,143.422760009766 -8.51083374023438,143.467193603516 -8.52777862548828,143.644134521484 -8.66472244262695,143.647491455078 -8.66805648803711,143.651641845703 -8.67777824401855,143.653045654297 -8.68305587768555,143.653594970703 -8.68916702270508,143.653045654297 -8.7005558013916,143.641357421875 -8.72972106933594,143.638031005859 -8.73305511474609,143.632446289062 -8.73444366455078)),((151.144439697266 -8.8305549621582,151.094970703125 -8.7711124420166,151.10107421875 -8.63888931274414,151.05859375 -8.55166625976562,151.052459716797 -8.55222320556641,151.034698486328 -8.55222320556641,151.029144287109 -8.55083274841309,151.003051757812 -8.54277801513672,150.999694824219 -8.53944396972656,150.997741699219 -8.53472328186035,150.996917724609 -8.52861213684082,150.997741699219 -8.52250099182129,151.024993896484 -8.46694374084473,151.033325195312 -8.45472145080566,151.054412841797 -8.43499946594238,151.062744140625 -8.42972183227539,151.076354980469 -8.42611122131348,151.118286132812 -8.42000007629395,151.124969482422 -8.42000007629395,151.124969482422 -8.42555618286133,151.123840332031 -8.62472152709961,151.103302001953 -8.72916603088379,151.102447509766 -8.741943359375,151.103851318359 -8.7541675567627,151.107177734375 -8.76444625854492,151.144439697266 -8.8305549621582)),((152.835510253906 -9.23555564880371,152.829956054688 -9.22333335876465,152.679962158203 -9.09055519104004,152.6533203125 -9.06972122192383,152.649139404297 -9.06694412231445,152.573028564453 -9.02027893066406,152.563598632812 -9.01611137390137,152.556640625 -9.01611137390137,152.540252685547 -9.02027893066406,152.499694824219 -9.02500152587891,152.497741699219 -9.02166748046875,152.5244140625 -8.99305534362793,152.527770996094 -8.98972129821777,152.532470703125 -8.98777770996094,152.619689941406 -8.96138954162598,152.625793457031 -8.96055603027344,152.647216796875 -8.96138954162598,152.8046875 -8.96944427490234,152.810241699219 -8.97083282470703,152.814971923828 -8.97277641296387,152.93359375 -9.04388999938965,152.937744140625 -9.04666709899902,152.952758789062 -9.05888938903809,153.017761230469 -9.11777687072754,153.020538330078 -9.12166595458984,153.019989013672 -9.12638854980469,153.002777099609 -9.16500091552734,152.997192382812 -9.17305564880371,152.993011474609 -9.17583274841309,152.98828125 -9.17777824401855,152.982177734375 -9.17722320556641,152.835510253906 -9.23555564880371)),((150.334411621094 -9.52666664123535,150.310241699219 -9.5261116027832,150.193023681641 -9.45388793945312,150.180816650391 -9.44555473327637,150.173858642578 -9.43888854980469,150.110778808594 -9.37277603149414,150.108306884766 -9.36861038208008,150.103302001953 -9.33694458007812,150.102752685547 -9.33083343505859,150.104125976562 -9.31861114501953,150.106903076172 -9.30777740478516,150.123291015625 -9.2630558013916,150.126068115234 -9.26027870178223,150.143859863281 -9.24555397033691,150.189147949219 -9.21111106872559,150.198028564453 -9.20777702331543,150.206909179688 -9.2055549621582,150.2138671875 -9.2055549621582,150.232177734375 -9.20777702331543,150.326904296875 -9.26916694641113,150.330810546875 -9.27194595336914,150.333038330078 -9.27666664123535,150.376892089844 -9.38333320617676,150.37744140625 -9.38944435119629,150.363006591797 -9.48749923706055,150.344696044922 -9.51666641235352,150.339141845703 -9.52472305297852,150.334411621094 -9.52666664123535)),((150.846923828125 -9.71805572509766,150.844116210938 -9.68555641174316,150.801635742188 -9.65861129760742,150.763305664062 -9.66250038146973,150.691345214844 -9.66333389282227,150.661102294922 -9.66333389282227,150.654968261719 -9.66250038146973,150.622741699219 -9.65388870239258,150.514434814453 -9.62333297729492,150.490509033203 -9.58361053466797,150.427459716797 -9.44083404541016,150.423309326172 -9.43138885498047,150.419982910156 -9.41472244262695,150.419982910156 -9.4011116027832,150.421905517578 -9.38944435119629,150.426086425781 -9.37666511535645,150.435791015625 -9.35916519165039,150.442474365234 -9.35499954223633,150.473571777344 -9.33888816833496,150.478851318359 -9.33749961853027,150.481628417969 -9.33694458007812,150.487731933594 -9.33749961853027,150.498840332031 -9.34027671813965,150.505554199219 -9.34222221374512,150.5302734375 -9.35166549682617,150.571350097656 -9.37055397033691,150.598022460938 -9.38500022888184,150.618011474609 -9.39777946472168,150.624969482422 -9.40444564819336,150.63525390625 -9.42194557189941,150.639434814453 -9.42472267150879,150.666656494141 -9.43833351135254,150.676910400391 -9.4416675567627,150.683044433594 -9.44083404541016,150.731903076172 -9.42805671691895,150.7421875 -9.42472267150879,150.746063232422 -9.42138862609863,150.748291015625 -9.41805648803711,150.754974365234 -9.40444564819336,150.760528564453 -9.40444564819336,150.765258789062 -9.4063892364502,150.777770996094 -9.41472244262695,150.804412841797 -9.43277740478516,150.828308105469 -9.45638847351074,150.885803222656 -9.52083396911621,150.888031005859 -9.52555656433105,150.931915283203 -9.64166831970215,150.932464599609 -9.64777946472168,150.930541992188 -9.65916633605957,150.921630859375 -9.67083358764648,150.906646728516 -9.68277740478516,150.901092529297 -9.68138885498047,150.896362304688 -9.67416763305664,150.893585205078 -9.67194557189941,150.888580322266 -9.67138862609863,150.876892089844 -9.67749977111816,150.873565673828 -9.68083381652832,150.846923828125 -9.71805572509766)),((151.229125976562 -10.2011108398438,151.19775390625 -10.1727771759033,151.190246582031 -10.1669454574585,151.148315429688 -10.1472234725952,151.143585205078 -10.1452789306641,151.086639404297 -10.1269435882568,151.075805664062 -10.1244430541992,151.025817871094 -10.1141662597656,151.001647949219 -10.1108322143555,150.994964599609 -10.1108322143555,150.983306884766 -10.1127777099609,150.970245361328 -10.1122207641602,150.958587646484 -10.1102771759033,150.94970703125 -10.1055545806885,150.91552734375 -10.0041675567627,150.877746582031 -9.92666625976562,150.826904296875 -9.83888816833496,150.762481689453 -9.80500030517578,150.758605957031 -9.80249977111816,150.750274658203 -9.74833297729492,150.748840332031 -9.73083305358887,150.757202148438 -9.71194458007812,150.759979248047 -9.70777702331543,150.763885498047 -9.70499992370605,150.769439697266 -9.70666694641113,150.788024902344 -9.71944427490234,150.803039550781 -9.73138809204102,150.821624755859 -9.74694442749023,150.900268554688 -9.81916618347168,150.931915283203 -9.8488883972168,150.938873291016 -9.85583305358887,150.962738037109 -9.89361190795898,151.030548095703 -9.98527717590332,151.039428710938 -9.99694442749023,151.059967041016 -10.0169448852539,151.073028564453 -10.0244445800781,151.111358642578 -10.0447244644165,151.116058349609 -10.046667098999,151.122467041016 -10.0475006103516,151.136657714844 -10.041389465332,151.147216796875 -10.0325012207031,151.149139404297 -10.0277786254883,151.149719238281 -10.0219459533691,151.147766113281 -10.0169448852539,151.143585205078 -10.0088901519775,151.140808105469 -10.0050010681152,151.136657714844 -10.0022239685059,151.134704589844 -9.99749946594238,151.134704589844 -9.9908332824707,151.138031005859 -9.98749923706055,151.184143066406 -9.94472312927246,151.192199707031 -9.93944358825684,151.200531005859 -9.93666648864746,151.26416015625 -9.91972160339355,151.281372070312 -9.9233341217041,151.284149169922 -9.92722320556641,151.298583984375 -9.95083236694336,151.299133300781 -9.96249961853027,151.296356201172 -9.97305488586426,151.271087646484 -10.0616655349731,151.252471923828 -10.0974998474121,151.246337890625 -10.1047210693359,151.243560791016 -10.1088886260986,151.234130859375 -10.1330547332764,151.221618652344 -10.1708335876465,151.221618652344 -10.1816673278809,151.222473144531 -10.1877784729004,151.223846435547 -10.1930561065674,151.229125976562 -10.2011108398438)),((150.880523681641 -10.6527786254883,150.856353759766 -10.6494445800781,150.794128417969 -10.6394443511963,150.785247802734 -10.6347236633301,150.769439697266 -10.6111106872559,150.767486572266 -10.6075000762939,150.788024902344 -10.5463886260986,150.790802001953 -10.5422229766846,150.794708251953 -10.539722442627,150.798858642578 -10.5383338928223,150.868835449219 -10.5383338928223,150.874969482422 -10.5388889312744,150.892211914062 -10.547779083252,150.900268554688 -10.5530548095703,150.904418945312 -10.5625,150.894989013672 -10.6466665267944,150.892211914062 -10.6508331298828,150.880523681641 -10.6527786254883)),((150.927185058594 -10.6838893890381,150.923034667969 -10.6825008392334,150.920257568359 -10.6783332824707,150.911926269531 -10.65944480896,150.909973144531 -10.6547222137451,150.909149169922 -10.6419448852539,150.909973144531 -10.6358337402344,150.91943359375 -10.6130542755127,150.922210693359 -10.6088886260986,150.9296875 -10.6030540466309,150.934692382812 -10.6008319854736,150.94970703125 -10.59694480896,151.016082763672 -10.5908336639404,151.064147949219 -10.5922222137451,151.066925048828 -10.5947227478027,151.06884765625 -10.5980548858643,151.069702148438 -10.6111106872559,151.063293457031 -10.6438903808594,151.049133300781 -10.6702785491943,151.042205810547 -10.676944732666,151.036651611328 -10.6783332824707,151.031372070312 -10.676944732666,151.009979248047 -10.6683330535889,151.008026123047 -10.6636123657227,151.003875732422 -10.6472234725952,151.001647949219 -10.6427783966064,150.994110107422 -10.6366672515869,150.988861083984 -10.6352787017822,150.941345214844 -10.6347236633301,150.936096191406 -10.6347236633301,150.929138183594 -10.6547222137451,150.927185058594 -10.6838893890381)),((152.744415283203 -10.7166652679443,152.702453613281 -10.7066669464111,152.686920166016 -10.7019443511963,152.573852539062 -10.6569442749023,152.564971923828 -10.6522235870361,152.544982910156 -10.6380558013916,152.541656494141 -10.6338901519775,152.540802001953 -10.6305541992188,152.542205810547 -10.6277770996094,152.555236816406 -10.6230554580688,152.562194824219 -10.6230554580688,152.573852539062 -10.6252765655518,152.614959716797 -10.6386127471924,152.690246582031 -10.6627788543701,152.693023681641 -10.6627788543701,152.759429931641 -10.6372222900391,152.784973144531 -10.6211109161377,152.790252685547 -10.6197204589844,152.814971923828 -10.6291656494141,152.870513916016 -10.6580562591553,152.873291015625 -10.6622219085693,152.873840332031 -10.6683330535889,152.873291015625 -10.6730556488037,152.870513916016 -10.676944732666,152.863586425781 -10.6825008392334,152.844970703125 -10.6952781677246,152.814971923828 -10.6966667175293,152.744415283203 -10.7166652679443)),((153.210510253906 -11.2858333587646,153.181640625 -11.2522239685059,153.143859863281 -11.2247219085693,153.13916015625 -11.2227764129639,153.120513916016 -11.2166652679443,153.114959716797 -11.2152767181396,153.106079101562 -11.2147216796875,153.093292236328 -11.2019443511963,153.091064453125 -11.1972217559814,153.093841552734 -11.1930561065674,153.102172851562 -11.1888885498047,153.112457275391 -11.1844444274902,153.123840332031 -11.1849994659424,153.12939453125 -11.1863880157471,153.198028564453 -11.2172222137451,153.2138671875 -11.2247219085693,153.222747802734 -11.2294454574585,153.251373291016 -11.2469444274902,153.250579833984 -11.25,153.25 -11.2522239685059,153.241058349609 -11.2688903808594,153.210510253906 -11.2858333587646)),((154.112182617188 -11.4397220611572,154.106628417969 -11.4397220611572,154.062744140625 -11.4330558776855,154.058013916016 -11.4308338165283,154.006652832031 -11.3872222900391,154.003326416016 -11.3838901519775,154.021087646484 -11.3488883972168,154.089691162109 -11.3152770996094,154.153869628906 -11.3141670227051,154.225250244141 -11.3194446563721,154.268310546875 -11.338888168335,154.276641845703 -11.344165802002,154.286376953125 -11.3605556488037,154.288299560547 -11.3649997711182,154.297760009766 -11.3919448852539,154.289703369141 -11.4108333587646,154.285522460938 -11.4136123657227,154.266387939453 -11.421667098999,154.263031005859 -11.4180555343628,154.26025390625 -11.4075012207031,154.256103515625 -11.4047222137451,154.250549316406 -11.4033336639404,154.190246582031 -11.3994445800781,154.137481689453 -11.3986110687256,154.134704589844 -11.4027786254883,154.112182617188 -11.4397220611572)),((153.566070556641 -11.6424999237061,153.522216796875 -11.602222442627,153.479125976562 -11.5733337402344,153.421356201172 -11.5686111450195,153.376068115234 -11.5672225952148,153.3671875 -11.557222366333,153.364410400391 -11.5530548095703,153.363861083984 -11.5472221374512,153.376068115234 -11.5269451141357,153.382446289062 -11.5197219848633,153.38720703125 -11.5108337402344,153.388580322266 -11.5055561065674,153.387756347656 -11.5008344650269,153.384429931641 -11.4974994659424,153.325531005859 -11.4752769470215,153.276916503906 -11.4624996185303,153.271911621094 -11.4605560302734,153.268585205078 -11.4572219848633,153.190521240234 -11.3730554580688,153.188293457031 -11.3683319091797,153.187194824219 -11.3536109924316,153.187194824219 -11.3497219085693,153.198028564453 -11.3241672515869,153.200805664062 -11.3199996948242,153.220520019531 -11.3274993896484,153.291931152344 -11.3569431304932,153.398040771484 -11.4047222137451,153.413879394531 -11.4161109924316,153.426910400391 -11.4302787780762,153.437744140625 -11.4397220611572,153.507751464844 -11.4724998474121,153.559143066406 -11.491943359375,153.570251464844 -11.494722366333,153.576354980469 -11.4955539703369,153.645538330078 -11.5150012969971,153.686645507812 -11.5269451141357,153.751098632812 -11.5644445419312,153.754425048828 -11.5680561065674,153.7763671875 -11.5974998474121,153.777770996094 -11.6027765274048,153.7763671875 -11.6080551147461,153.7744140625 -11.6130542755127,153.770812988281 -11.6163883209229,153.676361083984 -11.6283321380615,153.670257568359 -11.6277770996094,153.605804443359 -11.6174983978271,153.598846435547 -11.6174983978271,153.582458496094 -11.6283321380615,153.566070556641 -11.6424999237061))) + + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/bug275.xml geos-3.2.2/tests/xmltester/tests/bug275.xml --- geos-3.1.0/tests/xmltester/tests/bug275.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/bug275.xml 2009-07-06 18:35:18.000000000 +0100 @@ -0,0 +1,31 @@ + + +http://trac.osgeo.org/geos/ticket/275 + + + + + +http://trac.osgeo.org/geos/ticket/275 + + +MULTIPOLYGON (((97.4196581300587923 1391.7094503287939915, 1097.3929445351700451 1659.6432199333848985, 2097.6867783781326580 1391.5243492190379584, 2829.5979618286305595 659.3760732813996128, 3097.3929252677053228 -340.6343946513263745, 2829.3203546600025220 -1340.5704802618731719, 2566.4316545475776365 -1603.3983692935935323, 2589.9586987092807249 -1691.2539814346002913, 2550.3216026895242976 -1839.1041048139375107, 2582.0225141513105882 -1957.4828931887502677, 2523.0465473393464890 -2177.4688367911371643, 2361.9813735858801920 -2338.4967531528800464, 2141.9817920466971373 -2397.4218256316030420, 1921.9931199150225893 -2338.4560374338593647, 1915.5094890288899023 -2331.9715065100085667, 1790.8032356108271870 -2365.3730474120334293, 1773.3588004956532131 -2360.6972390794344392, 1755.9014460409671301 -2365.3730474120334293, 1535.9127739092928095 -2306.4072592142892972, 1470.0174606543544087 -2240.5027985744332000, 1267.8188705444704283 -2294.6600223925997852, 1145.5500718010853234 -2750.7342254735290226, 779.4928666591022193 -3116.7067547270667092, 279.4938285436001593 -3250.6273710942414255, -220.4804154644647269 -3116.6142190040254718, -276.8825358097809044 -3060.2042690896628301, -317.8708072633123720 -3042.4487397531365787, -317.0081043084857697 -3040.4572078632113517, -353.9188796380849453 -3025.9673133506230442, -481.8759722620623052 -2952.0780561800302166, -597.3916747239470624 -2859.9435764086629206, -697.8857092860117746 -2751.6218846962374300, -781.1133376604859677 -2629.5325659449085833, -845.2155017965442312 -2496.4027329581699632, -881.7734250743712892 -2377.8616075414415718, -883.2163026251768088 -2378.2274205979942963, -915.6765245378969666 -2250.1944686487954641, -958.6488338256679071 -2176.6893024190303549, -958.3104527203266798 -2176.4914793507796276, -961.3773376604859777 -2171.9925659449086197, -1025.4795017965443549 -2038.8627329581699996, -1069.0243497161841333 -1897.6661108397263433, -1091.0392188351402183 -1751.5566128059626863, -1091.0323623564322588 -1603.7978911310922285, -1089.6762878232161711 -1594.8034867385058533, -1104.6051239273215288 -1541.4387753320572756, -1142.1697554404233870 -1500.9481685832554376, -1144.1735018958338514 -1502.8286850026515822, -1237.9475018958337387 -1402.9096850026517131, -1235.9437554404232742 -1401.0291685832553412, -1283.8694719642787732 -1349.3704336840412452, -1284.3641704239839783 -1349.7723644815778243, -1285.2860836559341351 -1348.6376690100614724, -1338.3270735958196838 -1329.0603190321844522, -1337.4416005745254097 -1326.6613035542172838, -1425.0218796380850108 -1292.2803133506229187, -1552.9789722620623706 -1218.3910561800300911, -1668.4946747239471279 -1126.2565764086627951, -1679.3254791566805579 -1114.5821415641194108, -1680.0605373265407252 -1115.3491207030931491, -1702.7503708819851909 -1093.6036172334481762, -1770.9343685341837045 -1058.4171540195427497, -1770.1722772833329600 -1056.9403807575390601, -1874.5379722620623397 -996.6740561800301066, -1895.7478836933294133 -979.7571858838782646, -1896.7182978644157174 -981.0996960943623435, -2746.6499049371641377 -366.7388744659292570, -2763.2967822031337164 -362.2768436281256186, -2790.5987539714260492 -334.9710818839997160, -2790.5987539714260492 -334.9710818839996023, -2842.3952978644156246 -297.5306960943622698, -2841.4248836933293205 -296.1881858838783614, -2935.7306747239472315 -220.9705764086628506, -3036.2247092860116027 -112.6488846962375874, -3086.2207836436286925 -39.3080148699587753, -3129.2862482014747911 3.7634279033554208, -3145.0472131318642823 62.5968530737783055, -3145.0472131318642823 62.5968530737785258, -3183.5545017965441730 142.5702670418300499, -3227.0993497161844061 283.7668891602737631, -3249.1142188351404911 429.8763871940373633, -3249.1132358283407484 451.0604139114426516, -3263.2299989295852356 503.7562690975839246, -3249.1083453730552719 556.4508704679574294, -3249.1073623564325317 577.6351088689078779, -3227.0789334334317573 723.7425631523476568, -3183.5209817488726003 864.9351434214565870, -3145.0063950996932363 944.9047260716176879, -3129.2399803399048324 1003.7367132380807107, -3086.1705453954227778 1046.8041554447745511, -3036.1675038980588397 1120.1406209104106892, -2935.6634168207938274 1228.4529856651729460, -2820.1391641855243506 1320.5767444414277634, -2801.7930339334729979 1331.1685093202834196, -2763.2166432025555878 1369.7431151977043555, -2710.5214060758321466 1383.8623258961499687, -2692.1752147154593331 1394.4541260546511694, -2554.6299030180371119 1448.4349291985654418, -2410.5755828783944708 1481.3133830416004457, -2322.0627096881689795 1487.9463092123467050, -2263.2300000000000182 1503.7100000000000364, -2204.3990753125572155 1487.9409523895812981, -2115.7029639281322488 1481.2860169705504632, -1971.6547489328795564 1448.3808253636827885, -1834.1194591345197296 1394.3744929749309449, -1815.7587157038797159 1383.7697470828661608, -1763.0830830785189391 1369.6505646428263390, -1724.5137550381382425 1331.0687426030108327, -1706.1692244587284222 1320.4733608833789731, -1685.0325693031700212 1303.6117095115282609, -1684.0647021355841844 1304.9506960943622289, -798.3848875647835257 664.7497975144585780, -668.7086314658160973 597.8301540195427606, -669.4687336638634179 596.3572351253640136, -653.9962840476707697 587.4207017476531973, -634.6270161446395832 659.6966464095463607, 97.4196581300587923 1391.7094503287939915))) + + +POLYGON ((-3138.9918179090095691 39.9929298181513317, -3195.9318721744207323 131.7765582775780331, -3194.3605115562841092 132.7513874532058367, -3212.0423376604862824 158.6894340550911124, -3276.1445017965443185 291.8192670418299599, -3319.6893497161845517 433.0158891602736730, -3341.7042188351406367 579.1253871940372164, -3341.7041685876552037 580.2082322725017320, -3341.7842797495400191 580.2023206768839145, -3358.7842797495400191 810.5783206768840046, -3358.7041685876552037 810.5842322725018221, -3358.6973623564326772 957.2601088689078779, -3336.6689334334319028 1103.3675631523476568, -3293.1109817488727458 1244.5601434214565870, -3260.5234971247000431 1312.2230153808816340, -3296.6374455479131029 1414.0631037763496352, -3294.8380822260414789 1414.7011836840215437, -3328.7143497161841879 1524.5468891602736221, -3349.7012648829327190 1663.8340056869151340, -3350.1912493926529351 1663.7938778131951949, -3510.7782493926529241 3624.6538778131953222, -3510.2882648829327081 3624.6940056869152613, -3511.3162188351402619 3631.5163871940371791, -3511.3093623564318477 3779.2751088689078642, -3489.2809334334315281 3925.3825631523477568, -3445.7229817488723711 4066.5751434214562323, -3381.6084625862131361 4199.6990267427599974, -3298.3695038980586105 4321.7806209104110167, -3197.8654168207931434 4430.0929856651728187, -3082.3411641855241214 4522.2167444414280908, -2954.3772147154591039 4596.0941260546514968, -2816.8319030180368827 4650.0749291985657692, -2672.7775828783942416 4682.9533830416003184, -2592.0441774584969608 4689.0033359847420797, -2592.2292272141212379 4691.7359415891232857, 464.5127727858784965 4898.7359415891232857, 464.6978225415029442 4896.0033359847420797, 531.3099999999999454 4900.9950805664066138, 678.8370360718679422 4889.9260169705503358, 822.8852510671204072 4857.0208253636828886, 832.4966505855577452 4853.2466926456381771, 832.7155347673275401 4853.9304792686480141, 3440.9455347673278993 4019.0204792686481596, 3440.7266505855582182 4018.3366926456378678, 3568.6505408654807070 3968.1044929749309631, 3696.6007755412720144 3894.2033608833789913, 3812.1079268348321420 3802.0581609104569907, 3912.5919080161379497 3693.7271431733465761, 3995.8082053600896870 3571.6301008898981308, 4059.8980139174327633 3438.4943193843760127, 4103.4297576971002854 3297.2936566327280161, 4111.9568486815251163 3240.6649172772094971, 4114.5449810944692217 3241.0993479430067055, 4438.8449810944684941 1309.0733479430066382, 4436.2568486815243887 1308.6389172772094298, 4449.7310668223972243 1219.1561161070862909, 4449.7104973863315536 1071.3973957048663124, 4427.6685088490185080 925.2919864301782127, 4384.0974537747060822 784.1034492265001745, 4319.9705801376658201 650.9855167172314623, 4236.7202918527709699 528.9116481847523801, 4136.2061531259496405 420.6086113205509491, 4020.6733513123099328 328.4955743328730478, 3892.7025460983149969 254.6300689133272499, 3755.1522252283625676 200.6620310892940324, 3611.0948543776285078 167.7969465530077287, 3463.7482473934069276 156.7689236912091246, 3316.4036898899316839 167.8242957839195242, 3172.3524217021254117 200.7161186505198884, 3034.8121203619148218 254.7096866493769767, 2920.2486381949101997 320.8647580300017808, 2829.5979618286305595 659.3760732813996128, 2485.1041348942267177 1003.9814942180254320, 2264.2788423241918281 2319.5541328332446938, 409.7273757065412383 2913.2071331414008455, -1458.2438853899545848 2786.7096887882385090, -1390.0104079583070416 1953.5395283355223910, -1308.4375544520867152 1723.5068962236503012, -1310.2333181418257482 1722.8700927968927772, -1276.3402423028999237 1612.9336566327281162, -1254.3389331776024846 1466.8221161070862308, -1254.3595026136681554 1319.0633957048662523, -1256.0639743336037100 1307.7652980846462469, -1255.2787938929561733 1307.6972329071288641, -1257.2316394637061876 1285.1697643588329356, -1227.2802423028999783 1188.0186566327281525, -1205.2789331776025392 1041.9071161070862672, -1205.2904919563829935 958.8756534762312640, -1684.0647021355841844 1304.9506960943622289, -1685.0325693031700212 1303.6117095115282609, -1706.1692244587284222 1320.4733608833789731, -1724.5137550381382425 1331.0687426030108327, -1763.0830830785189391 1369.6505646428263390, -1815.7587157038797159 1383.7697470828661608, -1834.1194591345197296 1394.3744929749309449, -1971.6547489328795564 1448.3808253636827885, -2115.7029639281322488 1481.2860169705504632, -2204.3990753125572155 1487.9409523895812981, -2263.2300000000000182 1503.7100000000000364, -2322.0627096881689795 1487.9463092123467050, -2410.5755828783944708 1481.3133830416004457, -2554.6299030180371119 1448.4349291985654418, -2692.1752147154593331 1394.4541260546511694, -2710.5214060758321466 1383.8623258961499687, -2763.2166432025555878 1369.7431151977043555, -2801.7930339334729979 1331.1685093202834196, -2820.1391641855243506 1320.5767444414277634, -2935.6634168207938274 1228.4529856651729460, -3036.1675038980588397 1120.1406209104106892, -3086.1705453954227778 1046.8041554447745511, -3129.2399803399048324 1003.7367132380807107, -3145.0063950996932363 944.9047260716176879, -3183.5209817488726003 864.9351434214565870, -3227.0789334334317573 723.7425631523476568, -3249.1073623564325317 577.6351088689078779, -3249.1083453730552719 556.4508704679574294, -3263.2299989295852356 503.7562690975839246, -3249.1132358283407484 451.0604139114426516, -3249.1142188351404911 429.8763871940373633, -3227.0993497161844061 283.7668891602737631, -3183.5545017965441730 142.5702670418300499, -3145.0472131318642823 62.5968530737785258, -3145.0472131318642823 62.5968530737783055, -3138.9918179090095691 39.9929298181513317)) + + + true + + + true + + + + POLYGON ((-3511.3162188351402619 3631.5163871940371791, -3511.3093623564318477 3779.2751088689078642, -3489.2809334334315281 3925.3825631523477568, -3445.7229817488723711 4066.5751434214562323, -3381.6084625862131361 4199.6990267427599974, -3298.3695038980586105 4321.7806209104110167, -3197.8654168207931434 4430.0929856651728187, -3082.3411641855241214 4522.2167444414280908, -2954.3772147154591039 4596.0941260546514968, -2816.8319030180368827 4650.0749291985657692, -2672.7775828783942416 4682.9533830416003184, -2592.0441774584969608 4689.0033359847420797, -2592.2292272141212379 4691.7359415891232857, 464.5127727858784965 4898.7359415891232857, 464.6978225415029442 4896.0033359847420797, 531.3099999999999454 4900.9950805664066138, 678.8370360718679422 4889.9260169705503358, 822.8852510671204072 4857.0208253636828886, 832.4966505855577452 4853.2466926456381771, 832.7155347673275401 4853.9304792686480141, 3440.9455347673278993 4019.0204792686481596, 3440.7266505855582182 4018.3366926456378678, 3568.6505408654807070 3968.1044929749309631, 3696.6007755412720144 3894.2033608833789913, 3812.1079268348321420 3802.0581609104569907, 3912.5919080161379497 3693.7271431733465761, 3995.8082053600896870 3571.6301008898981308, 4059.8980139174327633 3438.4943193843760127, 4103.4297576971002854 3297.2936566327280161, 4111.9568486815251163 3240.6649172772094971, 4114.5449810944692217 3241.0993479430067055, 4438.8449810944684941 1309.0733479430066382, 4436.2568486815243887 1308.6389172772094298, 4449.7310668223972243 1219.1561161070862909, 4449.7104973863315536 1071.3973957048663124, 4427.6685088490185080 925.2919864301782127, 4384.0974537747060822 784.1034492265001745, 4319.9705801376658201 650.9855167172314623, 4236.7202918527709699 528.9116481847523801, 4136.2061531259496405 420.6086113205509491, 4020.6733513123099328 328.4955743328730478, 3892.7025460983149969 254.6300689133272499, 3755.1522252283625676 200.6620310892940324, 3611.0948543776285078 167.7969465530077287, 3463.7482473934069276 156.7689236912091246, 3316.4036898899316839 167.8242957839195242, 3172.3524217021254117 200.7161186505198884, 3034.8121203619148218 254.7096866493769767, 2920.2486381949101997 320.8647580300017808, 3097.3929252677053228 -340.6343946513263745, 2829.3203546600025220 -1340.5704802618731719, 2566.4316545475776365 -1603.3983692935935323, 2589.9586987092807249 -1691.2539814346002913, 2550.3216026895242976 -1839.1041048139375107, 2582.0225141513105882 -1957.4828931887502677, 2523.0465473393464890 -2177.4688367911371643, 2361.9813735858801920 -2338.4967531528800464, 2141.9817920466971373 -2397.4218256316030420, 1921.9931199150225893 -2338.4560374338593647, 1915.5094890288899023 -2331.9715065100085667, 1790.8032356108271870 -2365.3730474120334293, 1773.3588004956532131 -2360.6972390794344392, 1755.9014460409671301 -2365.3730474120334293, 1535.9127739092928095 -2306.4072592142892972, 1470.0174606543544087 -2240.5027985744332000, 1267.8188705444704283 -2294.6600223925997852, 1145.5500718010853234 -2750.7342254735290226, 779.4928666591022193 -3116.7067547270667092, 279.4938285436001593 -3250.6273710942414255, -220.4804154644647269 -3116.6142190040254718, -276.8825358097809044 -3060.2042690896628301, -317.8708072633123720 -3042.4487397531365787, -317.0081043084857697 -3040.4572078632113517, -353.9188796380849453 -3025.9673133506230442, -481.8759722620623052 -2952.0780561800302166, -597.3916747239470624 -2859.9435764086629206, -697.8857092860117746 -2751.6218846962374300, -781.1133376604859677 -2629.5325659449085833, -845.2155017965442312 -2496.4027329581699632, -881.7734250743712892 -2377.8616075414415718, -883.2163026251768088 -2378.2274205979942963, -915.6765245378969666 -2250.1944686487954641, -958.6488338256679071 -2176.6893024190303549, -958.3104527203266798 -2176.4914793507796276, -961.3773376604859777 -2171.9925659449086197, -1025.4795017965443549 -2038.8627329581699996, -1069.0243497161841333 -1897.6661108397263433, -1091.0392188351402183 -1751.5566128059626863, -1091.0323623564322588 -1603.7978911310922285, -1089.6762878232161711 -1594.8034867385058533, -1104.6051239273215288 -1541.4387753320572756, -1142.1697554404233870 -1500.9481685832554376, -1144.1735018958338514 -1502.8286850026515822, -1237.9475018958337387 -1402.9096850026517131, -1235.9437554404232742 -1401.0291685832553412, -1283.8694719642787732 -1349.3704336840412452, -1284.3641704239839783 -1349.7723644815778243, -1285.2860836559341351 -1348.6376690100614724, -1338.3270735958196838 -1329.0603190321844522, -1337.4416005745254097 -1326.6613035542172838, -1425.0218796380850108 -1292.2803133506229187, -1552.9789722620623706 -1218.3910561800300911, -1668.4946747239471279 -1126.2565764086627951, -1679.3254791566805579 -1114.5821415641194108, -1680.0605373265407252 -1115.3491207030931491, -1702.7503708819851909 -1093.6036172334481762, -1770.9343685341837045 -1058.4171540195427497, -1770.1722772833329600 -1056.9403807575390601, -1874.5379722620623397 -996.6740561800301066, -1895.7478836933294133 -979.7571858838782646, -1896.7182978644157174 -981.0996960943623435, -2746.6499049371641377 -366.7388744659292570, -2763.2967822031337164 -362.2768436281256186, -2790.5987539714260492 -334.9710818839997160, -2790.5987539714260492 -334.9710818839996023, -2842.3952978644156246 -297.5306960943622698, -2841.4248836933293205 -296.1881858838783614, -2935.7306747239472315 -220.9705764086628506, -3036.2247092860116027 -112.6488846962375874, -3086.2207836436286925 -39.3080148699587753, -3129.2862482014747911 3.7634279033554208, -3138.9918179090095691 39.9929298181513317, -3195.9318721744207323 131.7765582775780331, -3194.3605115562841092 132.7513874532058367, -3212.0423376604862824 158.6894340550911124, -3276.1445017965443185 291.8192670418299599, -3319.6893497161845517 433.0158891602736730, -3341.7042188351406367 579.1253871940372164, -3341.7041685876552037 580.2082322725017320, -3341.7842797495400191 580.2023206768839145, -3358.7842797495400191 810.5783206768840046, -3358.7041685876552037 810.5842322725018221, -3358.6973623564326772 957.2601088689078779, -3336.6689334334319028 1103.3675631523476568, -3293.1109817488727458 1244.5601434214565870, -3260.5234971247000431 1312.2230153808816340, -3296.6374455479131029 1414.0631037763496352, -3294.8380822260414789 1414.7011836840215437, -3328.7143497161841879 1524.5468891602736221, -3349.7012648829327190 1663.8340056869151340, -3350.1912493926529351 1663.7938778131951949, -3510.7782493926529241 3624.6538778131953222, -3510.2882648829327081 3624.6940056869152613, -3511.3162188351402619 3631.5163871940371791), (-1458.2438853899545848 2786.7096887882385090, -1390.0104079583070416 1953.5395283355223910, -1308.4375544520867152 1723.5068962236503012, -1310.2333181418257482 1722.8700927968927772, -1276.3402423028999237 1612.9336566327281162, -1254.3389331776024846 1466.8221161070862308, -1254.3595026136681554 1319.0633957048662523, -1256.0639743336037100 1307.7652980846462469, -1255.2787938929561733 1307.6972329071288641, -1257.2316394637061876 1285.1697643588329356, -1227.2802423028999783 1188.0186566327281525, -1205.2789331776025392 1041.9071161070862672, -1205.2904919563829935 958.8756534762312640, -798.3848875647835257 664.7497975144585780, -668.7086314658160973 597.8301540195427606, -669.4687336638634179 596.3572351253640136, -653.9962840476707697 587.4207017476531973, -634.6270161446395832 659.6966464095463607, 97.4196581300587923 1391.7094503287939915, 1097.3929445351700451 1659.6432199333848985, 2097.6867783781326580 1391.5243492190379584, 2485.1041348942267177 1003.9814942180254320, 2264.2788423241918281 2319.5541328332446938, 409.7273757065412383 2913.2071331414008455, -1458.2438853899545848 2786.7096887882385090)) + + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/fme.xml geos-3.2.2/tests/xmltester/tests/fme.xml --- geos-3.1.0/tests/xmltester/tests/fme.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/fme.xml 2009-10-16 16:27:16.000000000 +0100 @@ -0,0 +1,20 @@ + + + + + + Big Bad Nasty buffer + + POLYGON((377888.21875 5686717.5,377888.09375 5686717.5,377886.46875 5686721,377885.25 5686725,377884.40625 5686730.5,377883.59375 5686735,377883.5625 5686737,377883.5 5686743.5,377883.09375 5686747,377883.03125 5686752.5,377883 5686758,377883.75 5686762,377884.46875 5686767.5,377885.25 5686771.5,377885.21875 5686775,377887.53125 5686781,377891.8125 5686788,377895.4375 5686792,377896.5 5686793,377900.03125 5686797,377905.5 5686802.5,377908.65625 5686804.5,377911.40625 5686807.5,377915.34375 5686809,377918.6875 5686810.5,377920.90625 5686806.5,377923.3125 5686801,377926.09375 5686797.5,377928.21875 5686794.5,377928.90625 5686793.5,377932.09375 5686790.5,377935.6875 5686786,377939.28125 5686782,377944.46875 5686776,377948.0625 5686773,377953.625 5686769,377958.8125 5686765.5,377962.75 5686763.5,377964.0625 5686763,377964.59375 5686762,377965.0625 5686761,377965.5625 5686760,377965.625 5686759,377965.65625 5686759,377966.125 5686758,377967.03125 5686757,377967.46875 5686756.5,377968.46875 5686754.5,377969.71875 5686753.5,377970.625 5686752.5,377971.125 5686751.5,377971.53125 5686751.5,377971.5625 5686751,377973.125 5686751,377975.6875 5686749.5,377978.15625 5686748.5,377978.9375 5686748.5,377979.75 5686748.5,377980.15625 5686748.5,377980.96875 5686748,377981.75 5686748,377982.96875 5686748,377984.15625 5686748,377986.625 5686747,377989 5686747,377990.1875 5686747,377990.96875 5686747,377991.84375 5686746.5,377992.25 5686746,377993.03125 5686746,377993.84375 5686746,377994.65625 5686746,377995.4375 5686746,377996.625 5686746,377997.40625 5686746,377998.59375 5686746.5,377999.375 5686746.5,378000.9375 5686746.5,378001.71875 5686746.5,378002.90625 5686746.5,378003.6875 5686747,378004.46875 5686747,378004.875 5686747,378005.71875 5686746,378006.125 5686746,378007.40625 5686745,378008.21875 5686745,378009.03125 5686745,378009.09375 5686744,378010.375 5686743,378012.40625 5686742.5,378013.6875 5686742,378014.53125 5686741,378015.3125 5686741,378015.34375 5686741,378016.1875 5686740.5,378017.59375 5686738.5,378018.0625 5686737.5,378018.125 5686736.5,378018.59375 5686736,378018.78125 5686734,378018.90625 5686733,378019.03125 5686731,378019.1875 5686729.5,378019.28125 5686729,378019.34375 5686728,378019.40625 5686727.5,378019.5 5686726.5,378019.6875 5686724.5,378020.9375 5686724,378021.40625 5686723,378021.5 5686722,378021.5625 5686721.5,378021.6875 5686720,378021.78125 5686719,378022.5625 5686719.5,378022.625 5686718.5,378022.71875 5686717.5,378022.84375 5686716,378023.3125 5686715.5,378023.4375 5686714,378023.5 5686713.5,378023.65625 5686712,378024.53125 5686711,378025.4375 5686710,378025.46875 5686709.5,378025.96875 5686708.5,378026.78125 5686708,378027.71875 5686706.5,378028.9375 5686706.5,378029.40625 5686705.5,378030.28125 5686705,378031.09375 5686704.5,378031.5625 5686704,378032.84375 5686703,378034.0625 5686702.5,378034.96875 5686701.5,378035.8125 5686701,378036.25 5686700.5,378036.6875 5686700,378037.53125 5686699.5,378037.9375 5686699.5,378038.78125 5686698.5,378039.1875 5686698.5,378040.0625 5686698,378040.875 5686697.5,378042.125 5686697,378042.5625 5686696.5,378043.78125 5686696.5,378044.5625 5686696.5,378045.34375 5686696.5,378046.125 5686696.5,378047.40625 5686695.5,378049.03125 5686695.5,378049.84375 5686695,378050.65625 5686694.5,378051.5 5686694.5,378052.3125 5686694,378053.59375 5686693,378054.8125 5686692.5,378055.59375 5686693,378055.6875 5686692,378056.15625 5686691.5,378057.78125 5686690.5,378059 5686690.5,378059.84375 5686690,378060.25 5686689.5,378060.65625 5686690,378061.4375 5686690,378061.84375 5686690,378062.6875 5686689,378063.46875 5686689.5,378064.65625 5686689.5,378065.0625 5686689.5,378066.28125 5686689,378067.0625 5686689,378067.84375 5686689.5,378069.40625 5686689.5,378070.96875 5686689.5,378071.375 5686689.5,378071.78125 5686689.5,378072.5625 5686690,378073.34375 5686690,378074.40625 5686691,378075.5 5686692,378076.25 5686692.5,378076.96875 5686693.5,378077.6875 5686694.5,378078.4375 5686694.5,378079.15625 5686695,378079.125 5686695.5,378079.53125 5686695.5,378079.4375 5686696.5,378080.4375 5686698.5,378080.71875 5686699.5,378080.5625 5686701.5,378081.21875 5686703,378081.0625 5686704.5,378080.9375 5686705.5,378080.84375 5686707,378081.5 5686708,378082.1875 5686709.5,378082.90625 5686710.5,378083.21875 5686711,378083.125 5686712,378083.5 5686712.5,378083.40625 5686713,378084.59375 5686713,378085.6875 5686714,378086.4375 5686714.5,378088.8125 5686715,378091.46875 5686716,378093.78125 5686716.5,378094.59375 5686716.5,378095.28125 5686717.5,378095.6875 5686717.5,378096.0625 5686717.5,378096.875 5686717.5,378097.65625 5686717.5,378098.8125 5686718,378100.1875 5686716,378102.3125 5686714.5,378102.78125 5686714,378102.84375 5686713,378104.03125 5686713,378105.34375 5686712,378107.4375 5686711,378108.65625 5686710.5,378109.0625 5686710,378109.875 5686710,378110.65625 5686710.5,378111.90625 5686709.5,378113.0625 5686710,378115.125 5686709,378116.6875 5686709.5,378117.53125 5686708.5,378117.96875 5686708.5,378118.8125 5686708,378119.28125 5686707,378120.1875 5686705.5,378121.46875 5686705,378122.34375 5686704,378122.84375 5686703,378123.71875 5686702,378124.15625 5686701.5,378125.09375 5686700,378125.5 5686700,378127.28125 5686698,378128.96875 5686697,378129.8125 5686696.5,378130.6875 5686695.5,378131.46875 5686695.5,378132.28125 5686695.5,378133.0625 5686695.5,378134.625 5686695.5,378135.8125 5686696,378137.78125 5686696,378139.34375 5686696,378140.1875 5686696,378140.96875 5686696,378141.0625 5686694.5,378142.3125 5686694,378142.84375 5686693,378144.09375 5686692,378144.9375 5686691.5,378145.84375 5686690.5,378146.28125 5686690,378147.125 5686689.5,378147.96875 5686689,378149.1875 5686689,378150.8125 5686688,378152.4375 5686688,378153.59375 5686688,378154 5686688,378155.1875 5686688,378155.96875 5686688.5,378156.34375 5686688.5,378156.75 5686688.5,378156.84375 5686687,378156.15625 5686686.5,378155.90625 5686684.5,378155.1875 5686684,378155.28125 5686683,378154.46875 5686683,378153.5 5686681,378152.0625 5686679,378151.71875 5686678.5,378151.75 5686678.5,378150.96875 5686678,378150.625 5686678,378149.5 5686677,378148.375 5686676.5,378148.09375 5686675,378146.9375 5686674.5,378146.5625 5686674.5,378146.625 5686674,378146.65625 5686673.5,378145.875 5686673.5,378146.0625 5686671.5,378145.4375 5686669.5,378145.125 5686669,378145.1875 5686668,378145.28125 5686667.5,378145.34375 5686666.5,378145.375 5686666,378145.53125 5686664.5,378146.375 5686664,378146.9375 5686662.5,378147.03125 5686661,378147.90625 5686660.5,378147.96875 5686659.5,378148.46875 5686658.5,378149.34375 5686658,378149.8125 5686657,378149.84375 5686656.5,378149.875 5686656.5,378150.65625 5686656.5,378151.53125 5686655.5,378152.3125 5686655.5,378153.09375 5686656,378154 5686654.5,378155.65625 5686654,378156.46875 5686654,378157.34375 5686653,378158.15625 5686652.5,378158.59375 5686652.5,378159.84375 5686651.5,378161.0625 5686651.5,378161.875 5686651,378162.75 5686650.5,378163.5625 5686650,378164.40625 5686649.5,378165.65625 5686648.5,378167.28125 5686648.5,378168.53125 5686648,378169.40625 5686647,378169.78125 5686647,378169.875 5686646.5,378170.65625 5686646.5,378171.0625 5686646,378171.15625 5686645.5,378171.96875 5686645,378172.15625 5686643,378172.28125 5686642,378172.375 5686640.5,378172.84375 5686640,378172.96875 5686638.5,378173.4375 5686638,378173.9375 5686637,378174 5686636,378174.9375 5686634.5,378175.03125 5686634,378175.0625 5686633.5,378175.09375 5686633,378176 5686632,378176.03125 5686631.5,378176.1875 5686630,378176.25 5686629,378176.34375 5686628.5,378176.375 5686628,378176.59375 5686628,378182.875 5686630.5,378186.8125 5686632,378193.09375 5686633.5,378194.34375 5686630,378194.78125 5686625.5,378194.46875 5686618,378193.6875 5686614,378192.96875 5686607.5,378192.21875 5686604,378191.0625 5686599.5,378189.9375 5686593.5,378188.78125 5686588,378187.6875 5686580,378187.71875 5686575.5,378187.71875 5686574,378187.75 5686571,378186.59375 5686567.5,378186.65625 5686563,378187.5 5686557,378188.3125 5686553.5,378189.90625 5686550.5,378192.3125 5686546.5,378195.125 5686543,378196.5 5686541.5,378196.6875 5686539.5,378197.625 5686538,378198.09375 5686537,378198.21875 5686536,378198.25 5686535.5,378198.71875 5686535,378198.8125 5686533.5,378198.90625 5686533,378199.6875 5686533,378199.84375 5686531.5,378201.5625 5686530,378202.8125 5686529.5,378203.3125 5686528,378203.6875 5686528,378203.78125 5686527.5,378204.15625 5686527.5,378205.03125 5686526.5,378206.21875 5686527,378206.71875 5686525.5,378207.5625 5686525,378208 5686524.5,378208.46875 5686524,378209.4375 5686522,378211.09375 5686521.5,378212.40625 5686520,378213.71875 5686519,378214.5625 5686518,378215.03125 5686517.5,378215.875 5686517,378216.28125 5686517,378217.15625 5686516,378217.59375 5686515.5,378218.4375 5686515,378219.65625 5686514.5,378220.46875 5686514.5,378220.5625 5686513.5,378221.375 5686513.5,378221.78125 5686513.5,378222.59375 5686513,378223.09375 5686512,378223.90625 5686511.5,378225.28125 5686509.5,378226.96875 5686508.5,378227.84375 5686508,378228.25 5686507.5,378228.71875 5686507,378228.75 5686506.5,378229.21875 5686505.5,378230.09375 5686505,378230.125 5686504.5,378231.0625 5686503,378231.9375 5686502.5,378232.4375 5686501.5,378233.34375 5686500,378234.21875 5686499,378235.09375 5686498.5,378235.9375 5686497.5,378236.40625 5686497,378237.3125 5686496,378237.8125 5686494.5,378238.71875 5686493.5,378239.21875 5686492.5,378240.125 5686491.5,378241.0625 5686490,378241.5625 5686488.5,378242.46875 5686487.5,378242.875 5686487.5,378243.34375 5686486.5,378243.8125 5686486,378244.65625 5686485.5,378245.53125 5686484.5,378246.78125 5686483.5,378247.3125 5686482.5,378247.84375 5686481,378248.3125 5686480.5,378248.4375 5686479,378248.5 5686478.5,378248.96875 5686477.5,378249.8125 5686477,378249.90625 5686476,378250.09375 5686474,378251 5686473,378251.53125 5686471.5,378251.65625 5686470.5,378251.75 5686469,378252.21875 5686468.5,378252.71875 5686467,378252.75 5686467,378252.84375 5686466,378253.09375 5686463.5,378254.4375 5686462,378255.3125 5686460.5,378255.4375 5686459.5,378255.5 5686458.5,378255.90625 5686459,378257 5686455.5,378258.40625 5686453.5,378258.5 5686452.5,378259.0625 5686450.5,378259.125 5686450,378260.78125 5686447,378262.78125 5686443.5,378265.59375 5686439,378266.9375 5686437,378269.1875 5686434,378270.28125 5686433,378270.625 5686432.5,378271.15625 5686432,378271.34375 5686429.5,378272.28125 5686428,378272.75 5686427.5,378272.84375 5686426.5,378272.875 5686426.5,378273.25 5686426.5,378274.15625 5686425.5,378274.25 5686424.5,378274.375 5686423,378275.71875 5686421.5,378276.625 5686420.5,378276.71875 5686419,378277.15625 5686419,378277.21875 5686418,378278 5686418,378278.5625 5686416.5,378279.5 5686415,378279.5625 5686414.5,378279.65625 5686413.5,378280.15625 5686412.5,378280.5625 5686412,378281.5 5686410.5,378282.375 5686410,378282.40625 5686409.5,378282.4375 5686409,378282.96875 5686408,378284.21875 5686407,378284.75 5686405.5,378284.78125 5686405.5,378284.8125 5686405,378285.25 5686404.5,378286.0625 5686404,378286.46875 5686404,378287 5686402.5,378288.6875 5686401.5,378289.125 5686401.5,378290 5686400.5,378290.375 5686400.5,378291.1875 5686400.5,378292 5686400.5,378293.15625 5686400.5,378293.9375 5686400.5,378295.53125 5686401,378295.90625 5686401,378296.6875 5686401,378297.09375 5686401,378298.15625 5686402.5,378299.3125 5686403,378299.96875 5686404,378301.03125 5686405.5,378302.09375 5686406.5,378302.78125 5686408,378303.53125 5686408.5,378303.84375 5686409,378304.15625 5686410,378304.09375 5686411,378304.84375 5686411.5,378305.625 5686411.5,378306.6875 5686412.5,378307.03125 5686413,378308.15625 5686414,378309.28125 5686414.5,378309.96875 5686416,378310.65625 5686416.5,378311.375 5686417.5,378312.09375 5686418.5,378313.21875 5686419,378313.1875 5686419.5,378313.9375 5686419.5,378314.34375 5686420,378315.40625 5686421,378316.9375 5686421.5,378319.9375 5686423.5,378322.21875 5686424.5,378323.3125 5686425.5,378324.03125 5686426.5,378325.15625 5686427,378325.53125 5686427.5,378326.3125 5686427.5,378326.625 5686428,378327.75 5686428.5,378328.15625 5686428.5,378329.25 5686429.5,378330.03125 5686429.5,378331.09375 5686431,378332.65625 5686431.5,378333.71875 5686433,378334.375 5686434,378335.4375 5686435.5,378336.15625 5686436.5,378337.25 5686437,378337.9375 5686438.5,378338.65625 5686439.5,378339.34375 5686440,378340.09375 5686440.5,378340.46875 5686441,378341.15625 5686442,378342.3125 5686442.5,378343.8125 5686443.5,378344.90625 5686444.5,378345.25 5686445,378345.21875 5686445,378345.96875 5686445.5,378346.75 5686445.5,378348.1875 5686447.5,378350.09375 5686448,378350.8125 5686449,378351.5625 5686449.5,378352.34375 5686449.5,378353.0625 5686450.5,378353.46875 5686450.5,378354.5625 5686451.5,378354.90625 5686451.5,378355.625 5686452.5,378356.375 5686453,378357.84375 5686454.5,378359.375 5686455,378360.46875 5686456,378361.1875 5686456.5,378362.28125 5686457.5,378363 5686458.5,378364.125 5686459,378364.5 5686459.5,378365.5625 5686460.5,378366.3125 5686461,378367.09375 5686461.5,378367 5686462,378368.59375 5686462,378370.46875 5686463,378372.4375 5686463.5,378373.21875 5686463.5,378374.375 5686464,378375.9375 5686464,378378.6875 5686464.5,378379.84375 5686464.5,378380.65625 5686464.5,378381.4375 5686464.5,378381.8125 5686465,378382.25 5686464.5,378384.25 5686464,378385.5 5686463.5,378386.6875 5686463.5,378387.875 5686464,378387.90625 5686463.5,378388.71875 5686463,378389.5 5686463,378391.15625 5686462.5,378393.125 5686462.5,378394.375 5686462,378395.1875 5686461.5,378395.625 5686461.5,378395.65625 5686461,378396.4375 5686461,378396.59375 5686459.5,378397.40625 5686459,378398.3125 5686458,378398.40625 5686457.5,378399.28125 5686456,378399.75 5686455.5,378399.90625 5686454,378400.03125 5686452.5,378400.09375 5686452,378400.21875 5686450.5,378400.34375 5686449,378400.46875 5686448,378400.59375 5686447,378400.71875 5686445,378401.1875 5686444.5,378401.3125 5686443.5,378401.4375 5686442,378401.5 5686441.5,378401.625 5686440,378401.6875 5686439.5,378401.75 5686438.5,378401.5625 5686436.5,378401.71875 5686435,378401.8125 5686434,378402.09375 5686431,378402.21875 5686429.5,378402.40625 5686427.5,378402.65625 5686425,378402.78125 5686423.5,378402.9375 5686422,378403.0625 5686421,378403.15625 5686419.5,378402.84375 5686419,378402.65625 5686417,378402.78125 5686415,378402.9375 5686413.5,378403.03125 5686413,378402.6875 5686412,378402.78125 5686411,378402.84375 5686410.5,378402.96875 5686409.5,378403.03125 5686408.5,378402 5686407,378402.125 5686405.5,378402.1875 5686405,378401.875 5686404,378401.5625 5686403,378400.875 5686402,378401.0625 5686400,378400.03125 5686398.5,378399.4375 5686396,378398.84375 5686394,378398.5625 5686393,378398.6875 5686392,378397.96875 5686391,378398.09375 5686389.5,378398.15625 5686389,378397.84375 5686388,378397.59375 5686386.5,378396.9375 5686385,378397.125 5686383.5,378397.34375 5686381,378397.0625 5686379.5,378396.8125 5686378,378396.5 5686377,378396.53125 5686377,378396.65625 5686375.5,378396.71875 5686375,378396.9375 5686372.5,378396.6875 5686371,378396.96875 5686368,378398.3125 5686366.5,378398.75 5686366,378398.84375 5686365,378398.90625 5686364.5,378400.90625 5686364,378401.8125 5686363,378402.625 5686363,378403.4375 5686362.5,378403.5 5686362,378403.59375 5686361,378404.8125 5686360.5,378405.59375 5686360.5,378406.46875 5686360,378408.09375 5686359.5,378409.03125 5686358,378410.3125 5686357,378411.09375 5686357,378411.15625 5686356.5,378411.96875 5686356,378412.78125 5686356,378414.0625 5686355,378415.6875 5686354.5,378416.53125 5686354,378416.5625 5686354,378416.96875 5686354,378417.75 5686354,378419 5686353.5,378420.21875 5686353,378420.59375 5686353,378421.375 5686353,378422.5625 5686353,378424.59375 5686352.5,378425.8125 5686352.5,378426.59375 5686352.5,378426.65625 5686352,378429 5686352.5,378430.40625 5686351.5,378430.6875 5686351.5,378432.28125 5686351,378433.0625 5686351,378433.46875 5686351,378434.25 5686351,378434.65625 5686351.5,378436.21875 5686351.5,378437.40625 5686351.5,378438.1875 5686351.5,378438.5625 5686351.5,378440.15625 5686352,378441.3125 5686352,378442.0625 5686352.5,378442.46875 5686352.5,378443.65625 5686352.5,378444.8125 5686352.5,378446 5686353,378446.40625 5686353,378447.1875 5686353,378447.96875 5686353,378448.8125 5686352.5,378451.21875 5686352,378452.5 5686351,378453.375 5686350.5,378453.75 5686350.5,378453.84375 5686349.5,378454.625 5686349.5,378454.71875 5686348.5,378455.59375 5686348,378456.5 5686346.5,378456.96875 5686346,378457.0625 5686345,378457.15625 5686344,378457.25 5686343,378457.34375 5686342,378457.59375 5686339.5,378458.125 5686338,378458.3125 5686336,378458.5625 5686333.5,378458.625 5686332.5,378458.75 5686331.5,378458.84375 5686330.5,378458.875 5686330,378459.03125 5686328.5,378458.6875 5686328,378457.625 5686326.5,378457.65625 5686326,378457.25 5686326,378456.6875 5686323.5,378452.53125 5686321.5,378451.09375 5686320,378450.4375 5686318.5,378449.65625 5686318.5,378448.9375 5686318,378448.59375 5686317.5,378447.90625 5686316,378446.8125 5686315,378446.15625 5686313.5,378445.53125 5686312,378445.28125 5686310,378445.4375 5686308.5,378445.5625 5686307.5,378445.25 5686306.5,378445.3125 5686306,378445.375 5686305,378445.625 5686302.5,378445.71875 5686301.5,378445.875 5686300,378446.03125 5686298.5,378446.09375 5686297.5,378446.1875 5686297,378446.28125 5686295.5,378446.3125 5686295,378447.1875 5686294.5,378447.21875 5686294,378447.625 5686294,378448 5686294,378448.09375 5686293.5,378448.125 5686293,378448.15625 5686292.5,378450.5 5686293,378451.8125 5686292,378452.28125 5686291,378452.6875 5686290.5,378452.75 5686290.5,378453.53125 5686290.5,378454.09375 5686288.5,378456.1875 5686287.5,378456.71875 5686286,378457.65625 5686284.5,378457.6875 5686284,378458.125 5686283.5,378458.53125 5686284,378459.3125 5686284,378460.59375 5686283,378462.28125 5686282,378463.0625 5686282,378463.125 5686281,378464.03125 5686280,378464.84375 5686279.5,378466.625 5686278,378467.875 5686277,378468.71875 5686276.5,378469.1875 5686275.5,378469.625 5686275.5,378470.0625 5686275,378470.90625 5686274.5,378471.75 5686274,378473.0625 5686272.5,378474.3125 5686272,378474.78125 5686271,378475.65625 5686270.5,378476.5 5686269.5,378477.40625 5686268.5,378477.84375 5686268,378478.6875 5686267.5,378480 5686266.5,378481.25 5686266,378481.75 5686265.5,378482.0625 5686265.5,378482.5 5686265,378483.4375 5686263.5,378485.875 5686263,378487.59375 5686261.5,378489.34375 5686260,378490.1875 5686259,378491.09375 5686258,378491.96875 5686257.5,378492.375 5686257,378493.25 5686256.5,378493.6875 5686256,378494.5625 5686255,378496.21875 5686254,378497.5625 5686252.5,378498.875 5686251.5,378499.75 5686250.5,378500.625 5686249.5,378501.0625 5686249,378501.9375 5686248.5,378502.78125 5686247.5,378503.21875 5686247.5,378504.0625 5686246.5,378504.90625 5686246.5,378505.8125 5686245,378506.625 5686245,378507.46875 5686244,378507.9375 5686243.5,378508.5 5686242,378510.125 5686241.5,378511.4375 5686240,378511.9375 5686239,378512.78125 5686238.5,378513.65625 5686237.5,378514.90625 5686237,378515.8125 5686236,378516.65625 5686235,378517.90625 5686234.5,378518.75 5686234,378519.59375 5686233.5,378520 5686233.5,378520.78125 5686233.5,378521.625 5686233,378522.5 5686232,378524.15625 5686231.5,378525.75 5686231.5,378526.65625 5686230.5,378527.90625 5686229.5,378528.71875 5686229.5,378529.59375 5686228.5,378530.8125 5686228.5,378531.625 5686228,378532.875 5686227.5,378534.09375 5686227,378534.875 5686227,378535.75 5686226.5,378536.5625 5686226,378537.46875 5686225,378539.0625 5686225,378539.9375 5686224,378539.96875 5686223.5,378540.78125 5686223.5,378541.6875 5686222,378542.5625 5686221.5,378543.84375 5686220.5,378545.0625 5686220,378546.34375 5686219,378547.21875 5686218.5,378548.0625 5686217.5,378548.9375 5686217,378549.78125 5686216.5,378550.21875 5686216,378551.0625 5686215,378551.90625 5686215,378552.71875 5686214.5,378553.59375 5686214,378554.4375 5686213,378556.0625 5686213,378557.3125 5686212.5,378558.15625 5686211.5,378559.375 5686211.5,378559.8125 5686211,378560.59375 5686211,378560.6875 5686210.5,378561.46875 5686210.5,378561.5 5686210,378561.6875 5686208,378563.84375 5686206,378564.90625 5686203,378566 5686200,378566.5 5686199,378567 5686198,378567.46875 5686197,378567.5625 5686196.5,378567.59375 5686196,378567.65625 5686195,378568.0625 5686195,378569.0625 5686193,378570.03125 5686191,378570.9375 5686190,378571.40625 5686189,378571.875 5686188.5,378572.3125 5686188,378572.8125 5686187,378573.6875 5686186,378575.40625 5686184.5,378577.0625 5686183.5,378578.375 5686182.5,378578.875 5686181.5,378579.6875 5686181,378579.78125 5686180.5,378580.25 5686179.5,378580.375 5686178,378581.21875 5686178,378582.53125 5686176.5,378583.4375 5686175,378583.90625 5686174.5,378584.8125 5686173.5,378585.28125 5686172.5,378585.34375 5686172,378586.3125 5686170,378587.21875 5686169,378588.0625 5686168,378588.59375 5686167,378589.03125 5686166,378589.5 5686165.5,378590.40625 5686164.5,378591.65625 5686163.5,378592.09375 5686163.5,378592.15625 5686162.5,378593 5686162.5,378593.0625 5686161.5,378593.09375 5686161,378593.53125 5686160.5,378593.96875 5686160,378598.0625 5686158,378601.25 5686156.5,378604.40625 5686156.5,378609.15625 5686154,378615.125 5686151.5,378618.28125 5686151.5,378622.65625 5686149.5,378625.84375 5686146,378628.21875 5686143.5,378628.25 5686140,378628.25 5686139.5,378629.46875 5686136,378630.3125 5686132,378631.90625 5686129,378635.53125 5686123.5,378640.65625 5686123,378645 5686122.5,378649.5 5686122,378649.5625 5686122,378650.40625 5686121.5,378651.3125 5686120,378651.84375 5686119,378651.875 5686118.5,378652.6875 5686118,378653.1875 5686117,378654.84375 5686116.5,378655.75 5686115.5,378656.25 5686114,378657.09375 5686113.5,378657.5625 5686113,378658.4375 5686112,378658.90625 5686111.5,378659.8125 5686110,378659.84375 5686110,378660.8125 5686108,378661.65625 5686107,378662.1875 5686106,378662.25 5686105.5,378663.0625 5686105,378663.15625 5686104,378663.25 5686103,378664.5625 5686102,378665.4375 5686101,378665.53125 5686100,378665.59375 5686099.5,378666.0625 5686098.5,378666.65625 5686096.5,378666.71875 5686096,378666.78125 5686095,378666.84375 5686094.5,378666.90625 5686094,378667.15625 5686091,378667.28125 5686090,378667.34375 5686089,378667.40625 5686088.5,378667.46875 5686088,378667.65625 5686086,378666.59375 5686084.5,378665.96875 5686083,378665.28125 5686082,378664.96875 5686081,378665.03125 5686080,378663.875 5686080,378662.59375 5686076.5,378660.5 5686073.5,378659.78125 5686073,378659.46875 5686072,378659.0625 5686072,378659.15625 5686071,378658.375 5686071,378658.4375 5686070.5,378656.9375 5686069.5,378656.21875 5686068.5,378654.84375 5686066.5,378654.1875 5686065,378653.90625 5686064,378653.53125 5686063.5,378653.5625 5686063,378652.90625 5686062,378652.96875 5686061,378652.34375 5686059.5,378651.625 5686058.5,378651.375 5686057,378651.53125 5686055.5,378651.5625 5686055,378651.625 5686054.5,378651.71875 5686053.5,378651.75 5686053,378651.84375 5686052,378651.90625 5686051.5,378651.9375 5686051,378652.84375 5686050,378652.9375 5686049,378653 5686048.5,378653.03125 5686048,378653.4375 5686048,378654.375 5686046.5,378654.84375 5686045.5,378654.875 5686045.5,378654.90625 5686045,378655.3125 5686045,378656.1875 5686044,378657.0625 5686043,378657.4375 5686043,378657.84375 5686043.5,378658.625 5686043.5,378659.40625 5686043.5,378660.625 5686043,378661.03125 5686043,378662.1875 5686043.5,378662.59375 5686043.5,378663.78125 5686043.5,378664.15625 5686043.5,378665.34375 5686043.5,378666.125 5686043.5,378666.90625 5686044,378668.09375 5686044,378668.875 5686044,378669.65625 5686044,378670.4375 5686044,378671.21875 5686044,378672.40625 5686044.5,378673.1875 5686044.5,378674.4375 5686043.5,378675.25 5686044,378676.8125 5686044,378677.1875 5686044,378678 5686044,378679.15625 5686044,378679.5625 5686044.5,378680.78125 5686044,378681.5625 5686044,378681.9375 5686044,378682.75 5686044,378683.90625 5686044.5,378686.34375 5686044,378687.90625 5686044,378688.75 5686043.5,378689.53125 5686043.5,378690.84375 5686042,378691.71875 5686041.5,378692.15625 5686041,378693.40625 5686040.5,378693.78125 5686040.5,378695.03125 5686040,378695.90625 5686039,378696.84375 5686037.5,378697.28125 5686037.5,378698.1875 5686036,378699.0625 5686035,378699.96875 5686034,378700.03125 5686033,378700.9375 5686032,378701.40625 5686031.5,378701.90625 5686030,378702.03125 5686029,378702.875 5686028.5,378703 5686027,378703.125 5686025.5,378704 5686025,378704.53125 5686023.5,378704.65625 5686022,378704.78125 5686021,378704.875 5686020,378705 5686018.5,378705.0625 5686018,378705.1875 5686016.5,378705.21875 5686016.5,378705.375 5686014.5,378704.6875 5686013.5,378703.28125 5686011.5,378702.40625 5686008.5,378701.71875 5686007,378701.84375 5686006,378702.03125 5686004,378702.21875 5686002,378702.28125 5686001.5,378702.3125 5686001,378703.09375 5686001,378703.15625 5686000.5,378703.71875 5685994.5,378704.15625 5685990,378704.21875 5685989,378704.3125 5685988.5,378704.40625 5685987,378705.3125 5685986,378705.5625 5685983.5,378705.6875 5685982,378705.75 5685981.5,378705.8125 5685981,378706.1875 5685981,378706.3125 5685980,378707.5625 5685979,378708.5625 5685977,378709.5 5685975.5,378709.53125 5685975,378709.59375 5685974.5,378709.96875 5685974.5,378710.125 5685973,378712.21875 5685971.5,378713.0625 5685971.5,378713.09375 5685971,378713.21875 5685970,378714.03125 5685969.5,378715.4375 5685967,378716.75 5685966,378717.1875 5685965.5,378717.25 5685964.5,378718.0625 5685964.5,378718.59375 5685963,378720.65625 5685962,378722.03125 5685960.5,378723.28125 5685959.5,378723.75 5685959,378724.21875 5685958,378724.625 5685958,378724.65625 5685958,378725.46875 5685957.5,378726.375 5685956.5,378727.1875 5685956,378728.5625 5685954.5,378730.25 5685953,378731.09375 5685952.5,378731.625 5685951.5,378732.46875 5685950.5,378733.375 5685949.5,378733.8125 5685949,378733.875 5685948.5,378735.09375 5685948,378736 5685947,378736.8125 5685946.5,378738.09375 5685945.5,378739.34375 5685945,378740.1875 5685944.5,378740.59375 5685944.5,378741.46875 5685943.5,378741.875 5685943.5,378743.15625 5685942.5,378744.375 5685942.5,378745.15625 5685942.5,378746 5685941.5,378746.84375 5685941.5,378748.09375 5685940.5,378748.46875 5685941,378749.6875 5685940.5,378750.09375 5685940.5,378751.75 5685940,378752.53125 5685940,378753.8125 5685939,378755.53125 5685939,378758.5 5685935.5,378761.6875 5685932.5,378766.875 5685927.5,378770.46875 5685924,378774.84375 5685920,378778.8125 5685917,378783.21875 5685913,378787.96875 5685909.5,378793.53125 5685906.5,378796.71875 5685904.5,378799.5 5685903.5,378802.65625 5685903,378806.25 5685899.5,378808.09375 5685898,378808.65625 5685896,378809.9375 5685895,378810.4375 5685894,378810.59375 5685892,378811.40625 5685892,378811.5 5685891,378812.4375 5685889.5,378813.28125 5685889,378813.75 5685888,378813.875 5685887,378813.9375 5685886,378814.4375 5685885,378815.40625 5685883,378816.28125 5685882.5,378816.78125 5685881.5,378816.90625 5685880,378816.96875 5685879.5,378817 5685879,378817.125 5685878,378817.96875 5685877,378819.09375 5685873.5,378819.25 5685872,378819.40625 5685870.5,378819.5625 5685869,378819.625 5685868,378819.75 5685867,378819.84375 5685865.5,378819.96875 5685864.5,378820.1875 5685862,378820.3125 5685861,378820.5 5685859,378820.53125 5685858.5,378820.6875 5685857,378820.8125 5685855.5,378820.9375 5685854.5,378821 5685853.5,378821.0625 5685853,378821.46875 5685849,378821.0625 5685845,378821.1875 5685843,378821.3125 5685842,378821.375 5685841.5,378821.46875 5685840.5,378821.5 5685840,378820.78125 5685839,378820.59375 5685837,378820.3125 5685836,378820.375 5685835,378820.5 5685834,378820.21875 5685833,378817.96875 5685831.5,378817.3125 5685825.5,378814.8125 5685822.5,378813.875 5685820,378813.28125 5685818,378812.5625 5685817.5,378812.28125 5685816,378811.9375 5685815.5,378812 5685815,378809.25 5685814.5,378806.71875 5685812,378803.8125 5685809.5,378801.96875 5685808,378801.25 5685807,378800.0625 5685807,378799.75 5685806,378799.375 5685806,378798.625 5685805.5,378797.84375 5685805.5,378794.28125 5685805,378792.71875 5685805,378790.75 5685805,378789.59375 5685804.5,378789.1875 5685804.5,378788.40625 5685804.5,378787.625 5685804.5,378786.84375 5685804.5,378785.65625 5685804.5,378784.09375 5685804,378782.03125 5685804.5,378780.875 5685804.5,378780.09375 5685804.5,378779.28125 5685804.5,378778.90625 5685804.5,378777.6875 5685804.5,378775.34375 5685804.5,378773.65625 5685805.5,378772.4375 5685805.5,378771.21875 5685806,378770.40625 5685806.5,378769.59375 5685806,378768.8125 5685806,378767.65625 5685806,378767.25 5685806,378766.0625 5685806,378765.6875 5685806,378764.53125 5685805.5,378763.75 5685805,378762.6875 5685804,378761.1875 5685803,378760 5685803,378759.28125 5685802.5,378758.09375 5685802.5,378757.3125 5685802,378756.125 5685802,378755.90625 5685802,378754.9375 5685802,378752.1875 5685801.5,378750.625 5685801.5,378749.84375 5685801.5,378748.65625 5685801.5,378747.875 5685801,378746.65625 5685801.5,378745.46875 5685801.5,378745.0625 5685801.5,378744.1875 5685802.5,378743.375 5685803,378742.125 5685803.5,378740.875 5685804,378740 5685805,378739.15625 5685805.5,378738.28125 5685806,378737.8125 5685807,378737.03125 5685807,378737 5685807.5,378736.21875 5685807,378734.8125 5685809.5,378731.875 5685811,378730.625 5685812,378730.53125 5685812.5,378729.375 5685812.5,378727.59375 5685814.5,378723.90625 5685815.5,378723.0625 5685816,378722.625 5685816.5,378721.84375 5685816.5,378721.03125 5685817,378720.59375 5685817,378719.65625 5685818.5,378717.65625 5685819,378716.375 5685820,378715.46875 5685821,378714.65625 5685821.5,378714.59375 5685821.5,378713.75 5685822.5,378713.3125 5685823,378712.375 5685824.5,378711.90625 5685825,378711.84375 5685826,378711.75 5685826.5,378711.6875 5685827.5,378710.8125 5685828,378710.25 5685830,378709.75 5685831,378709.59375 5685832.5,378709.46875 5685834,378709.375 5685835,378708.46875 5685836,378707.96875 5685837.5,378707.875 5685838,378707 5685839,378706.90625 5685840,378705.90625 5685842.5,378705.03125 5685843,378704.5 5685844.5,378704.34375 5685846,378703.53125 5685846.5,378703.46875 5685847,378702.5625 5685848.5,378702.09375 5685849,378700.75 5685850.5,378699.90625 5685851,378699.03125 5685852,378698.1875 5685852.5,378697.3125 5685853.5,378696.84375 5685854,378696 5685855,378695.53125 5685855.5,378694.65625 5685856.5,378694.1875 5685857,378692.90625 5685858,378691.21875 5685859,378690.375 5685860,378689.875 5685861,378689.03125 5685861,378688.59375 5685861.5,378687.75 5685862.5,378686.9375 5685862.5,378686.125 5685862.5,378685.75 5685862.5,378684.84375 5685863.5,378683.625 5685864,378681.9375 5685865,378680.34375 5685865,378679.5625 5685865,378678.78125 5685865,378677.90625 5685865.5,378676.71875 5685865.5,378674.3125 5685866,378672.34375 5685866,378671.15625 5685866,378670.375 5685865.5,378669.125 5685866.5,378668.34375 5685866.5,378667.09375 5685867,378665.90625 5685867,378665.03125 5685867.5,378664.1875 5685868.5,378663.34375 5685868.5,378662.90625 5685869.5,378662.46875 5685869.5,378661.6875 5685869.5,378660.375 5685870.5,378658.78125 5685871,378657.96875 5685871,378657.125 5685871.5,378656.6875 5685872,378655.875 5685872,378654.125 5685874,378652.46875 5685874.5,378651.1875 5685875.5,378650.3125 5685876.5,378649.46875 5685877,378648.625 5685877.5,378648.1875 5685878,378647.75 5685878.5,378646.90625 5685879,378646.4375 5685879.5,378645.59375 5685880.5,378643.9375 5685881,378643.46875 5685881.5,378642.65625 5685882,378641.78125 5685882.5,378640.9375 5685883.5,378639.71875 5685883.5,378638.84375 5685884.5,378638.375 5685885,378637.5625 5685885.5,378636.75 5685886,378636.3125 5685886,378635.46875 5685887,378635.0625 5685887,378633.6875 5685888.5,378632.0625 5685889.5,378630.8125 5685890,378630.28125 5685891,378629.4375 5685892,378629 5685892,378628.5625 5685892.5,378628.5 5685893.5,378627.625 5685894,378627.21875 5685894.5,378626.28125 5685896,378625.03125 5685896.5,378624.5 5685897.5,378624.03125 5685898.5,378623.15625 5685899.5,378622.65625 5685900.5,378622.34375 5685901,378623.25 5685903,378626.75 5685907.5,378629.09375 5685910.5,378631.03125 5685914.5,378633.375 5685918.5,378636.125 5685922.5,378637.65625 5685928,378638.40625 5685931.5,378638.34375 5685938,378636.34375 5685941.5,378634.3125 5685945.5,378628.34375 5685951.5,378627.09375 5685951.5,378627.4375 5685954.5,378629.5625 5685957,378630.5625 5685959,378631.125 5685961.5,378631.4375 5685962.5,378631.375 5685963,378632.125 5685963.5,378632.09375 5685964,378632.40625 5685965,378632.65625 5685966.5,378633.34375 5685967.5,378634.3125 5685970,378634.96875 5685971,378634.9375 5685971.5,378634.875 5685972,378635.53125 5685973.5,378635.90625 5685974,378636.53125 5685975.5,378637.25 5685976.5,378637.15625 5685977,378637.09375 5685978,378637.0625 5685978.5,378638.9375 5685979.5,378639.375 5685983,378640.375 5685985,378640.65625 5685986.5,378640.5 5685988,378640.46875 5685988.5,378641.65625 5685988.5,378642.53125 5685991.5,378643.875 5685994,378644.15625 5685995.5,378644.09375 5685996,378644.46875 5685996,378644.59375 5685999,378644.8125 5686001,378644.75 5686002,378644.65625 5686002.5,378644.5625 5686004,378644.46875 5686004.5,378644.375 5686005.5,378644.25 5686007,378643.65625 5686009,378642.78125 5686010,378640.71875 5686015,378640.25 5686015.5,378639.78125 5686016.5,378638.8125 5686018.5,378637.53125 5686019.5,378637 5686020.5,378636.875 5686022,378636.03125 5686022.5,378636 5686023,378635.875 5686024,378634.28125 5686024,378633.125 5686028,378632.15625 5686030,378632.0625 5686030.5,378631.5625 5686032,378631.53125 5686032.5,378631.09375 5686032.5,378630.25 5686033.5,378629.78125 5686034,378628.40625 5686036,378626.71875 5686037,378625.78125 5686038.5,378624.84375 5686040,378624.8125 5686040.5,378624.78125 5686040.5,378623.90625 5686041.5,378623.4375 5686042,378623.0625 5686042,378622.15625 5686043,378620.90625 5686044,378620 5686045,378618.75 5686045.5,378617.90625 5686046.5,378617 5686047.5,378616.1875 5686048,378615.71875 5686048.5,378614.875 5686049,378614.0625 5686049,378612.8125 5686050,378611.15625 5686050.5,378609.90625 5686051,378609.0625 5686052,378608.1875 5686052.5,378608.15625 5686053,378607.34375 5686053,378606.875 5686054,378605.59375 5686054.5,378604.78125 5686055,378604.40625 5686055,378603.21875 5686055,378601.65625 5686054.5,378599.28125 5686054.5,378598.5 5686054.5,378598.1875 5686053.5,378597.40625 5686053.5,378597 5686053.5,378595.9375 5686052,378594.40625 5686051.5,378593.3125 5686050.5,378592.1875 5686049.5,378591.09375 5686049,378590 5686048,378588.9375 5686046.5,378587.8125 5686045.5,378586.71875 5686045,378586 5686044,378584.90625 5686043,378584.1875 5686042,378583.4375 5686041.5,378582.75 5686041,378582.375 5686040.5,378581.625 5686040,378580.96875 5686038.5,378579.8125 5686038,378579.46875 5686037.5,378579.125 5686037.5,378578.4375 5686036,378577.28125 5686035.5,378576.625 5686034,378575.90625 5686033.5,378575.65625 5686032,378575 5686030.5,378574.40625 5686028.5,378573 5686026.5,378572.46875 5686024,378571.84375 5686022,378571.21875 5686020,378570.625 5686018,378570 5686016.5,378569.3125 5686015,378568.625 5686014,378568.3125 5686013,378567.625 5686012.5,378567.65625 5686012,378566.9375 5686011,378566.96875 5686010.5,378565.875 5686009.5,378565.53125 5686009.5,378564.40625 5686008.5,378563.3125 5686007.5,378562.5625 5686007,378562.21875 5686006.5,378561.5 5686005.5,378560.75 5686005,378559.28125 5686004,378557.78125 5686003,378556.71875 5686001.5,378556.0625 5686000.5,378555 5685999,378554.3125 5685998,378553.21875 5685997,378552.53125 5685995.5,378551.84375 5685995,378551.65625 5685994.5,378551.5 5685994,378551.15625 5685993.5,378551.1875 5685993,378550 5685993,378549.46875 5685990.5,378546.90625 5685988.5,378546.21875 5685987,378545.96875 5685985.5,378545.625 5685985,378545.65625 5685984.5,378544.9375 5685984,378544.59375 5685983.5,378543.96875 5685981.5,378543.59375 5685981,378542.5625 5685979.5,378541.8125 5685979,378541.5 5685978,378541.1875 5685977.5,378540.5625 5685976,378539.0625 5685975,378538.375 5685973.5,378537.3125 5685972.5,378536.59375 5685971.5,378535.875 5685971,378535.15625 5685970,378534.78125 5685969.5,378534.03125 5685969,378532.875 5685969,378531.875 5685967,378530.46875 5685965,378529.75 5685964.5,378529.78125 5685964,378529.375 5685964,378528.6875 5685963,378527.90625 5685963,378525.96875 5685962.5,378524.40625 5685962,378523.625 5685962,378522.8125 5685962,378522.03125 5685962,378521.65625 5685962,378520.46875 5685962,378519.6875 5685961.5,378518.5 5685961.5,378517.71875 5685961.5,378516.53125 5685961.5,378515.75 5685961.5,378514.25 5685960.5,378512.34375 5685960,378511.21875 5685959,378510.53125 5685958,378509.78125 5685957.5,378509.8125 5685957,378508.65625 5685956.5,378508.28125 5685956.5,378507.21875 5685955.5,378506.90625 5685954.5,378506.09375 5685954.5,378506.21875 5685953,378505.46875 5685952.5,378503.71875 5685950,378502.65625 5685949,378502.0625 5685947,378502.21875 5685945.5,378501.53125 5685944,378501.65625 5685943,378501.78125 5685941.5,378501.5 5685940.5,378501.125 5685940,378501.21875 5685939,378500.4375 5685939,378499.40625 5685937.5,378498.34375 5685936,378497.53125 5685936,378497.59375 5685935.5,378496.0625 5685935,378495.21875 5685935,378494.46875 5685935,378493.78125 5685934,378492.96875 5685934,378492.1875 5685934,378491.40625 5685934,378490.21875 5685933.5,378488.65625 5685933.5,378487.46875 5685933.5,378486.3125 5685933.5,378485.15625 5685933,378484.78125 5685933,378484.03125 5685932.5,378483.25 5685932,378482.53125 5685931.5,378481.375 5685931,378479.84375 5685930.5,378478.6875 5685930,378477.9375 5685929.5,378477.53125 5685929.5,378477.21875 5685929,378476.875 5685928.5,378476.21875 5685926.5,378475.125 5685926,378474.4375 5685924.5,378473.78125 5685923.5,378473.40625 5685923,378473.46875 5685922.5,378473.6875 5685920,378473.125 5685917.5,378473.3125 5685915.5,378473.53125 5685913.5,378473.65625 5685912,378473.75 5685911,378473.875 5685910,378473.9375 5685909,378474.0625 5685908,378474.15625 5685906.5,378474.34375 5685904.5,378474.53125 5685902.5,378474.6875 5685901,378474.84375 5685899.5,378475 5685898,378475.15625 5685896.5,378475.25 5685895.5,378474.53125 5685894.5,378473.84375 5685893.5,378473.875 5685893,378473.15625 5685892.5,378472.09375 5685891,378471.4375 5685889.5,378470.75 5685888.5,378470.875 5685887.5,378469.75 5685886.5,378469.46875 5685885,378468.84375 5685883.5,378467.8125 5685882,378467.1875 5685880,378466.5 5685879,378466.65625 5685877.5,378465.9375 5685876.5,378466.03125 5685875.5,378465.28125 5685875,378465.3125 5685875,378464.53125 5685874.5,378463.84375 5685873.5,378461.96875 5685872.5,378461.21875 5685872,378461 5685872,378460.46875 5685871.5,378459.6875 5685871.5,378458.53125 5685871,378457.4375 5685870,378454.6875 5685869.5,378453.1875 5685869,378451.6875 5685868,378450.53125 5685867.5,378449.71875 5685867.5,378448.625 5685866.5,378448.28125 5685866.5,378447.09375 5685866,378446.3125 5685866,378445.125 5685866,378444.75 5685866,378443.5625 5685866,378442.78125 5685865.5,378442 5685865.5,378441.59375 5685865.5,378440.40625 5685865.5,378439.625 5685865.5,378438.46875 5685865.5,378438.25 5685865.5,378437.28125 5685865,378435.25 5685866,378432.4375 5685866,378430.875 5685865.5,378429.28125 5685866,378428.09375 5685866,378426.84375 5685866.5,378425.28125 5685866.5,378424.09375 5685866,378422.84375 5685867,378422 5685867,378421.21875 5685867,378420.84375 5685867,378419.96875 5685868,378419.125 5685868.5,378417.46875 5685869,378415.46875 5685869.5,378414.21875 5685870,378413.71875 5685871,378412.875 5685871.5,378412.46875 5685872,378411.5625 5685873,378410.125 5685873,378410.09375 5685873.5,378408.8125 5685882.5,378405.96875 5685892.5,378403.53125 5685899.5,378401.53125 5685904,378399.28125 5685908,378399.46875 5685908,378399.875 5685912.5,378400.34375 5685916,378400.15625 5685918,378399.96875 5685920,378399.875 5685920.5,378399.8125 5685921.5,378399.75 5685922,378399.625 5685923.5,378399.5 5685924.5,378398.0625 5685927,378397.0625 5685929.5,378395.625 5685932,378395.15625 5685933,378395.03125 5685934,378394.90625 5685935.5,378390.84375 5685936.5,378389.15625 5685937.5,378387.90625 5685938,378387.09375 5685938.5,378386.21875 5685939,378385.8125 5685939.5,378384.96875 5685940,378384.15625 5685940,378382.9375 5685940.5,378381.25 5685941.5,378378.875 5685941.5,378377.25 5685942,378376 5685942.5,378374.78125 5685942.5,378373.53125 5685943.5,378371.9375 5685943.5,378371.09375 5685944,378369.9375 5685944,378369.53125 5685944,378368.71875 5685944,378367.9375 5685944,378366.34375 5685944,378365.5625 5685944,378364.3125 5685944.5,378363.125 5685944.5,378362.75 5685944.5,378361.875 5685945,378361.09375 5685945,378359.90625 5685945,378359.125 5685944.5,378357.84375 5685946,378357.0625 5685945.5,378355.40625 5685946.5,378353.84375 5685946,378352.96875 5685947,378352.15625 5685947,378351.34375 5685947.5,378350.90625 5685948,378349.625 5685949,378348 5685949,378346.75 5685950,378345.5 5685950.5,378344.28125 5685950.5,378343.0625 5685951,378341.84375 5685951.5,378341.03125 5685951.5,378340.25 5685951.5,378339.84375 5685951.5,378339.1875 5685950,378339.28125 5685949,378339.3125 5685948.5,378338.6875 5685947,378338.71875 5685946.5,378338.0625 5685945.5,378337.5 5685943,378337.59375 5685941.5,378337.71875 5685940.5,378337.78125 5685940,378337.84375 5685939.5,378337.5625 5685938,378337.28125 5685937,378336.09375 5685937,378335.3125 5685936.5,378334.15625 5685936,378333.375 5685936,378333 5685936,378331.8125 5685936,378331.40625 5685936,378329.84375 5685936,378329.0625 5685935.5,378328.28125 5685935.5,378327.5 5685935.5,378326.3125 5685935.5,378325.53125 5685935.5,378323.96875 5685935,378323.15625 5685935,378321.59375 5685935,378320.03125 5685935,378319.25 5685934.5,378318.0625 5685934.5,378316.84375 5685935,378316.03125 5685935,378315.15625 5685936,378313.9375 5685936,378313.15625 5685936,378312.375 5685936,378311.53125 5685936.5,378311.0625 5685937.5,378309.75 5685938.5,378308.9375 5685939,378308.4375 5685940,378307.9375 5685941,378307.46875 5685942,378306.5625 5685943,378306.09375 5685943.5,378306.03125 5685944.5,378305.53125 5685945.5,378305.09375 5685946,378304.1875 5685947,378303.375 5685947.5,378302.5 5685948,378302.03125 5685949,378301.5625 5685949.5,378301.53125 5685950,378301.46875 5685951,378300.65625 5685950.5,378300.3125 5685950.5,378299.53125 5685950,378299.125 5685950,378299.09375 5685950.5,378298.28125 5685951,378297.5 5685951,378296.59375 5685952,378294.53125 5685953,378293.6875 5685953,378293.28125 5685953.5,378292.875 5685953.5,378292.8125 5685954.5,378291.59375 5685954.5,378291.1875 5685954.5,378291.125 5685955.5,378289.53125 5685955,378288.59375 5685956.5,378287.34375 5685957.5,378286.5 5685958,378285.625 5685958.5,378285.21875 5685959,378284.75 5685960,378283.90625 5685960,378283.125 5685960,378282.21875 5685961,378280.59375 5685962,378279.34375 5685962.5,378278.46875 5685963,378277.625 5685964,378277.1875 5685964,378276.3125 5685965,378275.9375 5685965,378274.6875 5685965.5,378274.28125 5685965.5,378273.03125 5685966,378272.625 5685966,378271 5685967,378270.59375 5685966.5,378269.3125 5685968,378268.5 5685968,378267.21875 5685969,378265.96875 5685969.5,378265.1875 5685969.5,378264.40625 5685969.5,378263.15625 5685970,378262.375 5685970,378260.8125 5685969.5,378260 5685969.5,378259.15625 5685970.5,378258.375 5685970.5,378257.59375 5685970,378256.375 5685970.5,378255.1875 5685970.5,378253.21875 5685970,378251.65625 5685970,378250.875 5685970,378250.46875 5685970,378249.6875 5685970,378248.90625 5685969.5,378247.71875 5685969.5,378246.90625 5685970,378245.25 5685970.5,378244.46875 5685970.5,378243.6875 5685970.5,378243.28125 5685970.5,378242.03125 5685971,378241.21875 5685971.5,378239.5625 5685972,378239.15625 5685972.5,378238.75 5685972.5,378237.84375 5685973.5,378237.03125 5685973.5,378235.78125 5685974.5,378235.28125 5685975.5,378235.1875 5685976.5,378235.15625 5685976.5,378234.8125 5685980,378233.375 5685983,378233.3125 5685983.5,378233.28125 5685984,378233.1875 5685985,378233.15625 5685985,378233.03125 5685986.5,378232.5625 5685987,378231.53125 5685990,378231.375 5685991.5,378231.21875 5685993,378231.09375 5685994.5,378231.03125 5685995,378231 5685995.5,378230.90625 5685996.5,378230.8125 5685997.5,378230.71875 5685998.5,378230.625 5685999.5,378230.46875 5686001,378230.4375 5686001,378230.28125 5686003,378230.1875 5686004,378230.0625 5686005,378230 5686006,378229.34375 5686008.5,378228.40625 5686010,378228.25 5686011.5,378228.15625 5686013,378227.6875 5686013.5,378227.59375 5686014.5,378227.21875 5686014.5,378226.40625 5686014.5,378225.8125 5686016.5,378225.625 5686018.5,378224.84375 5686018.5,378223.90625 5686020,378222.5625 5686021.5,378222.1875 5686021.5,378220.96875 5686021.5,378220.0625 5686023,378219.25 5686023,378218.78125 5686024,378218.34375 5686024,378217.5625 5686024,378216.78125 5686024,378215.96875 5686024,378215.1875 5686024,378214.03125 5686024,378213.25 5686023.5,378212.0625 5686023.5,378212.125 5686023,378211.34375 5686022.5,378211.03125 5686022,378210.3125 5686021,378210.40625 5686020.5,378209.65625 5686020,378209.71875 5686019,378209.375 5686018.5,378209.09375 5686017.5,378209.125 5686017,378208.03125 5686016,378208.0625 5686015.5,378208.15625 5686014.5,378205.9375 5686013,378204.96875 5686010.5,378203.90625 5686009.5,378203.59375 5686008.5,378203.65625 5686007.5,378202.875 5686007.5,378201.6875 5686007.5,378200.53125 5686007.5,378199.71875 5686007.5,378198.9375 5686007,378197.78125 5686007,378196.59375 5686007,378195.03125 5686007,378193.84375 5686006.5,378193.0625 5686006.5,378192.96875 5686007.5,378191.8125 5686007,378191.40625 5686007,378190.625 5686007,378190.5625 5686008,378189.34375 5686008,378188.40625 5686009.5,378187.5 5686011,378187.4375 5686011.5,378186.59375 5686012,378186.125 5686012.5,378184.84375 5686013.5,378184.375 5686014.5,378183.46875 5686015.5,378183 5686016.5,378182.59375 5686016.5,378182.53125 5686017,378181.28125 5686017.5,378180.8125 5686018.5,378180.71875 5686019.5,378179.46875 5686020.5,378179.03125 5686020.5,378179 5686021,378178.96875 5686021.5,378178.5625 5686021.5,378177.6875 5686022,378176.375 5686023.5,378175.9375 5686024,378175.09375 5686024.5,378173.78125 5686025.5,378173.375 5686026,378172.5 5686027,378171.59375 5686028,378170.34375 5686028.5,378169.0625 5686029.5,378167.40625 5686030,378165.78125 5686031,378164.875 5686032,378163.65625 5686032,378162.84375 5686032.5,378162.4375 5686032.5,378162.5 5686031.5,378162.5625 5686031.5,378162.59375 5686030.5,378152.25 5686035.5,378151.90625 5686039,378153.625 5686042,378154.40625 5686042,378154.3125 5686043,378154.03125 5686046,378158.40625 5686046,378163.125 5686048,378164.6875 5686052,378166.59375 5686059.5,378167.71875 5686064.5,378168.09375 5686067.5,378169.625 5686072.5,378174.53125 5686078,378175.5625 5686078,378176.75 5686078,378177.53125 5686078,378178.3125 5686078,378179.09375 5686078.5,378179.875 5686078.5,378181.46875 5686078.5,378182.25 5686078.5,378183.40625 5686078.5,378184.21875 5686079,378185.78125 5686079,378186.5625 5686079,378186.96875 5686079,378188.0625 5686080,378188.84375 5686080,378190.34375 5686081,378191.90625 5686081,378192.6875 5686081,378193.46875 5686081.5,378194.53125 5686082.5,378195.6875 5686083,378197.5625 5686084,378199.0625 5686085,378200.21875 5686085.5,378200.96875 5686086,378202.09375 5686086.5,378203.25 5686087,378204 5686087.5,378205.125 5686088,378206.28125 5686088.5,378207.375 5686089.5,378208.5 5686090,378209.25 5686090.5,378210.40625 5686091,378211.53125 5686091.5,378212.34375 5686091.5,378213.125 5686091.5,378214.21875 5686092.5,378215 5686092.5,378216.1875 5686093,378216.9375 5686093,378218.375 5686094.5,378220.3125 5686095,378221.375 5686096.5,378222.5 5686097.5,378223.9375 5686098.5,378225.03125 5686099.5,378226.15625 5686100.5,378227.25 5686101.5,378228.34375 5686102.5,378229.0625 5686103,378229.78125 5686104,378230.53125 5686104.5,378231.15625 5686106,378232.65625 5686107,378233.375 5686108,378234.09375 5686109,378234.78125 5686109.5,378235.5 5686110.5,378235.78125 5686112,378236.5 5686112.5,378237.1875 5686113.5,378237.125 5686114.5,378237.875 5686115,378238.5625 5686116,378239.28125 5686116.5,378240.3125 5686118,378241.375 5686119.5,378242.5 5686120.5,378243.15625 5686121.5,378243.90625 5686122,378244.28125 5686122.5,378245.34375 5686124,378245.6875 5686124.5,378246.84375 5686125,378247.625 5686125,378248 5686125,378248.71875 5686126,378249.46875 5686126.5,378250.9375 5686127.5,378252.4375 5686128.5,378253.46875 5686129.5,378253.53125 5686129.5,378254.25 5686130.5,378255.375 5686131,378256.125 5686131.5,378257.3125 5686131.5,378258 5686132.5,378259.125 5686133.5,378261.03125 5686134,378261.78125 5686134.5,378262.53125 5686135,378263.3125 5686135,378264.125 5686135,378264.8125 5686136,378267.125 5686136.5,378268.3125 5686136.5,378269.0625 5686137,378269.84375 5686137,378270.25 5686137,378271.03125 5686137,378271.875 5686136.5,378272.3125 5686136,378273.5625 5686135.5,378274.40625 5686135,378275.6875 5686134,378276.9375 5686133.5,378278.1875 5686133,378278.65625 5686132,378279.53125 5686131.5,378280 5686130.5,378280.9375 5686129,378282.1875 5686128.5,378282.71875 5686127,378282.875 5686125.5,378283.71875 5686124.5,378283.78125 5686124,378283.90625 5686122.5,378284.0625 5686121,378284.5625 5686116,378283.21875 5686113.5,378283.03125 5686111,378283.21875 5686109,378283.34375 5686108,378283.03125 5686107,378282.34375 5686106,378282.46875 5686104.5,378281.78125 5686103.5,378281.46875 5686102.5,378281.21875 5686101,378280.96875 5686099.5,378280.6875 5686098,378280.84375 5686096.5,378280.1875 5686095.5,378280.28125 5686094,378280.34375 5686093.5,378280.375 5686093.5,378280.625 5686090.5,378279.6875 5686088,378279.5 5686085.5,378279.71875 5686083.5,378279.84375 5686082,378279.96875 5686081,378280.03125 5686080,378279.3125 5686079.5,378278.9375 5686079,378278.71875 5686077,378276.53125 5686075.5,378276.03125 5686075,378272.375 5686073.5,378267.28125 5686070,378262.5625 5686067,378258.25 5686062.5,378255.53125 5686058,378255.5625 5686054.5,378256.78125 5686050.5,378260 5686041.5,378260.84375 5686037.5,378263.25 5686032,378265.28125 5686027.5,378267.6875 5686021.5,378270.53125 5686014.5,378273.34375 5686008.5,378277.75 5686000.5,378282.40625 5685992.5,378282.96875 5685992,378285.3125 5685987.5,378286.03125 5685988,378287.28125 5685987,378288.875 5685987.5,378289.71875 5685986.5,378290.96875 5685986,378292.1875 5685985.5,378292.625 5685985.5,378293.40625 5685985.5,378294.28125 5685984.5,378294.6875 5685984.5,378295.5 5685984.5,378295.875 5685984.5,378296.75 5685983.5,378297.15625 5685983.5,378298 5685983,378298.84375 5685982.5,378299.25 5685982.5,378300.15625 5685981,378300.53125 5685981.5,378301.78125 5685980.5,378302.5625 5685980.5,378303 5685980.5,378304.25 5685979.5,378304.6875 5685979.5,378305.90625 5685979,378307.15625 5685978.5,378307.5625 5685978.5,378308.8125 5685978,378310.375 5685978,378311.625 5685977,378312.0625 5685977,378312.4375 5685977,378313.25 5685977,378314.5 5685976.5,378314.875 5685976.5,378316.09375 5685976,378316.875 5685976,378317.75 5685975.5,378318.53125 5685975.5,378319.3125 5685975.5,378320.96875 5685975,378322.1875 5685974.5,378322.5625 5685975,378323.4375 5685974,378324.21875 5685974,378324.59375 5685974,378325.46875 5685973.5,378326.6875 5685973,378327.0625 5685973,378327.9375 5685972.5,378328.75 5685972,378330.8125 5685971.5,378331.96875 5685972,378333.15625 5685972,378333.59375 5685971.5,378333.96875 5685971.5,378334.75 5685971.5,378335.9375 5685972,378336.34375 5685972,378337.9375 5685971.5,378338.71875 5685971.5,378339.5 5685971.5,378340.28125 5685971.5,378340.78125 5685971,378342.375 5685971,378342.78125 5685971,378343.9375 5685971,378344.34375 5685971,378345.59375 5685970.5,378346.375 5685970.5,378347.15625 5685970.5,378347.9375 5685970.5,378349.15625 5685970.5,378349.9375 5685970.5,378351.1875 5685969.5,378352 5685970,378353.28125 5685968.5,378354.5 5685968.5,378355.28125 5685968.5,378355.65625 5685968.5,378356.53125 5685968,378356.96875 5685967.5,378357.75 5685967.5,378358.125 5685967.5,378358.96875 5685967.5,378359.75 5685967.5,378361.03125 5685966.5,378361.875 5685966,378362.65625 5685966,378363.46875 5685966,378363.875 5685966,378365.125 5685965,378365.90625 5685965.5,378367.59375 5685964,378369.1875 5685964,378370.40625 5685963.5,378371.21875 5685963.5,378372.03125 5685963.5,378373.21875 5685963,378374.03125 5685963.5,378374.125 5685962,378375.3125 5685962,378376.53125 5685962,378377.6875 5685962,378378.59375 5685961,378379 5685961,378380.625 5685960.5,378381.4375 5685960.5,378382.75 5685959,378384 5685958.5,378384.40625 5685958.5,378385.25 5685957.5,378386.09375 5685957.5,378386.90625 5685957,378388.09375 5685957,378389.75 5685956,378391.03125 5685955.5,378391.8125 5685955.5,378392.1875 5685955.5,378393.03125 5685955.5,378393.40625 5685955.5,378394.1875 5685955.5,378394.96875 5685955.5,378396.625 5685955,378397.40625 5685955,378398.625 5685954.5,378399.8125 5685955,378401.5 5685954,378402.34375 5685953,378402.75 5685953,378403.59375 5685952.5,378405.65625 5685952,378406.90625 5685951,378408.125 5685951,378408.90625 5685951,378409.28125 5685951,378410.53125 5685950.5,378410.96875 5685950,378412.625 5685949.5,378413.40625 5685949.5,378413.84375 5685949,378414.71875 5685948,378415.15625 5685947.5,378416.40625 5685947,378417.28125 5685946,378418.53125 5685945.5,378419.4375 5685944.5,378420.25 5685944,378421.125 5685943.5,378421.53125 5685943,378422.84375 5685942,378424.03125 5685941.5,378425.3125 5685941,378425.78125 5685940.5,378426.1875 5685940,378427.03125 5685939.5,378427.96875 5685938,378429.59375 5685937.5,378430.4375 5685937,378430.46875 5685937,378430.53125 5685936,378432.15625 5685936,378432.96875 5685935.5,378433.375 5685935.5,378434.6875 5685934,378436.3125 5685934,378437.125 5685933.5,378437.9375 5685933,378437.96875 5685933,378438.75 5685933,378439.5625 5685933,378441.5 5685933,378442.59375 5685934.5,378443.375 5685934.5,378443.71875 5685935,378443.5625 5685936.5,378445.8125 5685938,378447.125 5685941,378448.53125 5685942.5,378449.28125 5685943,378449.21875 5685944,378449.15625 5685944.5,378449.84375 5685945.5,378451.625 5685947.5,378453.125 5685948.5,378453.84375 5685949.5,378454.5625 5685950.5,378454.90625 5685951,378455.25 5685951,378455.96875 5685952,378456.71875 5685952.5,378457.375 5685954,378458.125 5685954.5,378458.5 5685954.5,378459.625 5685955.5,378460 5685955.5,378460.375 5685955.5,378460.3125 5685956.5,378461.0625 5685957,378461.84375 5685957,378462.46875 5685958.5,378463.625 5685959,378464 5685959.5,378463.9375 5685960,378465.8125 5685961,378466.5 5685962.5,378467.96875 5685963.5,378469.09375 5685964,378469.03125 5685965,378468.90625 5685966,378470.8125 5685967,378471.4375 5685969,378472.15625 5685969.5,378472.46875 5685970.5,378472.4375 5685971,378472.34375 5685971.5,378473.4375 5685972.5,378474.09375 5685974,378474.75 5685975.5,378475.125 5685976,378475.4375 5685976.5,378475.78125 5685977,378476.96875 5685977.5,378478.53125 5685977.5,378479.71875 5685977.5,378480.46875 5685978,378481.25 5685978,378482.40625 5685978.5,378484.34375 5685979,378485.15625 5685979,378486.71875 5685979,378487.4375 5685980,378487.375 5685980.5,378488.5625 5685980.5,378489.25 5685981.5,378490.3125 5685983,378490.96875 5685984.5,378490.8125 5685986,378490.75 5685986.5,378490.71875 5685987,378491.09375 5685987,378491.34375 5685988.5,378491.25 5685990,378491.15625 5685990.5,378491.09375 5685991.5,378491.46875 5685991.5,378492.0625 5685993.5,378493.5 5685995,378494.125 5685997,378494.71875 5685999,378495.4375 5686000,378495.71875 5686001,378496.4375 5686002,378496.34375 5686002.5,378497.0625 5686003.5,378498.125 5686005,378498.8125 5686006,378499.53125 5686007,378499.5625 5686007,378500.1875 5686008,378500.90625 5686009,378501.25 5686009.5,378501.1875 5686010.5,378501.5625 5686010.5,378501.78125 5686012.5,378502.8125 5686014,378503.40625 5686016,378503.25 5686017.5,378503.21875 5686018,378503.1875 5686018.5,378502.96875 5686021,378503.9375 5686023,378504.5625 5686025,378505.1875 5686026.5,378505.46875 5686028,378505.375 5686028.5,378506.1875 5686028.5,378506.625 5686032.5,378507.53125 5686035,378507.75 5686037,378507.5625 5686039,378507.53125 5686039.5,378507.84375 5686040.5,378508.1875 5686041,378508.15625 5686041,378509.34375 5686041.5,378510.75 5686043,378512.21875 5686044.5,378512.96875 5686045,378513.28125 5686045.5,378513.6875 5686046,378514.40625 5686046,378514.8125 5686046.5,378515.5625 5686046.5,378516.6875 5686047.5,378517.5 5686047.5,378519.4375 5686047.5,378520.25 5686047.5,378520.625 5686047.5,378521.8125 5686048,378522.5625 5686048.5,378523.71875 5686048.5,378524.53125 5686048.5,378525.65625 5686049,378527.21875 5686049,378527.625 5686049,378528.75 5686049.5,378530.25 5686050.5,378532.21875 5686051,378533.375 5686051.5,378534.15625 5686051.5,378534.9375 5686051.5,378534.875 5686052.5,378536.03125 5686052.5,378537.1875 5686053,378539.09375 5686053.5,378539.78125 5686055,378540.875 5686055.5,378541.625 5686056,378542 5686056.5,378542.78125 5686056.5,378543.5625 5686056.5,378544.34375 5686057,378545.4375 5686057.5,378546.1875 5686058,378546.59375 5686058,378547.375 5686058.5,378548.15625 5686058.5,378549.34375 5686058.5,378550.125 5686058.5,378550.90625 5686058.5,378552.09375 5686059,378552.46875 5686059,378552.875 5686059,378553.25 5686059,378554.125 5686058,378554.9375 5686058,378555.34375 5686058,378556.125 5686058,378556.96875 5686057.5,378558.59375 5686057,378559 5686057,378559.78125 5686057,378560.5625 5686057.5,378561.40625 5686056.5,378561.8125 5686056.5,378562.59375 5686056.5,378563.375 5686057,378564.15625 5686057,378564.5625 5686057,378564.9375 5686057,378566.125 5686057,378566.90625 5686057,378567.3125 5686057,378568.09375 5686057,378568.8125 5686058,378569.96875 5686058,378569.84375 5686060,378570.5 5686061,378570.75 5686062.5,378570.59375 5686064,378570.4375 5686066,378571.15625 5686066.5,378571.40625 5686068.5,378571.25 5686070,378571.1875 5686070.5,378571.09375 5686071.5,378570.75 5686075,378570.53125 5686077.5,378570.34375 5686079.5,378570.21875 5686081,378570.125 5686081.5,378570.03125 5686083,378569.6875 5686086.5,378568.59375 5686089.5,378568.4375 5686091,378568.34375 5686092,378568.25 5686093,378568.21875 5686093.5,378568.15625 5686094,378567.96875 5686096,378566.59375 5686098,378566 5686100,378565.0625 5686101.5,378564.5625 5686102.5,378564.0625 5686103.5,378563.15625 5686105,378562.65625 5686106,378561.71875 5686107.5,378560.84375 5686108.5,378560.28125 5686110,378559.40625 5686111,378558.84375 5686112.5,378558.3125 5686114.5,378557.40625 5686115.5,378556.90625 5686116.5,378556.40625 5686117.5,378555.90625 5686119,378555.375 5686120,378555.3125 5686120.5,378554.46875 5686121.5,378554.375 5686122,378553.40625 5686124,378552.53125 5686125,378551.65625 5686126,378551.5 5686127.5,378551.03125 5686128,378550.96875 5686129,378550.84375 5686130,378550.8125 5686130.5,378550.03125 5686130.5,378549.78125 5686133,378548.40625 5686135,378547.8125 5686137,378547.625 5686139,378547.5 5686140,378547 5686141.5,378546.125 5686142.5,378546.0625 5686143,378545.6875 5686143,378545.03125 5686145.5,378544.0625 5686147.5,378543.875 5686149.5,378543.28125 5686151.5,378543.1875 5686152.5,378543.03125 5686154,378542.09375 5686155.5,378541.9375 5686157,378541.875 5686158,378541.75 5686159,378541.625 5686160.5,378541.59375 5686160.5,378541.40625 5686162.5,378540.46875 5686164,378540.375 5686165.5,378540.25 5686166.5,378539.90625 5686170,378538.875 5686172.5,378538.78125 5686173.5,378538.75 5686174,378538.5625 5686176,378537.28125 5686177,378536.78125 5686178,378536.6875 5686179,378536.5 5686181,378534.75 5686182.5,378533.84375 5686183.5,378533.75 5686185,378533.71875 5686185.5,378533.625 5686186,378532.84375 5686186,378531.84375 5686188.5,378530.4375 5686190.5,378530.34375 5686191.5,378530.28125 5686192,378529.8125 5686193,378529.75 5686193.5,378528.84375 5686194.5,378528.78125 5686195.5,378527.90625 5686196,378527.875 5686196.5,378527 5686197.5,378525.78125 5686197.5,378524.90625 5686198.5,378524.03125 5686199.5,378523.1875 5686200,378522.75 5686200.5,378522.28125 5686201,378522.25 5686201.5,378521.46875 5686201.5,378520.5625 5686202.5,378519.3125 5686203.5,378518.53125 5686203,378518.125 5686203,378516.84375 5686204,378515.15625 5686205.5,378514.28125 5686206,378513.46875 5686206.5,378513.0625 5686206,378512.625 5686207,378511.8125 5686207,378511.03125 5686207,378509.875 5686206.5,378509.46875 5686206.5,378508.6875 5686206.5,378507.90625 5686206.5,378506.71875 5686206.5,378505.9375 5686206.5,378504.375 5686206,378503.5625 5686206,378502.40625 5686206,378501.625 5686206,378500.03125 5686205.5,378499.65625 5686205.5,378498.46875 5686205.5,378497.6875 5686205.5,378496.90625 5686205.5,378495.71875 5686205.5,378495.34375 5686205,378494.15625 5686205,378493.375 5686205,378491.40625 5686205,378490.625 5686205,378489.84375 5686204.5,378489.4375 5686204.5,378488.65625 5686204.5,378487.875 5686204.5,378487.78125 5686205.5,378487.75 5686205.5,378486.46875 5686206.5,378486.4375 5686207,378486.15625 5686210,378487.1875 5686211.5,378487.40625 5686213.5,378487.59375 5686215.5,378487.5625 5686216,378487.5 5686217,378487.8125 5686217.5,378488.15625 5686218,378488.84375 5686219.5,378488.75 5686220,378489.46875 5686221,378489.4375 5686221.5,378489.28125 5686223,378489.1875 5686224,378489.09375 5686225,378489.0625 5686225.5,378489 5686226,378488.9375 5686226.5,378488.84375 5686227.5,378488.75 5686228.5,378487.90625 5686229,378487.875 5686229.5,378487.46875 5686229.5,378486.625 5686230,378484.625 5686230.5,378483.75 5686231,378482.53125 5686231.5,378481.75 5686231.5,378480.875 5686232,378480.5 5686232,378480.09375 5686232,378479.21875 5686233,378478.375 5686233.5,378476.75 5686234,378475.125 5686234,378473.875 5686235,378473.0625 5686235,378472.28125 5686235,378471.875 5686235,378471 5686236,378470.21875 5686235.5,378468.59375 5686236.5,378467 5686236,378465.78125 5686236.5,378465 5686236.5,378464.1875 5686236.5,378463.40625 5686236.5,378462.21875 5686236.5,378461.4375 5686236.5,378459.875 5686236,378457.90625 5686236,378457.125 5686236,378455.9375 5686236,378454.6875 5686236.5,378453.875 5686237,378452.6875 5686236.5,378451.90625 5686236.5,378450.71875 5686236.5,378449.9375 5686236.5,378448.75 5686236.5,378447.59375 5686236,378445.53125 5686237,378443.9375 5686237,378442.375 5686237,378441.5625 5686237,378440.78125 5686236.5,378440.40625 5686236.5,378439.625 5686236.5,378439.21875 5686236.5,378438.03125 5686236.5,378437.65625 5686236.5,378436.59375 5686235,378436.21875 5686234.5,378435.0625 5686234.5,378434.65625 5686234.5,378433.46875 5686234.5,378433.09375 5686234.5,378432 5686233.5,378431.59375 5686233.5,378430.5 5686232.5,378429.3125 5686232.5,378429 5686231.5,378428.59375 5686231.5,378427.9375 5686230,378427.1875 5686229.5,378425.65625 5686229,378424.59375 5686228,378423.84375 5686227.5,378423.875 5686227,378423.5625 5686226,378423.59375 5686226,378422.53125 5686224.5,378421.40625 5686223.5,378421.125 5686222.5,378420.4375 5686221.5,378420.15625 5686220.5,378419.46875 5686219,378418.75 5686218,378418.4375 5686217.5,378418.09375 5686217,378418.125 5686216.5,378416.9375 5686216.5,378415.90625 5686214.5,378414.5 5686213,378414.09375 5686213,378413.3125 5686213,378412.53125 5686213,378410.96875 5686212.5,378410.1875 5686212.5,378408.625 5686212.5,378407.8125 5686212.5,378407.03125 5686212,378405.875 5686212,378404.6875 5686212,378402.71875 5686212,378400.75 5686211.5,378399.5625 5686211.5,378398.78125 5686211.5,378398 5686211.5,378397.21875 5686211,378396.03125 5686211,378395.1875 5686212,378393.09375 5686213,378391.875 5686213,378391 5686214,378390.09375 5686215.5,378389.625 5686216,378389.15625 5686216.5,378388.6875 5686217.5,378388.65625 5686218,378388.59375 5686218.5,378387.28125 5686219.5,378386.8125 5686220.5,378386.34375 5686221,378386.25 5686222.5,378385.34375 5686223.5,378385.28125 5686224.5,378384.40625 5686225,378384.03125 5686225,378382.4375 5686225,378381.65625 5686224.5,378380.875 5686224.5,378380.09375 5686224.5,378378.53125 5686224.5,378376.15625 5686224,378374.96875 5686224,378373.40625 5686224,378372.625 5686224,378371.84375 5686223.5,378370.96875 5686224.5,378370.59375 5686224.5,378369.71875 5686225,378368.5 5686225.5,378366.84375 5686226.5,378365.5625 5686227,378364.71875 5686228,378363.84375 5686228.5,378363.4375 5686229,378363.375 5686229,378362.78125 5686230,378362.5 5686230.5,378361.65625 5686230.5,378360.6875 5686232.5,378359.40625 5686233.5,378358.90625 5686234.5,378358.34375 5686236.5,378357.53125 5686236.5,378357.5 5686237,378357 5686238,378356.96875 5686238.5,378356.875 5686239.5,378356.84375 5686239.5,378356.65625 5686241.5,378355.78125 5686242.5,378355.6875 5686243.5,378355.5625 5686244.5,378355.40625 5686246.5,378354.9375 5686247,378354.5625 5686247,378354.46875 5686248,378354.375 5686249,378353.90625 5686249.5,378352.9375 5686251.5,378352.4375 5686253,378352.34375 5686253.5,378352.28125 5686254.5,378351.875 5686254.5,378350.84375 5686257,378350.25 5686259,378350.15625 5686260,378350.0625 5686261,378349.6875 5686261,378349.0625 5686263,378347.6875 5686265,378347.125 5686267,378346.9375 5686269,378346.46875 5686269.5,378346.40625 5686270,378346.34375 5686271,378346.3125 5686271,378346.28125 5686271.5,378346.09375 5686273.5,378345.96875 5686275,378345.875 5686276,378345.75 5686277,378345.625 5686278.5,378345.5625 5686279,378345.5 5686280,378345.4375 5686280.5,378345.34375 5686281.5,378345.25 5686282,378345.15625 5686283.5,378345.46875 5686284.5,378345.78125 5686285,378345.65625 5686286.5,378346.46875 5686286.5,378347.125 5686287.5,378347.4375 5686288.5,378348.21875 5686288.5,378348.9375 5686289.5,378349.34375 5686289.5,378350.5 5686289.5,378350.90625 5686289.5,378352.0625 5686290,378352.84375 5686290,378354.75 5686291,378355.53125 5686291,378357.5 5686291,378358.28125 5686291,378359.09375 5686291,378359.875 5686291.5,378361.03125 5686291.5,378362.625 5686291.5,378363.40625 5686291.5,378364.1875 5686291.5,378365.25 5686293,378366.03125 5686293,378366.8125 5686293,378367.59375 5686293,378368.75 5686294,378369.53125 5686294,378370.71875 5686294,378371.5 5686294,378371.875 5686294,378373.0625 5686294,378373.84375 5686294.5,378375.03125 5686294.5,378375.4375 5686294.5,378376.65625 5686294,378377.03125 5686294,378378.21875 5686294.5,378378.59375 5686294.5,378379.78125 5686294.5,378380.5625 5686294.5,378381.34375 5686294.5,378382.53125 5686295,378383.28125 5686295,378384.03125 5686295.5,378385.90625 5686296.5,378386.6875 5686297,378387.5 5686297,378388.1875 5686297.5,378388.96875 5686298,378389.375 5686298,378390.0625 5686299,378390.8125 5686299.5,378391.0625 5686301,378391.03125 5686301,378391.625 5686303,378391.53125 5686304.5,378391.40625 5686305.5,378391.34375 5686306.5,378391.25 5686307,378390.40625 5686308,378389.15625 5686308.5,378388.71875 5686309,378387.9375 5686309,378386.75 5686308.5,378386.25 5686310,378384.21875 5686310.5,378383.3125 5686311.5,378382 5686313,378381.125 5686313.5,378380.28125 5686314.5,378379.8125 5686315,378379.71875 5686316,378378.875 5686316.5,378378.4375 5686317,378377.5625 5686317.5,378377.15625 5686318,378376.28125 5686319,378375.8125 5686319.5,378374.5 5686321,378372.8125 5686322,378371.875 5686323.5,378370.9375 5686325,378370.0625 5686325.5,378369.59375 5686326.5,378369.125 5686327,378369.09375 5686327.5,378368.28125 5686328,378367.40625 5686328.5,378366.1875 5686329,378365.40625 5686329,378363.0625 5686328.5,378361.5 5686328.5,378360.3125 5686328.5,378359.875 5686328.5,378359.09375 5686328.5,378358.3125 5686328.5,378357.53125 5686328.5,378356.75 5686328.5,378355.5625 5686328,378355.15625 5686328,378354.375 5686328,378353.59375 5686328,378353.21875 5686328,378352.40625 5686328,378351.625 5686328,378350.46875 5686327.5,378349.65625 5686327.5,378347.71875 5686327.5,378345.75 5686327,378344.875 5686328,378344.03125 5686328.5,378343.25 5686328.5,378342.84375 5686328.5,378341.65625 5686328.5,378340.875 5686328.5,378339.6875 5686328,378338.53125 5686328,378336.5625 5686328,378335 5686327.5,378334.21875 5686327.5,378333.40625 5686327.5,378332.625 5686327.5,378331.84375 5686327.5,378330.65625 5686327.5,378329.875 5686327,378328.28125 5686327.5,378327.5 5686327.5,378325.90625 5686327,378325.53125 5686327,378323.96875 5686327,378323.5625 5686327,378322 5686327,378321.21875 5686326.5,378319.625 5686326.5,378319.25 5686326.5,378318.40625 5686327,378317.625 5686326.5,378316.8125 5686327,378316.03125 5686327,378315.25 5686327,378314.46875 5686327,378312.875 5686326.5,378312.09375 5686326.5,378310.03125 5686327.5,378309.25 5686327.5,378308.4375 5686327.5,378307.625 5686327.5,378307.25 5686327.5,378306.40625 5686328,378304.84375 5686328,378304.0625 5686327.5,378303.65625 5686327.5,378302.375 5686329,378301.59375 5686328.5,378300.8125 5686328.5,378300.03125 5686328.5,378298.75 5686329,378297.15625 5686329.5,378296.375 5686329.5,378295.59375 5686329.5,378294.71875 5686330,378294.28125 5686330.5,378293.5 5686330.5,378292.71875 5686330,378291.53125 5686330,378290.375 5686330,378288.78125 5686330,378288 5686329.5,378287.1875 5686330,378285.96875 5686330.5,378284.40625 5686330,378283.625 5686330,378282.78125 5686330.5,378282.375 5686330.5,378281.96875 5686330.5,378281.5625 5686330.5,378280.71875 5686331.5,378280.3125 5686331.5,378279.5 5686331.5,378278.71875 5686331.5,378277.0625 5686332,378275.84375 5686332.5,378275.0625 5686332.5,378274.25 5686332.5,378274.15625 5686333.5,378273.375 5686333.5,378272.5625 5686333.5,378271 5686333.5,378270.96875 5686333.5,378270.46875 5686335.5,378268.40625 5686344,378266.78125 5686349.5,378264.75 5686356.5,378262.71875 5686362.5,378258.6875 5686369,378256.6875 5686372,378254.625 5686373,378254.53125 5686373,378254.46875 5686374,378254.40625 5686374.5,378253.0625 5686376,378252.1875 5686377,378251.65625 5686378.5,378251.15625 5686379.5,378250.25 5686380.5,378250.1875 5686381.5,378249.3125 5686382,378249.25 5686383,378249.15625 5686384,378249 5686385.5,378246.15625 5686386.5,378244.4375 5686387.5,378242.75 5686388.5,378241.875 5686389.5,378241.84375 5686390,378241.46875 5686390,378240.28125 5686389.5,378239.5 5686389.5,378238.3125 5686389.5,378237.8125 5686390.5,378237.40625 5686390.5,378236.15625 5686391,378235.375 5686391,378233.71875 5686392,378231.375 5686391.5,378230.1875 5686391.5,378229.40625 5686391.5,378228.25 5686391,378227.84375 5686391,378227.0625 5686391,378226.65625 5686391,378225.875 5686391,378225.8125 5686392,378225.40625 5686391.5,378223.75 5686392.5,378223.375 5686392.5,378221.65625 5686393.5,378220 5686394.5,378218.71875 5686395.5,378217.8125 5686396.5,378216.96875 5686397,378216.09375 5686398,378215.25 5686398.5,378215.1875 5686399,378215.0625 5686400.5,378212.1875 5686401.5,378210.8125 5686403.5,378208.75 5686404.5,378208.34375 5686404.5,378207.9375 5686404.5,378207.5 5686405,378206.71875 5686405,378206.3125 5686405,378205.9375 5686405,378205.53125 5686405,378204.8125 5686404,378204.46875 5686403.5,378203.75 5686402.5,378202.96875 5686402.5,378202.25 5686401.5,378201.46875 5686401.5,378200.0625 5686400,378199.3125 5686399.5,378198.90625 5686399.5,378198.125 5686399.5,378197.34375 5686399,378196.5625 5686399,378195.78125 5686399,378194.09375 5686400,378191.65625 5686400.5,378190.46875 5686400.5,378189.65625 5686401,378188.875 5686400.5,378188.46875 5686400.5,378187.6875 5686400.5,378186.90625 5686400.5,378185.71875 5686400.5,378184.53125 5686400.5,378182.59375 5686400,378181 5686400,378180.21875 5686400,378179.84375 5686400,378179.0625 5686399.5,378177.875 5686399.5,378177.71875 5686401,378174.90625 5686401.5,378173.21875 5686402.5,378171.59375 5686403,378170.4375 5686403,378169.5625 5686403.5,378169.1875 5686403.5,378168.375 5686403.5,378168.28125 5686404.5,378166.625 5686405,378165.71875 5686406.5,378165.65625 5686407,378165.59375 5686408,378165.5 5686408.5,378164.53125 5686410.5,378164.46875 5686411.5,378164.3125 5686413,378164.15625 5686414.5,378164.09375 5686415.5,378164 5686416,378164.6875 5686417.5,378164.59375 5686418,378165.40625 5686418,378166.09375 5686423.5,378168.46875 5686427.5,378169.03125 5686430,378169.1875 5686432.5,378169.5 5686433.5,378169.46875 5686433.5,378169.40625 5686434.5,378170.15625 5686435,378170.46875 5686436,378170.4375 5686436,378171.09375 5686437.5,378171.40625 5686438.5,378171.65625 5686440,378171.59375 5686440.5,378171.5 5686441.5,378172.625 5686442.5,378172.625 5686446.5,378172.4375 5686448.5,378172.375 5686449,378172.28125 5686450,378172.6875 5686450,378173.15625 5686453,378173.3125 5686456,378173.125 5686458,378172.96875 5686459.5,378172.84375 5686460.5,378172.78125 5686461.5,378172.65625 5686462.5,378172.59375 5686463.5,378172.40625 5686465.5,378172.28125 5686466.5,378172.15625 5686468,378172 5686470,378171.8125 5686471.5,378171.65625 5686473.5,378171.46875 5686475.5,378171.25 5686477.5,378171.15625 5686478.5,378171.09375 5686479,378170.6875 5686479,378169.8125 5686480.5,378169.34375 5686481,378169.21875 5686482,378168.75 5686483,378167.78125 5686485,378167.71875 5686485.5,378167.3125 5686485.5,378166.40625 5686486.5,378165.9375 5686487.5,378165.84375 5686488.5,378165 5686489,378164.21875 5686489,378163.28125 5686490.5,378161.625 5686491.5,378160.71875 5686492.5,378160.59375 5686493.5,378159.8125 5686493.5,378159.375 5686494,378156.9375 5686494.5,378155.65625 5686495.5,378154.40625 5686496,378154.03125 5686496,378153.625 5686496,378153.5625 5686497,378152.75 5686497,378152.71875 5686497,378152.28125 5686497.5,378151.09375 5686498,378150.28125 5686498,378149.03125 5686498.5,378148.25 5686498.5,378146.6875 5686498,378144.25 5686498.5,378140.3125 5686498.5,378138.75 5686498,378137.1875 5686498,378136.40625 5686498,378135.5625 5686498.5,378134.78125 5686498,378133.625 5686498,378132.4375 5686498,378130.09375 5686497.5,378128.90625 5686497.5,378127.71875 5686497.5,378126.53125 5686497.5,378125.375 5686497,378124.1875 5686497,378122.625 5686497,378121.4375 5686497,378119.78125 5686497.5,378118.625 5686497.5,378117.84375 5686497.5,378116.65625 5686497,378115.875 5686497,378115.09375 5686497,378114.28125 5686497,378112.34375 5686496.5,378111.53125 5686496.5,378110.75 5686496.5,378108.78125 5686496.5,378107.625 5686496,378106.0625 5686496,378104.875 5686496,378104.46875 5686496,378103.6875 5686496,378103.3125 5686496,378102.5 5686495.5,378101.71875 5686495.5,378100.125 5686496,378098.9375 5686495.5,378098.15625 5686495.5,378097.375 5686495.5,378096.15625 5686496,378094.96875 5686495.5,378092.625 5686495.5,378090.25 5686495.5,378089.09375 5686495,378087.90625 5686495,378087.125 5686495,378086.34375 5686495,378085.1875 5686494.5,378083.625 5686494,378082.84375 5686494,378082.0625 5686494,378081.3125 5686493.5,378080.53125 5686493.5,378078.15625 5686493,378077 5686493,378075.40625 5686493,378074.25 5686493,378073.4375 5686493,378072.65625 5686492.5,378072.28125 5686492.5,378071.09375 5686492.5,378070.3125 5686492.5,378068.3125 5686492.5,378066.75 5686492.5,378065.5625 5686492.5,378064.78125 5686492.5,378064 5686492,378063.25 5686491.5,378062.46875 5686491.5,378061.65625 5686491.5,378060.5625 5686490.5,378059.78125 5686490.5,378058.21875 5686490.5,378057.4375 5686490.5,378055.46875 5686490,378054.28125 5686490,378053.15625 5686489.5,378052.75 5686489.5,378051.59375 5686489,378051.21875 5686489,378049.65625 5686489,378048.9375 5686488,378048.625 5686487,378047.875 5686486.5,378047.1875 5686485.5,378046.125 5686484,378045.78125 5686483.5,378045.03125 5686483,378044.625 5686483,378043.53125 5686482,378042.03125 5686481,378041.28125 5686481,378041.3125 5686480.5,378040.53125 5686480.5,378039.75 5686480,378038.96875 5686480,378038.5625 5686480,378037 5686480,378036.21875 5686480,378034.65625 5686479.5,378033.4375 5686480,378032.59375 5686480.5,378032.1875 5686480.5,378031.3125 5686481.5,378030.9375 5686481.5,378029.65625 5686482,378028.875 5686482,378028.03125 5686482.5,378026.46875 5686482.5,378025.59375 5686483,378024.40625 5686483,378023.5625 5686483.5,378023.125 5686484,378022.3125 5686484.5,378021.90625 5686484.5,378021.0625 5686485,378019.84375 5686485.5,378019.4375 5686485.5,378018.53125 5686486.5,378017.3125 5686486.5,378016.5 5686487,378016.03125 5686488,378015.5625 5686488.5,378015.125 5686489,378013.8125 5686490.5,378013.34375 5686491,378013.28125 5686492,378013.1875 5686492.5,378012.8125 5686492.5,378012.03125 5686492.5,378011.125 5686493.5,378009.4375 5686494.5,378008.96875 5686495.5,378008.53125 5686495.5,378008.15625 5686495.5,378008.0625 5686496.5,378007.25 5686497,378006.46875 5686496.5,378005.3125 5686496,378004.9375 5686496,378004.53125 5686496,378003.34375 5686496,378002.5625 5686496,378001 5686496,378000.21875 5686495.5,377998.25 5686495.5,377996.6875 5686495.5,377995.53125 5686495,377994.78125 5686494.5,377994 5686494.5,377993.21875 5686494,377992.09375 5686493.5,377991.28125 5686493.5,377989.71875 5686493.5,377989.34375 5686493.5,377987.75 5686493,377987.375 5686493,377986.1875 5686493,377985.78125 5686493,377984.6875 5686492,377984.3125 5686492,377983.125 5686492,377982.34375 5686492,377981.5625 5686492,377980.78125 5686491.5,377979.96875 5686491.5,377980.0625 5686491,377979.3125 5686490.5,377978.90625 5686490.5,377979 5686489.5,377978.21875 5686489.5,377977.5625 5686488,377976.53125 5686486,377975.875 5686485,377975.625 5686483.5,377975.65625 5686483,377974.9375 5686482,377974.65625 5686481,377974.75 5686480,377974 5686479.5,377974.03125 5686479,377973.75 5686478,377973.9375 5686476,377972.84375 5686475,377972.59375 5686473.5,377972.75 5686472,377972.46875 5686470.5,377972.5625 5686469.5,377971.90625 5686468,377971.625 5686467,377971.3125 5686466,377971.40625 5686465,377971.5 5686464,377971.1875 5686463.5,377970.46875 5686462.5,377970.5 5686462,377969.71875 5686462,377969.15625 5686459.5,377967.34375 5686458,377966.71875 5686456,377966.03125 5686455,377965.71875 5686454,377965.40625 5686453,377965.03125 5686453,377964.6875 5686452.5,377963.96875 5686451.5,377963.625 5686451,377962.84375 5686451,377962.4375 5686451,377962.0625 5686451,377960.875 5686451,377960.15625 5686450,377959.78125 5686450,377958.96875 5686450,377958.625 5686449.5,377957.5 5686449,377957.09375 5686449,377955.90625 5686448.5,377955.125 5686448.5,377955.25 5686447.5,377954.46875 5686447.5,377953.78125 5686446,377953.0625 5686445,377952.75 5686444.5,377952.46875 5686443,377952.125 5686442.5,377952.1875 5686442,377951.53125 5686440.5,377951.5625 5686440.5,377950.53125 5686438.5,377949.8125 5686437.5,377949.5 5686437,377949.1875 5686436,377948.875 5686435.5,377948.9375 5686434.5,377948.3125 5686433,377947.1875 5686432,377946.59375 5686430,377946.375 5686428.5,377946.09375 5686427,377945.8125 5686426,377945.46875 5686425,377945.59375 5686424,377944.875 5686423,377944.96875 5686422,377945.03125 5686421.5,377945.0625 5686421,377944.28125 5686421,377944.375 5686420,377944.4375 5686419.5,377944.03125 5686419.5,377943.84375 5686417.5,377941.625 5686415.5,377940.96875 5686414,377941.0625 5686413,377940.75 5686412,377939.96875 5686412,377940 5686411.5,377939.4375 5686409.5,377939.1875 5686407.5,377939.34375 5686406,377938.28125 5686405,377937.90625 5686405,377937.96875 5686404,377936.0625 5686403,377935.40625 5686401.5,377933.875 5686401,377933.1875 5686400,377932.875 5686399,377932.15625 5686398,377932.21875 5686398,377931.15625 5686396.5,377930.40625 5686396,377929.3125 5686394.5,377928.3125 5686393,377927.625 5686392,377927.375 5686390,377926.6875 5686389.5,377926.75 5686388.5,377925.96875 5686388.5,377926 5686388,377926.03125 5686387.5,377925.3125 5686387,377924.96875 5686386.5,377925 5686386,377924.625 5686386,377923.90625 5686385,377923.28125 5686383.5,377922.5625 5686382.5,377921.9375 5686381,377921.6875 5686379.5,377920.96875 5686378.5,377920.6875 5686377,377920.40625 5686376,377920.15625 5686374.5,377919.53125 5686372.5,377919.28125 5686371,377919.03125 5686369.5,377919.1875 5686368,377919.375 5686366,377919.53125 5686364.5,377919.6875 5686363,377919.84375 5686361,377919.9375 5686360,377919.625 5686359,377919.40625 5686357,377919.5 5686356.5,377919.6875 5686354.5,377919.78125 5686353.5,377919.9375 5686351.5,377920.0625 5686350.5,377920.15625 5686349.5,377920.25 5686348.5,377920.28125 5686348,377920.125 5686345.5,377919.09375 5686344,377918.375 5686343,377918.4375 5686342.5,377918.0625 5686342.5,377917.53125 5686339.5,377916.96875 5686337,377917.15625 5686335,377913.75 5686333.5,377912.25 5686332.5,377911.1875 5686331.5,377910.46875 5686330.5,377910.09375 5686330,377909.71875 5686330,377908.9375 5686330,377909.03125 5686328.5,377907.5 5686328,377906.8125 5686327.5,377906.40625 5686327.5,377905.71875 5686326,377903.875 5686324.5,377902.8125 5686323.5,377902.09375 5686322.5,377901 5686321.5,377900.28125 5686320.5,377899.59375 5686320,377899.25 5686319,377898.5 5686318.5,377898.5625 5686318,377898.15625 5686318,377896.96875 5686318,377896.1875 5686318,377894.21875 5686317.5,377893.4375 5686317.5,377892.28125 5686317.5,377891.4375 5686318,377891.03125 5686318,377890.15625 5686319,377889.375 5686319,377887.8125 5686318.5,377887.375 5686319,377886.15625 5686319.5,377885.375 5686319,377885.25 5686320.5,377884.40625 5686321,377882.75 5686321.5,377881.5 5686322.5,377880.6875 5686322.5,377880.25 5686323,377879.375 5686323.5,377879 5686323.5,377877.65625 5686325,377876.40625 5686326,377875.5625 5686326.5,377875.46875 5686327.5,377875.09375 5686327.5,377874.96875 5686328.5,377874.15625 5686329,377872.65625 5686332,377871.71875 5686333.5,377871.21875 5686334.5,377871.125 5686335.5,377871.09375 5686336,377871 5686337,377870.09375 5686338,377870 5686339,377869.03125 5686341,377868.15625 5686341.5,377868.0625 5686343,377867.53125 5686344,377867.4375 5686345,377866.9375 5686346.5,377865.9375 5686348,377865.4375 5686349.5,377865.375 5686350,377865.34375 5686350.5,377865.3125 5686351,377864.5 5686351,377863.53125 5686352.5,377863.03125 5686354,377862.9375 5686355,377862.375 5686356.5,377862.21875 5686358,377861.71875 5686359.5,377860.8125 5686360.5,377860.75 5686361,377860.375 5686361,377859.65625 5686364.5,377858.625 5686367,377858.5 5686368,377858.40625 5686369.5,377858.34375 5686369.5,377858.3125 5686370,377858.25 5686371,377858.21875 5686371.5,377857.75 5686372,377857.6875 5686372.5,377856.8125 5686373.5,377856.53125 5686376.5,377856.5 5686376.5,377856.46875 5686377,377856.3125 5686378.5,377856.25 5686379.5,377856.09375 5686381,377856.03125 5686382,377855.875 5686383.5,377855.78125 5686384,377855.46875 5686387.5,377855.3125 5686389,377855.125 5686391,377854.9375 5686393,377854.8125 5686394.5,377854.34375 5686395,377853.46875 5686396,377853.03125 5686396.5,377852.125 5686397.5,377851.6875 5686398,377850.71875 5686400,377849.875 5686400.5,377849.34375 5686402,377849.25 5686403,377849.1875 5686403.5,377849.09375 5686404.5,377848.1875 5686405.5,377848.125 5686406.5,377847.90625 5686409,377847.75 5686410.5,377847.5625 5686412.5,377847.375 5686414.5,377847.3125 5686415,377847.21875 5686416,377847.15625 5686416.5,377847 5686418,377846.8125 5686420,377846.6875 5686421.5,377846.5625 5686423,377847.15625 5686425,377847.4375 5686426,377847.3125 5686427.5,377847.21875 5686428.5,377847.09375 5686429.5,377847.03125 5686430.5,377846.96875 5686431,377847.375 5686431,377847.15625 5686433.5,377847.78125 5686435,377847.71875 5686436,377847.625 5686436.5,377848.40625 5686436.5,377848.65625 5686438,377850.875 5686440,377851.96875 5686441,377852.28125 5686442,377853.0625 5686442,377853.40625 5686442.5,377854.53125 5686443,377856.03125 5686444,377857.21875 5686444.5,377857.96875 5686444.5,377858.625 5686446,377859.40625 5686446,377860.53125 5686447,377862.0625 5686447.5,377863.15625 5686448.5,377863.5 5686449,377864.3125 5686449,377864.6875 5686449,377865 5686450,377865.78125 5686450,377866.9375 5686450.5,377867.71875 5686450.5,377869.28125 5686450.5,377870.0625 5686450.5,377871.65625 5686451,377872.4375 5686451,377874.03125 5686450.5,377875.21875 5686451,377876 5686451,377876.875 5686450,377877.65625 5686450.5,377879.25 5686450,377880.84375 5686450,377881.625 5686450.5,377882.90625 5686449.5,377883.3125 5686449.5,377884.15625 5686448.5,377884.9375 5686448.5,377886.21875 5686447.5,377887.03125 5686447.5,377888.25 5686447.5,377888.625 5686447.5,377889.4375 5686447,377890.25 5686447,377891.09375 5686446.5,377892.28125 5686446.5,377894.25 5686447,377896.1875 5686447,377897.375 5686447,377898.15625 5686447,377899.34375 5686447.5,377900.125 5686447.5,377901.21875 5686448.5,377903.5625 5686449,377905.0625 5686450,377905.75 5686451,377906.53125 5686451,377907.34375 5686451,377908.03125 5686452,377908.78125 5686452.5,377909.90625 5686453,377910.6875 5686453.5,377912.5 5686455,377913.59375 5686456,377914.34375 5686456.5,377915.0625 5686457.5,377915.40625 5686457.5,377915.71875 5686458.5,377916.3125 5686460.5,377918.5625 5686462,377919.625 5686463.5,377920.3125 5686464.5,377921.03125 5686465.5,377921.375 5686466,377921.71875 5686466.5,377922.4375 5686467,377922.78125 5686467.5,377923.125 5686468.5,377924.59375 5686469.5,377925.71875 5686470.5,377926.03125 5686471,377926.75 5686472,377927.09375 5686472.5,377927.5 5686472.5,377928.1875 5686473.5,377928.5625 5686473.5,377929.21875 5686475,377930.75 5686475.5,377931.46875 5686476.5,377932.21875 5686477,377932.9375 5686478,377933.625 5686478.5,377934.34375 5686479.5,377934.65625 5686480.5,377935.375 5686481,377935.6875 5686482,377936.4375 5686482.5,377936.40625 5686483,377937.125 5686483.5,377937.46875 5686484,377938.1875 5686485,377938.09375 5686486,377938.46875 5686486.5,377939.53125 5686487.5,377940.28125 5686488,377940.25 5686488.5,377940.5625 5686489.5,377941.28125 5686490,377941.59375 5686491,377941.875 5686492,377942.96875 5686493,377943.6875 5686494,377944.34375 5686495,377945.09375 5686495.5,377945.03125 5686496.5,377945.40625 5686496.5,377946.09375 5686498,377947.59375 5686498.5,377948.21875 5686500.5,377949.71875 5686501.5,377950.03125 5686502,377950.75 5686503,377951.0625 5686504,377951.4375 5686504.5,377952.21875 5686504.5,377952.125 5686505,377952.53125 5686505,377953.71875 5686505.5,377954.6875 5686507.5,377956.53125 5686509,377957.25 5686509.5,377957.5625 5686510.5,377957.96875 5686510.5,377957.90625 5686511.5,377958.625 5686512,377959.75 5686512.5,377960.125 5686512.5,377960.8125 5686514,377961.15625 5686514.5,377960.9375 5686517,377960.78125 5686518.5,377960.59375 5686520.5,377960.4375 5686522,377960.3125 5686523.5,377960.1875 5686524.5,377960.09375 5686526,377959.96875 5686527,377959 5686529,377958.90625 5686529.5,377958.8125 5686531,377958.71875 5686531.5,377958.625 5686533,377958.59375 5686533,377957.5625 5686535.5,377957 5686537.5,377956.90625 5686538,377956.4375 5686539,377956.34375 5686540,377955.5 5686540.5,377954.21875 5686541.5,377953.40625 5686542,377952.53125 5686542.5,377952.125 5686543,377951.21875 5686544,377950 5686544.5,377949.125 5686545,377948.71875 5686545.5,377948.3125 5686545.5,377947.90625 5686545,377947.0625 5686546,377946.625 5686546.5,377945.40625 5686546.5,377944.25 5686546.5,377943.0625 5686546.5,377941.875 5686546,377941.40625 5686547,377940.59375 5686547.5,377939.40625 5686547,377938.625 5686547,377937.4375 5686547,377936.65625 5686547,377935.09375 5686546.5,377933.90625 5686546.5,377933.125 5686546.5,377932.34375 5686546.5,377931.5625 5686546.5,377930.375 5686546,377929.59375 5686546,377928.0625 5686545.5,377926.90625 5686545,377926.125 5686545,377925.34375 5686545,377924.53125 5686545.5,377922.09375 5686546,377921.28125 5686546,377920.40625 5686547,377919.625 5686546.5,377919.21875 5686546.5,377918.40625 5686547,377917.5 5686548,377917.40625 5686549.5,377916.4375 5686550,377916.40625 5686552.5,377915.59375 5686558,377914.71875 5686565.5,377914.6875 5686571,377914.65625 5686574,377914.625 5686576.5,377914.1875 5686581.5,377914.15625 5686585.5,377914.125 5686589.5,377914.09375 5686593,377914.8125 5686600.5,377915.53125 5686607,377916.6875 5686610.5,377917.84375 5686614,377920.15625 5686616,377920.09375 5686616.5,377920.375 5686618,377920.3125 5686618.5,377920.125 5686620.5,377920 5686622,377919.875 5686623.5,377919.71875 5686625,377919.6875 5686625.5,377919.59375 5686626,377918.75 5686627,377918.6875 5686627.5,377918.625 5686628,377918.1875 5686628.5,377918.15625 5686629,377918.125 5686629,377917.9375 5686631,377917.78125 5686633,377917.625 5686634.5,377918.28125 5686636,377918.59375 5686637,377918.5 5686637.5,377918.46875 5686638,377920.4375 5686638,377921.125 5686639.5,377921.90625 5686639.5,377922.6875 5686639.5,377923.0625 5686639.5,377923.40625 5686640.5,377924.15625 5686641,377925.3125 5686641,377926.09375 5686641,377927.28125 5686641.5,377928.0625 5686641.5,377929.625 5686641.5,377930.4375 5686641.5,377931.125 5686642.5,377931.5 5686643,377931.84375 5686643.5,377932.625 5686643.5,377934.09375 5686645,377935.21875 5686645.5,377936.375 5686646,377936.6875 5686646.5,377937 5686647.5,377937.75 5686648,377938.4375 5686649,377939.125 5686650,377939.84375 5686651,377940.15625 5686651.5,377940.5 5686652.5,377941.15625 5686654,377941.46875 5686654.5,377941.75 5686656,377942.03125 5686657,377942.71875 5686658.5,377943.03125 5686659,377942.90625 5686660.5,377943.59375 5686661.5,377943.90625 5686662.5,377944.1875 5686663.5,377944.4375 5686665.5,377944.71875 5686666.5,377945.03125 5686667.5,377945.28125 5686669,377945.5625 5686670,377945.84375 5686671.5,377945.71875 5686672.5,377945.65625 5686673.5,377946.3125 5686674.5,377947 5686676,377946.90625 5686676.5,377946.8125 5686678,377946.71875 5686678.5,377946.53125 5686680.5,377946.4375 5686682,377946.3125 5686683,377946.21875 5686684,377946.09375 5686685.5,377946.0625 5686685.5,377945.9375 5686687,377945.875 5686687.5,377945.71875 5686689.5,377945.65625 5686690,377944.84375 5686690,377944.46875 5686690,377943.59375 5686690.5,377942.375 5686691,377941.59375 5686691,377940.8125 5686691,377940.03125 5686690.5,377938.84375 5686690.5,377938.46875 5686690.5,377937.28125 5686690.5,377936.5 5686690.5,377934.9375 5686690,377933.75 5686690,377932.96875 5686690,377932.5625 5686690,377931.78125 5686690,377931.46875 5686689,377930.3125 5686688.5,377929.53125 5686688.5,377929.15625 5686688.5,377927.96875 5686688.5,377927.5625 5686688,377926.78125 5686688,377926 5686688,377923.9375 5686689,377922.6875 5686689.5,377921.46875 5686690,377921 5686690.5,377920.59375 5686690.5,377919.4375 5686690.5,377918.21875 5686691,377916.625 5686690.5,377916.25 5686690.5,377915.84375 5686690.5,377915.46875 5686690.5,377914.28125 5686690.5,377913.875 5686690.5,377913.09375 5686690.5,377912.71875 5686690.5,377911.96875 5686690,377911.5625 5686690,377910.40625 5686689.5,377910 5686689.5,377909.25 5686689,377908.84375 5686689,377908.0625 5686689,377907.28125 5686689,377906.09375 5686689,377905.71875 5686689,377904.8125 5686690,377903.21875 5686690,377901.96875 5686691,377901.5625 5686691,377900.28125 5686692,377898.25 5686692.5,377897.375 5686693,377896.5 5686694,377896.125 5686694,377895.96875 5686695.5,377893.5 5686696.5,377892.1875 5686698,377891.3125 5686698.5,377890.875 5686699,377890.8125 5686699.5,377890.75 5686700.5,377890.6875 5686701,377889.90625 5686700.5,377889.84375 5686701.5,377889.375 5686702,377889.09375 5686705,377888.21875 5686706,377888.125 5686707,377888.03125 5686708,377887.9375 5686709,377887.875 5686709.5,377887.75 5686711,377887.6875 5686711.5,377887.5625 5686713,377887.5 5686713.5,377887.4375 5686714.5,377887.96875 5686717,377888.21875 5686717.5),(378145.21875 5686513.5,378145.125 5686514.5,378145.4375 5686515.5,378146.34375 5686518.5,378147.03125 5686519.5,378147.6875 5686521,378147.59375 5686522,378147.90625 5686523,378147.875 5686523.5,378147.75 5686524.5,378148.5 5686525,378149.125 5686526.5,378149.84375 5686527.5,378150.15625 5686528.5,378150.90625 5686529,378151.21875 5686529.5,378151.53125 5686530.5,378151.75 5686532.5,378152.8125 5686534,378153.5 5686535,378154.125 5686536.5,378154.4375 5686537.5,378154.375 5686538.5,378155.0625 5686539,378154.9375 5686540.5,378155.625 5686541.5,378155.5 5686543,378155.40625 5686544,378155.8125 5686544,378156 5686546,378156.65625 5686547.5,378156.5625 5686548.5,378156.53125 5686549,378156.3125 5686551,378156.9375 5686553,378156.90625 5686553.5,378156.84375 5686554,378157.625 5686554,378157.8125 5686556,378157.71875 5686557.5,378158.4375 5686558,378158.375 5686558.5,378159.15625 5686558.5,378159.8125 5686560.5,378160.09375 5686561.5,378160 5686562.5,378161.15625 5686563,378160.96875 5686565,378160.8125 5686566.5,378160.71875 5686567.5,378160.59375 5686568.5,378159.59375 5686571,378159.40625 5686573,378159.25 5686574.5,378157.96875 5686575.5,378157.4375 5686577,378157.375 5686577.5,378157.3125 5686578.5,378157.21875 5686579,378156.84375 5686579,378156.375 5686580,378156.28125 5686580.5,378156.21875 5686581.5,378156.1875 5686582,378155.3125 5686582.5,378155.28125 5686583,378155.21875 5686583.5,378155.125 5686584.5,378155.03125 5686585.5,378154.9375 5686586.5,378154.84375 5686587.5,378154.75 5686588.5,378154.6875 5686589,378154.65625 5686589.5,378154.53125 5686591,378154.5 5686591,378154.40625 5686592,378153.59375 5686592.5,378153.40625 5686594,378152.125 5686595.5,378152 5686596.5,378151.9375 5686597.5,378151.84375 5686598,378151.375 5686599,378151.28125 5686600,378151.1875 5686601,378150.59375 5686603,378150.09375 5686604,378150 5686605,378149.9375 5686606,378149.84375 5686606.5,378149.03125 5686607,378148.09375 5686608.5,378147.625 5686609,378147.5625 5686610,378147.46875 5686610.5,378147.46875 5686611,378147.40625 5686611.5,378146.9375 5686612.5,378146.15625 5686612,378146.125 5686612.5,378145.25 5686613.5,378144.6875 5686615,378144.5625 5686616.5,378143.78125 5686616.5,378142.40625 5686618,378141.875 5686619.5,378141.84375 5686620,378139.84375 5686620.5,378139.3125 5686621.5,378139.25 5686622,378139.1875 5686623,378136.78125 5686623,378135.90625 5686624,378135.875 5686624.5,378135.09375 5686624,378133.8125 5686625,378132.96875 5686625.5,378132.5625 5686626,378132.5 5686626.5,378132.28125 5686628.5,378131.34375 5686630,378131.28125 5686631,378131.15625 5686632,378131.09375 5686633,378131.0625 5686633.5,378130.90625 5686635,378129.96875 5686636.5,378129.9375 5686637,378129.84375 5686637.5,378129.78125 5686638.5,378129.75 5686638.5,378129.65625 5686639.5,378129.5625 5686640.5,378129.46875 5686641.5,378129.40625 5686642.5,378130.125 5686643,378130.09375 5686643.5,378130 5686644.5,378130.78125 5686644.5,378130.96875 5686647,378130.8125 5686648.5,378130.6875 5686649.5,378130.59375 5686650.5,378130.4375 5686652.5,378130.3125 5686653.5,378130.25 5686654.5,378130.03125 5686656.5,378130 5686657,378129.90625 5686658,378129.875 5686658,378129.75 5686659.5,378128.15625 5686659.5,378127.25 5686660.5,378126.78125 5686661.5,378126.75 5686662,378126.3125 5686662,378125.5 5686662.5,378125.09375 5686662.5,378124.3125 5686662.5,378123.46875 5686663,378123.375 5686664,378122.59375 5686664,378120.53125 5686665,378119.65625 5686665.5,378118.875 5686665.5,378118.40625 5686666,378116.75 5686667,378116.34375 5686667,378115.15625 5686667,378114.375 5686667,378113.46875 5686668,378112.28125 5686668,378111.5 5686668,378109.875 5686668.5,378108.65625 5686669,378107.46875 5686668.5,378107.0625 5686668.5,378106.6875 5686668.5,378105.90625 5686668.5,378105.03125 5686669,378103.875 5686669,378101.90625 5686669,378100.71875 5686669,378099.9375 5686668.5,378099.15625 5686668.5,378098.75 5686668.5,378097.96875 5686668.5,378096.40625 5686668.5,378094.5 5686667.5,378093.34375 5686667,378092.9375 5686667,378092.15625 5686667,378091.375 5686667,378090.65625 5686666,378089.90625 5686665.5,378088.34375 5686665.5,378087.5625 5686665.5,378087.15625 5686665.5,378086.375 5686665.5,378085.1875 5686665,378084.40625 5686665,378083.21875 5686665,378082.84375 5686665,378082.0625 5686665,378081.28125 5686665,378080.46875 5686664.5,378079.3125 5686664.5,378077.34375 5686664.5,378075.78125 5686664.5,378074.59375 5686664,378074.1875 5686664,378073.8125 5686664,378073.03125 5686664,378071.84375 5686664,378069.875 5686663.5,378069.09375 5686663.5,378067.125 5686663.5,378065.90625 5686663.5,378065.125 5686663.5,378064.34375 5686663.5,378075.375 5686660.5,378075.40625 5686660,378076.1875 5686660,378076.6875 5686659,378077.15625 5686658,378077.28125 5686657,378078.125 5686656,378078.90625 5686656,378079.03125 5686655,378080.71875 5686654,378081.5 5686654,378081.59375 5686653,378081.65625 5686652.5,378082.15625 5686651.5,378082.1875 5686651,378083.4375 5686650.5,378083.875 5686650,378084.34375 5686649,378085.5625 5686649,378085.96875 5686648.5,378086.40625 5686648.5,378087.3125 5686647,378088.5625 5686646.5,378089.4375 5686646,378089.9375 5686644.5,378091.1875 5686644,378091.65625 5686643,378092.125 5686642.5,378092.15625 5686642,378092.21875 5686641.5,378092.625 5686641.5,378093.59375 5686639.5,378093.71875 5686638.5,378093.78125 5686637.5,378093.90625 5686636.5,378093.96875 5686635.5,378094 5686635,378094.09375 5686634.5,378094.15625 5686633.5,378093.5625 5686631.5,378093.25 5686630.5,378093.3125 5686630,378093.34375 5686629.5,378093.5 5686628,378092.75 5686627.5,378092.5 5686626,378092.5625 5686625.5,378092.65625 5686624.5,378092.6875 5686624,378092.84375 5686622.5,378092.9375 5686621.5,378093.4375 5686620.5,378093.5 5686619.5,378094.78125 5686618.5,378094.875 5686617.5,378094.96875 5686616.5,378095.0625 5686616,378095.90625 5686615,378095.96875 5686614.5,378096.4375 5686614,378098.0625 5686613.5,378098.96875 5686612,378099.4375 5686611.5,378099.46875 5686611,378099.53125 5686610,378099.65625 5686609,378100.125 5686608.5,378100.28125 5686606.5,378100.34375 5686606,378100.53125 5686604,378100.625 5686603,378100.6875 5686602.5,378100.8125 5686601,378100.90625 5686600,378101.40625 5686599,378102.34375 5686597.5,378102.46875 5686596,378102.53125 5686595.5,378103 5686594.5,378103.40625 5686594.5,378103.5 5686593.5,378104.75 5686593,378105.6875 5686591.5,378106.96875 5686590.5,378107.40625 5686590,378107.84375 5686589.5,378108.75 5686588.5,378109.40625 5686588.5,378109.96875 5686588.5,378110.78125 5686588,378110.875 5686587,378111.65625 5686587,378111.6875 5686587,378111.71875 5686586.5,378112.59375 5686585.5,378112.71875 5686584,378112.8125 5686583.5,378113.75 5686582,378113.84375 5686580.5,378114 5686579,378114.09375 5686578.5,378114.1875 5686577,378114.28125 5686576.5,378114.34375 5686575.5,378114.03125 5686575,378114.125 5686573.5,378114.21875 5686573,378114.28125 5686572,378113.5625 5686571,378113.28125 5686570,378113.34375 5686569.5,378113.5625 5686567,378113.65625 5686566,378113.84375 5686564,378113.25 5686562,378112.96875 5686560.5,378113.125 5686559,378113.21875 5686558.5,378113.28125 5686557.5,378113.3125 5686557,378112.96875 5686557,378113.03125 5686556,378113.0625 5686555.5,378111.90625 5686555.5,378110.3125 5686555.5,378108.3125 5686555.5,378107.53125 5686555.5,378107.15625 5686555.5,378106.71875 5686555.5,378105.90625 5686556,378105.09375 5686556,378104.3125 5686556,378103.53125 5686556,378102.75 5686555.5,378101.5625 5686555.5,378100.40625 5686555.5,378100.03125 5686555,378099.3125 5686554,378098.59375 5686553.5,378096.625 5686553.5,378095.125 5686552.5,378094.34375 5686552.5,378093.15625 5686552.5,378092.8125 5686552,378091.65625 5686551.5,378091.28125 5686551.5,378089.6875 5686551,378088.53125 5686551,378086.5625 5686551,378084.625 5686550.5,378083.4375 5686550,378083.0625 5686550,378082.65625 5686550,378082.28125 5686550,378081.5 5686550,378081.09375 5686550,378080 5686549,378078.8125 5686549,378078.21875 5686547,378077.125 5686546,378076 5686545,378075.65625 5686544.5,378074.875 5686544.5,378074.15625 5686543.5,378073.375 5686543.5,378071.53125 5686542,378069.71875 5686540.5,378068.6875 5686539,378067.65625 5686537,378066.96875 5686536,378066.3125 5686534.5,378066 5686533.5,378065.3125 5686532.5,378065 5686531.5,378065.0625 5686531,378064.34375 5686530,378064.4375 5686529,378063.71875 5686528.5,378063.75 5686528,378063.90625 5686526.5,378063.96875 5686525.5,378063.3125 5686524.5,378063.375 5686523.5,378063.46875 5686523,378063.5 5686522.5,378063.65625 5686521,378063.75 5686519.5,378063.84375 5686519,378064.625 5686519,378065.90625 5686518,378067.90625 5686517.5,378069.125 5686517.5,378070 5686516.5,378070.8125 5686516.5,378072.0625 5686515.5,378072.9375 5686515,378073.78125 5686514.5,378074.6875 5686513,378075.53125 5686512.5,378076.34375 5686512.5,378076.40625 5686511.5,378076.4375 5686511.5,378077.625 5686511.5,378078.875 5686511,378080.875 5686510.5,378081.65625 5686510.5,378082.4375 5686511,378083.21875 5686511,378083.625 5686511,378084.8125 5686511,378085.59375 5686511,378087.21875 5686510.5,378089.1875 5686510.5,378090.0625 5686510,378090.84375 5686510,378092.0625 5686510,378092.21875 5686510,378095.40625 5686512,378099.71875 5686514.5,378103.28125 5686515.5,378108 5686517.5,378113.125 5686518,378117.46875 5686519,378121.8125 5686519,378126.5625 5686519,378131.3125 5686519,378135.25 5686518.5,378138.4375 5686517.5,378143.1875 5686515,378145.21875 5686513.5),(378774.4375 5685824.5,378776.46875 5685827,378781.53125 5685834,378783.875 5685837.5,378787 5685842,378790.90625 5685846.5,378796.40625 5685850,378798.6875 5685851,378798.625 5685851.5,378798.5625 5685852,378798.4375 5685853,378798.34375 5685854.5,378799.34375 5685856,378799.28125 5685857,378798.875 5685861,378798.65625 5685863.5,378798.375 5685866.5,378798.125 5685869,378798 5685870.5,378797.46875 5685872,378797 5685872.5,378796.875 5685873.5,378796.8125 5685874.5,378796.78125 5685875,378796 5685875,378794.9375 5685877.5,378790.625 5685881,378789.15625 5685884,378787.6875 5685887,378786.40625 5685888,378785.09375 5685889,378783.8125 5685890.5,378782.53125 5685891.5,378780.875 5685892,378780.03125 5685892.5,378778.75 5685893.5,378777.90625 5685894,378776.65625 5685894.5,378775.4375 5685895,378774.1875 5685895.5,378773.34375 5685896,378772.53125 5685896.5,378771.3125 5685896.5,378770.53125 5685896.5,378769.75 5685896.5,378768.53125 5685896.5,378766.875 5685897.5,378765.65625 5685897.5,378764.46875 5685898,378763.625 5685898,378762.375 5685899,378761.5625 5685899,378760.6875 5685900,378759.84375 5685900.5,378758.625 5685901,378757.71875 5685902,378756.4375 5685903,378755.09375 5685904.5,378753.375 5685906,378752.4375 5685907.5,378751.5625 5685908.5,378750.65625 5685909.5,378749.78125 5685910.5,378748.96875 5685910.5,378748.15625 5685911,378747.28125 5685911.5,378746.0625 5685912,378744.78125 5685913,378742.78125 5685913,378741.5 5685914,378740.1875 5685915.5,378739.375 5685915.5,378739.3125 5685916.5,378738.46875 5685916.5,378738.4375 5685917,378737.625 5685917.5,378736.6875 5685919,378735.4375 5685919.5,378734.53125 5685920.5,378732.8125 5685922,378731.90625 5685923,378731 5685924.5,378730.15625 5685925,378729.28125 5685925.5,378728.4375 5685926.5,378727.5625 5685927,378726.71875 5685928,378725.84375 5685928.5,378724.59375 5685929,378723.75 5685930,378722.90625 5685930,378722.0625 5685931,378721.1875 5685931.5,378720.34375 5685932.5,378719.46875 5685933,378718.21875 5685933.5,378717.375 5685934.5,378716.90625 5685935,378716.03125 5685936,378715.21875 5685936,378714.78125 5685936.5,378713.90625 5685937.5,378713.4375 5685938,378712.9375 5685939,378712.125 5685939.5,378711.65625 5685940,378711.53125 5685941.5,378710.65625 5685942.5,378709.34375 5685943.5,378708.875 5685944.5,378708.40625 5685945,378707.5625 5685946,378707.09375 5685946.5,378705.78125 5685948,378704.5625 5685948,378703.65625 5685949.5,378703.15625 5685950.5,378702.25 5685951.5,378701.34375 5685952.5,378700.84375 5685954,378699.90625 5685955.5,378698.96875 5685957,378698.4375 5685958.5,378697.53125 5685959.5,378697 5685961,378696.5 5685962,378696.03125 5685963,378695.5625 5685963.5,378695.53125 5685964,378695.125 5685964,378694.125 5685966.5,378692.75 5685968,378692.21875 5685969.5,378692.0625 5685971,378692.03125 5685971.5,378691.96875 5685972,378691.875 5685973,378690.96875 5685974.5,378690.71875 5685977,378689.375 5685978.5,378688.53125 5685979,378688 5685980.5,378687.625 5685980.5,378687.5 5685981.5,378686.6875 5685982,378684.53125 5685983.5,378682.875 5685984,378681.5625 5685985.5,378680.65625 5685987,378680.1875 5685987.5,378680.15625 5685988,378659.96875 5685975,378660 5685974.5,378660.0625 5685974,378660.15625 5685973,378660.25 5685972,378660.3125 5685971.5,378659.65625 5685970,378659.34375 5685969,378659.40625 5685968.5,378659.5 5685967.5,378659.5625 5685966.5,378659.1875 5685966.5,378658.875 5685966,378658.90625 5685965.5,378658.21875 5685964,378658.3125 5685963.5,378657.28125 5685961.5,378656.96875 5685961,378657.0625 5685959.5,378657.15625 5685959,378656.875 5685957.5,378656.53125 5685957,378655.90625 5685955,378655.1875 5685954.5,378655.28125 5685953.5,378655.3125 5685953,378655.03125 5685952,378654.6875 5685951.5,378654.03125 5685950,378653.71875 5685949,378653.78125 5685948.5,378653.90625 5685947,378653.9375 5685946.5,378653.96875 5685946.5,378653.6875 5685945,378653.75 5685944.5,378653.09375 5685943,378653.1875 5685942.5,378652.65625 5685939.5,378652.03125 5685938,378652.125 5685936.5,378652.25 5685935.5,378652.3125 5685934.5,378652.40625 5685934,378652.4375 5685933.5,378652.125 5685932.5,378652.25 5685931,378651.9375 5685930,378651.65625 5685929,378651.75 5685928,378651.875 5685926.5,378651.1875 5685926,378651.3125 5685924,378651.4375 5685923,378651.5625 5685922,378651.28125 5685920.5,378651.4375 5685919,378651.5 5685918,378651.53125 5685918,378651.59375 5685917,378650.9375 5685916,378650.96875 5685915.5,378651.0625 5685914.5,378651.09375 5685914,378651.15625 5685913.5,378651.1875 5685913,378651.375 5685911,378652.25 5685910.5,378652.40625 5685909,378653.28125 5685907.5,378653.8125 5685906.5,378654.65625 5685906,378655.09375 5685905.5,378655.5625 5685904.5,378656.375 5685904.5,378657.15625 5685904.5,378658.84375 5685903.5,378660.46875 5685903.5,378661.34375 5685902,378662.21875 5685901.5,378663.46875 5685901,378664.71875 5685900,378665.96875 5685899.5,378666.84375 5685898.5,378668.0625 5685898.5,378668.90625 5685898,378669.8125 5685896.5,378671.0625 5685896,378671.96875 5685895,378673.21875 5685894,378674.46875 5685893.5,378675.3125 5685893,378676.53125 5685892.5,378677.375 5685892,378678.21875 5685891.5,378679.0625 5685891,378679.875 5685891,378680.6875 5685890.5,378681.96875 5685889.5,378683.625 5685889,378684.5 5685888,378685.34375 5685887.5,378686.59375 5685887,378687.46875 5685886,378688.71875 5685885.5,378689.96875 5685885,378690.78125 5685884.5,378692 5685884,378693.3125 5685883,378694.9375 5685882.5,378696.625 5685881.5,378697.875 5685881,378699.5625 5685880,378701.25 5685879,378702.5 5685878,378703.78125 5685877,378705.4375 5685876.5,378706.28125 5685875.5,378707.1875 5685874.5,378708.0625 5685874,378708.90625 5685873,378709.375 5685872.5,378710.21875 5685872,378710.625 5685872,378711.53125 5685870.5,378712.34375 5685870.5,378713.65625 5685869.5,378714.90625 5685868.5,378715.34375 5685868.5,378715.8125 5685867.5,378717.09375 5685866.5,378717.9375 5685866,378720.0625 5685864.5,378722.53125 5685863.5,378723.40625 5685862.5,378724.25 5685862,378724.6875 5685861.5,378725.53125 5685861,378726 5685860,378727.25 5685859.5,378729.03125 5685857.5,378731.0625 5685857,378732.34375 5685856,378733.25 5685855,378734.09375 5685854.5,378734.5625 5685853.5,378735 5685853,378735.84375 5685853,378736.71875 5685852,378738.34375 5685851.5,378739.1875 5685851,378740.5 5685850,378741.34375 5685849,378742.21875 5685848.5,378743.46875 5685847.5,378744.3125 5685847,378744.78125 5685846,378745.65625 5685845.5,378746.5 5685845,378746.96875 5685844,378747.4375 5685843.5,378747.53125 5685842.5,378748.40625 5685841.5,378748.5 5685840.5,378748.625 5685839,378749.15625 5685838,378749.28125 5685836.5,378749.40625 5685835,378749.5625 5685833.5,378749.71875 5685832,378750.21875 5685831,378750.375 5685829.5,378751.21875 5685828.5,378751.34375 5685827.5,378751.375 5685827,378751.40625 5685826.5,378752.59375 5685826.5,378753.90625 5685825.5,378756.34375 5685824.5,378757.5625 5685824.5,378758.78125 5685824,378759.96875 5685824.5,378760.75 5685824.5,378762.78125 5685824,378765.5625 5685823.5,378767.125 5685824,378768.71875 5685824,378770.28125 5685824,378771.46875 5685824.5,378772.25 5685824.5,378773.03125 5685824.5,378774.21875 5685824.5,378774.4375 5685824.5)) + + + + POLYGON((377787.21236766 5686430.83570257,377787.091569461 5686434.83708883,377787.737693002 5686438.88795447,377787.864087559 5686442.68909533,377788.459649403 5686444.80578393,377788.880197144 5686448.70852724,377792.362122552 5686459.86695051,377797.94149236 5686470.13850574,377798.930849234 5686471.33060785,377799.58710372 5686472.52852275,377804.899910503 5686478.52288668,377805.406547456 5686479.13334686,377805.529915074 5686479.23371183,377805.644567469 5686479.36307249,377807.392061045 5686481.81156509,377816.741061307 5686490.34144172,377819.268024607 5686491.8162556,377819.445913559 5686491.96408342,377821.252932048 5686492.97470892,377821.845793585 5686493.32072123,377822.749238227 5686493.92301766,377822.749238226 5686493.92301766,377823.285211318 5686494.21114939,377825.784078899 5686496.21427985,377828.942060624 5686497.86905437,377829.459811307 5686498.34144172,377829.814097052 5686498.54821383,377830.563106926 5686499.15138158,377833.445420292 5686500.66756629,377840.389980754 5686504.72062639,377852.415040396 5686508.66531166,377853.163293988 5686508.74466712,377854.777839837 5686509.25493736,377860.602216238 5686509.85131204,377862.571299679 5686510.30820919,377870.722679781 5686510.92891152,377865.18357042 5686518.6232882,377864.473453212 5686520.3059776,377860.565589664 5686528.1292516,377857.549254266 5686538.50328245,377856.91908596 5686544.62059585,377856.237925827 5686549.23152597,377855.997961655 5686551.04715803,377855.122961655 5686558.54715803,377854.719718468 5686565.15909641,377854.689275479 5686570.51706246,377854.660155864 5686573.31254549,377854.65773972 5686573.50583704,377854.41587695 5686576.26998298,377854.189330971 5686581.0312643,377854.127092524 5686588.99778552,377854.096141439 5686592.46430707,377854.367387449 5686598.72377641,377855.086137449 5686606.22377641,377855.17598771 5686607.09442203,377855.89473771 5686613.59442203,377858.280137917 5686624.53884835,377858.199446436 5686625.39955748,377858.119771519 5686626.32673996,377858.023869995 5686627.55427948,377857.947895467 5686628.28363494,377857.764790992 5686638.5933333,377859.05375186 5686646.88004093,377856.001223071 5686649.83265362,377854.203654971 5686651.45270116,377853.326280308 5686652.05597871,377846.157898318 5686658.98972353,377845.720398318 5686659.48972353,377842.727400395 5686663.68434142,377841.391454247 5686665.19681894,377840.139069476 5686667.31182779,377838.825885171 5686669.15222545,377838.128428148 5686670.70736908,377835.625770583 5686674.93382011,377833.502392192 5686680.82867703,377832.29696122 5686683.50412238,377831.973057845 5686685.07436739,377831.790848094 5686685.58021243,377831.644992471 5686686.50242365,377830.932850338 5686688.15831566,377828.480696436 5686700.39955748,377828.206798474 5686703.32113575,377828.082254505 5686704.51727121,377827.999100384 5686705.51512066,377827.894754505 5686706.51727121,377827.786916907 5686707.81132239,377825.943807975 5686715.901891,377825.220199407 5686720.61874685,377824.548478334 5686724.33904817,377823.601072878 5686734.06261442,377823.569822878 5686736.06261442,377823.565273476 5686736.42310359,377823.533360075 5686739.74209727,377823.493888631 5686740.08215895,377823.097623592 5686746.31822584,377823.035123592 5686751.81822584,377823.032218468 5686752.15909641,377823.000968468 5686757.65909641,377823.000968468 5686757.65909641,377824.027668784 5686769.0573121,377824.471288948 5686771.42328631,377824.974612037 5686775.27480212,377825.581424615 5686779.00143074,377825.630407432 5686779.25222276,377826.18246145 5686785.71058515,377829.233057786 5686796.57781887,377831.545557786 5686802.57781887,377831.545557786 5686802.57781887,377836.345640303 5686812.3054845,377840.626890303 5686819.3054845,377840.626890303 5686819.3054845,377847.353282914 5686828.29116548,377850.978282914 5686832.29116548,377852.700599818 5686834.04625263,377855.051235229 5686836.70891929,377857.484142848 5686839.30536223,377862.952892848 5686844.80536223,377862.952892848 5686844.80536223,377869.686775859 5686850.21221063,377877.705497875 5686857.14130645,377890.046530344 5686863.5692641,377892.365742884 5686864.45277363,377894.129456389 5686865.24397222,377894.129456389 5686865.24397222,377904.662578639 5686868.8378229,377915.678245555 5686870.42448905,377926.797449571 5686869.94937946,377937.637620798 5686867.42884086,377947.825789816 5686862.94959549,377957.011420141 5686856.66575728,377964.878468864 5686848.79352942,377971.156260501 5686839.60376559,377971.156260501 5686839.60376559,377973.375010501 5686835.60376559,377975.066906348 5686832.18392847,377978.977625886 5686827.94198421,377981.484173001 5686824.80335131,377983.913558476 5686822.09933965,377984.669362103 5686821.24180526,377986.185425879 5686819.48828571,377987.926419053 5686818.23633556,377989.293706174 5686817.31382859,377989.921927409 5686816.99473209,377989.873018893 5686816.89844345,377995.095714589 5686814.35114013,378003.770653794 5686807.98069055,378004.698589966 5686807,378004.875 5686807,378017.82150131 5686805.58658638,378030.158043911 5686801.41293679,378031.59311331 5686800.54545313,378041.188704049 5686795.65469523,378043.084469103 5686794.18364035,378044.434002771 5686793.52332062,378045.233912908 5686792.95104325,378045.931893418 5686792.61749202,378045.931893418 5686792.61749202,378046.775643418 5686792.11749202,378046.775643418 5686792.11749202,378056.930405571 5686784.5456087,378065.269249503 5686775.01060512,378066.675499503 5686773.01060512,378066.675499503 5686773.01060512,378067.710879139 5686771.22544555,378068.621616828 5686771.50978914,378070.328964472 5686772.15255531,378070.328964472 5686772.15255531,378071.629707797 5686772.53575925,378072.614108282 5686773.05358392,378083.73168367 5686776.37790347,378086.021479365 5686776.60036826,378086.217855703 5686776.66323325,378097.923439188 5686777.99341273,378109.663298452 5686777.01067847,378120.984829107 5686773.75291761,378131.451554502 5686768.34572595,378132.83400169 5686767.24255441,378133.275728824 5686767.16134463,378144.21991248 5686762.81009532,378147.862764532 5686760.44920264,378148.556893418 5686760.11749202,378148.556893418 5686760.11749202,378149.400643418 5686759.61749202,378149.400643418 5686759.61749202,378151.27530229 5686758.23757414,378154.103268256 5686756.40480024,378155.154383617 5686755.38222069,378158.072315767 5686753.23435965,378163.061983609 5686751.78430809,378173.126204049 5686746.65469523,378174.586891142 5686745.52124735,378178.843233609 5686744.28430809,378188.907454049 5686739.15469523,378197.831858343 5686732.22963429,378205.300122319 5686723.754583,378211.047534476 5686714.0299383,378214.870378653 5686703.40038876,378216.633154709 5686692.24269717,378216.633154709 5686692.24269717,378216.726904709 5686690.74269717,378216.726904709 5686690.74269717,378216.645742475 5686688.60917386,378227.027757499 5686682.98214966,378236.551161192 5686674.86971613,378244.185292614 5686664.95877101,378249.598264696 5686653.68018382,378249.598264696 5686653.68018382,378250.848264696 5686650.18018382,378250.848264696 5686650.18018382,378254.062179706 5686635.80595844,378254.499679706 5686631.30595844,378254.499679706 5686631.30595844,378254.729234386 5686623.00216732,378254.416734386 5686615.50216732,378253.356075385 5686606.49856926,378253.050996439 5686604.93656506,378252.60526229 5686600.90557797,378251.636894845 5686594.92825468,378250.886894845 5686591.42825468,378250.331105977 5686589.06835298,378249.668944511 5686586.49129214,378248.909831216 5686582.4426879,378248.654024391 5686581.15618521,378247.938225112 5686577.75130216,378247.715857559 5686576.12484234,378247.717303293 5686575.91665662,378247.71875 5686575.5,378247.71875 5686574.31249152,378247.737534969 5686572.50913452,378248.39564958 5686571.61381003,378250.086972119 5686567.80307527,378250.783169124 5686567.17477502,378251.960406524 5686565.56243201,378252.034074363 5686565.52578072,378253.415790902 5686564.48337878,378254.03959554 5686564.099499,378262.909901064 5686557.43656111,378264.933487426 5686555.226561,378265.24510196 5686554.98677176,378265.763339467 5686554.37955416,378266.671507815 5686553.74281608,378271.889194546 5686548.41174489,378272.022232248 5686548.53646773,378272.490982248 5686548.03646773,378273.453968001 5686546.81296766,378274.410590007 5686545.8355575,378274.816840007 5686545.33555751,378274.694827002 5686545.23642194,378277.147059306 5686542.12079289,378277.641602136 5686541.59510565,378277.947947396 5686541.10324239,378278.891109616 5686539.90492867,378279.078203741 5686539.55762228,378279.349962447 5686539.27034681,378280.020015725 5686538.20549869,378280.178482248 5686538.03646773,378280.865467086 5686537.29116548,378281.771717086 5686536.29116548,378281.771717086 5686536.29116548,378289.111109473 5686526.28042366,378289.588184921 5686525.2273648,378289.810851682 5686525.01027647,378290.497979114 5686524.22498798,378292.972080264 5686521.7936966,378299.768193168 5686511.64931356,378300.299443167 5686510.64931356,378300.299443167 5686510.64931356,378302.780656154 5686505.00791412,378303.295109949 5686504.19577969,378305.408136913 5686498.84630532,378305.516626195 5686498.60215308,378305.528653296 5686498.54119833,378307.443388493 5686493.6937321,378307.582809068 5686492.9597446,378307.950301597 5686491.92211864,378308.385479485 5686492.16072969,378314.207170076 5686496.95035064,378317.15747356 5686498.62266775,378317.530488227 5686498.92301766,378318.280488227 5686499.42301766,378318.280488226 5686499.42301766,378319.277926173 5686499.95504202,378321.075314038 5686501.4022915,378321.182831792 5686501.52701992,378324.324605925 5686504.08281167,378324.324779073 5686504.08297463,378324.781547456 5686504.63334686,378333.848959523 5686512.01008414,378344.174584471 5686517.48874125,378353.459109908 5686520.28659093,378355.699519231 5686521.15384615,378357.668269231 5686521.65384615,378359.426962812 5686521.87368285,378362.215339837 5686522.75493736,378365.566960279 5686523.09811944,378367.954373708 5686523.53219461,378370.998826888 5686523.80671278,378373.647177666 5686524.44179936,378385.481215174 5686524.88773271,378394.988365155 5686523.35316882,378398.235660894 5686523.09870308,378404.265772984 5686521.43700791,378404.471451269 5686521.4173832,378406.550548316 5686520.80740102,378409.249217489 5686520.06373896,378409.487854801 5686519.94563045,378415.408440581 5686518.20860145,378416.658440581 5686517.70860145,378416.658440581 5686517.70860145,378417.205932556 5686517.43318833,378417.718233609 5686517.28430809,378420.19869325 5686516.02004746,378420.856221764 5686515.80625902,378422.637998175 5686514.7767629,378427.782454049 5686512.15469523,378429.550356832 5686510.7828575,378431.723905632 5686509.52699844,378435.162318673 5686506.42814917,378436.706858343 5686505.22963429,378437.535289576 5686504.28952328,378441.047459662 5686501.12420091,378448.418885996 5686490.96557208,378448.624675583 5686490.50245318,378449.381599944 5686489.4951906,378450.392909613 5686487.45810343,378450.536892713 5686487.21127526,378451.314091539 5686486.1780779,378456.699493191 5686474.38796509,378459.427104533 5686461.71636506,378459.583354533 5686460.21636506,378459.698995495 5686458.98272879,378459.782149616 5686457.98487934,378459.886495495 5686456.98272879,378460.033802457 5686455.21504524,378460.118158214 5686454.54019919,378460.724172603 5686451.94208407,378460.849172603 5686450.94208408,378461.105245495 5686448.48272879,378461.188399616 5686447.48487934,378461.292745495 5686446.48272879,378461.417745495 5686444.98272879,378461.407762427 5686444.98189687,378461.570654709 5686443.24269717,378461.633154709 5686442.24269717,378461.633154709 5686442.24269717,378461.586212728 5686439.2200781,378461.831803564 5686436.60044252,378461.886495495 5686435.98272879,378461.985745646 5686434.79172697,378462.126964899 5686433.28538828,378462.358481413 5686430.97022314,378462.448995495 5686429.98272879,378462.52254423 5686429.10014397,378462.550689799 5686428.8299465,378462.599172603 5686428.44208407,378462.945654709 5686424.74269717,378463.039404709 5686423.24269717,378463.039404709 5686423.24269717,378462.760497768 5686416.45785223,378463.026022923 5686413.79197347,378462.913720164 5686412.2536499,378462.914404709 5686412.24269717,378462.848800117 5686410.88732273,378463.185646724 5686410.79501182,378463.425537409 5686410.74516441,378463.706274599 5686410.65233669,378468.916223591 5686409.22457959,378470.919633681 5686408.26718909,378476.4382307 5686406.44242641,378480.856071903 5686403.74435199,378482.244813679 5686403.05342394,378482.268336301 5686403.09458853,378482.983655565 5686402.68583466,378485.315324363 5686401.52578072,378494.147855443 5686394.86229565,378501.606683948 5686386.69029983,378501.686676282 5686386.56132124,378502.481683948 5686385.69029983,378504.660033884 5686382.17795703,378506.948682517 5686379.0269384,378507.797555292 5686377.62190759,378508.638023677 5686376.50059274,378514.04678878 5686364.49587762,378516.706803564 5686351.60044252,378517.064464899 5686347.78538828,378517.167259982 5686346.75743745,378517.863053564 5686343.60044252,378518.033214899 5686341.78538828,378518.264731413 5686339.47022314,378518.368139354 5686338.19706551,378518.488053564 5686337.10044252,378518.581803564 5686336.10044252,378518.634623593 5686335.42418208,378518.708354533 5686334.71636506,378518.712933798 5686334.42156822,378518.726904709 5686334.24269717,378518.758154709 5686333.74269717,378518.723512761 5686333.74053205,378518.872640897 5686324.14019089,378517.245233236 5686314.11876861,378525.327054795 5686308.20547945,378526.844298538 5686306.88133946,378528.391232407 5686305.55539614,378528.391232408 5686305.55539614,378530.433059692 5686303.49763807,378530.534230962 5686303.42670452,378531.236219692 5686302.94402129,378532.885980675 5686301.34826067,378534.491385764 5686300.20828228,378539.198661458 5686295.6800569,378539.59190745 5686295.45819816,378542.138030614 5686293.22902237,378543.05340656 5686292.67568768,378546.266262528 5686289.61468242,378548.850854898 5686287.35182616,378549.385775754 5686286.6426082,378549.497957834 5686286.53572824,378550.065942003 5686286.35193674,378555.043688699 5686283.49137127,378555.228753112 5686283.44222475,378562.484597062 5686280.09149011,378563.855476946 5686279.63797484,378574.844866515 5686273.16245682,378578.195086568 5686270.06962916,378579.925374024 5686268.55473194,378580.485185386 5686268.16609236,378581.978751324 5686267.29894701,378582.828406369 5686266.63580161,378583.728884702 5686266.36032462,378584.098168333 5686266.16106896,378584.167976946 5686266.13797484,378584.461319104 5686265.96512243,378589.118933177 5686263.45199732,378593.626204049 5686261.15469523,378602.550608343 5686254.22963429,378610.018872319 5686245.754583,378615.766284476 5686236.0299383,378616.636689569 5686233.60974705,378620.40138351 5686226.03082854,378620.919053422 5686224.56917231,378621.027280372 5686224.48588919,378622.44197345 5686222.82818932,378624.585394632 5686220.77008529,378625.836940187 5686218.85005723,378629.13146682 5686214.9896182,378630.965230287 5686211.61708631,378632.504951879 5686209.64043998,378643.226835616 5686206.06846854,378647.601835616 5686204.06846854,378658.026050605 5686197.9662481,378667.016792889 5686189.89978013,378669.778875653 5686186.86690494,378671.718716016 5686184.82496771,378671.718716016 5686184.82496771,378678.666192883 5686175.98161798,378679.80628052 5686173.78205631,378680.150643418 5686173.61749202,378680.150643418 5686173.61749202,378680.994393418 5686173.11749202,378680.994393418 5686173.11749202,378689.016905355 5686167.42621575,378696.001741737 5686160.50065555,378697.445240391 5686158.50218896,378699.302967086 5686156.79116549,378699.302967086 5686156.79116549,378700.209217086 5686155.79116548,378700.209217086 5686155.79116548,378702.179269768 5686153.10406446,378702.717101682 5686152.51027647,378703.592101682 5686151.51027647,378703.510176204 5686151.43859168,378706.697738223 5686147.23085638,378708.05211086 5686145.72049752,378708.888508611 5686144.33893402,378710.261182517 5686142.5269384,378711.167432517 5686141.0269384,378711.054203941 5686140.95852946,378716.72558217 5686131.8379137,378716.741039557 5686131.79819963,378717.791067693 5686130.31047509,378722.723399662 5686118.84168434,378723.150942352 5686116.70737561,378723.581311977 5686115.57589731,378724.175061977 5686113.57589731,378724.175061977 5686113.57589731,378726.192922603 5686103.94208407,378726.255422603 5686103.44208407,378726.442199357 5686101.44787004,378726.442922603 5686101.44208407,378726.698995495 5686098.98272879,378726.903726676 5686096.52595461,378727.004699357 5686095.44787004,378727.005422603 5686095.44208407,378727.206803564 5686093.60044252,378727.394303564 5686091.60044252,378727.400868624 5686090.21980753,378729.70932404 5686088.96356994,378740.185851682 5686079.51027647,378741.060851682 5686078.51027647,378741.090535847 5686078.47030038,378741.225854898 5686078.35182616,378743.537483929 5686075.28698248,378743.8728117 5686074.90375074,378744.427967086 5686074.29116548,378744.427967086 5686074.29116548,378747.349409706 5686070.23298961,378748.636182517 5686068.52693839,378748.942132528 5686068.02053838,378752.28517958 5686063.3767118,378752.554464219 5686062.73861656,378752.947238098 5686062.21687722,378754.892621556 5686057.97059332,378756.525230487 5686055.3635956,378760.318371987 5686045.5535046,378760.55763351 5686045.03082853,378761.08888351 5686043.53082853,378764.119716025 5686029.43293325,378764.192922603 5686029.44208407,378764.297348442 5686028.60667736,378764.323995495 5686028.48272879,378764.357685096 5686028.07845357,378764.519303564 5686026.60044252,378764.613053564 5686025.60044252,378764.667745495 5686024.98272879,378764.750899616 5686023.98487934,378764.855245495 5686022.98272879,378764.97772926 5686021.5129236,378765.036478481 5686021.17326004,378765.192728481 5686019.17326004,378764.712117656 5686005.60581829,378764.087602098 5686003.27845524,378764.760311183 5686002.65652859,378764.885498412 5686002.54347771,378764.901640586 5686002.52586807,378767.053482248 5686000.53646773,378767.522232248 5686000.03646773,378767.794136784 5685999.6963826,378768.368058548 5685999.28125337,378768.42433033 5685999.34455912,378769.052518591 5685998.78616956,378770.542014955 5685997.70878667,378771.700012641 5685996.49550307,378780.743480126 5685993.44578452,378791.8665466 5685986.74668806,378801.287904958 5685977.8114484,378802.076355126 5685976.88190715,378802.80938194 5685976.19199956,378803.326001028 5685975.69994482,378808.513501028 5685970.69994482,378808.737049828 5685970.48335473,378811.653086552 5685967.64338853,378813.260840081 5685966.17344245,378814.993147565 5685964.86398167,378819.141493108 5685961.42490647,378820.680900257 5685960.02743048,378820.901908995 5685959.90823475,378823.912518014 5685959.10856503,378834.890522105 5685953.60584652,378844.518299828 5685945.98335473,378848.112049828 5685942.48335473,378848.066158661 5685942.43623434,378854.623970899 5685935.88058267,378861.348710525 5685925.63890699,378861.678801755 5685924.8038634,378863.60313146 5685921.83281573,378864.10313146 5685920.83281573,378864.555712231 5685919.6562937,378865.094427308 5685918.78767659,378865.213754785 5685918.48045524,378867.608786158 5685914.46603257,378868.077536158 5685913.46603257,378869.165152867 5685910.57513817,378869.94688146 5685909.33281573,378870.44688146 5685908.33281573,378874.552846828 5685897.70008024,378874.891592625 5685895.82004503,378875.090463677 5685895.36055082,378876.215463677 5685891.86055082,378876.215463677 5685891.86055082,378878.770854533 5685879.71636506,378879.239604533 5685875.21636506,378879.444196981 5685872.76019745,378879.633154709 5685870.74269717,378879.633643026 5685870.7348841,378879.74037305 5685869.73001702,378879.868664309 5685868.26383119,378880.050553564 5685866.60044252,378880.238053564 5685864.60044252,378880.290873593 5685863.92418208,378880.364604533 5685863.21636506,378880.480245495 5685861.98272879,378880.559976677 5685861.02595461,378880.68865159 5685859.6520935,378880.755425319 5685859.06256273,378881.161675319 5685855.06256273,378881.161675319 5685855.06256273,378881.161675319 5685846.58181046,378881.206803564 5685846.10044252,378881.351904709 5685844.24269717,378881.383154709 5685843.74269717,378881.383154709 5685843.74269717,378880.67402079 5685830.07854529,378880.049842602 5685827.91108609,378878.259056409 5685817.75526539,378877.977806409 5685816.75526538,378874.658656173 5685808.01009282,378874.557579977 5685807.52777648,378869.982610536 5685796.76222945,378867.906156209 5685793.70815317,378867.688303869 5685792.9770032,378867.265578075 5685792.19961426,378866.185489212 5685789.23310731,378860.364952091 5685779.49181208,378852.81440755 5685771.02063966,378843.803937489 5685764.12260266,378842.564372905 5685763.5023179,378842.501604784 5685763.43045671,378836.333689154 5685758.61063122,378835.290188693 5685757.65855828,378834.599378598 5685757.25538016,378833.555058031 5685756.43931146,378832.01932966 5685755.65186093,378831.907011773 5685755.57698234,378831.907011774 5685755.57698234,378829.776251417 5685754.44045408,378824.360019246 5685751.27937361,378823.034923463 5685750.84469087,378821.54734454 5685750.05122976,378810.309900209 5685746.64880539,378806.160818512 5685746.24088685,378806.183067702 5685746.08236137,378802.620567702 5685745.58236137,378802.620567702 5685745.58236137,378794.896531841 5685745.04296711,378793.640025358 5685744.91430979,378791.704589973 5685744.48466488,378780.776064765 5685744.09179551,378778.011169716 5685744.5,378775.34375 5685744.5,378774.331260387 5685744.59051271,378772.872400209 5685744.14880539,378772.619267546 5685744.12391856,378771.354298877 5685743.7272045,378770.584865243 5685743.64899291,378768.630544417 5685743.07715324,378763.681500867 5685742.60614623,378762.920626292 5685742.46780539,378759.351818049 5685742.14600616,378758.962579723 5685742.033352,378747.523116618 5685741.00103186,378736.096548767 5685742.16745725,378734.606338054 5685742.61776609,378732.379410671 5685742.85582514,378720.269523054 5685746.86202516,378709.280133485 5685753.33754318,378709.22462373 5685753.38878821,378706.19692596 5685755.03643006,378704.970337347 5685756.14321874,378699.837063399 5685759.28865041,378697.176956001 5685761.78279137,378696.959308011 5685761.85099138,378691.870814747 5685764.67127677,378690.39790446 5685765.400501,378690.39790446 5685765.400501,378689.58540446 5685765.900501,378689.602593435 5685765.92843308,378686.353713423 5685767.72911717,378684.3497119 5685769.4465256,378680.739998676 5685771.70105299,378679.458748676 5685772.70105299,378679.458748676 5685772.70105299,378678.406830535 5685773.67833603,378678.16534344 5685773.82431232,378674.856619359 5685776.97665463,378671.915782914 5685779.70883452,378671.4535599 5685780.2188737,378668.73626099 5685782.80774365,378668.24027845 5685783.39557481,378668.157898318 5685783.48972353,378662.43260176 5685791.2000636,378662.410519235 5685791.23539564,378661.733890384 5685792.09507133,378656.826161565 5685801.20538174,378654.845604472 5685807.15314028,378654.661405339 5685807.62614885,378650.207672737 5685809.3215261,378645.552496888 5685810.55777525,378636.137913699 5685814.90541147,378635.262913699 5685815.40541147,378634.290907651 5685816.08021024,378632.793219186 5685816.79592627,378631.082023054 5685817.36202516,378628.822481722 5685818.69346405,378627.380606582 5685819.38250798,378626.536856582 5685819.88250798,378626.536856582 5685819.88250798,378625.176215335 5685820.84203323,378620.092633485 5685823.83754318,378618.490948039 5685825.31617353,378615.552498676 5685827.20105299,378614.271248676 5685828.20105299,378612.868489354 5685829.52724449,378610.272855003 5685831.35768781,378609.739921226 5685831.87727007,378608.446346597 5685832.68003912,378603.936383485 5685835.33754318,378602.250679396 5685836.89373715,378599.88409344 5685838.32431232,378599.099956155 5685839.07138856,378590.733998846 5685845.34897823,378585.414353045 5685851.04130925,378583.845398318 5685852.48972353,378583.407898318 5685852.98972353,378581.994432069 5685855.01454958,378577.772697069 5685859.53205206,378572.044306833 5685868.35068644,378571.838173476 5685868.73870217,378571.77635176 5685868.7000636,378571.46385176 5685869.2000636,378571.46385176 5685869.2000636,378570.463716367 5685871.21772283,378569.49061854 5685872.66718427,378568.99061854 5685873.66718427,378569.198113776 5685873.77093189,378566.227854681 5685879.76309127,378563.15844897 5685891.14605957,378562.374142008 5685902.90948091,378563.905215283 5685914.59917866,378563.945426146 5685914.71771567,378561.624393074 5685912.84861842,378552.559120642 5685908.08000872,378545.581045653 5685898.60214456,378542.900060347 5685896.21194793,378539.835311923 5685892.65890761,378537.429913119 5685890.76045454,378536.693251013 5685889.9892428,378534.718242295 5685888.60525161,378533.157729507 5685879.79347704,378529.431659302 5685869.72505489,378526.596792458 5685864.92656496,378524.937543479 5685861.49418064,378524.856349961 5685861.388558,378524.724425222 5685861.03796298,378523.58377914 5685859.19247,378523.298992842 5685858.4136909,378522.655679579 5685855.65878091,378521.089873527 5685852.37261397,378520.9041998 5685851.86486898,378520.609791466 5685851.36506275,378517.110911015 5685844.02194049,378509.208525032 5685833.83799188,378507.405171181 5685832.33247121,378506.959014286 5685831.80778024,378505.473906323 5685830.6354288,378503.821630274 5685828.75886581,378499.559475357 5685825.78253248,378499.313261773 5685825.57698234,378498.563261773 5685825.07698234,378498.558768469 5685825.0837223,378495.161282336 5685822.7112015,378495.250761773 5685822.57698234,378494.500761773 5685822.07698234,378494.500761774 5685822.07698234,378493.597004531 5685821.59492642,378492.660982755 5685820.86740032,378492.140510344 5685820.60174641,378492.079044118 5685820.55882353,378490.204044118 5685819.55882353,378490.181183176 5685819.6016878,378489.101008897 5685819.0503569,378488.988754928 5685818.9655184,378487.108124264 5685818.03317025,378482.587520607 5685815.72581254,378482.264212419 5685815.63173527,378478.954541551 5685813.99092107,378475.860918869 5685813.12366841,378475.502169041 5685812.92857784,378474.345919041 5685812.42857784,378473.591766921 5685812.19023132,378470.340159184 5685810.56743469,378464.992636409 5685809.04278175,378458.97046355 5685807.18721504,378454.738472604 5685806.76417854,378454.099294417 5685806.57715324,378445.814130912 5685805.78864328,378443.443794055 5685805.31731364,378432.253276928 5685805.2110421,378428.922780543 5685805.80777847,378424.918847315 5685805.79636322,378423.364853639 5685806.11415208,378422.247067112 5685806.02842538,378409.515017138 5685807.79810529,378406.578009806 5685808.87939861,378396.050773054 5685812.36202516,378394.159768006 5685813.47630337,378393.185309419 5685813.79139855,378391.935309419 5685814.29139855,378382.237494848 5685819.23387627,378378.574174462 5685822.03611347,378377.967545951 5685822.34530477,378369.043141657 5685829.27036571,378361.574877681 5685837.745417,378355.827465523 5685847.4700617,378352.004621347 5685858.09961124,378350.902831554 5685865.07351508,378350.692662324 5685865.04359516,378349.985849542 5685870.00852397,378348.7331974 5685874.41345457,378347.758789978 5685877.21175281,378347.525090354 5685877.62721881,378346.315910163 5685877.24506264,378340.696880242 5685876.66971397,378340.380544417 5685876.57715324,378334.481835622 5685876.01576533,378333.222751029 5685875.71793302,378326.862945037 5685875.22453404,378319.25 5685874.5,378318.0625 5685874.5,378306.456618434 5685875.63317137,378304.441117635 5685876.23898779,378303.348160671 5685876.35582514,378300.656668531 5685877.24622613,378291.427526409 5685879.77542041,378281.786856582 5685884.38250798,378280.943106582 5685884.88250798,378280.943106582 5685884.88250798,378271.335057685 5685891.95489787,378269.708212699 5685893.74704021,378268.621348936 5685894.56343889,378261.889680078 5685901.91523231,378253.885533457 5685906.73631912,378250.616477734 5685909.66276463,378248.90625 5685909.5,378247.71875 5685909.5,378236.747723614 5685910.51155554,378233.486806621 5685911.43453263,378231.934798731 5685911.5826168,378220.997809419 5685914.79139855,378219.747809419 5685915.29139855,378219.747809419 5685915.29139855,378216.462115851 5685916.94425043,378215.935284758 5685917.1622879,378214.434057997 5685917.64806326,378213.591226335 5685918.13241397,378211.239334504 5685919.10578201,378207.30359047 5685921.74573444,378203.600182905 5685923.87397448,378202.765108728 5685924.62163022,378199.549547146 5685926.64787143,378199.549547147 5685926.64787143,378198.299547147 5685927.64787143,378198.299547147 5685927.64787143,378189.121284722 5685936.7793473,378182.220677787 5685947.50390673,378182.045468976 5685947.52013032,378180.511377027 5685947.95628226,378179.379078188 5685948.06334551,378168.531766391 5685951.21569191,378158.467545951 5685956.34530477,378156.124893031 5685958.16313078,378155.103713423 5685958.72911717,378152.309148623 5685961.12403009,378149.543141657 5685963.27036571,378148.736489089 5685964.1857621,378145.8965485 5685966.6195616,378140.581371466 5685973.47065024,378140.495828194 5685973.55530235,378140.099170374 5685973.86473539,378139.544653626 5685974.49656784,378138.151918961 5685975.87479337,378136.481425453 5685976.48012859,378126.137675453 5685981.48012859,378126.137675453 5685981.48012859,378115.710327539 5685987.90953524,378106.806144543 5685996.32276169,378099.796299445 5686006.36910063,378094.972999303 5686017.62976802,378092.537304526 5686029.63536027,378092.193554526 5686033.13536027,378092.256836574 5686045.47668727,378094.84382494 5686057.54399219,378096.089521947 5686060.35426616,378097.126227984 5686065.02152647,378102.28181264 5686076.36438264,378109.668954347 5686086.39785544,378111.679556709 5686088.19038111,378112.255051206 5686090.06954682,378112.255051206 5686090.06954682,378117.342309051 5686101.93671563,378124.850689549 5686112.44072012,378129.756939549 5686117.94072012,378129.756939548 5686117.94072012,378139.095593642 5686126.41811911,378150.000078066 5686132.75601888,378161.988545602 5686136.67436038,378167.043594189 5686137.20862895,378167.775705583 5686137.42284676,378170.929305485 5686137.72297903,378173.283312044 5686139.00310359,378174.426402972 5686139.63220604,378174.521767939 5686139.70622614,378183.006692037 5686144.32869292,378183.791506063 5686144.67749915,378185.435330959 5686145.57142216,378186.059145529 5686145.84117981,378186.440328447 5686146.61018638,378192.281965243 5686153.99530037,378192.413531134 5686154.18104045,378192.413531134 5686154.18104045,378192.54531074 5686154.32822701,378194.207343764 5686156.42940237,378195.017328168 5686157.10135574,378196.019271166 5686158.30926235,378196.264128741 5686158.51465843,378197.974316826 5686160.56295615,378200.576405756 5686163.77241257,378200.824297808 5686163.97638744,378203.417330742 5686167.08207124,378212.060168336 5686174.19107128,378215.707534879 5686176.19094762,378220.635283202 5686180.19960578,378226.919114586 5686183.68531783,378230.803864518 5686186.39530494,378235.369022803 5686188.18725527,378239.60890546 5686190.44877024,378240.315725558 5686190.66277814,378241.346250518 5686191.22078536,378252.132532448 5686194.64484993,378254.445032448 5686195.14484993,378254.445032448 5686195.14484993,378255.371847678 5686195.24390174,378257.377599791 5686195.85119461,378269.0625 5686197,378271.03125 5686197,378281.673740887 5686196.04860191,378291.978723591 5686193.22457959,378301.619393418 5686188.61749202,378301.619393418 5686188.61749202,378302.463143418 5686188.11749202,378302.463143418 5686188.11749202,378303.256718141 5686187.55786252,378304.150643418 5686187.11749202,378304.994393418 5686186.61749202,378304.994393418 5686186.61749202,378306.37071544 5686185.67823676,378310.4893487 5686183.56273895,378319.369579626 5686176.63526461,378324.226593568 5686171.10104222,378325.456479778 5686170.06675822,378327.023086172 5686168.04444268,378327.557397254 5686167.46511059,378327.851602177 5686166.97492018,378333.249102472 5686160.00734443,378338.74513351 5686148.53082853,378339.27638351 5686147.03082853,378339.516861003 5686145.96588274,378340.73818421 5686143.17576297,378343.255422603 5686131.94208407,378343.255422603 5686131.94208407,378343.317922603 5686131.44208407,378343.573995495 5686128.98272879,378343.64754423 5686128.10014397,378343.739604533 5686127.21636505,378343.764731413 5686126.97022314,378344.264731413 5686121.97022314,378344.264731413 5686121.97022314,378344.274887638 5686110.13222678,378343.078871214 5686104.13242761,378343.104861821 5686102.65121379,378341.852922473 5686096.34824333,378341.836197064 5686095.81056796,378341.478852803 5686094.46496512,378340.612548682 5686090.10350041,378340.383396199 5686089.37021247,378340.380157902 5686089.05579863,378340.224503146 5686088.41552969,378340.05611435 5686082.25726701,378339.816894469 5686081.31368851,378339.421695955 5686071.46917769,378336.439833931 5686059.5531993,378334.745770587 5686056.04879669,378330.201857814 5686046.18621072,378325.142116805 5686039.48786053,378325.52683558 5686038.54086047,378326.841994115 5686035.73518893,378326.981378739 5686035.48212181,378327.744393418 5686035.11749202,378327.744393418 5686035.11749202,378327.858641822 5686035.04978926,378329.25738518 5686034.55913658,378330.792270128 5686034.15152573,378337.922332482 5686033.00065126,378341.687848842 5686031.59306344,378345.428700321 5686031.30820919,378347.788886508 5686030.76056234,378351.986669321 5686030.34711682,378352.353917565 5686030.23571329,378355.690201269 5686029.9173832,378356.061788788 5686029.80836387,378363.318831118 5686028.98880215,378365.086795369 5686028.36863378,378367.263978727 5686028.02595069,378372.420664412 5686026.0947433,378372.897046354 5686026.04190954,378380.282004811 5686023.50111123,378385.546481495 5686022.07919844,378390.171446883 5686021.28835561,378398.79742894 5686017.88935639,378402.003442003 5686016.85193674,378403.29756351 5686016.10824296,378406.230476946 5686015.13797484,378407.571203584 5686014.3479492,378409.464225985 5686014.21861351,378420.288242584 5686011.39808477,378425.098165519 5686009.12421498,378425.994984548 5686010.49172937,378426.338734548 5686010.99172937,378426.338734548 5686010.99172937,378426.716791326 5686011.44305532,378426.75 5686011.5,378427.125 5686012,378427.160818034 5686011.97313647,378433.647939148 5686019.71749193,378441.039453961 5686025.73782703,378441.305527045 5686026.18216112,378441.584439473 5686027.02382333,378444.129057211 5686031.44620916,378445.168506962 5686037.0975745,378446.976387614 5686041.88109574,378447.293701318 5686042.89649959,378447.42914556 5686043.26889358,378447.90983673 5686044.80935034,378447.964407252 5686046.69661345,378450.262451318 5686057.39649959,378450.574951318 5686058.39649959,378452.436126491 5686063.08708748,378452.628450515 5686063.73023283,378452.880132208 5686064.20608362,378453.884596499 5686066.73756379,378457.521229266 5686072.98093604,378458.116075298 5686074.10560248,378458.328754351 5686074.36729535,378458.401234548 5686074.49172937,378458.744984548 5686074.99172937,378458.803525845 5686074.95148223,378465.518603033 5686083.21410974,378468.894114969 5686086.01381834,378469.34812441 5686086.47748756,378469.34812441 5686086.47748756,378471.096722031 5686087.92644935,378474.541820716 5686091.47104346,378483.195790578 5686097.67451651,378485.806007041 5686098.91690257,378495.364666549 5686103.58330209,378496.165693331 5686103.80714234,378495.951161565 5686104.20538174,378495.641981302 5686105.1338728,378494.494401965 5686107.76478327,378494.17752199 5686109.27895625,378492.888120439 5686112.20621023,378492.656172009 5686113.32317709,378490.887438023 5686117.92410269,378490.293688023 5686119.92410269,378490.293688023 5686119.92410269,378490.038215987 5686121.24512057,378489.226145426 5686123.46585501,378489.218491316 5686123.48292164,378489.216171835 5686123.49312936,378488.217241206 5686126.22486199,378486.272775927 5686131.36470355,378485.457342653 5686135.77385019,378485.35449995 5686135.98955398,378483.381837077 5686144.91604782,378476.857968976 5686145.52013032,378466.215564864 5686148.54583242,378456.309675637 5686153.47421928,378447.477144557 5686160.13770435,378445.712019665 5686162.07159963,378438.351749789 5686157.94462758,378426.679442823 5686154.24916024,378422.976888441 5686153.86941514,378420.222751029 5686153.21793302,378418.089806525 5686153.05245743,378408.871753294 5686152.17516313,378408.536794417 5686152.07715324,378397.21875 5686151,378396.03125 5686151,378383.08474869 5686152.41341362,378370.748206089 5686156.5870632,378368.694212555 5686157.8286797,378367.082023054 5686158.36202516,378356.092633485 5686164.83754318,378354.502666276 5686166.30535559,378345.968279381 5686169.3662765,378341.472881069 5686172.1064123,378340.825413699 5686172.40541147,378340.076410342 5686172.83341339,378337.487854058 5686174.13613328,378337.197664211 5686174.31134225,378334.815997229 5686175.47667938,378326.726924277 5686181.26382112,378325.754150764 5686182.23964366,378325.015992185 5686182.75718392,378322.841023348 5686184.97941655,378320.912514265 5686186.45515923,378313.44788914 5686194.77950248,378313.067081186 5686195.40852183,378312.97366441 5686195.49980269,378310.004319798 5686200.08428963,378308.981127681 5686201.245417,378306.153864883 5686206.02915713,378305.74061854 5686206.66718427,378305.541955708 5686207.06450993,378303.233715524 5686210.9700617,378300.164721798 5686219.50350417,378299.063654724 5686222.39936232,378298.814694849 5686223.91576723,378298.495350338 5686224.65831566,378297.800841321 5686228.12533004,378297.668811462 5686228.46525504,378296.016502117 5686232.52633404,378295.93911819 5686232.75848582,378295.377433934 5686234.12014462,378295.377433934 5686234.12014462,378293.627932165 5686239.06730913,378293.357184263 5686239.53989804,378289.928443591 5686248.75526538,378289.365943591 5686250.75526538,378288.570517129 5686255.03356946,378288.561292023 5686255.07311949,378288.192121347 5686256.09961124,378287.919782994 5686257.82340782,378286.932077397 5686262.05791592,378286.869577397 5686262.55791593,378286.556484802 5686265.90080326,378286.543196436 5686265.89955748,378286.355696436 5686267.89955748,378286.301004505 5686268.51727121,378286.216197542 5686269.53495476,378286.213327397 5686269.55791593,378286.198533846 5686269.699995,378277.376371744 5686270.44800154,378276.790815717 5686270.61095001,378272.982509113 5686270.95139809,378270.038941888 5686271.75806607,378268.61599869 5686271.91341362,378264.965834824 5686273.14832241,378263.801031729 5686273.46753012,378263.232968976 5686273.52013032,378252.590564864 5686276.54583242,378252.127953088 5686276.77599144,378248.780120358 5686277.7535677,378238.681421946 5686282.92798751,378229.737518657 5686289.91117618,378222.26829995 5686298.45337156,378216.540911415 5686308.24905176,378212.760199991 5686318.9478625,378212.260199991 5686320.9478625,378212.160719698 5686321.35172794,378210.446585784 5686328.4160374,378209.240187516 5686332.49923154,378209.158255013 5686332.77904163,378208.881223643 5686333.73373435,378203.781766391 5686335.21569191,378196.357012929 5686339,378195.78125 5686339,378185.138759113 5686339.95139809,378184.795091371 5686340.04557829,378179.0625 5686339.5,378177.875 5686339.5,378165.392523102 5686340.81279722,378153.456278236 5686344.69374098,378150.35466243 5686346.48582972,378150.083746888 5686346.55777525,378149.912122419 5686346.6370311,378146.715564864 5686347.54583242,378136.809675637 5686352.47421928,378130.977557062 5686356.87411719,378129.826006776 5686357.60976791,378129.090400571 5686358.29783583,378127.977144557 5686359.13770435,378126.719995225 5686360.51505457,378121.795121559 5686365.12166003,378115.270067483 5686373.9730616,378114.363817483 5686375.4730616,378109.032787365 5686386.83526913,378108.041070634 5686391.08733387,378106.49793905 5686395.26402874,378104.883738308 5686405.29322795,378104.791645467 5686405.28363495,378104.479145467 5686408.28363494,378104.273095291 5686410.75730283,378104.210595291 5686411.75730283,378104.460625361 5686411.77292971,378104.011629082 5686417.18125126,378105.5086817 5686429.37032847,378106.483657896 5686432.242566,378107.648244037 5686435.97468073,378102.5 5686435.5,378101.71875 5686435.5,378100.140074503 5686435.62021125,378098.9375 5686435.5,378097.375 5686435.5,378096.532809999 5686435.58222948,378094.464048687 5686435.09287082,378092.997400209 5686434.64880539,378091.567748734 5686434.50824866,378090.516878863 5686434.2870129,378090.516878863 5686434.2870129,378084.126208825 5686433.62160381,378083.974294417 5686433.57715324,378080.775310503 5686433.27270171,378078.172012418 5686433.00164121,378077.613969466 5686432.70398616,378076.813261773 5686432.07698234,378075.313261773 5686431.07698234,378075.313261774 5686431.07698234,378073.300528278 5686430.00340854,378065.135687228 5686425.43226216,378062.813099321 5686424.69792192,378061.979713227 5686424.26993765,378055.001087444 5686422.22797248,378053.476704246 5686421.74600324,378053.287766154 5686421.72664994,378051.068044417 5686421.07715324,378044.546690613 5686420.45650738,378042.728578699 5686420.04550051,378032.268467407 5686419.54753137,378021.881091886 5686420.87581271,378016.891153862 5686422.42999057,378014.45719621 5686419.01966198,378014.473765452 5686419.00827063,378014.130015452 5686418.50827063,378013.408422281 5686417.48183711,378012.689672281 5686416.48183711,378012.660771406 5686416.50260961,378010.295438955 5686413.18843491,378008.407105479 5686411.46554999,378005.599698655 5686408.12664379,378002.807542065 5686405.87815699,378002.658281672 5686405.27813361,378002.537271275 5686404.51946003,378002.319601725 5686403.91664792,378001.509047328 5686400.65823767,378000.936226672 5686399.46620892,377997.463887609 5686390.57638875,377997.186543718 5686390.13234884,377993.425308938 5686380.01567813,377990.519433217 5686375.16625725,377990.256324968 5686374.57196058,377989.591228767 5686373.61723916,377987.761869038 5686370.56434354,377986.35695907 5686368.97456259,377983.692357771 5686365.1496243,377980.052548883 5686361.61563751,377979.648463586 5686360.77474379,377979.631521291 5686357.75671207,377979.661743092 5686357.36987301,377979.800553564 5686356.10044252,377979.988053564 5686354.10044252,377980.133154709 5686352.24269717,377980.164404709 5686351.74269717,377980.164404709 5686351.74269717,377980.164404709 5686344.25730283,377980.008154709 5686341.75730283,377980.008154709 5686341.75730283,377978.371241693 5686331.09946776,377975.701958091 5686323.36591394,377974.053316086 5686315.95468901,377968.886638814 5686304.60317659,377961.484757713 5686294.56507198,377952.167498583 5686286.27410881,377950.108550497 5686285.09814125,377947.319310436 5686282.30449775,377945.843331616 5686281.29914387,377943.115449585 5686278.20904762,377942.50961659 5686277.42349735,377942.1745247 5686277.14318464,377939.609879151 5686274.23799976,377930.690005005 5686267.32630444,377920.633748104 5686262.20698962,377909.796808551 5686259.06113073,377898.5625 5686258,377898.21875 5686258,377894.21875 5686257.5,377892.28125 5686257.5,377881.638759113 5686258.45139809,377876.556073103 5686259.84427949,377871.743182592 5686260.6918947,377871.697717158 5686260.70942128,377870.328885159 5686260.91717613,377858.782694968 5686265.21478537,377848.357695104 5686271.78009807,377847.02882866 5686273.06278234,377843.640842367 5686275.02598664,377840.180629417 5686278.15547427,377840.174547147 5686278.14787143,377838.924547147 5686279.14787143,377838.991214461 5686279.23120558,377838.955557203 5686279.26345473,377835.845022471 5686281.527542,377828.122362464 5686289.76536579,377824.383122888 5686295.66825783,377823.558077582 5686296.77420516,377823.217682564 5686297.50806196,377822.079890051 5686299.30422031,377821.747704321 5686300.14520297,377820.49061854 5686302.16718427,377819.781681905 5686303.58505754,377818.05311854 5686306.66718427,377817.55311854 5686307.66718427,377815.330365766 5686313.37922188,377814.342888867 5686314.96469967,377810.176942326 5686326.05979658,377810.167740165 5686326.11633596,377806.610252117 5686333.52633404,377806.110252117 5686335.02633404,377805.839142079 5686336.31335692,377805.064867551 5686337.7451242,377801.601488028 5686348.93043951,377800.882738028 5686352.43043951,377800.912196992 5686352.43648911,377799.526600338 5686355.65831566,377797.074446436 5686367.89955748,377796.80394407 5686370.78491605,377796.791645467 5686370.78363494,377796.635395467 5686372.28363494,377796.543730068 5686373.38409386,377793.31736649 5686380.46917147,377792.78611649 5686381.96917147,377792.11064063 5686385.03397965,377790.642193022 5686388.51360413,377788.304345291 5686401.75730283,377788.304345291 5686401.75730283,377788.28836736 5686402.01294973,377788.177813823 5686403.27641872,377788.072895467 5686404.28363494,377788.011946436 5686404.89955748,377787.68397999 5686408.39786624,377787.574446436 5686409.39955748,377787.547481292 5686409.68718568,377787.479145467 5686410.28363494,377787.322895467 5686411.78363494,377787.261946436 5686412.39955748,377787.074446436 5686414.39955748,377787.019754505 5686415.01727121,377786.769754505 5686418.01727121,377786.878782577 5686429.15255025,377787.21236766 5686430.83570257),(378241.097744652 5686581.54216122,378241.116955388 5686581.55236693,378240.803657309 5686581.94224898,378241.097744652 5686581.54216122)) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestBoundary.xml geos-3.2.2/tests/xmltester/tests/general/TestBoundary.xml --- geos-3.1.0/tests/xmltester/tests/general/TestBoundary.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestBoundary.xml 2009-05-02 10:17:23.000000000 +0100 @@ -0,0 +1,165 @@ + + + + + P - point + + POINT(10 10) + + + + GEOMETRYCOLLECTION EMPTY + + + + + + mP - MultiPoint + + MULTIPOINT((10 10), (20 20)) + + + + GEOMETRYCOLLECTION EMPTY + + + + + + L - Line + + LINESTRING(10 10, 20 20) + + + + MULTIPOINT((10 10), (20 20)) + + + + + + L - closed + + LINESTRING(10 10, 20 20, 20 10, 10 10) + + + + MULTIPOINT EMPTY + + + + + + L - self-intersecting with boundary + + LINESTRING(40 40, 100 100, 180 100, 180 180, 100 180, 100 100) + + + + MULTIPOINT((40 40), (100 100)) + + + + + + mL - 2 lines with common endpoint + + MULTILINESTRING( + (10 10, 20 20), + (20 20, 30 30)) + + + + MULTIPOINT((10 10), (30 30)) + + + + + + mL - 3 lines with common endpoint + + MULTILINESTRING( + (10 10, 20 20), + (20 20, 30 20), + (20 20, 30 30)) + + + + MULTIPOINT((10 10), (20 20), (30 20), (30 30)) + + + + + + mL - 4 lines with common endpoint + + MULTILINESTRING( + (10 10, 20 20), + (20 20, 30 20), + (20 20, 30 30), + (20 20, 30 40)) + + + + MULTIPOINT((10 10), (30 20), (30 30), (30 40)) + + + + + + mL - 2 lines, one closed, with common endpoint + + MULTILINESTRING( + (10 10, 20 20), + (20 20, 20 30, 30 30, 30 20, 20 20)) + + + + MULTIPOINT((10 10), (20 20)) + + + + + + L - 1 line, self-intersecting, topologically equal to prev case + + MULTILINESTRING( + (10 10, 20 20, 20 30, 30 30, 30 20, 20 20)) + + + + MULTIPOINT((10 10), (20 20)) + + + + + + A - polygon with no holes + + POLYGON( + (40 60, 420 60, 420 320, 40 320, 40 60)) + + + + LINESTRING(40 60, 420 60, 420 320, 40 320, 40 60) + + + + + + A - polygon with 1 hole + + POLYGON( + (40 60, 420 60, 420 320, 40 320, 40 60), + (200 140, 160 220, 260 200, 200 140)) + + + + MULTILINESTRING( + (40 60, 420 60, 420 320, 40 320, 40 60), + (200 140, 160 220, 260 200, 200 140)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestBufferMitredJoin.xml geos-3.2.2/tests/xmltester/tests/general/TestBufferMitredJoin.xml --- geos-3.1.0/tests/xmltester/tests/general/TestBufferMitredJoin.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestBufferMitredJoin.xml 2009-05-02 10:01:39.000000000 +0100 @@ -0,0 +1,60 @@ + + + Test cases for buffers with mitred joins. + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + Polygon with very close vertices + +POLYGON ((588736.6028960398 4518922.914991864, 588736.1060708747 4518922.061957178, 588718.6830715544 4518930.620699637, 588712.0102834741 4518933.8985304395, 588722.7612465625 4518964.956739423, 588755.2073151038 4518948.2420851765, 588750.2892019567 4518938.490656119, 588750.2892047082 4518938.490654858, 588741.1098934844 4518920.290260831, 588736.6028960398 4518922.914991864)) + + +POLYGON ((588734.1297355227 4518928.603500288, 588720.8876067492 4518935.108463509, 588718.180507909 4518936.438254274, 588725.599306024 4518957.870248819, 588748.510613743 4518946.067444841, 588745.824857241 4518940.742239175, 588739.0370049385 4518927.28353524, 588734.7985587667 4518929.751873097, 588734.1297355227 4518928.603500288)) + + + + + Polygon with almost collinear segments + + POLYGON ((589300.089821923 4519627.577687806, 589296.6197410262 4519621.834087054, 589292.5450979208 4519615.089809029, 589282.7894421419 4519620.983829066, 589289.8814929381 4519632.722288636, 589300.089821923 4519627.577687806)) + + +POLYGON ((589293.0184401305 4519625.542333956, 589292.3401596148 4519624.419659127, 589290.8510825798 4519621.954964854, 589289.654619631 4519622.677825188, 589291.766473935 4519626.173276233, 589293.0184401305 4519625.542333956)) + + + + + Polygon with almost collinear segments + +POLYGON ((588978.2942617612 4519797.499233156, 588989.1612999197 4519792.050291001, 588982.5784094566 4519779.549041149, 588962.0866377753 4519790.334848753, 588967.4026187821 4519802.960530801, 588978.2942617612 4519797.499233156)) + + +POLYGON ((588976.0531144794 4519793.029640461, 588982.3607149989 4519789.866888121, 588980.48352001 4519786.3019976355, 588968.47502784 4519792.622646146, 588969.9375199836 4519796.09612748, 588976.0531144794 4519793.029640461)) + + + + + Polygon with almost collinear segments + +POLYGON ((589099.8017397423 4518490.719003885, 589097.1198886324 4518486.20858194, 589090.9424687021 4518475.819013388, 589069.8993093553 4518487.1362185385, 589078.7377975255 4518502.093799692, 589081.1515112884 4518509.334764771, 589103.7370954598 4518497.015419995, 589099.8017397423 4518490.719003885)) + + +POLYGON ((589095.5298653984 4518493.317948498, 589092.8222002359 4518488.763943842, 589089.0925332544 4518482.491158241, 589076.8521287646 4518489.074160654, 589083.3129233124 4518500.0079495255, 589084.0046933009 4518502.083060501, 589096.6851902619 4518495.166462162, 589095.5298653984 4518493.317948498)) + + + + + Polygon with very close vertices + +POLYGON ((587854.8616905196 4519121.941123185, 587863.6671614297 4519138.176489661, 587863.9386104685 4519138.676991724, 587880.5408633598 4519129.672513268, 587871.463857397 4519112.9366913745, 587854.8616905196 4519121.941123185)) + + +POLYGON ((587861.6406480775 4519123.952511722, 587865.9500049312 4519131.898025201, 587873.7618842344 4519127.661136427, 587869.4524883915 4519119.715644092, 587861.6406480775 4519123.952511722)) + + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestBuffer.xml geos-3.2.2/tests/xmltester/tests/general/TestBuffer.xml --- geos-3.1.0/tests/xmltester/tests/general/TestBuffer.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestBuffer.xml 2009-05-02 10:01:39.000000000 +0100 @@ -0,0 +1,119 @@ + + + Basic buffer test cases. + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + Point + + + POINT (100 100) + + POLYGON EMPTY + POLYGON EMPTY + + POLYGON ((110 100, 109.80785280403231 98.04909677983872, 109.23879532511287 96.1731656763491, 108.31469612302546 94.44429766980397, 107.07106781186548 92.92893218813452, 105.55570233019603 91.68530387697454, 103.8268343236509 90.76120467488713, 101.95090322016128 90.19214719596769, 100 90, 98.04909677983872 90.19214719596769, 96.1731656763491 90.76120467488713, 94.44429766980397 91.68530387697454, 92.92893218813452 92.92893218813452, 91.68530387697454 94.44429766980397, 90.76120467488713 96.1731656763491, 90.19214719596769 98.04909677983872, 90 100.00000000000001, 90.19214719596769 101.9509032201613, 90.76120467488714 103.82683432365091, 91.68530387697456 105.55570233019603, 92.92893218813454 107.07106781186549, 94.44429766980399 108.31469612302547, 96.17316567634911 109.23879532511287, 98.04909677983873 109.80785280403231, 100.00000000000003 110, 101.95090322016131 109.8078528040323, 103.82683432365093 109.23879532511286, 105.55570233019606 108.31469612302544, 107.0710678118655 107.07106781186545, 108.31469612302547 105.555702330196, 109.23879532511287 103.82683432365086, 109.80785280403231 101.95090322016124, 110 100)) + + + + + + Line + + + LINESTRING (10 10, 100 100) + + POLYGON EMPTY + POLYGON EMPTY + + POLYGON ((92.92893218813452 107.07106781186548, 94.44429766980397 108.31469612302546, 96.1731656763491 109.23879532511287, 98.04909677983872 109.80785280403231, 100 110, 101.95090322016128 109.80785280403231, 103.8268343236509 109.23879532511287, 105.55570233019603 108.31469612302546, 107.07106781186548 107.07106781186548, 108.31469612302546 105.55570233019603, 109.23879532511287 103.8268343236509, 109.80785280403231 101.95090322016128, 110 100, 109.80785280403231 98.04909677983872, 109.23879532511286 96.1731656763491, 108.31469612302544 94.44429766980397, 107.07106781186548 92.92893218813452, 17.071067811865476 2.9289321881345254, 15.555702330196024 1.6853038769745474, 13.826834323650898 0.7612046748871322, 11.950903220161283 0.1921471959676957, 10 0, 8.049096779838719 0.1921471959676957, 6.173165676349103 0.7612046748871322, 4.44429766980398 1.6853038769745474, 2.9289321881345254 2.9289321881345245, 1.6853038769745474 4.444297669803978, 0.7612046748871322 6.173165676349101, 0.1921471959676957 8.049096779838713, 0 9.999999999999998, 0.1921471959676957 11.950903220161283, 0.761204674887134 13.8268343236509, 1.685303876974551 15.555702330196027, 2.9289321881345254 17.071067811865476, 92.92893218813452 107.07106781186548)) + + + + + + Polygon + + + POLYGON ((100 100, 100 200, 200 200, 200 100, 100 100)) + + POLYGON EMPTY + POLYGON ((110 110, 110 190, 190 190, 190 110, 110 110)) + POLYGON ((100 100, 100 200, 200 200, 200 100, 100 100)) + + POLYGON ((100 90, 98.04909677983872 90.19214719596769, 96.1731656763491 90.76120467488714, 94.44429766980397 91.68530387697454, 92.92893218813452 92.92893218813452, 91.68530387697454 94.44429766980397, 90.76120467488713 96.1731656763491, 90.19214719596769 98.04909677983872, 90 100, 90 200, 90.19214719596769 201.95090322016128, 90.76120467488713 203.8268343236509, 91.68530387697454 205.55570233019603, 92.92893218813452 207.07106781186548, 94.44429766980397 208.31469612302544, 96.1731656763491 209.23879532511287, 98.04909677983872 209.8078528040323, 100 210, 200 210, 201.95090322016128 209.8078528040323, 203.8268343236509 209.23879532511287, 205.55570233019603 208.31469612302544, 207.07106781186548 207.07106781186548, 208.31469612302544 205.55570233019603, 209.23879532511287 203.8268343236509, 209.8078528040323 201.95090322016128, 210 200, 210 100, 209.8078528040323 98.04909677983872, 209.23879532511287 96.1731656763491, 208.31469612302544 94.44429766980397, 207.07106781186548 92.92893218813452, 205.55570233019603 91.68530387697454, 203.8268343236509 90.76120467488713, 201.95090322016128 90.19214719596769, 200 90, 100 90)) + + + POLYGON ((100 80, 96.09819355967743 80.3842943919354, 92.3463313526982 81.52240934977428, 88.88859533960796 83.37060775394909, 85.85786437626905 85.85786437626905, 83.37060775394909 88.88859533960796, 81.52240934977426 92.3463313526982, 80.38429439193538 96.09819355967743, 80 100, 80 200, 80.38429439193538 203.90180644032256, 81.52240934977426 207.6536686473018, 83.37060775394909 211.11140466039205, 85.85786437626905 214.14213562373095, 88.88859533960796 216.6293922460509, 92.3463313526982 218.47759065022575, 96.09819355967744 219.61570560806462, 100 220, 200 220, 203.90180644032256 219.61570560806462, 207.6536686473018 218.47759065022575, 211.11140466039205 216.6293922460509, 214.14213562373095 214.14213562373095, 216.6293922460509 211.11140466039205, 218.47759065022575 207.6536686473018, 219.61570560806462 203.90180644032256, 220 200, 220 100, 219.61570560806462 96.09819355967744, 218.47759065022575 92.3463313526982, 216.6293922460509 88.88859533960796, 214.14213562373095 85.85786437626905, 211.11140466039205 83.37060775394909, 207.6536686473018 81.52240934977426, 203.90180644032256 80.38429439193538, 200 80, 100 80)) + + + POLYGON ((100 0, 80.49096779838713 1.921471959676964, 61.73165676349097 7.61204674887135, 44.442976698039786 16.85303876974548, 29.28932188134523 29.28932188134526, 16.853038769745453 44.44297669803981, 7.612046748871322 61.73165676349103, 1.9214719596769498 80.49096779838716, 0 100, 0 200, 1.9214719596769498 219.50903220161285, 7.612046748871322 238.268343236509, 16.853038769745467 255.55702330196021, 29.28932188134526 270.71067811865476, 44.44297669803981 283.14696123025453, 61.731656763491024 292.3879532511287, 80.49096779838717 298.078528040323, 100 300, 200 300, 219.50903220161283 298.078528040323, 238.268343236509 292.3879532511287, 255.55702330196021 283.14696123025453, 270.71067811865476 270.71067811865476, 283.14696123025453 255.55702330196021, 292.3879532511287 238.26834323650897, 298.078528040323 219.50903220161283, 300 200, 300 100, 298.078528040323 80.49096779838717, 292.3879532511287 61.731656763491024, 283.14696123025453 44.44297669803978, 270.71067811865476 29.289321881345245, 255.55702330196021 16.85303876974548, 238.268343236509 7.612046748871322, 219.50903220161283 1.9214719596769498, 200 0, 100 0)) + + + + + + Polygon + + + POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), (260 280, 180 200, 100 280, 100 100, 260 100, 260 280)) + + POLYGON EMPTY + + MULTIPOLYGON (((90 100, 90.19214719596769 98.04909677983872, 90.76120467488713 96.1731656763491, 91.68530387697454 94.44429766980397, 92.92893218813452 92.92893218813452, 94.44429766980397 91.68530387697454, 96.1731656763491 90.76120467488713, 98.04909677983872 90.19214719596769, 100 90, 90 90, 90 100)), + ((260 90, 261.9509032201613 90.19214719596769, 263.82683432365087 90.76120467488713, 265.555702330196 91.68530387697454, 267.0710678118655 92.92893218813452, 268.31469612302544 94.44429766980397, 269.23879532511285 96.1731656763491, 269.8078528040323 98.04909677983872, 270 100, 270 90, 260 90)), + ((270 280, 269.8078528040323 281.9509032201613, 269.23879532511285 283.82683432365087, 268.31469612302544 285.555702330196, 267.0710678118655 287.0710678118655, 265.555702330196 288.31469612302544, 263.82683432365087 289.23879532511285, 261.9509032201613 289.8078528040323, 260 290, 270 290, 270 280)), + ((260 290, 258.0490967798387 289.8078528040323, 256.17316567634913 289.23879532511285, 254.44429766980397 288.31469612302544, 252.92893218813452 287.0710678118655, 180 214.14213562373095, 107.07106781186548 287.0710678118655, 105.55570233019603 288.31469612302544, 103.8268343236509 289.23879532511285, 101.95090322016128 289.8078528040323, 100 290, 260 290)), + ((100 290, 98.04909677983872 289.8078528040323, 96.1731656763491 289.23879532511285, 94.44429766980397 288.31469612302544, 92.92893218813452 287.0710678118655, 91.68530387697454 285.555702330196, 90.76120467488713 283.82683432365087, 90.19214719596769 281.9509032201613, 90 280, 90 290, 100 290))) + + + POLYGON ((80 300, 280 300, 280 80, 80 80, 80 300), + (260 280, 180 200, 100 280, 100 100, 260 100, 260 280)) + + + POLYGON ((70 300, 70.19214719596769 301.9509032201613, 70.76120467488713 303.82683432365087, 71.68530387697454 305.555702330196, 72.92893218813452 307.0710678118655, 74.44429766980397 308.31469612302544, 76.1731656763491 309.23879532511285, 78.04909677983872 309.8078528040323, 80 310, 280 310, 281.9509032201613 309.8078528040323, 283.82683432365087 309.23879532511285, 285.555702330196 308.31469612302544, 287.0710678118655 307.0710678118655, 288.31469612302544 305.555702330196, 289.23879532511285 303.82683432365087, 289.8078528040323 301.9509032201613, 290 300, 290 80, 289.8078528040323 78.04909677983872, 289.23879532511285 76.1731656763491, 288.31469612302544 74.44429766980397, 287.0710678118655 72.92893218813452, 285.555702330196 71.68530387697454, 283.82683432365087 70.76120467488713, 281.9509032201613 70.19214719596769, 280 70, 80 70, 78.04909677983872 70.19214719596769, 76.1731656763491 70.76120467488714, 74.44429766980397 71.68530387697454, 72.92893218813452 72.92893218813452, 71.68530387697454 74.44429766980397, 70.76120467488713 76.1731656763491, 70.19214719596769 78.04909677983872, 70 80, 70 300), + (250 255.85786437626905, 187.07106781186548 192.92893218813452, 185.55570233019603 191.68530387697456, 183.8268343236509 190.76120467488713, 181.95090322016128 190.1921471959677, 180 190, 178.04909677983872 190.1921471959677, 176.1731656763491 190.76120467488713, 174.44429766980397 191.68530387697456, 172.92893218813452 192.92893218813452, 110 255.85786437626905, 110 110, 250 110, 250 255.85786437626905)) + + + POLYGON ((60 300, 60.38429439193539 303.90180644032256, 61.522409349774264 307.6536686473018, 63.370607753949095 311.11140466039205, 65.85786437626905 314.14213562373095, 68.88859533960796 316.6293922460509, 72.3463313526982 318.47759065022575, 76.09819355967744 319.6157056080646, 80 320, 280 320, 283.90180644032256 319.6157056080646, 287.6536686473018 318.47759065022575, 291.11140466039205 316.6293922460509, 294.14213562373095 314.14213562373095, 296.6293922460509 311.11140466039205, 298.47759065022575 307.6536686473018, 299.6157056080646 303.90180644032256, 300 300, 300 80, 299.6157056080646 76.09819355967744, 298.47759065022575 72.3463313526982, 296.6293922460509 68.88859533960796, 294.14213562373095 65.85786437626905, 291.11140466039205 63.370607753949095, 287.6536686473018 61.522409349774264, 283.90180644032256 60.38429439193539, 280 60, 80 60, 76.09819355967743 60.3842943919354, 72.3463313526982 61.52240934977427, 68.88859533960796 63.370607753949095, 65.85786437626905 65.85786437626905, 63.37060775394909 68.88859533960796, 61.522409349774264 72.3463313526982, 60.38429439193539 76.09819355967743, 60 80, 60 300), + (240 231.7157287525381, 194.14213562373095 185.85786437626905, 191.11140466039205 183.3706077539491, 187.6536686473018 181.52240934977425, 183.90180644032256 180.38429439193538, 180 180, 176.09819355967744 180.38429439193538, 172.3463313526982 181.52240934977425, 168.88859533960795 183.3706077539491, 165.85786437626905 185.85786437626905, 120 231.7157287525381, 120 120, 240 120, 240 231.7157287525381)) + + + POLYGON ((-20 300, -18.07852804032305 319.50903220161285, -12.387953251128678 338.268343236509, -3.146961230254533 355.5570233019602, 9.28932188134526 370.71067811865476, 24.442976698039807 383.14696123025453, 41.731656763491024 392.3879532511287, 60.49096779838718 398.078528040323, 80 400, 280 400, 299.50903220161285 398.078528040323, 318.268343236509 392.3879532511287, 335.5570233019602 383.14696123025453, 350.71067811865476 370.71067811865476, 363.14696123025453 355.5570233019602, 372.3879532511287 338.268343236509, 378.078528040323 319.50903220161285, 380 300, 380 80, 378.078528040323 60.490967798387175, 372.3879532511287 41.731656763491024, 363.14696123025453 24.44297669803978, 350.71067811865476 9.289321881345245, 335.5570233019602 -3.1469612302545187, 318.268343236509 -12.387953251128678, 299.50903220161285 -18.07852804032305, 280 -20, 80 -20, 60.49096779838713 -18.078528040323036, 41.73165676349097 -12.38795325112865, 24.442976698039786 -3.1469612302545187, 9.28932188134523 9.28932188134526, -3.146961230254547 24.442976698039807, -12.387953251128678 41.73165676349103, -18.07852804032305 60.49096779838716, -20 80, -20 300)) + + + + + + MultiLineString which caused failure for distance > 10 in ver 1.10 + + + MULTILINESTRING ((1335558.59524 631743.01449, 1335572.28215 631775.89056, 1335573.2578018496 631782.1915185435), + (1335573.2578018496 631782.1915185435, 1335576.62035 631803.90754), + (1335573.2578018496 631782.1915185435, 1335580.70187 631802.08139)) + + +POLYGON ((1335548.595256113 631743.032441783, 1335548.790905219 631744.982996921, 1335549.363329412 631746.857903442, 1335562.585102127 631778.616709872, 1335563.375568292 631783.721701512, 1335566.738116443 631805.437722968, 1335567.226524677 631807.336249059, 1335568.075932351 631809.103011783, 1335569.253697204 631810.67011544, 1335570.714558392 631811.977337115, 1335572.402375839 631812.974441013, 1335574.252287668 631813.62310899, 1335576.193202805 631813.898413099, 1335578.150532968 631813.789773558, 1335580.049059059 631813.301365323, 1335581.815821783 631812.451957649, 1335582.575762837 631811.880820023, 1335584.207062652 631811.446945214, 1335585.966840541 631810.583159534, 1335587.524288564 631809.392655618, 1335588.819554868 631807.921183865, 1335589.802863095 631806.225292108, 1335590.436425262 631804.370152517, 1335590.695893928 631802.427057067, 1335590.57129786 631800.470677824, 1335590.067425214 631798.576197348, 1335582.983023804 631779.64732263, 1335582.164383558 631774.360377032, 1335581.514060589 631772.047146558, 1335567.827150589 631739.171076558, 1335566.899949249 631737.44387026, 1335565.653602591 631735.930739755, 1335564.136007016 631734.689833799, 1335562.405482873 631733.768839712, 1335560.528533233 631733.203150781, 1335558.577288218 631733.014506113, 1335556.626733079 631733.210155219, 1335554.751826558 631733.782579411, 1335553.02462026 631734.709780751, 1335551.511489755 631735.956127409, 1335550.270583799 631737.473722984, 1335549.349589712 631739.204247127, 1335548.783900781 631741.081196768, 1335548.595256113 631743.032441783)) + + +POLYGON ((1335543.59526417 631743.041417674, 1335543.888737828 631745.967250381, 1335544.747374117 631748.779610163, 1335557.736578191 631779.97978481, 1335558.434451514 631784.486792996, 1335561.796999664 631806.202814452, 1335562.529612016 631809.050603588, 1335563.803723527 631811.700747674, 1335565.570370805 631814.051403159, 1335567.761662587 631816.012235673, 1335570.293388759 631817.507891519, 1335573.068256502 631818.480893485, 1335575.979629207 631818.893849648, 1335578.915624452 631818.730890336, 1335581.763413588 631817.998277984, 1335584.413557674 631816.724166473, 1335584.790893177 631816.440578026, 1335585.959658978 631816.129722821, 1335588.599325811 631814.834044301, 1335590.935497846 631813.048288427, 1335592.878397303 631810.841080797, 1335594.353359643 631808.297243162, 1335595.303702892 631805.514533776, 1335595.692905893 631802.5998906, 1335595.50601179 631799.665321737, 1335594.750202821 631796.823601022, 1335587.845634781 631778.375224674, 1335587.105500336 631773.595285547, 1335586.130015883 631770.125439837, 1335572.443105883 631737.249369837, 1335571.052303874 631734.65856039, 1335569.182783886 631732.388864632, 1335566.906390525 631730.527505698, 1335564.310604309 631729.146014568, 1335561.495179849 631728.297481171, 1335558.568312326 631728.01451417, 1335555.642479619 631728.307987828, 1335552.830119837 631729.166624117, 1335550.23931039 631730.557426126, 1335547.969614632 631732.426946114, 1335546.108255698 631734.703339476, 1335544.726764568 631737.299125691, 1335543.878231171 631740.114550151, 1335543.59526417 631743.041417674)) + + + + + + Degenerate polygon which caused error in ver 1.10 + + + POLYGON ((-69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90, -69 -90)) + + +POLYGON EMPTY + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestCentroid.xml geos-3.2.2/tests/xmltester/tests/general/TestCentroid.xml --- geos-3.1.0/tests/xmltester/tests/general/TestCentroid.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestCentroid.xml 2009-05-02 10:01:39.000000000 +0100 @@ -0,0 +1,149 @@ + + + + + P - single point + POINT(10 10) + POINT(10 10) + + + + mP - two points + MULTIPOINT(10 10, 20 20 ) + POINT(15 15) + + + + mP - 4 points + MULTIPOINT(10 10, 20 20, 10 20, 20 10) + POINT(15 15) + + + + L - single segment + LINESTRING(10 10, 20 20) + POINT(15 15) + + + + L - two segments + LINESTRING (60 180, 120 100, 180 180) + POINT (120 140) + + + + L - elongated horseshoe + LINESTRING (80 0, 80 120, 120 120, 120 0)) + + POINT (100 69) + + + + + mL - two single-segment lines + MULTILINESTRING ((0 0, 0 100), (100 0, 100 100)) + POINT (50 50) + + + + mL - two concentric rings, offset + MULTILINESTRING ((0 0, 0 200, 200 200, 200 0, 0 0), + (60 180, 20 180, 20 140, 60 140, 60 180)) + + POINT (90 110) + + + + mL - complicated symmetrical collection of lines + MULTILINESTRING ((20 20, 60 60), + (20 -20, 60 -60), + (-20 -20, -60 -60), + (-20 20, -60 60), + (-80 0, 0 80, 80 0, 0 -80, -80 0), + (-40 20, -40 -20), + (-20 40, 20 40), + (40 20, 40 -20), + (20 -40, -20 -40)) + POINT (0 0) + + + + A - box + POLYGON ((40 160, 160 160, 160 40, 40 40, 40 160)) + POINT (100 100) + + + + A - box with hole + POLYGON ((0 200, 200 200, 200 0, 0 0, 0 200), (20 180, 80 180, 80 20, 20 20, 20 180)) + POINT (116 100) + + + + A - box with offset hole (showing difference between area and line centroid) + POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), + (60 180, 20 180, 20 140, 60 140, 60 180)) + + POINT (103 98) + + + + A - box with 2 symmetric holes + POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0), + (60 180, 20 180, 20 140, 60 140, 60 180), + (180 60, 140 60, 140 20, 180 20, 180 60)) + + POINT (100 100) + + + + mA - symmetric angles + MULTIPOLYGON (((0 40, 0 140, 140 140, 140 120, 20 120, 20 40, 0 40)), + ((0 0, 0 20, 120 20, 120 100, 140 100, 140 0, 0 0))) + + POINT (70 70) + + + + GC - two adjacent polygons (showing that centroids are additive) + GEOMETRYCOLLECTION (POLYGON ((0 200, 20 180, 20 140, 60 140, 200 0, 0 0, 0 200)), + POLYGON ((200 200, 0 200, 20 180, 60 180, 60 140, 200 0, 200 200))) + + POINT (103 98) + + + + GC - heterogeneous collection of lines, points + GEOMETRYCOLLECTION (LINESTRING (80 0, 80 120, 120 120, 120 0), + MULTIPOINT (20 60, 40 80, 60 60)) + + POINT (100 69) + + + + GC - heterogeneous collection of polygons, line + GEOMETRYCOLLECTION (POLYGON ((0 40, 40 40, 40 0, 0 0, 0 40)), + LINESTRING (80 0, 80 80, 120 40)) + + POINT (20 20) + + + + GC - heterogeneous collection of polygons, lines, points + GEOMETRYCOLLECTION (POLYGON ((0 40, 40 40, 40 0, 0 0, 0 40)), + LINESTRING (80 0, 80 80, 120 40), + MULTIPOINT (20 60, 40 80, 60 60)) + + POINT (20 20) + + + + GC - overlapping polygons + GEOMETRYCOLLECTION (POLYGON ((20 100, 20 -20, 60 -20, 60 100, 20 100)), + POLYGON ((-20 60, 100 60, 100 20, -20 20, -20 60))) + + POINT (40 40) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestConvexHull-big.xml geos-3.2.2/tests/xmltester/tests/general/TestConvexHull-big.xml --- geos-3.1.0/tests/xmltester/tests/general/TestConvexHull-big.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestConvexHull-big.xml 2009-05-02 10:16:07.000000000 +0100 @@ -0,0 +1,17 @@ + + + + + Big convex hull + + MULTIPOINT((-1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 -1000000000000000000000000), (1000000000000000000000000 1000000000000000000000000), (-1000000000000000000000000 1000000000000000000000000), (0 0)) + + + + POLYGON( + (-1000000000000000000000000 -1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, -1000000000000000000000000 -1000000000000000000000000)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestConvexHull.xml geos-3.2.2/tests/xmltester/tests/general/TestConvexHull.xml --- geos-3.1.0/tests/xmltester/tests/general/TestConvexHull.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestConvexHull.xml 2009-05-02 10:16:07.000000000 +0100 @@ -0,0 +1,175 @@ + + + + + Several points collinear and overlapping + + MULTIPOINT((130 240), (130 240), (130 240), (570 240), (570 240), (570 240), (650 240)) + + + + LINESTRING(130 240, 650 240) + + + + + + Convex hull + + POLYGON( + (40 60, 420 60, 420 320, 40 320, 40 60), + (200 140, 160 220, 260 200, 200 140)) + + + + POLYGON( + (40 60, 40 320, 420 320, 420 60, 40 60)) + + + + + + Convex hull + + POLYGON( + (10 10, 100 10, 100 100, 10 100, 10 10)) + + + + POLYGON( + (10 10, 10 100, 100 100, 100 10, 10 10)) + + + + + + Point + + POINT(20 20) + + + + POINT(20 20) + + + + + + Horizontal Line + + LINESTRING(30 220, 240 220, 240 220) + + + + LINESTRING(30 220, 240 220) + + + + + + Vertical Line + + LINESTRING(110 290, 110 100, 110 100) + + + + LINESTRING(110 290, 110 100) + + + + + + Spiral + + LINESTRING(120 230, 120 200, 150 180, 180 220, 160 260, 90 250, 80 190, 140 110, 230 150, + 240 230, 180 320, 60 310, 40 160, 140 50, 280 140) + + + + POLYGON( + (140 50, 40 160, 60 310, 180 320, 240 230, 280 140, 140 50)) + + + + + + Starlike Polygon + + POLYGON( + (200 360, 230 210, 100 190, 270 150, 360 10, 320 200, 490 230, 280 240, 200 360), + (220 300, 250 200, 150 190, 290 150, 330 70, 310 210, 390 230, 280 230, 220 300)) + + + + POLYGON( + (360 10, 100 190, 200 360, 490 230, 360 10)) + + + + + + Most of the points in one area + + MULTIPOINT ((70 340), (70 50), (430 50), (420 340), (340 120), (390 110), (390 70), (350 100), (350 50), (370 90), (320 80), (360 120), (350 80), (390 90), (420 80), (410 60), (410 100), (370 100), (380 60), (370 80), (380 100), (360 80), (370 80), (380 70), (390 80), (390 70), (410 70), (400 60), (410 60), (410 60), (410 60), (370 70), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50), (410 50)) + + + + POLYGON( + (70 50, 70 340, 420 340, 430 50, 70 50)) + + + + + + Multipoint + + MULTIPOINT ((140 350), (510 140), (110 140), (250 290), (250 50), (300 370), (450 310), (440 160), (290 280), (220 160), (100 260), (320 230), (200 280), (360 130), (330 210), (380 80), (220 210), (380 310), (260 150), (260 110), (170 130)) + + + + POLYGON( + (250 50, 110 140, 100 260, 140 350, 300 370, 450 310, 510 140, 380 80, 250 50)) + + + + + + GeometryCollection + + GEOMETRYCOLLECTION( + POINT(110 300), + POINT(100 110), + POINT(130 210), + POINT(150 210), + POINT(150 180), + POINT(130 170), + POINT(140 190), + POINT(130 200), + LINESTRING(240 50, 210 120, 270 80, 250 140, 330 70, 300 160, 340 130, 340 130), + POLYGON( + (210 340, 220 260, 150 270, 230 220, 230 140, 270 210, 360 240, 260 250, 260 280, + 240 270, 210 340), + (230 270, 230 250, 200 250, 240 220, 240 190, 260 220, 290 230, 250 230, 230 270))) + + + + POLYGON( + (240 50, 100 110, 110 300, 210 340, 360 240, 330 70, 240 50)) + + + + + + Collinear L + + MULTIPOINT ((50 320), (50 280), (50 230), (50 160), (50 120), (100 120), (160 120), (210 120), (210 180), (210 150), (180 180), (140 180), (140 210), (140 260), (160 180), (140 300), (140 320), (110 320), (80 320)) + + + + POLYGON( + (50 120, 50 320, 140 320, 210 180, 210 120, 50 120)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionAAPrec.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionAAPrec.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionAAPrec.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionAAPrec.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,828 @@ + + + + + AA - sliver triangle, cut by polygon + + POLYGON( + (10 10, 100 10, 10 11, 10 10)) + + + POLYGON( + (90 0, 200 0, 200 200, 90 200, 90 0)) + + + + true + + + + + LINESTRING(90 10, 100 10) + + + + + MULTIPOLYGON( + ( + (90 10, 10 10, 10 11, 90 10)), + ( + (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) + + + + + POLYGON( + (90 10, 10 10, 10 11, 90 10)) + + + + + MULTIPOLYGON( + ( + (90 10, 10 10, 10 11, 90 10)), + ( + (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) + + + + + + AA - polygon with outward sliver, cut by polygon + + POLYGON( + (100 10, 10 10, 90 11, 90 20, 100 20, 100 10)) + + + POLYGON( + (20 20, 0 20, 0 0, 20 0, 20 20)) + + + + true + + + + + LINESTRING(20 10, 10 10) + + + + + + AA - narrow wedge in polygon + + POLYGON((10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10)) + + + POLYGON((60 40, 40 40, 40 20, 60 20, 60 40)) + + + + true + + + + + POLYGON( + (50 40, 50 20, 40 20, 40 30, 40 40, 50 40)) + + + + + POLYGON( + (50 20, 50 10, 10 10, 10 30, 40 30, 10 31, 10 50, 50 50, 50 40, + 60 40, 60 20, 50 20)) + + + + + MULTIPOLYGON( + ( + (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), + ( + (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) + + + + + MULTIPOLYGON( + ( + (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), + ( + (50 20, 50 40, 60 40, 60 20, 50 20)), + ( + (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) + + + + + + AA - hole close to shell + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + POLYGON( + (0 30, 0 0, 30 0, 30 30, 0 30)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) + + + + + POLYGON( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) + + + + + + mAA - shells close together + + MULTIPOLYGON( + ( + (0 0, 100 0, 100 20, 0 20, 0 0)), + ( + (0 40, 0 21, 100 20, 100 40, 0 40))) + + + POLYGON( + (110 30, 90 30, 90 10, 110 10, 110 30)) + + + + true + + + + + GEOMETRYCOLLECTION( + LINESTRING(100 20, 90 20), + POLYGON( + (100 20, 100 10, 90 10, 90 20, 90 30, 100 30, 100 20))) + + + + + POLYGON( + (100 10, 100 0, 0 0, 0 20, 90 20, 0 21, 0 40, 100 40, 100 30, + 110 30, 110 10, 100 10)) + + + + + MULTIPOLYGON( + ( + (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), + ( + (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) + + + + + MULTIPOLYGON( + ( + (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), + ( + (100 10, 100 20, 100 30, 110 30, 110 10, 100 10)), + ( + (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) + + + + + + AA - A sliver triangle cutting all the way across B + + POLYGON( + (100 10, 0 10, 100 11, 100 10)) + + + POLYGON( + (20 20, 0 20, 0 0, 20 0, 20 20)) + + + + true + + + + + LINESTRING(20 10, 0 10) + + + + + MULTIPOLYGON( + ( + (100 10, 20 10, 100 11, 100 10)), + ( + (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) + + + + + POLYGON( + (100 10, 20 10, 100 11, 100 10)) + + + + + MULTIPOLYGON( + ( + (100 10, 20 10, 100 11, 100 10)), + ( + (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) + + + + + + AA - A polygon with sliver cutting all the way across B + + POLYGON( + (100 10, 0 10, 90 11, 90 20, 100 20, 100 10)) + + + POLYGON( + (20 20, 0 20, 0 0, 20 0, 20 20)) + + + + true + + + + + LINESTRING(20 10, 0 10) + + + + + MULTIPOLYGON( + ( + (100 10, 20 10, 90 11, 90 20, 100 20, 100 10)), + ( + (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) + + + + + + AA - hole close to shell, B coincident with A + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + POLYGON( + (10 30, 10 0, 30 10, 30 30, 10 30)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) + + + + + POLYGON( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) + + + + + + AA - A hole close to shell, B coincident with A + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + POLYGON( + (10 30, 10 10, 30 10, 30 30, 10 30)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + POLYGON( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + + AA - B hole close to shell, A coincident with B + + POLYGON( + (10 30, 10 10, 30 10, 30 30, 10 30)) + + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + POLYGON( + (10 10, 10 30, 30 30, 30 10, 10 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + + AA - B sliver crossing A triangle in line segment with length < 1 + + POLYGON( + (0 0, 200 0, 0 198, 0 0)) + + + POLYGON( + (280 60, 139 60, 280 70, 280 60)) + + + + true + + + + + POINT(139 60) + + + + + MULTIPOLYGON( + ( + (139 60, 200 0, 0 0, 0 198, 139 60)), + ( + (280 60, 139 60, 280 70, 280 60))) + + + + + POLYGON( + (139 60, 200 0, 0 0, 0 198, 139 60)) + + + + + MULTIPOLYGON( + ( + (139 60, 200 0, 0 0, 0 198, 139 60)), + ( + (280 60, 139 60, 280 70, 280 60))) + + + + + + AA - sliver triangles, at angle to each other + + POLYGON( + (0 0, 140 10, 0 20, 0 0)) + + + POLYGON( + (280 0, 139 10, 280 1, 280 0)) + + + + LINESTRING(140 10, 139 10) + + + + + + AA - sliver triangle with multiple intersecting boxes + + MULTIPOLYGON( + ( + (1 4, 1 1, 2 1, 2 4, 1 4)), + ( + (3 4, 3 1, 4 1, 4 4, 3 4)), + ( + (5 4, 5 1, 6 1, 6 4, 5 4)), + ( + (7 4, 7 1, 8 1, 8 4, 7 4)), + ( + (9 4, 9 1, 10 1, 10 4, 9 4))) + + + POLYGON( + (0 2, 11 3, 11 2, 0 2)) + + + + POLYGON( + (1 1, 1 4, 10 4, 10 1, 1 1)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(1 2, 2 2), + LINESTRING(3 2, 4 2), + POLYGON( + (6 3, 6 2, 5 2, 6 3)), + POLYGON( + (7 2, 7 3, 8 3, 8 2, 7 2)), + POLYGON( + (9 2, 9 3, 10 3, 10 2, 9 2))) + + + + +GEOMETRYCOLLECTION( + LINESTRING(0 2, 1 2), + LINESTRING(2 2, 3 2), + LINESTRING(4 2, 5 2), + POLYGON( + (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), + POLYGON( + (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), + POLYGON( + (5 2, 5 4, 6 4, 6 3, 7 3, 7 4, 8 4, 8 3, 9 3, + 9 4, 10 4, 10 3, 11 3, 11 2, 10 2, 10 1, 9 1, 9 2, 8 2, + 8 1, 7 1, 7 2, 6 2, 6 1, 5 1, 5 2))) + + + + MULTIPOLYGON( + ( + (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), + ( + (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), + ( + (5 2, 5 4, 6 4, 6 3, 5 2)), + ( + (6 2, 6 1, 5 1, 5 2, 6 2)), + ( + (7 3, 7 4, 8 4, 8 3, 7 3)), + ( + (8 2, 8 1, 7 1, 7 2, 8 2)), + ( + (9 3, 9 4, 10 4, 10 3, 9 3)), + ( + (10 2, 10 1, 9 1, 9 2, 10 2))) + + + + +GEOMETRYCOLLECTION( + LINESTRING(0 2, 1 2), + LINESTRING(2 2, 3 2), + LINESTRING(4 2, 5 2), + POLYGON( + (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), + POLYGON( + (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), + POLYGON( + (5 2, 5 4, 6 4, 6 3, 5 2)), + POLYGON( + (6 2, 6 1, 5 1, 5 2, 6 2)), + POLYGON( + (6 2, 6 3, 7 3, 7 2, 6 2)), + POLYGON( + (7 3, 7 4, 8 4, 8 3, 7 3)), + POLYGON( + (8 2, 8 1, 7 1, 7 2, 8 2)), + POLYGON( + (8 2, 8 3, 9 3, 9 2, 8 2)), + POLYGON( + (9 3, 9 4, 10 4, 10 3, 9 3)), + POLYGON( + (10 2, 10 1, 9 1, 9 2, 10 2)), + POLYGON( + (10 2, 10 3, 11 3, 11 2, 10 2))) + + + + + + AA - Polygon with hole with outward sliver, cut by polygon + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40), + (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) + + + POLYGON( + (200 160, 160 160, 160 80, 200 80, 200 160)) + + + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(180 120, 160 120), + POLYGON( + (180 160, 180 120, 180 80, 160 80, 160 120, 160 160, 180 160))) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, + 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + MULTIPOLYGON( + ( + (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, + 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)), + ( + (180 120, 180 160, 200 160, 200 80, 180 80, 180 120))) + + + + + + AA - Polygon with hole with outward sliver, cut by line + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40), + (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) + + + LINESTRING(160 140, 160 100) + + + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40)) + + + + + MULTILINESTRING( + (160 140, 160 120), + (160 120, 160 100)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + + AA - Polygon with inward sliver touching hole, cut by polygon + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), + (140 160, 80 120, 140 80, 140 160)) + + + POLYGON( + (200 160, 150 160, 150 80, 200 80, 200 160)) + + + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40)) + + + + + MULTIPOLYGON( + ( + (180 160, 180 120, 150 120, 150 160, 180 160)), + ( + (150 120, 180 119, 180 80, 150 80, 150 120))) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), + (140 160, 80 120, 140 80, 140 120, 140 160)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, + 20 40), + (140 160, 80 120, 140 80, 140 120, 140 160)) + + + + + MULTIPOLYGON( + ( + (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, + 20 40), + (140 160, 80 120, 140 80, 140 120, 140 160)), + ( + (150 120, 180 120, 180 160, 200 160, 200 80, 180 80, 180 119, 150 120))) + + + + + + AA - intersecting slivers, dimensional collapse + + POLYGON( + (83 33, 62 402, 68 402, 83 33)) + + + POLYGON( + (78 39, 574 76, 576 60, 78 39)) + + + + LINESTRING(83 33, 62 402, 68 402, 83 33) + + + + + POLYGON( + (83 33, 62 402, 68 402, 83 33)) + + + + + POINT(83 39) + + + + + GEOMETRYCOLLECTION( + LINESTRING(78 39, 83 39), + LINESTRING(83 33, 83 39), + POLYGON( + (83 39, 62 402, 68 402, 83 39)), + POLYGON( + (83 39, 574 76, 576 60, 83 39))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(83 33, 83 39), + POLYGON( + (83 39, 62 402, 68 402, 83 39))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(78 39, 83 39), + LINESTRING(83 33, 83 39), + POLYGON( + (83 39, 62 402, 68 402, 83 39)), + POLYGON( + (83 39, 574 76, 576 60, 83 39))) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionAA.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionAA.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionAA.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionAA.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,633 @@ + + + + + AA - simple polygons + + POLYGON( + (10 10, 100 10, 100 100, 10 100, 10 10)) + + + POLYGON( + (50 50, 200 50, 200 200, 50 200, 50 50)) + + + + POLYGON( + (50 50, 50 100, 100 100, 100 50, 50 50)) + + + + + POLYGON( + (10 10, 10 100, 50 100, 50 200, 200 200, 200 50, 100 50, 100 10, 10 10)) + + + + + POLYGON( + (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)) + + + + + MULTIPOLYGON( + ( + (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)), + ( + (50 100, 50 200, 200 200, 200 50, 100 50, 100 100, 50 100))) + + + + + + AA - A with hole intersecting B + + POLYGON( + (20 20, 20 160, 160 160, 160 20, 20 20), + (140 140, 40 140, 40 40, 140 40, 140 140)) + + + POLYGON( + (80 100, 220 100, 220 240, 80 240, 80 100)) + + + + POLYGON( + (80 140, 80 160, 160 160, 160 100, 140 100, 140 140, 80 140)) + + + + + POLYGON( + (20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), + (80 100, 80 140, 40 140, 40 40, 140 40, 140 100, 80 100)) + + + + + POLYGON( + (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, + 160 20, 20 20)) + + + + + MULTIPOLYGON( + ( + (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, + 160 20, 20 20)), + ( + (80 100, 80 140, 140 140, 140 100, 80 100)), + ( + (80 160, 80 240, 220 240, 220 100, 160 100, 160 160, 80 160))) + + + + + + AA - simple polygons #2 + + POLYGON( + (20 340, 330 380, 50 40, 20 340)) + + + POLYGON( + (210 320, 140 270, 0 270, 140 220, 210 320)) + + + + POLYGON( + (27 270, 140 270, 210 320, 140 220, 28 260, 27 270)) + + + + + POLYGON( + (20 340, 330 380, 50 40, 28 260, 0 270, 27 270, 20 340)) + + + + + POLYGON( + (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)) + + + + + MULTIPOLYGON( + ( + (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)), + ( + (27 270, 28 260, 0 270, 27 270))) + + + + + + AA - simple polygons intersecting in P, L and A + + POLYGON((0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0)) + + + POLYGON((220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0)) + + + + GEOMETRYCOLLECTION( + POINT(110 260), + LINESTRING(110 0, 110 60), + POLYGON( + (110 100, 40 140, 110 180, 180 140, 110 100))) + + + + + POLYGON( + (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), + (110 260, 40 220, 110 180, 180 220, 110 260), + (110 100, 40 60, 110 60, 180 60, 110 100)) + + + + + POLYGON( + (110 0, 0 0, 0 260, 110 260, 40 220, 110 180, 40 140, 110 100, 40 60, + 110 60, 110 0)) + + + + + POLYGON( + (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), + (110 260, 40 220, 110 180, 180 220, 110 260), + (110 180, 40 140, 110 100, 180 140, 110 180), + (110 100, 40 60, 110 60, 180 60, 110 100)) + + + + + + AA - simple polygons with two touching holes in their symDifference + + POLYGON( + (0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, + 0 0)) + + + POLYGON( + (230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, + 230 0)) + + + + POLYGON( + (120 0, 0 0, 0 190, 120 190, 230 190, 230 0, 120 0), + (120 100, 50 50, 120 50, 190 50, 120 100), + (120 100, 190 150, 120 150, 50 150, 120 100)) + + + + + + AmA - A simple, symDiff contains inversion + + POLYGON( + (0 0, 210 0, 210 230, 0 230, 0 0)) + + + MULTIPOLYGON( + ( + (40 20, 0 0, 20 40, 60 60, 40 20)), + ( + (60 90, 60 60, 90 60, 90 90, 60 90)), + ( + (70 120, 90 90, 100 120, 70 120)), + ( + (120 70, 90 90, 120 100, 120 70))) + + + + POLYGON( + (0 0, 0 230, 210 230, 210 0, 0 0), + (0 0, 40 20, 60 60, 20 40, 0 0), + (60 60, 90 60, 90 90, 60 90, 60 60), + (90 90, 120 70, 120 100, 90 90), + (90 90, 100 120, 70 120, 90 90)) + + + + + + AmA - A simple, B connected multiPolygon touching A at vertex + + POLYGON( + (0 0, 340 0, 340 300, 0 300, 0 0)) + + + MULTIPOLYGON( + ( + (40 20, 0 0, 20 40, 60 60, 40 20)), + ( + (60 100, 60 60, 100 60, 100 100, 60 100))) + + + + MULTIPOLYGON( + ( + (40 20, 0 0, 20 40, 60 60, 40 20)), + ( + (60 60, 60 100, 100 100, 100 60, 60 60))) + + + + + POLYGON( + (0 0, 0 300, 340 300, 340 0, 0 0), + (0 0, 40 20, 60 60, 20 40, 0 0), + (60 60, 100 60, 100 100, 60 100, 60 60)) + + + + + + AmA - A simple, B connected multiPolygon touching A at interior of edge + + POLYGON( + (0 0, 120 0, 120 120, 0 120, 0 0)) + + + MULTIPOLYGON( + ( + (60 20, 0 20, 60 60, 60 20)), + ( + (60 100, 60 60, 100 60, 100 100, 60 100))) + + + + MULTIPOLYGON( + ( + (60 20, 0 20, 60 60, 60 20)), + ( + (60 60, 60 100, 100 100, 100 60, 60 60))) + + + + + POLYGON( + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20)) + + + + + POLYGON( + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), + (0 20, 60 20, 60 60, 0 20), + (60 60, 100 60, 100 100, 60 100, 60 60)) + + + + + POLYGON( + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), + (0 20, 60 20, 60 60, 0 20), + (60 60, 100 60, 100 100, 60 100, 60 60)) + + + + + + AA - simple polygons with holes + + POLYGON( + (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), + (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) + + + POLYGON( + (300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), + (290 240, 240 200, 240 110, 290 80, 330 170, 290 240)) + + + + POLYGON( + (251 104, 217 57, 176 89, 210 130, 210 210, 172 226, 190 270, 217 285, 260 250, + 263 218, 240 200, 240 110, 251 104)) + + + + + MULTIPOLYGON( + ( + (217 57, 190 20, 60 40, 20 150, 60 260, 160 330, 217 285, 190 270, 172 226, + 140 240, 80 190, 90 100, 160 70, 176 89, 217 57)), + ( + (217 57, 251 104, 290 80, 330 170, 290 240, 263 218, 260 250, 217 285, 300 330, + 380 250, 380 50, 250 30, 217 57)), + ( + (263 218, 270 130, 251 104, 240 110, 240 200, 263 218)), + ( + (172 226, 210 210, 210 130, 176 89, 150 110, 150 170, 172 226))) + + + + + + AA - simple polygons with hole touching shell + + POLYGON ((20 0, 20 160, 200 160, 200 0, 20 0)) + + + POLYGON ((220 80, 0 80, 0 240, 220 240, 220 80), + (100 80, 120 120, 80 120, 100 80)) + + + + POLYGON ((20 80, 20 160, 200 160, 200 80, 100 80, 20 80), + (100 80, 120 120, 80 120, 100 80)) + + + + + POLYGON ((20 0, 20 80, 0 80, 0 240, 220 240, 220 80, 200 80, 200 0, 20 0)) + + + + + MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), + ((100 80, 80 120, 120 120, 100 80))) + + + + + MULTIPOLYGON (((20 0, 20 80, 100 80, 200 80, 200 0, 20 0)), + ((200 80, 200 160, 20 160, 20 80, 0 80, 0 240, 220 240, 220 80, 200 80)), + ((100 80, 80 120, 120 120, 100 80))) + + + + + + mAmA - complex polygons touching and overlapping + + MULTIPOLYGON( + ( + (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, + 200 200, 220 200, 220 340, 120 340)), + ( + (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, + 220 120, 220 100, 360 100, 360 200))) + + + MULTIPOLYGON( + ( + (100 220, 100 200, 300 200, 300 220, 100 220)), + ( + (280 180, 280 160, 300 160, 300 180, 280 180)), + ( + (220 140, 220 120, 240 120, 240 140, 220 140)), + ( + (180 220, 160 240, 200 240, 180 220))) + + + + MULTILINESTRING( + (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, + 200 200, 220 200, 220 340, 120 340), + (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, + 220 120, 220 100, 360 100, 360 200)) + + + + + POLYGON( + (220 100, 120 200, 120 340, 220 340, 360 200, 360 100, 220 100)) + + + + + GEOMETRYCOLLECTION( + POINT(200 240), + LINESTRING(300 200, 220 200), + LINESTRING(280 180, 300 180), + LINESTRING(300 180, 300 160), + LINESTRING(300 160, 280 160), + LINESTRING(220 140, 240 140), + LINESTRING(240 120, 220 120), + POLYGON( + (120 200, 120 220, 140 220, 140 200, 120 200)), + POLYGON( + (160 200, 160 220, 180 220, 180 200, 160 200)), + POLYGON( + (180 240, 180 220, 160 240, 180 240)), + POLYGON( + (200 200, 200 220, 220 220, 220 200, 200 200))) + + + + + POLYGON( + (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, + 220 120, 220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200, + 140 200, 120 200, 100 200, 100 220, 120 220), + (200 240, 200 280, 180 280, 180 240, 200 240), + (200 240, 180 220, 200 220, 200 240), + (160 240, 160 280, 140 280, 140 220, 160 220, 160 240), + (240 120, 300 120, 300 140, 240 140, 240 120)) + + + + + MULTIPOLYGON( + ( + (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, + 160 240, 160 280, 140 280, 140 220, 120 220)), + ( + (160 220, 160 240, 180 220, 160 220)), + ( + (300 200, 360 200, 360 100, 220 100, 220 120, 240 120, 300 120, 300 140, 240 140, + 220 140, 220 160, 280 160, 300 160, 300 180, 280 180, 220 180, 220 200, 300 200))) + + + + + MULTIPOLYGON( + ( + (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, + 160 240, 160 280, 140 280, 140 220, 120 220)), + ( + (120 220, 120 200, 100 200, 100 220, 120 220)), + ( + (140 200, 140 220, 160 220, 160 200, 140 200)), + ( + (160 220, 160 240, 180 220, 160 220)), + ( + (180 200, 180 220, 200 220, 200 200, 180 200)), + ( + (180 220, 180 240, 200 240, 180 220)), + ( + (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120, 220 140, + 220 160, 280 160, 280 180, 220 180, 220 200), + (240 120, 300 120, 300 140, 240 140, 240 120))) + + + + + + mAmA - complex polygons touching + + MULTIPOLYGON( + ( + (100 200, 100 180, 120 180, 120 200, 100 200)), + ( + (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, + 160 220, 220 220, 220 240, 60 240), + (80 220, 80 160, 140 160, 140 220, 80 220)), + ( + (280 220, 240 180, 260 160, 300 200, 280 220))) + + + MULTIPOLYGON( + ( + (80 220, 80 160, 140 160, 140 220, 80 220), + (100 200, 100 180, 120 180, 120 200, 100 200)), + ( + (220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, + 220 140, 320 140, 320 240, 220 240), + (240 220, 240 160, 300 160, 300 220, 240 220))) + + + + MULTILINESTRING( + (100 200, 100 180, 120 180, 120 200, 100 200), + (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, + 160 220, 220 220, 220 240, 60 240), + (80 220, 80 160, 140 160, 140 220, 80 220), + (280 220, 240 180, 260 160, 300 200, 280 220)) + + + + + POLYGON( + (60 140, 60 240, 220 240, 280 220, 300 200, 260 160, 220 140, 60 140)) + + + + + GEOMETRYCOLLECTION( + POINT(240 180), + POINT(260 160), + POINT(280 220), + POINT(300 200), + LINESTRING(100 200, 100 180), + LINESTRING(100 180, 120 180), + LINESTRING(120 180, 120 200), + LINESTRING(120 200, 100 200), + LINESTRING(220 140, 220 160), + LINESTRING(220 160, 160 160), + LINESTRING(160 160, 160 180), + LINESTRING(160 180, 200 180), + LINESTRING(200 200, 160 200), + LINESTRING(160 200, 160 220), + LINESTRING(160 220, 220 220), + LINESTRING(220 220, 220 240), + LINESTRING(80 220, 80 160), + LINESTRING(80 160, 140 160), + LINESTRING(140 160, 140 220), + LINESTRING(140 220, 80 220)) + + + + + MULTIPOLYGON( + ( + (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), + (200 200, 200 180, 220 180, 220 200, 200 200), + (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), + ( + (240 180, 280 220, 300 200, 260 160, 240 180))) + + + + + MULTIPOLYGON( + ( + (100 180, 100 200, 120 200, 120 180, 100 180)), + ( + (220 140, 60 140, 60 240, 220 240, 220 220, 160 220, 160 200, 200 200, 200 180, + 160 180, 160 160, 220 160, 220 140), + (80 220, 80 160, 140 160, 140 220, 80 220)), + ( + (240 180, 280 220, 300 200, 260 160, 240 180))) + + + + + MULTIPOLYGON( + ( + (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), + (200 200, 200 180, 220 180, 220 200, 200 200), + (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), + ( + (240 180, 280 220, 300 200, 260 160, 240 180))) + + + + + + AA - hole intersecting boundary to produce line + + POLYGON( + (60 160, 140 160, 140 60, 60 60, 60 160)) + + + POLYGON( + (160 160, 100 160, 100 100, 160 100, 160 160), + (140 140, 120 140, 120 120, 140 120, 140 140)) + + + + LINESTRING(60 160, 140 160, 140 60, 60 60, 60 160) + + + + + POLYGON( + (60 60, 60 160, 140 160, 140 60, 60 60)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(140 140, 140 120), + POLYGON( + (100 160, 140 160, 140 140, 120 140, 120 120, 140 120, 140 100, 100 100, 100 160))) + + + + + POLYGON( + (60 160, 100 160, 140 160, 160 160, 160 100, 140 100, 140 60, 60 60, 60 160)) + + + + + MULTIPOLYGON( + ( + (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), + ( + (140 140, 140 120, 120 120, 120 140, 140 140))) + + + + + MULTIPOLYGON( + ( + (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), + ( + (140 140, 140 160, 160 160, 160 100, 140 100, 140 120, 120 120, 120 140, 140 140))) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionLAPrec.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionLAPrec.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionLAPrec.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionLAPrec.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,59 @@ + + + + + LA - line and sliver intersecting, dimensional collapse + + POLYGON( + (95 9, 81 414, 87 414, 95 9)) + + + LINESTRING(93 13, 96 13) + + + + LINESTRING(95 9, 81 414, 87 414, 95 9) + + + + + POLYGON( + (95 9, 81 414, 87 414, 95 9)) + + + + + POINT(95 13) + + + + + GEOMETRYCOLLECTION( + LINESTRING(95 9, 95 13), + POLYGON( + (95 13, 81 414, 87 414, 95 13)), + LINESTRING(93 13, 95 13), + LINESTRING(95 13, 96 13)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(95 9, 95 13), + POLYGON( + (95 13, 81 414, 87 414, 95 13))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(95 9, 95 13), + POLYGON( + (95 13, 81 414, 87 414, 95 13)), + LINESTRING(93 13, 95 13), + LINESTRING(95 13, 96 13)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionLA.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionLA.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionLA.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionLA.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,522 @@ + + + + + LA - A and B simple + + LINESTRING(240 190, 120 120) + + + POLYGON( + (110 240, 50 80, 240 70, 110 240)) + + + + LINESTRING(177 153, 120 120) + + + + + GEOMETRYCOLLECTION( + LINESTRING(240 190, 177 153), + POLYGON( + (177 153, 240 70, 50 80, 110 240, 177 153))) + + + + + LINESTRING(240 190, 177 153) + + + + + GEOMETRYCOLLECTION( + LINESTRING(240 190, 177 153), + POLYGON( + (177 153, 240 70, 50 80, 110 240, 177 153))) + + + + + + LA - A intersects B-hole + + LINESTRING(0 100, 100 100, 200 200) + + + POLYGON( + (30 240, 260 30, 30 30, 30 240), + (80 140, 80 80, 140 80, 80 140)) + + + + MULTILINESTRING( + (30 100, 80 100), + (110 110, 140 140)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(0 100, 30 100), + LINESTRING(80 100, 100 100, 110 110), + LINESTRING(140 140, 200 200), + POLYGON( + (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), + (80 140, 80 100, 80 80, 140 80, 110 110, 80 140))) + + + + + MULTILINESTRING( + (0 100, 30 100), + (80 100, 100 100, 110 110), + (140 140, 200 200)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(0 100, 30 100), + LINESTRING(80 100, 100 100, 110 110), + LINESTRING(140 140, 200 200), + POLYGON( + (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), + (80 140, 80 100, 80 80, 140 80, 110 110, 80 140))) + + + + + + LA - A intersects B-hole #2 + + LINESTRING(40 340, 200 250, 120 180, 160 110, 270 40) + + + POLYGON( + (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), + (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) + + + + MULTILINESTRING( + (114 298, 200 250, 173 226), + (182 96, 225 68)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 340, 114 298), + LINESTRING(173 226, 120 180, 160 110, 182 96), + LINESTRING(225 68, 270 40), + POLYGON( + (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, + 114 298), + (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240))) + + + + + MULTILINESTRING( + (40 340, 114 298), + (173 226, 120 180, 160 110, 182 96), + (225 68, 270 40)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 340, 114 298), + LINESTRING(173 226, 120 180, 160 110, 182 96), + LINESTRING(225 68, 270 40), + POLYGON( + (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, + 114 298), + (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240))) + + + + + + mLmA - A and B complex, disjoint + + MULTIPOLYGON( + ( + (60 320, 60 80, 300 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + ( + (120 160, 140 160, 140 140, 120 160))) + + + MULTILINESTRING( + (100 240, 100 180, 160 180, 160 120, 220 120), + (40 360, 40 60, 340 60, 40 360, 40 20), + (120 120, 120 140, 100 140, 100 120, 140 120)) + + + + POLYGON( + (60 80, 60 320, 300 80, 60 80)) + + + + + MULTILINESTRING( + (60 320, 60 80, 300 80, 60 320), + (80 280, 80 100, 260 100, 80 280), + (120 160, 140 160, 140 140, 120 160)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), + LINESTRING(40 360, 40 60), + LINESTRING(40 60, 340 60, 40 360), + LINESTRING(40 60, 40 20), + LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), + LINESTRING(120 120, 140 120), + POLYGON( + (60 320, 300 80, 60 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + POLYGON( + (120 160, 140 160, 140 140, 120 160))) + + + + + MULTIPOLYGON( + ( + (60 320, 300 80, 60 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + ( + (120 160, 140 160, 140 140, 120 160))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), + LINESTRING(40 360, 40 60), + LINESTRING(40 60, 340 60, 40 360), + LINESTRING(40 60, 40 20), + LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), + LINESTRING(120 120, 140 120), + POLYGON( + (60 320, 300 80, 60 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + POLYGON( + (120 160, 140 160, 140 140, 120 160))) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + + mLmA - A and B complex, overlapping and touching #1 + + MULTIPOLYGON( + ( + (60 260, 60 120, 220 120, 220 260, 60 260), + (80 240, 80 140, 200 140, 200 240, 80 240)), + ( + (100 220, 100 160, 180 160, 180 220, 100 220), + (120 200, 120 180, 160 180, 160 200, 120 200))) + + + MULTILINESTRING( + (40 260, 240 260, 240 240, 40 240, 40 220, 240 220), + (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320)) + + + + MULTILINESTRING( + (60 260, 60 120, 220 120, 220 260, 60 260), + (80 240, 80 140, 200 140, 200 240, 80 240), + (100 220, 100 160, 180 160, 180 220, 100 220), + (120 200, 120 180, 160 180, 160 200, 120 200)) + + + + + POLYGON( + (60 120, 60 260, 220 260, 220 120, 60 120)) + + + + + MULTILINESTRING( + (220 260, 140 260), + (140 260, 120 260), + (120 260, 60 260), + (200 240, 140 240), + (140 240, 120 240), + (120 240, 80 240), + (180 220, 140 220), + (140 220, 120 220), + (120 220, 100 220), + (120 200, 120 180), + (220 240, 200 240), + (80 240, 60 240), + (60 220, 80 220), + (200 220, 220 220), + (120 260, 120 240), + (120 220, 120 200), + (120 180, 120 160), + (120 140, 120 120), + (140 120, 140 140), + (140 160, 140 180), + (140 200, 140 220), + (140 240, 140 260)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 260, 60 260), + LINESTRING(220 260, 240 260, 240 240, 220 240), + LINESTRING(60 240, 40 240, 40 220, 60 220), + LINESTRING(80 220, 100 220), + LINESTRING(180 220, 200 220), + LINESTRING(220 220, 240 220), + LINESTRING(120 300, 120 260), + LINESTRING(120 240, 120 220), + LINESTRING(120 160, 120 140), + LINESTRING(120 120, 120 80), + LINESTRING(120 80, 140 80), + LINESTRING(140 80, 140 120), + LINESTRING(140 140, 140 160), + LINESTRING(140 180, 140 200), + LINESTRING(140 220, 140 240), + LINESTRING(140 260, 140 300), + LINESTRING(120 300, 120 320), + POLYGON( + (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, + 120 120, 60 120, 60 220, 60 240), + (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, + 120 240, 80 240)), + POLYGON( + (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), + (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) + + + + + MULTIPOLYGON( + ( + (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, + 120 120, 60 120, 60 220, 60 240), + (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, + 120 240, 80 240)), + ( + (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), + (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 260, 60 260), + LINESTRING(220 260, 240 260, 240 240, 220 240), + LINESTRING(60 240, 40 240, 40 220, 60 220), + LINESTRING(80 220, 100 220), + LINESTRING(180 220, 200 220), + LINESTRING(220 220, 240 220), + LINESTRING(120 300, 120 260), + LINESTRING(120 240, 120 220), + LINESTRING(120 160, 120 140), + LINESTRING(120 120, 120 80), + LINESTRING(120 80, 140 80), + LINESTRING(140 80, 140 120), + LINESTRING(140 140, 140 160), + LINESTRING(140 180, 140 200), + LINESTRING(140 220, 140 240), + LINESTRING(140 260, 140 300), + LINESTRING(120 300, 120 320), + POLYGON( + (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, + 120 120, 60 120, 60 220, 60 240), + (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, + 120 240, 80 240)), + POLYGON( + (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), + (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) + + + + mLmA - A and B complex, overlapping and touching #2 + + MULTIPOLYGON( + ( + (60 320, 60 120, 280 120, 280 320, 60 320), + (120 260, 120 180, 240 180, 240 260, 120 260)), + ( + (280 400, 320 400, 320 360, 280 360, 280 400)), + ( + (300 240, 300 220, 320 220, 320 240, 300 240))) + + + MULTILINESTRING( + (80 300, 80 160, 260 160, 260 300, 80 300, 80 140), + (220 360, 220 240, 300 240, 300 360)) + + + + POLYGON( + (60 120, 60 320, 280 400, 320 400, 320 220, 280 120, 60 120)) + + + + + MULTILINESTRING( + (60 320, 60 120, 280 120, 280 320, 60 320), + (120 260, 120 180, 240 180, 240 260, 120 260), + (280 400, 320 400, 320 360, 280 360, 280 400), + (300 240, 300 220, 320 220, 320 240, 300 240)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(220 360, 220 320), + LINESTRING(220 260, 220 240, 240 240), + LINESTRING(280 240, 300 240), + LINESTRING(300 240, 300 360), + POLYGON( + (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), + (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), + POLYGON( + (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), + POLYGON( + (300 240, 320 240, 320 220, 300 220, 300 240))) + + + + + MULTIPOLYGON( + ( + (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), + (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), + ( + (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), + ( + (300 240, 320 240, 320 220, 300 220, 300 240))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(220 360, 220 320), + LINESTRING(220 260, 220 240, 240 240), + LINESTRING(280 240, 300 240), + LINESTRING(300 240, 300 360), + POLYGON( + (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), + (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), + POLYGON( + (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), + POLYGON( + (300 240, 320 240, 320 220, 300 220, 300 240))) + + + + + GEOMETRYCOLLECTION( + POINT(300 240), + POINT(300 360), + LINESTRING(80 300, 80 160), + LINESTRING(80 160, 260 160, 260 240), + LINESTRING(260 240, 260 300, 220 300), + LINESTRING(220 300, 80 300), + LINESTRING(80 160, 80 140), + LINESTRING(220 320, 220 300), + LINESTRING(220 300, 220 260), + LINESTRING(240 240, 260 240), + LINESTRING(260 240, 280 240)) + + + + + + mLmA - A and B complex, overlapping and touching #3 + + MULTIPOLYGON( + ( + (120 180, 60 80, 180 80, 120 180)), + ( + (100 240, 140 240, 120 220, 100 240))) + + + MULTILINESTRING( + (180 260, 120 180, 60 260, 180 260), + (60 300, 60 40), + (100 100, 140 100)) + + + + POLYGON( + (60 80, 100 240, 140 240, 180 80, 60 80)) + + + + + MULTILINESTRING( + (120 180, 60 80, 180 80, 120 180), + (100 240, 140 240, 120 220, 100 240)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(180 260, 120 180), + LINESTRING(120 180, 60 260), + LINESTRING(60 260, 180 260), + LINESTRING(60 300, 60 260), + LINESTRING(60 260, 60 80), + LINESTRING(60 80, 60 40), + POLYGON( + (60 80, 120 180, 180 80, 60 80)), + POLYGON( + (100 240, 140 240, 120 220, 100 240))) + + + + + MULTIPOLYGON( + ( + (60 80, 120 180, 180 80, 60 80)), + ( + (100 240, 140 240, 120 220, 100 240))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(180 260, 120 180), + LINESTRING(120 180, 60 260), + LINESTRING(60 260, 180 260), + LINESTRING(60 300, 60 260), + LINESTRING(60 260, 60 80), + LINESTRING(60 80, 60 40), + POLYGON( + (60 80, 120 180, 180 80, 60 80)), + POLYGON( + (100 240, 140 240, 120 220, 100 240))) + + + + + GEOMETRYCOLLECTION( + POINT(60 80), + POINT(120 180), + LINESTRING(100 100, 140 100)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionLLPrec.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionLLPrec.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionLLPrec.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionLLPrec.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,28 @@ + + + + + LL - narrow V + + LINESTRING(0 10, 620 10, 0 11) + + + LINESTRING(400 60, 400 10) + + + + POINT(400 10) + + + + + MULTILINESTRING( + (0 10, 400 10), + (400 10, 620 10, 400 10), + (400 10, 0 11), + (400 60, 400 10)) + + + + + \ No newline at end of file diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionLL.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionLL.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionLL.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionLL.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,375 @@ + + + + + LL - A crosses B + + LINESTRING(0 0, 100 100) + + + LINESTRING(0 100, 100 0) + + + + POINT(50 50) + + + + + MULTILINESTRING( + (0 0, 50 50), + (0 100, 50 50), + (50 50, 100 100), + (50 50, 100 0)) + + + + + MULTILINESTRING( + (0 0, 50 50), + (50 50, 100 100)) + + + + + MULTILINESTRING( + (0 0, 50 50), + (0 100, 50 50), + (50 50, 100 100), + (50 50, 100 0)) + + + + + + LL - A shares one segment with B + + LINESTRING(0 0, 100 100, 200 0) + + + LINESTRING(0 0, 100 100, 200 200) + + + + LINESTRING(0 0, 100 100) + + + + + MULTILINESTRING( + (0 0, 100 100), + (100 100, 200 200), + (100 100, 200 0)) + + + + + LINESTRING(100 100, 200 0) + + + + + MULTILINESTRING( + (100 100, 200 200), + (100 100, 200 0)) + + + + + + LL - A and B disjoint + + LINESTRING(40 360, 40 220, 120 360) + + + LINESTRING(120 340, 60 220, 140 220, 140 360) + + + + MULTIPOINT((40 360), (120 360)) + + + + + POLYGON( + (40 220, 40 360, 120 360, 40 220)) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + MULTILINESTRING( + (40 360, 40 220, 120 360), + (120 340, 60 220, 140 220, 140 360)) + + + + + LINESTRING(40 360, 40 220, 120 360) + + + + + MULTILINESTRING( + (40 360, 40 220, 120 360), + (120 340, 60 220, 140 220, 140 360)) + + + + + + LL - A and B intersect frequently + + LINESTRING(220 240, 200 220, 60 320, 40 300, 180 200, 160 180, 20 280) + + + LINESTRING(220 240, 140 160, 120 180, 220 280, 200 300, 100 200) + + + + MULTIPOINT((220 240), (20 280)) + + + + + POLYGON( + (160 180, 20 280, 60 320, 220 240, 160 180)) + + + + + GEOMETRYCOLLECTION( + POINT(113 213), + POINT(133 233), + POINT(137 197), + POINT(153 253), + POINT(157 217), + POINT(177 237), + LINESTRING(180 200, 160 180), + LINESTRING(220 240, 200 220)) + + + + + MULTILINESTRING( + (113 213, 20 280), + (133 233, 113 213), + (113 213, 100 200), + (137 197, 113 213), + (153 253, 133 233), + (153 253, 60 320, 40 300, 133 233), + (133 233, 157 217), + (137 197, 157 217), + (160 180, 140 160, 120 180, 137 197), + (160 180, 137 197), + (177 237, 220 280, 200 300, 153 253), + (177 237, 153 253), + (157 217, 177 237), + (157 217, 180 200), + (180 200, 160 180), + (200 220, 177 237), + (200 220, 180 200), + (220 240, 200 220)) + + + + + MULTILINESTRING( + (200 220, 177 237), + (177 237, 153 253), + (153 253, 60 320, 40 300, 133 233), + (133 233, 157 217), + (157 217, 180 200), + (160 180, 137 197), + (137 197, 113 213), + (113 213, 20 280)) + + + + + MULTILINESTRING( + (200 220, 177 237), + (177 237, 153 253), + (153 253, 60 320, 40 300, 133 233), + (133 233, 157 217), + (157 217, 180 200), + (160 180, 137 197), + (137 197, 113 213), + (113 213, 20 280), + (200 220, 180 200), + (160 180, 140 160, 120 180, 137 197), + (137 197, 157 217), + (157 217, 177 237), + (177 237, 220 280, 200 300, 153 253), + (153 253, 133 233), + (133 233, 113 213), + (113 213, 100 200)) + + + + + + LL - A and B equal + + LINESTRING(80 320, 220 320, 220 160, 80 300) + + + LINESTRING(80 320, 220 320, 220 160, 80 300) + + + + MULTIPOINT((80 320), (80 300)) + + + + + POLYGON( + (220 160, 80 300, 80 320, 220 320, 220 160)) + + + + + MULTILINESTRING( + (220 160, 80 300), + (80 320, 220 320), + (220 320, 220 160)) + + + + + MULTILINESTRING( + (220 160, 80 300), + (80 320, 220 320), + (220 320, 220 160)) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + GEOMETRYCOLLECTION EMPTY + + + + + + LL - A and B touch ends + + LINESTRING(60 200, 60 260, 140 200) + + + LINESTRING(60 200, 60 140, 140 200) + + + + MULTIPOINT((60 200), (140 200)) + + + + + POLYGON( + (60 200, 60 260, 140 200, 60 200)) + + + + + MULTIPOINT((60 200), (140 200)) + + + + + MULTILINESTRING( + (60 200, 60 260, 140 200), + (60 200, 60 140, 140 200)) + + + + + LINESTRING(60 200, 60 260, 140 200) + + + + + MULTILINESTRING( + (60 200, 60 260, 140 200), + (60 200, 60 140, 140 200)) + + + + + + LL - intersecting rings + + LINESTRING(180 200, 100 280, 20 200, 100 120, 180 200) + + + LINESTRING(100 200, 220 200, 220 80, 100 80, 100 200) + + + + MULTIPOINT EMPTY + + + + + POLYGON( + (100 120, 20 200, 100 280, 180 200, 100 120)) + + + + + MULTIPOINT((100 120), (180 200)) + + + + + MULTILINESTRING( + (100 120, 180 200), + (100 120, 100 200), + (180 200, 100 280, 20 200, 100 120), + (180 200, 220 200, 220 80, 100 80, 100 120), + (100 200, 180 200)) + + + + + MULTILINESTRING( + (100 120, 180 200), + (180 200, 100 280, 20 200, 100 120)) + + + + + MULTILINESTRING( + (100 120, 180 200), + (100 120, 100 200), + (180 200, 100 280, 20 200, 100 120), + (180 200, 220 200, 220 80, 100 80, 100 120), + (100 200, 180 200)) + + + + + + LrL - LinearRing bug + + LINEARRING(0 0, 0 5, 5 5, 5 0, 0 0) + + + LINESTRING( 2 2, 5 5) + + + + POINT (5 5) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionPA.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionPA.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionPA.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionPA.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,155 @@ + + + + + PA - point contained in simple polygon + + POINT(100 100) + + + POLYGON( + (50 50, 200 50, 200 200, 50 200, 50 50)) + + + + POINT(100 100) + + + + + + mPmA - points on I, B and E of touching triangles + + MULTIPOLYGON( + ( + (120 320, 180 200, 240 320, 120 320)), + ( + (180 200, 240 80, 300 200, 180 200))) + + + MULTIPOINT((120 320), (180 260), (180 320), (180 200), (300 200), (200 220)) + + + + MULTILINESTRING( + (120 320, 180 200, 240 320, 120 320), + (180 200, 240 80, 300 200, 180 200)) + + + + + POLYGON( + (240 80, 120 320, 240 320, 300 200, 240 80)) + + + + + MULTIPOINT((120 320), (180 200), (180 260), (180 320), (300 200)) + + + + + GEOMETRYCOLLECTION( + POINT(200 220), + POLYGON( + (180 200, 120 320, 240 320, 180 200)), + POLYGON( + (180 200, 300 200, 240 80, 180 200))) + + + + + MULTIPOLYGON( + ( + (180 200, 120 320, 240 320, 180 200)), + ( + (180 200, 300 200, 240 80, 180 200))) + + + + + GEOMETRYCOLLECTION( + POINT(200 220), + POLYGON( + (180 200, 120 320, 240 320, 180 200)), + POLYGON( + (180 200, 300 200, 240 80, 180 200))) + + + + + + mPmA - points on I, B and E of concentric doughnuts + + MULTIPOLYGON( + ( + (120 80, 420 80, 420 340, 120 340, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + ( + (200 260, 200 160, 340 160, 340 260, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + MULTIPOINT((200 360), (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200), (200 360), + (420 340), (400 100), (340 120), (200 140), (200 160), (220 180), (260 200)) + + + + MULTILINESTRING( + (120 80, 420 80, 420 340, 120 340, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300), + (200 260, 200 160, 340 160, 340 260, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220)) + + + + + POLYGON( + (120 80, 120 340, 420 340, 420 80, 120 80)) + + + + + MULTIPOINT((200 160), (220 180), (260 200), (340 120), (400 100), (420 340)) + + + + + GEOMETRYCOLLECTION( + POINT(200 140), + POINT(200 360), + POLYGON( + (120 80, 120 340, 420 340, 420 80, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + POLYGON( + (200 260, 340 260, 340 160, 200 160, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + + + MULTIPOLYGON( + ( + (120 80, 120 340, 420 340, 420 80, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + ( + (200 260, 340 260, 340 160, 200 160, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + + + GEOMETRYCOLLECTION( + POINT(200 140), + POINT(200 360), + POLYGON( + (120 80, 120 340, 420 340, 420 80, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + POLYGON( + (200 260, 340 260, 340 160, 200 160, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionPLPrec.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionPLPrec.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionPLPrec.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionPLPrec.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,19 @@ + + + + + PP - Point just off line. Causes non-robust algorithms to fail. + + LINESTRING(-123456789 -40, 381039468754763 123456789) + + + POINT(0 0) + + + + false + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionPL.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionPL.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionPL.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionPL.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,286 @@ + + + + + mPL - points in I and E of line + + MULTIPOINT((40 90), (20 20), (70 70)) + + + LINESTRING(20 20, 100 100) + + + + MULTIPOINT((20 20), (70 70)) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 100 100)) + + + + + POINT(40 90) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 100 100)) + + + + + + mPL - points in I and E of line, line self-intersecting + + MULTIPOINT((40 90), (20 20), (70 70)) + + + LINESTRING(20 20, 110 110, 170 50, 130 10, 70 70) + + + + MULTIPOINT((20 20), (70 70)) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 70 70), + LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70)) + + + + + POINT(40 90) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 70 70), + LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70)) + + + + + + mPmL - points in I, B and E of lines, lines overlap, points overlap + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 220, 100 320)) + + + MULTIPOINT ((100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320), (100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320)) + + + MULTIPOINT((100 220), (100 320)) + + + + + POLYGON( + (100 180, 100 320, 220 320, 220 180, 100 180)) + + + + + MULTIPOINT ((100 180), (100 220), (100 260), (100 320), (120 180), (160 320), (200 180), (200 320), (220 180), (220 260), (220 320)) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320)) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + + mPmL - points in I, B and E of lines, lines overlap, points overlap, x <0, y < 0 + + MULTILINESTRING( + (-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340), + (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140)) + + + MULTIPOINT ((-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120), (-560 -180), (-420 -180), (-500 -220), (-500 -340), (-500 -280), (-500 -140), (-320 -140), (-420 -140), (-320 -180), (-280 -140), (-320 -120)) + + + + MULTIPOINT((-500 -340), (-500 -140)) + + + + + POLYGON( + (-500 -340, -500 -140, -320 -140, -320 -280, -500 -340)) + + + + + MULTIPOINT((-500 -340), (-500 -280), (-500 -220), (-500 -140), (-420 -140), (-320 -180), (-320 -140)) + + + + + GEOMETRYCOLLECTION( + POINT(-560 -180), + POINT(-420 -180), + POINT(-320 -120), + POINT(-280 -140), + LINESTRING(-500 -140, -500 -280), + LINESTRING(-500 -280, -320 -280, -320 -140), + LINESTRING(-320 -140, -500 -140), + LINESTRING(-500 -280, -500 -340)) + + + + + MULTILINESTRING( + (-500 -140, -500 -280), + (-500 -280, -320 -280, -320 -140), + (-320 -140, -500 -140), + (-500 -280, -500 -340)) + + + + + GEOMETRYCOLLECTION( + POINT(-560 -180), + POINT(-420 -180), + POINT(-320 -120), + POINT(-280 -140), + LINESTRING(-500 -140, -500 -280), + LINESTRING(-500 -280, -320 -280, -320 -140), + LINESTRING(-320 -140, -500 -140), + LINESTRING(-500 -280, -500 -340)) + + + + + + mL - lines intersect at 1 point + + MULTILINESTRING( + (180 100, 140 280, 240 140, 220 120, 140 280), + (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280)) + + + + MULTIPOINT((180 100), (140 280)) + + + + + + mPmL - points in I, B and E of lines, lines overlap, points overlap + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 220, 100 320)) + + + MULTIPOINT ((100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320), (100 320), (100 260), (100 220), (100 200), (100 180), (120 180), (200 180), (220 180), (220 260), (220 320), (200 320), (160 320), (140 320), (120 320)) + + + + MULTIPOINT((100 220), (100 320)) + + + + + POLYGON( + (100 180, 100 320, 220 320, 220 180, 100 180)) + + + + + MULTIPOINT ((100 180), (100 220), (100 260), (100 320), (120 180), (160 320), (200 180), (200 320), (220 180), (220 260), (220 320)) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320)) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestFunctionPP.xml geos-3.2.2/tests/xmltester/tests/general/TestFunctionPP.xml --- geos-3.1.0/tests/xmltester/tests/general/TestFunctionPP.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestFunctionPP.xml 2009-05-02 10:20:26.000000000 +0100 @@ -0,0 +1,269 @@ + + + + + PP - point contained in both A and B + + POINT(100 100) + + + POINT(100 100) + + + + POINT(100 100) + + + + + + PP - A different from B + + POINT(100 100) + + + POINT(200 200) + + + + GEOMETRYCOLLECTION EMPTY + + + + + MULTIPOINT((100 100), (200 200)) + + + + + POINT(100 100) + + + + + MULTIPOINT((100 100), (200 200)) + + + + + + PmP - point in A contained in B + + POINT(100 100) + + + MULTIPOINT((100 100), (200 200)) + + + + POINT(100 100) + + + + + MULTIPOINT((100 100), (200 200)) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + POINT(200 200) + + + + + + mPmP - points in A only, B only, and in both + + MULTIPOINT((100 100), (200 200), (300 300), (500 500)) + + + MULTIPOINT((100 100), (200 200), (400 400), (600 600)) + + + + MULTIPOINT((100 100), (200 200)) + + + + + MULTIPOINT ((100 100), (200 200), (300 300), (400 400), (500 500), (600 600)) + + + + + MULTIPOINT((300 300), (500 500)) + + + + + MULTIPOINT((300 300), (400 400), (500 500), (600 600)) + + + + + + PP - point contained in both A and B + + POINT(80 200) + + + POINT(80 200) + + + + GEOMETRYCOLLECTION EMPTY + + + + + POINT(80 200) + + + + + POINT(80 200) + + + + + POINT(80 200) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + GEOMETRYCOLLECTION EMPTY + + + + + + PP - A different from B + + POINT(80 200) + + + POINT(260 80) + + + + GEOMETRYCOLLECTION EMPTY + + + + + POINT(80 200) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + MULTIPOINT((80 200), (260 80)) + + + + + POINT(80 200) + + + + + MULTIPOINT((80 200), (260 80)) + + + + + + PP - A different from B, same y + + POINT(60 260) + + + POINT(120 260) + + + + GEOMETRYCOLLECTION EMPTY + + + + + POINT(60 260) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + MULTIPOINT((60 260), (120 260)) + + + + + POINT(60 260) + + + + + MULTIPOINT((60 260), (120 260)) + + + + + + PP - A different from B, same x + + POINT(80 80) + + + POINT(80 280) + + + + GEOMETRYCOLLECTION EMPTY + + + + + POINT(80 80) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + MULTIPOINT((80 80), (80 280)) + + + + + POINT(80 80) + + + + + MULTIPOINT((80 80), (80 280)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestInteriorPoint.xml geos-3.2.2/tests/xmltester/tests/general/TestInteriorPoint.xml --- geos-3.1.0/tests/xmltester/tests/general/TestInteriorPoint.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestInteriorPoint.xml 2009-05-02 10:01:39.000000000 +0100 @@ -0,0 +1,57 @@ + + + + + P - single point + POINT(10 10) + POINT(10 10) + + + + P - single point + MULTIPOINT (60 300, 200 200, 240 240, 200 300, 40 140, 80 240, 140 240, 100 160, 140 200, 60 200) + + POINT (140 240) + + + + L - linestring with single segment + LINESTRING (0 0, 7 14) + + POINT (7 14) + + + + L - linestring with multiple segments + LINESTRING (0 0, 3 15, 6 2, 11 14, 16 5, 16 18, 2 22) + + POINT (11 14) + + + + mL - complex linestrings + MULTILINESTRING ((60 240, 140 300, 180 200, 40 140, 100 100, 120 220), + (240 80, 260 160, 200 240, 180 340, 280 340, 240 180, 180 140, 40 200, 140 260)) + + POINT (180 200) + + + + A - box + POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0)) + + POINT (5 5) + + + + mA - polygons with holes + MULTIPOLYGON (((60 320, 240 340, 260 100, 20 60, 120 180, 60 320), + (200 280, 140 260, 180 160, 240 140, 200 280)), + ((380 280, 300 260, 340 100, 440 80, 380 280), + (380 220, 340 200, 400 100, 380 220))) + + POINT (138 200) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRectanglePredicate.xml geos-3.2.2/tests/xmltester/tests/general/TestRectanglePredicate.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRectanglePredicate.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRectanglePredicate.xml 2009-05-02 10:44:32.000000000 +0100 @@ -0,0 +1,221 @@ + + + + + A disjoint + + POLYGON( + (0 0, 80 0, 80 80, 0 80, 0 0)) + + + POLYGON( + (100 200, 100 140, 180 140, 180 200, 100 200)) + + false + false + + + + A contained in rectangle + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + POLYGON((10 10, 10 90, 90 90, 90 10, 10 10)) + + true + true + + + + A containing rectangle + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + POLYGON ((60 180, -100 120, -140 60, -40 20, -100 -80, 40 -20, 140 -100, 140 40, 260 160, 80 120, 60 180)) + + true + false + + + + mA containing rectangle + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + MULTIPOLYGON (((-60 180, -60 -60, 40 -20, 140 -100, 180 120, -20 140, -60 180)), + ((20 280, 0 180, 180 160, 200 280, 20 280))) + + true + false + true + false + true + + + + L overlaps thru Y axis side + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING(10 10, 200 10) + + true + + + + L overlaps thru X axis side + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING(10 10, 10 2000) + + true + false + false + + + + L line intersection + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING( 10 10, -10 -20 ) + + true + false + + + + L in polygon boundary + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING( 10 0, 90 0 ) + + true + false + true + true + + + + L (3 pts) in polygon boundary + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING( 10 0, 100 0, 100 50 ) + + true + false + true + true + + + + L (4 pts) in polygon boundary + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + LINESTRING( 10 0, 100 0, 100 100, 50 100 ) + + true + false + true + true + + + + mL with one component contained and one in boundary + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + MULTILINESTRING( (10 0, 20 0), (10 10, 20 20) ) + + true + true + true + true + + + + mL with one component contained + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + MULTILINESTRING( (10 10, 10 20), (200 10, 200 20) ) + + true + false + + + + P in polygon boundary (Y axis) + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + POINT(100 50) + + true + false + true + true + + + + P in polygon boundary (X axis) + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + POINT(50 100) + + true + false + true + true + + + + P in polygon + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + POINT(60 60) + + true + true + true + true + + + + mP in polygon boundary and interior + + POLYGON((0 0, 100 0, 100 100, 0 100, 0 0)) + + + MULTIPOINT((50 100), (60 60)) + + true + true + true + true + + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelateAA.xml geos-3.2.2/tests/xmltester/tests/general/TestRelateAA.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelateAA.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelateAA.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,235 @@ + + + + + AA disjoint + + POLYGON( + (0 0, 80 0, 80 80, 0 80, 0 0)) + + + POLYGON( + (100 200, 100 140, 180 140, 180 200, 100 200)) + + true + + false + false + + + + AA equal but opposite orientation + + POLYGON( + (0 0, 140 0, 140 140, 0 140, 0 0)) + + + POLYGON( + (140 0, 0 0, 0 140, 140 140, 140 0)) + + + true + + true + true + + + + AA A-shell contains B-shell + + POLYGON( + (40 60, 360 60, 360 300, 40 300, 40 60)) + + + POLYGON( + (120 100, 280 100, 280 240, 120 240, 120 100)) + + + true + + true + true + + + + AA A-shell contains B-shell contains A-hole + + POLYGON( + (40 60, 420 60, 420 320, 40 320, 40 60), + (200 140, 160 220, 260 200, 200 140)) + + + POLYGON( + (80 100, 360 100, 360 280, 80 280, 80 100)) + + + true + + true + false + + + + AA A-shell contains B-shell contains A-hole contains B-hole + + POLYGON( + (0 280, 0 0, 260 0, 260 280, 0 280), + (220 240, 40 240, 40 40, 220 40, 220 240)) + + + POLYGON( + (20 260, 240 260, 240 20, 20 20, 20 260), + (160 180, 80 180, 120 120, 160 180)) + + + true + + true + false + + + + AA A-shell overlapping B-shell + + POLYGON( + (60 80, 200 80, 200 220, 60 220, 60 80)) + + + POLYGON( + (120 140, 260 140, 260 260, 120 260, 120 140)) + + + true + + true + false + + + + AA A-shell overlapping B-shell at B-vertex + + POLYGON( + (60 220, 220 220, 140 140, 60 220)) + + + POLYGON( + (100 180, 180 180, 180 100, 100 100, 100 180)) + + + true + + true + false + + + + AA A-shell overlapping B-shell at A & B-vertex + + POLYGON( + (40 40, 180 40, 180 180, 40 180, 40 40)) + + + POLYGON( + (180 40, 40 180, 160 280, 300 140, 180 40)) + + + true + + true + false + + + + AmA A-shells overlapping B-shell at A-vertex + + POLYGON( + (100 60, 140 100, 100 140, 60 100, 100 60)) + + + MULTIPOLYGON( + ( + (80 40, 120 40, 120 80, 80 80, 80 40)), + ( + (120 80, 160 80, 160 120, 120 120, 120 80)), + ( + (80 120, 120 120, 120 160, 80 160, 80 120)), + ( + (40 80, 80 80, 80 120, 40 120, 40 80))) + + + true + + true + false + + + + AA A-shell touches B-shell, which contains A-hole + + POLYGON( + (40 280, 200 280, 200 100, 40 100, 40 280), + (100 220, 120 220, 120 200, 100 180, 100 220)) + + + POLYGON( + (40 280, 180 260, 180 120, 60 120, 40 280)) + + + true + + true + false + + + + AA - A-hole contains B, boundaries touch in line + + POLYGON( + (0 200, 0 0, 200 0, 200 200, 0 200), + (20 180, 130 180, 130 30, 20 30, 20 180)) + + + POLYGON( + (60 90, 130 90, 130 30, 60 30, 60 90)) + + + true + + true + false + + + + AA - A-hole contains B, boundaries touch in points + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + POLYGON( + (270 90, 200 50, 150 80, 210 120, 270 90)) + + + true + + true + false + + + + AA - A contained completely in B + + POLYGON ((0 0, 20 80, 120 80, -20 120, 0 0)) + + + POLYGON ((60 180, -100 120, -140 60, -40 20, -100 -80, 40 -20, 140 -100, 140 40, 260 160, 80 120, 60 180)) + + + true + + true + false + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelateAC.xml geos-3.2.2/tests/xmltester/tests/general/TestRelateAC.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelateAC.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelateAC.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,27 @@ + + + + + AC A-shells overlapping B-shell at A-vertex + + POLYGON( + (100 60, 140 100, 100 140, 60 100, 100 60)) + + + MULTIPOLYGON( + ( + (80 40, 120 40, 120 80, 80 80, 80 40)), + ( + (120 80, 160 80, 160 120, 120 120, 120 80)), + ( + (80 120, 120 120, 120 160, 80 160, 80 120)), + ( + (40 80, 80 80, 80 120, 40 120, 40 80))) + + + true + + true + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelateLA.xml geos-3.2.2/tests/xmltester/tests/general/TestRelateLA.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelateLA.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelateLA.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,190 @@ + + + + + LA - intersection at NV: {A-Bdy, A-Int} = {B-Bdy, B-Int} + + LINESTRING(100 120, 100 240) + + + POLYGON( + (40 60, 160 60, 160 180, 40 180, 40 60)) + + + + true + + + + + + LA - intersection at V: {A-Bdy, A-Int} = {B-Bdy, B-Int} + + LINESTRING(80 80, 140 140, 200 200) + + + POLYGON( + (40 40, 140 40, 140 140, 40 140, 40 40)) + + + + true + + + + + + LmA - intersection at NV, L contained in A + + LINESTRING(70 50, 70 150) + + + MULTIPOLYGON( + ( + (0 0, 0 100, 140 100, 140 0, 0 0)), + ( + (20 170, 70 100, 130 170, 20 170))) + + + + true + + + + + + LA - A crosses B at {shell-NV, hole-V} + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (110 110, 250 100, 140 30, 110 110)) + + + + true + + + + + + LA - A intersects B at {shell-NV}, B-Int, {hole-V} + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (111 110, 250 100, 140 30, 111 110)) + + + + true + + + + + + LA - A crosses B hole at {hole1-V, hole2-NV} + + LINESTRING(80 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 130 40, 200 110, 130 180)) + + + + true + + + + + + LA - A crosses B hole at {hole1-V}, B-Int, {hole2-NV} + + LINESTRING(80 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 131 40, 200 110, 130 180)) + + + + true + + + + + +LA - Line with endpoints in interior but crossing exterior of multipolygon + + LINESTRING(160 70, 320 230) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +LA - Line with a very small piece in the exterior between parts of a multipolygon + + LINESTRING(100 140, 100 40) + + + MULTIPOLYGON( + ( + (20 80, 180 79, 100 0, 20 80)), + ( + (20 160, 180 160, 100 80, 20 160))) + + + true + + + + +LA - Line contained completely and spanning parts of multipolygon + + LINESTRING(100 140, 100 40) + + + MULTIPOLYGON( + ( + (20 80, 180 80, 100 0, 20 80)), + ( + (20 160, 180 160, 100 80, 20 160))) + + + true + + + + +LA - overlapping ring and triangle + + LINESTRING(110 60, 20 150, 200 150, 110 60) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelateLC.xml geos-3.2.2/tests/xmltester/tests/general/TestRelateLC.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelateLC.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelateLC.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,41 @@ + + + + + LC - topographically equal with no boundary + + LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) + + + MULTILINESTRING( + (0 0, 0 50), + (0 50, 50 50), + (50 50, 50 0), + (50 0, 0 0)) + + + + true + + + + + + LC - equal with boundary intersection + + LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) + + + MULTILINESTRING( + (0 0, 60 0), + (60 0, 120 0), + (60 0, 60 60)) + + + + true + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelateLL.xml geos-3.2.2/tests/xmltester/tests/general/TestRelateLL.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelateLL.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelateLL.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,311 @@ + + + + + LL - disjoint, non-overlapping envelopes + + LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140) + + + LINESTRING(140 300, 220 160, 260 200, 240 260) + + + + true + + + + + + LL - disjoint, overlapping envelopes + + LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140) + + + LINESTRING(60 40, 140 40, 140 160, 0 160) + + + + true + + + + + + LL - disjoint, non-overlapping envelopes, B closed + + LINESTRING(60 0, 20 80, 100 80, 80 120, 40 140) + + + LINESTRING(140 280, 240 280, 240 180, 140 180, 140 280) + + + + true + + + + + + LL - disjoint, overlapping envelopes, B closed + + LINESTRING(140 0, 0 0, 40 60, 0 120, 60 200, 220 160, 220 40) + + + LINESTRING(80 140, 180 100, 160 40, 100 40, 60 100, 80 140) + + + + true + + + + + + Line vs line - pointwise equal + + LINESTRING(20 20, 80 80) + + + LINESTRING(20 20, 80 80) + + + + true + + + + + + Line vs line - pointwise equal + + LINESTRING(40 40, 160 160, 200 60, 60 140) + + + LINESTRING(40 40, 160 160, 200 60, 60 140) + + + + true + + + + + + Line vs line - topologically equal + + LINESTRING(40 40, 200 40) + + + LINESTRING(200 40, 140 40, 40 40) + + + + true + + + + + + LL - topographically equal with self-intersection + + LINESTRING(0 0, 110 0, 60 0) + + + LINESTRING(0 0, 110 0) + + + + true + + + + + + LmL - topographically equal with no boundary + + LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) + + + MULTILINESTRING( + (0 0, 0 50), + (0 50, 50 50), + (50 50, 50 0), + (50 0, 0 0)) + + + + true + + + + + + LmL - topographically equal with self intersections + + LINESTRING(0 0, 80 0, 80 60, 80 0, 170 0) + + + MULTILINESTRING( + (0 0, 170 0), + (80 0, 80 60)) + + + + true + + + + + + LL - A-IntNV = B-IntNV + + LINESTRING(80 100, 180 200) + + + LINESTRING(80 180, 180 120) + + + + true + + + + + + intersect in Int NV + + LINESTRING(40 40, 100 100, 160 160) + + + LINESTRING(160 60, 100 100, 60 140) + + + + true + + + + + + LL - intersection: {A-Bdy, A-IntV} = B-IntNV + + LINESTRING(40 40, 100 100, 180 100, 180 180, 100 180, 100 100) + + + LINESTRING(140 60, 60 140) + + + + true + + + + + + LL - intersection: {A-Bdy, A-IntNV} = B-IntNV + + LINESTRING(40 40, 180 180, 100 180, 100 100) + + + LINESTRING(140 60, 60 140) + + + + true + + + + + + LL - intersection: A-IntNV = {B-Bdy, B-IntNV} + + LINESTRING(20 110, 200 110) + + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + + true + + + + + + LL - one segment overlapping, one distinct + + LINESTRING(80 90, 50 50, 0 0) + + + LINESTRING(0 0, 100 100) + + + + true + + + + + + LL - A contained in B + + LINESTRING(40 140, 240 140) + + + LINESTRING(40 140, 100 140, 80 80, 120 60, 100 140, 160 140, 160 100, 200 100, 160 140, + 240 140) + + + + true + + + + + + LL - simple overlapping lines + + LINESTRING(20 20, 100 20, 20 20) + + + LINESTRING(60 20, 200 20) + + + + true + + + + + + LL - A-spiral, B-contained + + LINESTRING(40 60, 180 60, 180 140, 100 140, 100 60, 220 60, 220 180, 80 180, 80 60, + 280 60) + + + LINESTRING(140 60, 180 60, 220 60, 260 60) + + + + true + + + + + +test for LinearRing point location bug + + LINEARRING(0 0, 0 5, 5 5, 5 0, 0 0) + + + LINESTRING( 2 2, 4 4) + + + true + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelatePA.xml geos-3.2.2/tests/xmltester/tests/general/TestRelatePA.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelatePA.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelatePA.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,103 @@ + + + + + PA - disjoint + + POINT(20 20) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + + true + + + + + + mPA - points in B: E, I + + MULTIPOINT((0 20), (40 20)) + + + POLYGON( + (20 40, 20 0, 60 0, 60 40, 20 40)) + + + + true + + + + + + mPA - points in B: E, B + + MULTIPOINT((0 20), (20 20)) + + + POLYGON( + (20 40, 20 0, 60 0, 60 40, 20 40)) + + + + true + + + + + + mPA - points in B: B, I + + MULTIPOINT((20 20), (40 20)) + + + POLYGON( + (20 40, 20 0, 60 0, 60 40, 20 40)) + + + + true + + + + + + mPA - points in B: I, B, E + + MULTIPOINT((80 260), (140 260), (180 260)) + + + POLYGON( + (40 320, 140 320, 140 200, 40 200, 40 320)) + + + + true + + + + + + PmA - point in B: mod-2 I + + POINT(40 40) + + + MULTIPOLYGON( + ( + (0 40, 0 0, 40 0, 40 40, 0 40)), + ( + (40 80, 40 40, 80 40, 80 80, 40 80))) + + + + true + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelatePL.xml geos-3.2.2/tests/xmltester/tests/general/TestRelatePL.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelatePL.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelatePL.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,124 @@ + + + + + PL - disjoint + + POINT(60 120) + + + LINESTRING(40 40, 120 120, 200 120) + + + + true + + + + + + PL - touches Bdy + + POINT(40 40) + + + LINESTRING(40 40, 100 100, 160 100) + + + + true + + + + + + PL - touches non-vertex + + POINT(60 60) + + + LINESTRING(40 40, 100 100) + + + + true + + + + + + mPL - touches Bdy and Ext + + MULTIPOINT((40 40), (100 40)) + + + LINESTRING(40 40, 80 80) + + + + true + + + + + + mPL - touches Int and Bdy + + MULTIPOINT((40 40), (60 60)) + + + LINESTRING(40 40, 80 80) + + + + true + + + + + + mPL - touches Int and Ext + + MULTIPOINT((60 60), (100 100)) + + + LINESTRING(40 40, 80 80) + + + + true + + + + + + mPL - touches IntNV and Ext + + MULTIPOINT((60 60), (100 100)) + + + LINESTRING(40 40, 80 80) + + + + true + + + + + + mPL - touches IntV and Ext + + MULTIPOINT((60 60), (100 100)) + + + LINESTRING(40 40, 60 60, 80 80) + + + + true + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestRelatePP.xml geos-3.2.2/tests/xmltester/tests/general/TestRelatePP.xml --- geos-3.1.0/tests/xmltester/tests/general/TestRelatePP.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestRelatePP.xml 2009-05-02 10:11:53.000000000 +0100 @@ -0,0 +1,64 @@ + + + + + same point + + POINT(20 20) + + + POINT(20 20) + + + + true + + + + + + different point + + POINT(20 20) + + + POINT(20 30) + + + + true + + + + + + some same, some different points + + MULTIPOINT((40 40), (80 60), (40 100)) + + + MULTIPOINT((40 40), (80 60), (120 100)) + + + + true + + + + + + same points + + MULTIPOINT((40 40), (80 60), (120 100)) + + + MULTIPOINT((40 40), (80 60), (120 100)) + + + + true + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestSimple.xml geos-3.2.2/tests/xmltester/tests/general/TestSimple.xml --- geos-3.1.0/tests/xmltester/tests/general/TestSimple.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestSimple.xml 2009-05-02 10:01:39.000000000 +0100 @@ -0,0 +1,296 @@ + + + + + P - point + + POINT(10 10) + + + + true + + + + + + mP - multipoint with repeated points + + MULTIPOINT ((80 280), (80 220), (160 220), (80 220)) + + + + false + + + + + + mP - multipoint with no repeated points + + MULTIPOINT ((80 280), (80 220), (160 220)) + + + + true + + + + + + mP - empty + + MULTIPOINT EMPTY + + + + true + + + + + + L - simple line + + LINESTRING(10 10, 20 20) + + + + true + + + + + + L - non-simple, proper interior intersection + + LINESTRING (20 60, 160 60, 80 160, 80 20) + + + + false + + + + + + L - non-simple, interior intersection at vertices + + LINESTRING (20 80, 80 20, 80 80, 140 60, 80 20, 160 20) + + + + false + + + + + + L - non-simple, interior intersection at Bdy/non-vertex + + LINESTRING (20 60, 100 60, 60 100, 60 60) + + + + false + + + + + + L - non-simple, interior intersection at Bdy/vertex + + LINESTRING (20 60, 60 60, 100 60, 60 100, 60 60) + + + + false + + + + + + L - simple, intersection at Bdy/Bdy (ring) + + LINESTRING (20 20, 80 20, 80 80, 20 20) + + + + true + + + + + + L - simple, intersection at Bdy/Bdy + non-vertex + + LINESTRING (80 80, 20 20, 20 80, 140 80, 140 140, 80 80) + + + + false + + + + + + L - empty + + LINESTRING EMPTY + + + + true + + + + + + + mL - intersection between elements at non-vertex + + MULTILINESTRING( + (40 140, 160 40), + (160 140, 40 40)) + + + + false + + + + + + mL - no intersection between elements + + MULTILINESTRING( + (20 160, 20 20), + (100 160, 100 20)) + + + + true + + + + + + mL - mutual intersection at endpoints only + + MULTILINESTRING ((60 140, 20 80, 60 40), + (60 40, 100 80, 60 140)) + + + + true + + + + + + mL - one element is non-simple + + MULTILINESTRING ((60 40, 140 40, 100 120, 100 0), + (100 200, 200 120)) + + + + false + + + + + + mL - proper intersection between elements at vertex + + MULTILINESTRING ((40 120, 100 60), + (160 120, 100 60), + (40 60, 160 60)) + + + + false + + + + + + mL - intersection between closed lines + + MULTILINESTRING ((80 160, 40 220, 40 100, 80 160), + (80 160, 120 220, 120 100, 80 160)) + + + + false + + + + + + mL - intersection between closed and open lines + + MULTILINESTRING ((80 160, 40 220), + (80 160, 120 220, 120 100, 80 160), + (40 100, 80 160)) + + + + false + + + + + + A + + POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260)) + + + + true + + + + + + A - empty + + POLYGON EMPTY + + + + true + + + + + + mA + + MULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)), + ((160 380, 100 240, 20 380, 160 380), + (120 340, 60 360, 80 320, 120 340))) + + + + true + + + + + + mA - with touching elements + + MULTIPOLYGON (((240 160, 100 240, 80 60, 220 40, 240 160)), + ((160 380, 100 240, 20 380, 160 380), + (120 340, 60 360, 80 320, 120 340))) + + + + true + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestValid2-big.xml geos-3.2.2/tests/xmltester/tests/general/TestValid2-big.xml --- geos-3.1.0/tests/xmltester/tests/general/TestValid2-big.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestValid2-big.xml 2009-05-02 10:01:39.000000000 +0100 @@ -0,0 +1,18 @@ + + + + Test 92 + + POLYGON ((100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) + + true + + + Test 558 + + MULTIPOINT (-1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 0 0) + + true + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestValid2.xml geos-3.2.2/tests/xmltester/tests/general/TestValid2.xml --- geos-3.1.0/tests/xmltester/tests/general/TestValid2.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestValid2.xml 2009-05-02 10:01:39.000000000 +0100 @@ -0,0 +1,5246 @@ + + + + Test 1 + + LINESTRING (-123456789 -40, 381039468754763 123456789) + + true + + + Test 2 + + POINT (0 0) + + true + + + Test 3 + + POLYGON ((20 20, 20 100, 120 100, 140 20, 20 20)) + + true + + + Test 4 + + POLYGON ((20 20, 140 20, 120 100, 20 100, 20 20)) + + true + + + Test 5 + + POLYGON ((120 100, 140 20, 20 20, 20 100, 120 100)) + + true + + + Test 6 + + POLYGON ((20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) + + true + + + Test 7 + + POLYGON ((0 0, 80 0, 80 80, 0 80, 0 0)) + + true + + + Test 8 + + POLYGON ((100 200, 100 140, 180 140, 180 200, 100 200)) + + true + + + Test 9 + + POLYGON ((140 120, 160 20, 20 20, 20 120, 140 120)) + + true + + + Test 10 + + POLYGON ((140 120, 140 200, 240 200, 240 120, 140 120)) + + true + + + Test 11 + + POLYGON ((80 180, 140 260, 260 200, 200 60, 80 180)) + + true + + + Test 12 + + POLYGON ((240 80, 140 120, 180 240, 280 200, 240 80)) + + true + + + Test 13 + + POLYGON ((140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) + + true + + + Test 14 + + POLYGON ((140 40, 180 80, 120 100, 140 40)) + + true + + + Test 15 + + POLYGON ((120 100, 180 80, 130 40, 120 100)) + + true + + + Test 16 + + POLYGON ((20 20, 180 20, 140 140, 20 140, 20 20)) + + true + + + Test 17 + + POLYGON ((180 100, 80 200, 180 280, 260 200, 180 100)) + + true + + + Test 18 + + POLYGON ((140 140, 20 120, 0 220, 120 240, 140 140)) + + true + + + Test 19 + + POLYGON ((160 200, 210 70, 120 70, 160 200)) + + true + + + Test 20 + + POLYGON ((160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) + + false + + + Test 21 + + POLYGON ((110 140, 200 70, 200 160, 110 140)) + + true + + + Test 22 + + POLYGON ((110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) + + false + + + Test 23 + + POLYGON ((20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) + + true + + + Test 24 + + POLYGON ((20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) + + true + + + Test 25 + + POLYGON ((20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) + + true + + + Test 26 + + POLYGON ((20 120, 300 120, 140 240, 20 120)) + + true + + + Test 27 + + POLYGON ((20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, 20 20)) + + true + + + Test 28 + + POLYGON ((100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) + + true + + + Test 29 + + POLYGON ((260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) + + true + + + Test 30 + + POLYGON ((20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + true + + + Test 31 + + POLYGON ((0 140, 300 140, 140 240, 0 140)) + + true + + + Test 32 + + POLYGON ((20 240, 20 140, 320 140, 180 240, 20 240)) + + true + + + Test 33 + + POLYGON ((20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) + + true + + + Test 34 + + POLYGON ((120 120, 180 60, 20 20, 20 120, 120 120)) + + true + + + Test 35 + + POLYGON ((120 120, 220 20, 280 20, 240 160, 120 120)) + + true + + + Test 36 + + POLYGON ((140 120, 160 20, 260 120, 220 200, 140 120)) + + true + + + Test 37 + + POLYGON ((20 140, 120 40, 20 40, 20 140)) + + true + + + Test 38 + + POLYGON ((190 140, 190 20, 140 20, 20 140, 190 140)) + + true + + + Test 39 + + POLYGON ((300 20, 220 20, 120 120, 260 160, 300 20)) + + true + + + Test 40 + + POLYGON ((140 120, 240 160, 280 60, 160 20, 140 120)) + + true + + + Test 41 + + POLYGON ((280 60, 180 60, 120 120, 260 180, 280 60)) + + true + + + Test 42 + + POLYGON ((120 200, 120 120, 40 120, 40 200, 120 200)) + + true + + + Test 43 + + POLYGON ((160 220, 140 120, 60 120, 40 220, 160 220)) + + true + + + Test 44 + + POLYGON ((140 120, 20 120, 20 220, 140 220, 140 120)) + + true + + + Test 45 + + POLYGON ((320 20, 220 20, 80 160, 240 140, 320 20)) + + true + + + Test 46 + + POLYGON ((20 20, 20 180, 220 180, 220 20, 20 20)) + + true + + + Test 47 + + POLYGON ((60 40, 60 140, 180 140, 180 40, 60 40)) + + true + + + Test 48 + + POLYGON ((20 20, 80 140, 160 60, 20 20)) + + true + + + Test 49 + + POLYGON ((160 60, 20 20, 100 140, 160 60)) + + true + + + Test 50 + + POLYGON ((20 100, 140 160, 160 40, 20 100)) + + true + + + Test 51 + + POLYGON ((160 40, 20 100, 160 160, 160 40)) + + true + + + Test 52 + + POLYGON ((20 180, 180 120, 80 40, 20 180)) + + true + + + Test 53 + + POLYGON ((180 120, 100 40, 20 180, 180 120)) + + true + + + Test 54 + + POLYGON ((20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) + + true + + + Test 55 + + POLYGON ((20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) + + true + + + Test 56 + + POLYGON ((40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) + + true + + + Test 57 + + POLYGON ((20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) + + true + + + Test 58 + + POLYGON ((40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) + + true + + + Test 59 + + POLYGON ((60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) + + true + + + Test 60 + + POLYGON ((20 20, 20 140, 120 120, 120 40, 20 20)) + + true + + + Test 61 + + POLYGON ((20 20, 20 180, 140 140, 140 60, 20 20)) + + true + + + Test 62 + + POLYGON ((20 20, 120 40, 120 120, 20 140, 20 20)) + + true + + + Test 63 + + POLYGON ((120 40, 20 20, 20 140, 120 120, 120 40)) + + true + + + Test 64 + + POLYGON ((20 20, 140 60, 140 140, 20 180, 20 20)) + + true + + + Test 65 + + POLYGON ((140 60, 20 20, 20 180, 140 140, 140 60)) + + true + + + Test 66 + + POLYGON ((20 20, 60 120, 140 120, 180 20, 20 20)) + + true + + + Test 67 + + POLYGON ((20 40, 120 40, 120 120, 20 140, 20 40)) + + true + + + Test 68 + + POLYGON ((20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) + + true + + + Test 69 + + POLYGON ((150 150, 330 150, 250 70, 70 70, 150 150)) + + true + + + Test 70 + + POLYGON ((150 150, 270 150, 140 20, 20 20, 150 150)) + + true + + + Test 71 + + POLYGON ((150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) + + true + + + Test 72 + + POLYGON ((150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) + + true + + + Test 73 + + POLYGON ((20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, 80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, 100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, 190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, 290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, 240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, 240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, 250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, 160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, 70 40, 20 20)) + + true + + + Test 74 + + POLYGON ((190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, 200 120, 120 120, 190 140)) + + true + + + Test 75 + + POLYGON ((70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, 20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, 200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, 270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, 350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, 360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, 410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, 240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, 170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, 410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, 420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, 460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, 140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, 90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, 50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, 40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) + + true + + + Test 76 + + POLYGON ((60 160, 220 160, 220 20, 60 20, 60 160)) + + true + + + Test 77 + + POLYGON ((60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) + + true + + + Test 78 + + POLYGON ((60 160, 20 200, 260 200, 140 80, 60 160)) + + true + + + Test 79 + + POLYGON ((20 200, 140 80, 260 200, 20 200)) + + true + + + Test 80 + + POLYGON ((20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) + + true + + + Test 81 + + POLYGON ((20 200, 60 160, 140 80, 260 200, 20 200)) + + true + + + Test 82 + + POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0)) + + true + + + Test 83 + + POLYGON ((100 100, 1000000 110, 10000000 100, 100 100)) + + true + + + Test 84 + + POLYGON ((100 0, 100 200, 200 200, 200 0, 100 0)) + + true + + + Test 85 + + POLYGON ((120 0, 120 200, 200 200, 200 0, 120 0)) + + true + + + Test 86 + + POLYGON ((0 0, 0 200, 110 200, 110 0, 0 0)) + + true + + + Test 87 + + POLYGON ((100 100, 100 200, 200 200, 200 100, 100 100)) + + true + + + Test 88 + + POLYGON ((100 100, 2100 110, 2100 100, 100 100)) + + true + + + Test 89 + + POLYGON ((100 100, 2101 110, 2101 100, 100 100)) + + true + + + Test 90 + + POLYGON ((100 100, 200 200, 200 100, 100 100)) + + true + + + Test 91 + + POLYGON ((100 100, 1000000 110, 1000000 100, 100 100)) + + true + + + Test 93 + + POLYGON ((120 100, 120 200, 200 200, 200 100, 120 100)) + + true + + + Test 94 + + POLYGON ((100 100, 500 110, 500 100, 100 100)) + + true + + + Test 95 + + POLYGON ((100 100, 501 110, 501 100, 100 100)) + + true + + + Test 96 + + POLYGON ((120 100, 130 200, 200 200, 200 100, 120 100)) + + true + + + Test 97 + + POLYGON ((120 100, 17 200, 200 200, 200 100, 120 100)) + + true + + + Test 98 + + POLYGON ((101 99, 101 1000000, 102 1000000, 101 99)) + + true + + + Test 99 + + POLYGON ((100 100, 200 101, 200 100, 100 100)) + + true + + + Test 100 + + POLYGON ((16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) + + true + + + Test 101 + + POLYGON ((10 307, 22 307, 153 34, 22 34, 10 307)) + + true + + + Test 102 + + POLYGON ((160 200, 310 20, 20 20, 160 200), (160 200, 260 40, 70 40, 160 200)) + + true + + + Test 103 + + POLYGON ((170 120, 240 100, 260 50, 190 70, 170 120)) + + true + + + Test 104 + + POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150), (170 120, 330 120, 260 50, 100 50, 170 120)) + + true + + + Test 105 + + POLYGON ((270 90, 200 50, 150 80, 210 120, 270 90)) + + true + + + Test 106 + + POLYGON ((170 120, 260 100, 240 60, 150 80, 170 120)) + + true + + + Test 107 + + POLYGON ((220 120, 270 80, 200 60, 160 100, 220 120)) + + true + + + Test 108 + + POLYGON ((260 50, 180 70, 180 110, 260 90, 260 50)) + + true + + + Test 109 + + POLYGON ((230 110, 290 80, 190 60, 140 90, 230 110)) + + true + + + Test 110 + + POLYGON ((170 120, 330 120, 260 50, 100 50, 170 120)) + + true + + + Test 111 + + POLYGON ((170 120, 330 120, 280 70, 120 70, 170 120)) + + true + + + Test 112 + + POLYGON ((170 120, 300 120, 250 70, 120 70, 170 120)) + + true + + + Test 113 + + POLYGON ((190 100, 310 100, 260 50, 140 50, 190 100)) + + true + + + Test 114 + + POLYGON ((280 130, 360 130, 270 40, 190 40, 280 130)) + + true + + + Test 115 + + POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150), (170 120, 250 120, 180 50, 100 50, 170 120)) + + true + + + Test 116 + + POLYGON ((220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, 390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) + + true + + + Test 117 + + POLYGON ((260 130, 360 130, 280 40, 170 40, 260 130)) + + true + + + Test 118 + + POLYGON ((240 110, 340 110, 290 60, 190 60, 240 110)) + + true + + + Test 119 + + POLYGON ((250 120, 350 120, 280 50, 180 50, 250 120)) + + true + + + Test 120 + + POLYGON ((230 210, 230 20, 20 20, 20 210, 230 210), (120 180, 50 50, 200 50, 120 180)) + + true + + + Test 121 + + POLYGON ((230 210, 230 20, 20 20, 20 210, 230 210), (140 40, 40 40, 40 170, 140 40), (110 190, 210 190, 210 50, 110 190)) + + true + + + Test 122 + + POLYGON ((280 190, 330 150, 200 110, 150 150, 280 190)) + + true + + + Test 123 + + MULTIPOLYGON (((140 110, 260 110, 170 20, 50 20, 140 110)), ((300 270, 420 270, 340 190, 220 190, 300 270))) + + true + + + Test 124 + + POLYGON ((80 190, 220 190, 140 110, 0 110, 80 190)) + + true + + + Test 125 + + POLYGON ((330 150, 200 110, 150 150, 280 190, 330 150)) + + true + + + Test 126 + + POLYGON ((290 190, 340 150, 220 120, 170 170, 290 190)) + + true + + + Test 127 + + POLYGON ((220 190, 340 190, 260 110, 140 110, 220 190)) + + true + + + Test 128 + + POLYGON ((140 190, 220 190, 100 70, 20 70, 140 190)) + + true + + + Test 129 + + POLYGON ((140 220, 60 140, 140 60, 220 140, 140 220)) + + true + + + Test 130 + + MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), ((20 100, 100 100, 100 180, 20 180, 20 100)), ((100 180, 180 180, 180 260, 100 260, 100 180)), ((180 100, 260 100, 260 180, 180 180, 180 100))) + + true + + + Test 131 + + MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110)), ((110 110, 150 20, 70 20, 110 110))) + + true + + + Test 132 + + MULTIPOLYGON (((110 110, 160 160, 210 110, 160 60, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110))) + + true + + + Test 133 + + MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 150 20, 70 20, 110 110), (110 110, 120 40, 100 40, 110 110))) + + true + + + Test 134 + + MULTIPOLYGON (((110 110, 160 160, 210 110, 160 60, 110 110), (110 110, 160 130, 160 90, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110), (110 110, 60 90, 60 130, 110 110))) + + true + + + Test 135 + + MULTIPOLYGON (((110 110, 70 200, 200 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 200 20, 70 20, 110 110), (110 110, 120 40, 100 40, 110 110))) + + true + + + Test 136 + + MULTIPOLYGON (((110 110, 20 200, 200 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 200 20, 20 20, 110 110), (110 110, 120 40, 100 40, 110 110))) + + true + + + Test 137 + + MULTIPOLYGON (((110 110, 70 200, 210 110, 70 20, 110 110), (110 110, 110 140, 150 110, 110 80, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110), (110 110, 60 90, 60 130, 110 110))) + + true + + + Test 138 + + POLYGON ((100 60, 140 100, 100 140, 60 100, 100 60)) + + true + + + Test 139 + + MULTIPOLYGON (((80 40, 120 40, 120 80, 80 80, 80 40)), ((120 80, 160 80, 160 120, 120 120, 120 80)), ((80 120, 120 120, 120 160, 80 160, 80 120)), ((40 80, 80 80, 80 120, 40 120, 40 80))) + + true + + + Test 140 + + LINESTRING (150 150, 40 230) + + true + + + Test 141 + + POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150)) + + true + + + Test 142 + + LINESTRING (40 40, 50 130, 130 130) + + true + + + Test 143 + + LINESTRING (40 230, 150 150) + + true + + + Test 144 + + LINESTRING (210 150, 330 150) + + true + + + Test 145 + + LINESTRING (200 150, 310 150, 360 220) + + true + + + Test 146 + + LINESTRING (180 150, 250 150, 230 250, 370 250, 410 150) + + true + + + Test 147 + + LINESTRING (210 210, 220 150, 320 150, 370 210) + + true + + + Test 148 + + LINESTRING (20 60, 150 60) + + true + + + Test 149 + + LINESTRING (60 90, 310 180) + + true + + + Test 150 + + LINESTRING (90 210, 210 90) + + true + + + Test 151 + + LINESTRING (290 10, 130 170) + + true + + + Test 152 + + LINESTRING (30 100, 100 100, 180 100) + + true + + + Test 153 + + LINESTRING (20 100, 100 100, 360 100, 410 100) + + true + + + Test 154 + + LINESTRING (90 210, 150 150, 210 90) + + true + + + Test 155 + + LINESTRING (180 90, 280 120) + + true + + + Test 156 + + LINESTRING (70 70, 80 20) + + true + + + Test 157 + + LINESTRING (130 20, 150 60) + + true + + + Test 158 + + LINESTRING (70 70, 80 20, 140 20, 150 60) + + true + + + Test 159 + + LINESTRING (170 50, 170 20, 240 20, 260 60) + + true + + + Test 160 + + LINESTRING (50 100, 140 190, 280 190) + + true + + + Test 161 + + LINESTRING (140 60, 180 100, 290 100) + + true + + + Test 162 + + LINESTRING (170 120, 210 80, 270 80) + + true + + + Test 163 + + LINESTRING (170 120, 260 50) + + true + + + Test 164 + + LINESTRING (190 90, 190 270) + + true + + + Test 165 + + POLYGON ((190 190, 360 20, 20 20, 190 190), (190 190, 280 50, 100 50, 190 190)) + + true + + + Test 166 + + LINESTRING (60 160, 150 70) + + true + + + Test 167 + + POLYGON ((190 190, 360 20, 20 20, 190 190), (110 110, 250 100, 140 30, 110 110)) + + true + + + Test 168 + + POLYGON ((190 190, 20 20, 360 20, 190 190), (250 100, 110 110, 140 30, 250 100)) + + true + + + Test 169 + + LINESTRING (190 90, 190 190, 190 270) + + true + + + Test 170 + + LINESTRING (60 160, 110 110, 150 70) + + true + + + Test 171 + + POLYGON ((190 190, 110 110, 20 20, 360 20, 190 190), (250 100, 110 110, 140 30, 250 100)) + + true + + + Test 172 + + LINESTRING (130 110, 180 110, 190 60) + + true + + + Test 173 + + POLYGON ((20 200, 240 200, 240 20, 20 20, 20 200), (130 110, 60 180, 60 40, 130 110), (130 110, 200 40, 200 180, 130 110)) + + true + + + Test 174 + + LINESTRING (80 110, 180 110) + + true + + + Test 175 + + POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (60 180, 130 110, 60 40, 60 180), (130 110, 200 40, 200 180, 130 110)) + + true + + + Test 176 + + LINESTRING (80 110, 170 110) + + true + + + Test 177 + + POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (130 110, 60 40, 60 180, 130 110), (130 180, 130 40, 200 110, 130 180)) + + true + + + Test 178 + + LINESTRING (80 110, 130 110, 170 110) + + true + + + Test 179 + + LINESTRING (80 110, 130 110, 180 110) + + true + + + Test 180 + + LINESTRING (160 70, 320 230) + + true + + + Test 181 + + LINESTRING (160 70, 200 110, 280 190, 320 230) + + true + + + Test 182 + + LINESTRING (70 50, 70 150) + + true + + + Test 183 + + MULTIPOLYGON (((0 0, 0 100, 140 100, 140 0, 0 0)), ((20 170, 70 100, 130 170, 20 170))) + + true + + + Test 184 + + LINESTRING (110 110, 20 200, 200 200, 110 110) + + true + + + Test 185 + + POLYGON ((20 20, 200 20, 110 110, 20 20)) + + true + + + Test 186 + + LINESTRING (150 70, 160 110, 200 60, 150 70) + + true + + + Test 187 + + LINESTRING (80 60, 120 40, 120 70, 80 60) + + true + + + Test 188 + + POLYGON ((110 110, 200 20, 20 20, 110 110), (110 90, 50 30, 170 30, 110 90)) + + true + + + Test 189 + + LINESTRING (20 20, 200 20, 110 110, 20 20) + + true + + + Test 190 + + LINESTRING (110 90, 170 30, 50 30, 110 90) + + true + + + Test 191 + + LINESTRING (110 110, 170 50, 170 110, 110 110) + + true + + + Test 192 + + LINESTRING (110 90, 70 50, 130 50, 110 90) + + true + + + Test 193 + + LINESTRING (110 60, 20 150, 200 150, 110 60) + + true + + + Test 194 + + LINESTRING (110 130, 110 70, 200 100, 110 130) + + true + + + Test 195 + + LINESTRING (110 90, 160 40, 60 40, 110 90) + + true + + + Test 196 + + LINESTRING (110 100, 40 30, 180 30, 110 100) + + true + + + Test 197 + + POLYGON ((110 110, 200 20, 20 20, 110 110), (110 90, 60 40, 160 40, 110 90)) + + true + + + Test 198 + + LINESTRING (110 110, 180 30, 40 30, 110 110) + + true + + + Test 199 + + LINESTRING (110 90, 180 30, 40 30, 110 90) + + true + + + Test 200 + + LINESTRING (110 90, 50 30, 180 30, 110 90) + + true + + + Test 201 + + LINESTRING (110 110, 200 200, 200 110, 110 200) + + true + + + Test 202 + + POLYGON ((110 110, 200 20, 20 20, 110 110)) + + true + + + Test 203 + + LINESTRING (110 110, 200 200, 110 110, 20 200, 20 110, 200 110) + + true + + + Test 204 + + LINESTRING (110 110, 20 110, 200 110, 50 110, 110 170) + + true + + + Test 205 + + LINESTRING (110 110, 20 200, 110 200, 110 110, 200 200) + + true + + + Test 206 + + LINESTRING (110 110, 170 50, 20 200, 20 110, 200 110) + + true + + + Test 207 + + LINESTRING (110 110, 180 40, 110 40, 110 180) + + true + + + Test 208 + + LINESTRING (110 60, 50 30, 170 30, 90 70) + + true + + + Test 209 + + LINESTRING (110 110, 180 40, 110 40, 110 110, 70 40) + + true + + + Test 210 + + LINESTRING (230 70, 170 120, 190 60, 140 60, 170 120, 270 90) + + true + + + Test 211 + + MULTILINESTRING ((20 110, 200 110), (200 200, 110 110, 20 210, 110 110)) + + true + + + Test 212 + + MULTILINESTRING ((20 110, 200 110), (60 180, 60 110, 160 110, 110 110)) + + true + + + Test 213 + + MULTILINESTRING ((20 110, 200 110), (200 200, 110 110, 20 200, 110 200, 110 110)) + + true + + + Test 214 + + MULTILINESTRING ((20 110, 200 110), (110 50, 110 170, 110 70, 110 150, 200 150)) + + true + + + Test 215 + + MULTILINESTRING ((20 110, 200 110), (50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) + + true + + + Test 216 + + MULTILINESTRING ((20 110, 200 110), (110 60, 110 160, 200 160)) + + true + + + Test 217 + + MULTILINESTRING ((110 100, 40 30, 180 30), (170 30, 110 90, 50 30)) + + true + + + Test 218 + + MULTILINESTRING ((110 110, 60 40, 70 20, 150 20, 170 40), (180 30, 40 30, 110 80)) + + true + + + Test 219 + + MULTILINESTRING ((20 110, 200 110, 200 160), (110 110, 200 110, 200 70, 20 150)) + + true + + + Test 220 + + MULTIPOLYGON (((110 110, 20 20, 200 20, 110 110)), ((110 110, 20 200, 200 200, 110 110))) + + true + + + Test 221 + + MULTILINESTRING ((20 160, 70 110, 150 110, 200 160), (110 110, 20 110, 50 80, 70 110, 200 110)) + + true + + + Test 222 + + MULTILINESTRING ((20 110, 200 110), (110 110, 20 170, 20 130, 200 90)) + + true + + + Test 223 + + LINESTRING (0 0, 0 50, 50 50, 50 0, 0 0) + + true + + + Test 224 + + MULTILINESTRING ((0 0, 0 50), (0 50, 50 50), (50 50, 50 0), (50 0, 0 0)) + + true + + + Test 225 + + LINESTRING (40 180, 140 180) + + true + + + Test 226 + + MULTIPOLYGON (((20 320, 180 320, 180 180, 20 180, 20 320)), ((20 180, 20 80, 180 80, 180 180, 20 180))) + + false + + + Test 227 + + MULTIPOLYGON (((20 320, 180 320, 180 180, 20 180, 20 320)), ((60 180, 60 80, 180 80, 180 180, 60 180))) + + false + + + Test 228 + + LINESTRING (0 0, 60 0, 60 60, 60 0, 120 0) + + true + + + Test 229 + + MULTILINESTRING ((0 0, 60 0), (60 0, 120 0), (60 0, 60 60)) + + true + + + Test 230 + + LINESTRING (40 40, 120 120) + + true + + + Test 231 + + LINESTRING (40 40, 60 120) + + true + + + Test 232 + + LINESTRING (60 240, 40 40) + + true + + + Test 233 + + LINESTRING (40 40, 180 180) + + true + + + Test 234 + + LINESTRING (120 120, 20 200) + + true + + + Test 235 + + LINESTRING (60 240, 120 120) + + true + + + Test 236 + + LINESTRING (20 180, 140 140) + + true + + + Test 237 + + LINESTRING (40 120, 120 40) + + true + + + Test 238 + + LINESTRING (40 40, 100 100) + + true + + + Test 239 + + LINESTRING (100 100, 40 40) + + true + + + Test 240 + + LINESTRING (40 120, 120 160) + + true + + + Test 241 + + LINESTRING (20 20, 180 180) + + true + + + Test 242 + + LINESTRING (20 20, 110 110) + + true + + + Test 243 + + LINESTRING (50 50, 140 140) + + true + + + Test 244 + + LINESTRING (180 180, 40 40) + + true + + + Test 245 + + LINESTRING (120 120, 260 260) + + true + + + Test 246 + + LINESTRING (260 260, 120 120) + + true + + + Test 247 + + LINESTRING (40 40, 100 100, 200 120, 80 240) + + true + + + Test 248 + + LINESTRING (40 40, 20 100, 40 160, 20 200) + + true + + + Test 249 + + LINESTRING (20 200, 40 160, 20 100, 40 40) + + true + + + Test 250 + + LINESTRING (80 240, 200 120, 100 100, 40 40) + + true + + + Test 251 + + LINESTRING (60 60, 60 230, 140 230, 250 160) + + true + + + Test 252 + + LINESTRING (20 20, 60 60, 250 160, 310 230) + + true + + + Test 253 + + LINESTRING (20 20, 110 110, 200 110, 320 230) + + true + + + Test 254 + + LINESTRING (60 110, 60 250, 360 210) + + true + + + Test 255 + + LINESTRING (60 110, 110 160, 250 160, 310 160, 360 210) + + true + + + Test 256 + + LINESTRING (360 210, 310 160, 110 160, 60 110) + + true + + + Test 257 + + LINESTRING (160 160, 240 240) + + true + + + Test 258 + + LINESTRING (240 240, 160 160) + + true + + + Test 259 + + LINESTRING (60 150, 110 100, 170 100, 110 230) + + true + + + Test 260 + + LINESTRING (200 120, 200 190, 150 240, 200 240) + + true + + + Test 261 + + LINESTRING (200 240, 150 240, 200 200, 200 120) + + true + + + Test 262 + + LINESTRING (60 230, 80 140, 120 140, 140 230) + + true + + + Test 263 + + LINESTRING (60 110, 200 110, 250 160, 300 210) + + true + + + Test 264 + + LINESTRING (60 110, 200 110, 250 160, 300 210, 360 210) + + true + + + Test 265 + + LINESTRING (60 110, 220 110, 250 160, 280 110) + + true + + + Test 266 + + LINESTRING (60 110, 150 110, 200 160, 250 110, 360 110, 360 210) + + true + + + Test 267 + + LINESTRING (130 160, 160 110, 220 110, 250 160, 250 210) + + true + + + Test 268 + + LINESTRING (130 160, 160 110, 190 110, 230 210) + + true + + + Test 269 + + LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 360 210) + + true + + + Test 270 + + LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) + + true + + + Test 271 + + LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 380 210) + + true + + + Test 272 + + LINESTRING (110 160, 160 110, 200 110, 250 160, 250 210) + + true + + + Test 273 + + LINESTRING (110 160, 180 110, 250 160, 320 110) + + true + + + Test 274 + + LINESTRING (140 160, 180 80, 220 160, 250 80) + + true + + + Test 275 + + LINESTRING (40 40, 100 100, 200 120, 130 190) + + true + + + Test 276 + + LINESTRING (20 130, 70 130, 160 40) + + true + + + Test 277 + + LINESTRING (40 160, 40 100, 110 40, 170 40) + + true + + + Test 278 + + LINESTRING (130 110, 180 160, 230 110, 280 160, 330 110) + + true + + + Test 279 + + LINESTRING (30 140, 80 140, 100 100, 200 30) + + true + + + Test 280 + + LINESTRING (110 110, 110 160, 180 110, 250 160, 250 110) + + true + + + Test 281 + + LINESTRING (20 20, 80 80, 160 80, 240 80, 300 140) + + true + + + Test 282 + + LINESTRING (20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, 240 80, 300 80, 270 110, 200 110) + + true + + + Test 283 + + LINESTRING (20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, 230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, 80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, 70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, 40 190, 230 190, 20 200, 230 200) + + true + + + Test 284 + + LINESTRING (30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, 70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, 120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, 150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, 190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) + + true + + + Test 285 + + LINESTRING (80 240, 120 200, 200 120, 100 100, 80 80, 40 40) + + true + + + Test 286 + + LINESTRING (260 210, 240 130, 280 120, 260 40) + + true + + + Test 287 + + LINESTRING (100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) + + true + + + Test 288 + + LINESTRING (140 130, 100 110, 120 60, 170 60) + + true + + + Test 289 + + LINESTRING (60 110, 110 160, 310 160, 360 210) + + true + + + Test 290 + + LINESTRING (60 110, 110 160, 250 160) + + true + + + Test 291 + + LINESTRING (110 160, 310 160, 340 190) + + true + + + Test 292 + + LINESTRING (140 160, 250 160, 310 160, 340 190) + + true + + + Test 293 + + LINESTRING (110 160, 250 160, 310 160) + + true + + + Test 294 + + LINESTRING (200 120, 100 100, 40 40, 140 80, 200 40) + + true + + + Test 295 + + LINESTRING (280 240, 240 140, 200 120, 100 100, 40 40) + + true + + + Test 296 + + LINESTRING (80 190, 140 140, 40 40) + + true + + + Test 297 + + LINESTRING (240 200, 200 260, 80 240, 140 180) + + true + + + Test 298 + + LINESTRING (140 180, 80 240, 200 260, 240 200) + + true + + + Test 299 + + LINESTRING (280 240, 240 140, 200 120, 80 240) + + true + + + Test 300 + + LINESTRING (20 80, 120 80, 200 80, 260 20) + + true + + + Test 301 + + LINESTRING (100 100, 200 120, 240 140, 280 240) + + true + + + Test 302 + + LINESTRING (280 240, 240 140, 200 120, 100 100) + + true + + + Test 303 + + LINESTRING (80 20, 80 80, 240 80, 300 20) + + true + + + Test 304 + + LINESTRING (20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, 300 80) + + true + + + Test 305 + + LINESTRING (100 100, 20 180, 180 180) + + true + + + Test 306 + + LINESTRING (100 100, 180 20, 20 20, 100 100) + + true + + + Test 307 + + LINESTRING (20 100, 180 100, 100 180) + + true + + + Test 308 + + LINESTRING (100 40, 100 160, 180 160) + + true + + + Test 309 + + LINESTRING (20 100, 100 100, 180 100, 100 180) + + true + + + Test 310 + + LINESTRING (100 100, 160 40) + + true + + + Test 311 + + LINESTRING (100 100, 180 20) + + true + + + Test 312 + + LINESTRING (60 60, 100 100, 140 60) + + true + + + Test 313 + + LINESTRING (100 100, 190 10, 190 100) + + true + + + Test 314 + + LINESTRING (100 100, 160 40, 160 100) + + true + + + Test 315 + + LINESTRING (60 140, 160 40, 160 140) + + true + + + Test 316 + + LINESTRING (20 20, 140 140) + + true + + + Test 317 + + LINESTRING (80 80, 20 80, 140 80, 80 20, 80 140) + + true + + + Test 318 + + LINESTRING (80 80, 20 80, 140 80) + + true + + + Test 319 + + LINESTRING (80 80, 140 80, 80 20, 80 140) + + true + + + Test 320 + + LINESTRING (80 80, 20 80, 140 80, 80 20, 80 80) + + true + + + Test 321 + + LINESTRING (80 80, 20 80, 140 80, 80 80) + + true + + + Test 322 + + LINESTRING (80 80, 20 80, 20 140, 140 20, 80 20, 80 80) + + true + + + Test 323 + + LINESTRING (20 140, 140 20, 100 20, 100 80) + + true + + + Test 324 + + LINESTRING (140 80, 20 80, 120 80, 80 20, 80 140) + + true + + + Test 325 + + LINESTRING (140 80, 20 80, 140 80) + + true + + + Test 326 + + LINESTRING (140 80, 20 80, 80 140, 80 20) + + true + + + Test 327 + + LINESTRING (140 80, 80 80, 20 80, 50 140, 50 60) + + true + + + Test 328 + + LINESTRING (140 80, 20 80, 120 80, 80 20, 80 80, 80 140) + + true + + + Test 329 + + LINESTRING (140 80, 20 80, 80 80, 140 80) + + true + + + Test 330 + + LINESTRING (140 80, 20 80, 80 140, 80 80, 80 20) + + true + + + Test 331 + + LINESTRING (130 150, 220 150, 220 240) + + true + + + Test 332 + + LINESTRING (130 240, 130 150, 220 20, 50 20, 130 150) + + true + + + Test 333 + + LINESTRING (30 150, 130 150, 250 150) + + true + + + Test 334 + + LINESTRING (30 150, 250 150) + + true + + + Test 335 + + LINESTRING (130 240, 130 20, 30 20, 130 150) + + true + + + Test 336 + + LINESTRING (120 240, 120 20, 20 20, 120 170) + + true + + + Test 337 + + LINESTRING (200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + true + + + Test 338 + + LINESTRING (110 110, 200 110) + + true + + + Test 339 + + LINESTRING (20 110, 200 110) + + true + + + Test 340 + + LINESTRING (90 200, 90 130, 110 110, 150 200) + + true + + + Test 341 + + LINESTRING (200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + true + + + Test 342 + + LINESTRING (200 110, 110 110, 90 130, 90 200) + + true + + + Test 343 + + LINESTRING (80 80, 150 80, 210 80) + + true + + + Test 344 + + MULTILINESTRING ((20 20, 140 140), (20 140, 140 20)) + + true + + + Test 345 + + LINESTRING (40 80, 160 200, 260 20, 40 80) + + true + + + Test 346 + + LINESTRING (40 80, 260 20, 160 200, 40 80) + + true + + + Test 347 + + LINESTRING (260 20, 40 80, 160 200, 260 20) + + true + + + Test 348 + + LINESTRING (100 140, 160 200, 260 20, 40 80, 100 140) + + true + + + Test 349 + + LINESTRING (100 100, 180 180, 20 180, 100 100) + + true + + + Test 350 + + LINESTRING (40 150, 40 40, 150 40, 150 150, 40 150) + + true + + + Test 351 + + LINESTRING (40 150, 150 40, 170 20, 170 190, 40 150) + + true + + + Test 352 + + LINESTRING (180 100, 20 100, 100 180, 180 100) + + true + + + Test 353 + + LINESTRING (180 180, 100 100, 20 180, 180 180) + + true + + + Test 354 + + LINESTRING (20 180, 100 100, 20 20, 20 180) + + true + + + Test 355 + + LINESTRING (100 20, 100 180, 180 100, 100 20) + + true + + + Test 356 + + LINESTRING (170 20, 20 170, 170 170, 170 20) + + true + + + Test 357 + + LINESTRING (40 150, 150 150, 90 210, 40 150) + + true + + + Test 358 + + LINESTRING (20 150, 170 150, 90 230, 20 150) + + true + + + Test 359 + + LINESTRING (40 150, 150 150, 150 40, 20 40, 20 150, 40 150) + + true + + + Test 360 + + LINESTRING (110 110, 200 20, 20 20, 110 110) + + true + + + Test 361 + + LINESTRING (200 20, 20 200, 200 200, 110 110, 110 40) + + true + + + Test 362 + + LINESTRING (200 20, 20 200, 200 200, 20 20) + + true + + + Test 363 + + LINESTRING (110 110, 20 110, 110 20, 20 20, 110 110) + + true + + + Test 364 + + LINESTRING (110 110, 200 200, 110 200, 200 110, 110 110) + + true + + + Test 365 + + LINESTRING (20 120, 120 120, 20 20, 120 20, 20 120) + + true + + + Test 366 + + LINESTRING (170 100, 70 100, 170 170, 70 170, 170 100) + + true + + + Test 367 + + LINESTRING (20 110, 110 110, 20 20, 110 20, 20 110) + + true + + + Test 368 + + LINESTRING (110 160, 70 110, 60 160, 20 130, 110 160) + + true + + + Test 369 + + LINESTRING (20 200, 200 200, 20 20, 200 20, 20 200) + + true + + + Test 370 + + LINESTRING (20 110, 200 110, 200 160, 20 60, 20 110) + + true + + + Test 371 + + LINESTRING (200 200, 110 110, 200 110, 110 200, 200 200) + + true + + + Test 372 + + LINESTRING (220 120, 120 20, 220 20, 120 120, 220 120) + + true + + + Test 373 + + MULTILINESTRING ((70 20, 20 90, 70 170), (70 170, 120 90, 70 20)) + + true + + + Test 374 + + MULTILINESTRING ((20 20, 90 20, 170 20), (90 20, 90 80, 90 140)) + + true + + + Test 375 + + MULTILINESTRING ((90 140, 90 60, 90 20), (170 20, 130 20, 20 20)) + + true + + + Test 376 + + MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (130 100, 130 60, 90 20, 50 90)) + + true + + + Test 377 + + MULTILINESTRING ((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) + + true + + + Test 378 + + MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60)) + + true + + + Test 379 + + MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (130 100, 90 20)) + + true + + + Test 380 + + MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (120 100, 170 100, 90 20)) + + true + + + Test 381 + + MULTILINESTRING ((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20)) + + true + + + Test 382 + + MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60, 20 140, 90 20)) + + true + + + Test 383 + + MULTILINESTRING ((20 20, 90 90, 20 160), (90 160, 90 20)) + + true + + + Test 384 + + MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 120 120, 90 90, 160 60)) + + true + + + Test 385 + + MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 120 120, 90 90, 120 60, 160 60)) + + true + + + Test 386 + + MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 90 90, 160 60)) + + true + + + Test 387 + + POINT (20 20) + + true + + + Test 388 + + POLYGON ((60 120, 60 40, 160 40, 160 120, 60 120)) + + true + + + Test 389 + + POINT (70 170) + + true + + + Test 390 + + POLYGON ((110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) + + true + + + Test 391 + + POINT (110 130) + + true + + + Test 392 + + POLYGON ((20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) + + true + + + Test 393 + + POINT (100 70) + + true + + + Test 394 + + POLYGON ((20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) + + true + + + Test 395 + + POLYGON ((20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) + + false + + + Test 396 + + POINT (60 120) + + true + + + Test 397 + + POINT (110 120) + + true + + + Test 398 + + POINT (160 120) + + true + + + Test 399 + + POINT (100 150) + + true + + + Test 400 + + POINT (100 80) + + true + + + Test 401 + + POINT (60 160) + + true + + + Test 402 + + POLYGON ((190 190, 360 20, 20 20, 190 190), (280 50, 100 50, 190 140, 280 50)) + + true + + + Test 403 + + POINT (190 90) + + true + + + Test 404 + + POINT (190 190) + + true + + + Test 405 + + POINT (360 20) + + true + + + Test 406 + + POINT (130 130) + + true + + + Test 407 + + POINT (280 50) + + true + + + Test 408 + + POINT (150 100) + + true + + + Test 409 + + POINT (100 50) + + true + + + Test 410 + + POINT (140 120) + + true + + + Test 411 + + POINT (190 50) + + true + + + Test 412 + + POLYGON ((190 190, 360 20, 20 20, 190 190), (90 50, 150 110, 190 50, 90 50), (190 50, 230 110, 290 50, 190 50)) + + true + + + Test 413 + + POINT (180 90) + + true + + + Test 414 + + POLYGON ((190 190, 360 20, 20 20, 190 190), (180 140, 180 40, 80 40, 180 140), (180 90, 210 140, 310 40, 230 40, 180 90)) + + true + + + Test 415 + + MULTIPOINT (20 80, 110 160, 20 160) + + true + + + Test 416 + + MULTIPOINT (20 80, 60 120, 20 160) + + true + + + Test 417 + + MULTIPOINT (10 80, 110 170, 110 120) + + true + + + Test 418 + + MULTIPOINT (10 80, 110 170, 160 120) + + true + + + Test 419 + + MULTIPOINT (20 120, 60 120, 110 120, 160 120, 200 120) + + true + + + Test 420 + + MULTIPOINT (60 120, 110 120, 160 120) + + true + + + Test 421 + + MULTIPOINT (60 120, 160 120, 160 40, 60 40) + + true + + + Test 422 + + MULTIPOINT (20 150, 60 120, 110 80) + + true + + + Test 423 + + MULTIPOINT (110 80, 160 120, 200 160) + + true + + + Test 424 + + MULTIPOINT (110 80, 110 120, 110 160) + + true + + + Test 425 + + MULTIPOINT (110 170, 110 80) + + true + + + Test 426 + + MULTIPOINT (60 120, 160 120, 110 80, 110 170) + + true + + + Test 427 + + MULTIPOINT (90 80, 130 80) + + true + + + Test 428 + + MULTIPOINT (60 120, 160 120, 110 80) + + true + + + Test 429 + + MULTIPOINT (40 170, 40 90, 130 170) + + true + + + Test 430 + + MULTIPOINT (90 170, 280 170, 190 90) + + true + + + Test 431 + + MULTIPOINT (190 110, 150 70, 230 70) + + true + + + Test 432 + + POINT (100 100) + + true + + + Test 433 + + MULTIPOLYGON (((20 100, 20 20, 100 20, 100 100, 20 100)), ((100 180, 100 100, 180 100, 180 180, 100 180))) + + true + + + Test 434 + + POINT (20 100) + + true + + + Test 435 + + POINT (60 100) + + true + + + Test 436 + + POINT (110 110) + + true + + + Test 437 + + MULTIPOLYGON (((110 110, 20 200, 200 200, 110 110), (110 110, 80 180, 140 180, 110 110)), ((110 110, 20 20, 200 20, 110 110), (110 110, 80 40, 140 40, 110 110))) + + true + + + Test 438 + + POINT (110 200) + + true + + + Test 439 + + LINESTRING (90 80, 160 150, 300 150, 340 150, 340 240) + + true + + + Test 440 + + POINT (90 80) + + true + + + Test 441 + + POINT (340 240) + + true + + + Test 442 + + POINT (230 150) + + true + + + Test 443 + + POINT (160 150) + + true + + + Test 444 + + POINT (90 150) + + true + + + Test 445 + + LINESTRING (150 150, 20 20, 280 20, 150 150) + + true + + + Test 446 + + POINT (150 80) + + true + + + Test 447 + + POINT (150 150) + + true + + + Test 448 + + POINT (100 20) + + true + + + Test 449 + + POINT (220 220) + + true + + + Test 450 + + LINESTRING (110 110, 220 20, 20 20, 110 110, 220 220) + + true + + + Test 451 + + LINESTRING (110 110, 220 20, 20 20, 220 220) + + true + + + Test 452 + + POINT (110 20) + + true + + + Test 453 + + POINT (220 20) + + true + + + Test 454 + + LINESTRING (220 220, 20 20, 220 20, 110 110) + + true + + + Test 455 + + POINT (20 110) + + true + + + Test 456 + + LINESTRING (20 200, 20 20, 110 20, 20 110, 110 200) + + true + + + Test 457 + + POINT (20 200) + + true + + + Test 458 + + LINESTRING (20 200, 200 20, 20 20, 200 200) + + true + + + Test 459 + + LINESTRING (20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + true + + + Test 460 + + POINT (80 140) + + true + + + Test 461 + + LINESTRING (20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + true + + + Test 462 + + LINESTRING (20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + true + + + Test 463 + + LINESTRING (20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + true + + + Test 464 + + LINESTRING (20 200, 200 20, 20 20, 110 110, 200 200) + + true + + + Test 465 + + LINESTRING (20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + true + + + Test 466 + + LINESTRING (110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + true + + + Test 467 + + LINESTRING (110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + true + + + Test 468 + + LINESTRING (110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + true + + + Test 469 + + LINESTRING (110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + true + + + Test 470 + + LINESTRING (110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) + + true + + + Test 471 + + LINESTRING (110 110, 110 200, 20 200, 200 20, 20 20, 200 200) + + true + + + Test 472 + + LINESTRING (110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + true + + + Test 473 + + LINESTRING (110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) + + true + + + Test 474 + + LINESTRING (200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + true + + + Test 475 + + LINESTRING (200 200, 20 20, 200 20, 20 200, 110 200, 110 110) + + true + + + Test 476 + + LINESTRING (200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) + + true + + + Test 477 + + LINESTRING (200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) + + true + + + Test 478 + + POINT (110 160) + + true + + + Test 479 + + LINESTRING (110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) + + true + + + Test 480 + + LINESTRING (110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) + + true + + + Test 481 + + LINESTRING (110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) + + true + + + Test 482 + + LINESTRING (110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + true + + + Test 483 + + LINESTRING (110 110, 200 200, 110 200, 110 20, 20 20, 110 110) + + true + + + Test 484 + + POINT (140 200) + + true + + + Test 485 + + LINESTRING (110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + true + + + Test 486 + + POINT (90 130) + + true + + + Test 487 + + LINESTRING (90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) + + true + + + Test 488 + + LINESTRING (90 130, 20 130, 20 200, 200 20, 20 20, 200 200) + + true + + + Test 489 + + LINESTRING (200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) + + true + + + Test 490 + + LINESTRING (110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, 110 110) + + true + + + Test 491 + + LINESTRING (110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) + + true + + + Test 492 + + LINESTRING (110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, 110 110) + + true + + + Test 493 + + LINESTRING (110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) + + true + + + Test 494 + + LINESTRING (200 200, 20 20, 200 20, 20 200, 200 200) + + true + + + Test 495 + + LINESTRING (200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) + + true + + + Test 496 + + LINESTRING (200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) + + true + + + Test 497 + + LINESTRING (90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + true + + + Test 498 + + LINESTRING (90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + true + + + Test 499 + + LINESTRING (90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + true + + + Test 500 + + LINESTRING (90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + true + + + Test 501 + + LINESTRING (90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + true + + + Test 502 + + LINESTRING (110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + true + + + Test 503 + + POINT (110 150) + + true + + + Test 504 + + LINESTRING (110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + true + + + Test 505 + + LINESTRING (20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + true + + + Test 506 + + MULTIPOINT (50 250, 90 220, 130 190) + + true + + + Test 507 + + MULTIPOINT (180 180, 230 130, 280 80) + + true + + + Test 508 + + MULTIPOINT (50 120, 90 80, 130 40) + + true + + + Test 509 + + MULTIPOINT (300 280, 340 240, 380 200) + + true + + + Test 510 + + MULTIPOINT (230 150, 260 120, 290 90) + + true + + + Test 511 + + MULTIPOINT (200 190, 240 150, 270 110) + + true + + + Test 512 + + MULTIPOINT (160 150, 190 120, 220 90) + + true + + + Test 513 + + MULTIPOINT (120 190, 160 150, 200 110) + + true + + + Test 514 + + MULTIPOINT (90 80, 160 150, 340 240) + + true + + + Test 515 + + MULTIPOINT (90 80, 160 150, 300 150) + + true + + + Test 516 + + MULTIPOINT (90 80, 160 150, 240 150) + + true + + + Test 517 + + MULTIPOINT (90 80, 130 120, 210 150) + + true + + + Test 518 + + MULTIPOINT (130 120, 210 150, 340 200) + + true + + + Test 519 + + MULTIPOINT (160 150, 240 150, 340 210) + + true + + + Test 520 + + MULTIPOINT (160 150, 300 150, 340 150) + + true + + + Test 521 + + MULTIPOINT (160 150, 240 150, 340 240) + + true + + + Test 522 + + POINT (40 60) + + true + + + Test 523 + + POINT (40 40) + + true + + + Test 524 + + MULTIPOINT (20 20, 80 80, 20 120) + + true + + + Test 525 + + MULTIPOINT (40 40, 80 60, 120 100) + + true + + + Test 526 + + MULTIPOINT (40 40, 120 100, 80 60) + + true + + + Test 527 + + MULTIPOINT (40 40, 60 100, 100 60, 120 120) + + true + + + Test 528 + + MULTIPOINT (20 120, 60 60, 100 100, 140 40) + + true + + + Test 529 + + MULTIPOINT (20 20, 80 70, 140 120, 200 170) + + true + + + Test 530 + + MULTIPOINT (20 20, 140 120, 80 70, 200 170) + + true + + + Test 531 + + MULTIPOINT (80 70, 20 20, 200 170, 140 120) + + true + + + Test 532 + + MULTIPOINT (80 70, 140 120) + + true + + + Test 533 + + MULTIPOINT (140 120, 80 70) + + true + + + Test 534 + + MULTIPOINT (80 170, 140 120, 200 80) + + true + + + Test 535 + + MULTIPOINT (80 170, 140 120, 200 80, 80 70) + + true + + + Test 536 + + POINT (10 10) + + true + + + Test 537 + + MULTIPOINT (10 10, 20 20) + + true + + + Test 538 + + LINESTRING (10 10, 20 20) + + true + + + Test 539 + + LINESTRING (10 10, 20 20, 20 10, 10 10) + + true + + + Test 540 + + LINESTRING (40 40, 100 100, 180 100, 180 180, 100 180, 100 100) + + true + + + Test 541 + + MULTILINESTRING ((10 10, 20 20), (20 20, 30 30)) + + true + + + Test 542 + + MULTILINESTRING ((10 10, 20 20), (20 20, 30 20), (20 20, 30 30)) + + true + + + Test 543 + + MULTILINESTRING ((10 10, 20 20), (20 20, 30 20), (20 20, 30 30), (20 20, 30 40)) + + true + + + Test 544 + + MULTILINESTRING ((10 10, 20 20), (20 20, 20 30, 30 30, 30 20, 20 20)) + + true + + + Test 545 + + MULTILINESTRING ((10 10, 20 20, 20 30, 30 30, 30 20, 20 20)) + + true + + + Test 546 + + POLYGON ((40 60, 420 60, 420 320, 40 320, 40 60)) + + true + + + Test 547 + + POLYGON ((40 60, 420 60, 420 320, 40 320, 40 60), (200 140, 160 220, 260 200, 200 140)) + + true + + + Test 548 + + MULTIPOINT (130 240, 130 240, 130 240, 570 240, 570 240, 570 240, 650 240) + + true + + + Test 549 + + POLYGON ((10 10, 100 10, 100 100, 10 100, 10 10)) + + true + + + Test 550 + + LINESTRING (30 220, 240 220, 240 220) + + true + + + Test 551 + + LINESTRING (110 290, 110 100, 110 100) + + true + + + Test 552 + + LINESTRING (120 230, 120 200, 150 180, 180 220, 160 260, 90 250, 80 190, 140 110, 230 150, 240 230, 180 320, 60 310, 40 160, 140 50, 280 140) + + true + + + Test 553 + + POLYGON ((200 360, 230 210, 100 190, 270 150, 360 10, 320 200, 490 230, 280 240, 200 360), (220 300, 250 200, 150 190, 290 150, 330 70, 310 210, 390 230, 280 230, 220 300)) + + true + + + Test 554 + + MULTIPOINT (70 340, 70 50, 430 50, 420 340, 340 120, 390 110, 390 70, 350 100, 350 50, 370 90, 320 80, 360 120, 350 80, 390 90, 420 80, 410 60, 410 100, 370 100, 380 60, 370 80, 380 100, 360 80, 370 80, 380 70, 390 80, 390 70, 410 70, 400 60, 410 60, 410 60, 410 60, 370 70, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50) + + true + + + Test 555 + + MULTIPOINT (140 350, 510 140, 110 140, 250 290, 250 50, 300 370, 450 310, 440 160, 290 280, 220 160, 100 260, 320 230, 200 280, 360 130, 330 210, 380 80, 220 210, 380 310, 260 150, 260 110, 170 130) + + true + + + Test 556 + + GEOMETRYCOLLECTION (POINT (110 300), POINT (100 110), POINT (130 210), POINT (150 210), POINT (150 180), POINT (130 170), POINT (140 190), POINT (130 200), LINESTRING (240 50, 210 120, 270 80, 250 140, 330 70, 300 160, 340 130, 340 130), POLYGON ((210 340, 220 260, 150 270, 230 220, 230 140, 270 210, 360 240, 260 250, 260 280, 240 270, 210 340), (230 270, 230 250, 200 250, 240 220, 240 190, 260 220, 290 230, 250 230, 230 270))) + + true + + + Test 557 + + MULTIPOINT (50 320, 50 280, 50 230, 50 160, 50 120, 100 120, 160 120, 210 120, 210 180, 210 150, 180 180, 140 180, 140 210, 140 260, 160 180, 140 300, 140 320, 110 320, 80 320) + + true + + + Test 559 + + POLYGON ((50 50, 200 50, 200 200, 50 200, 50 50)) + + true + + + Test 560 + + POLYGON ((20 20, 20 160, 160 160, 160 20, 20 20), (140 140, 40 140, 40 40, 140 40, 140 140)) + + true + + + Test 561 + + POLYGON ((80 100, 220 100, 220 240, 80 240, 80 100)) + + true + + + Test 562 + + POLYGON ((20 340, 330 380, 50 40, 20 340)) + + true + + + Test 563 + + POLYGON ((210 320, 140 270, 0 270, 140 220, 210 320)) + + true + + + Test 564 + + POLYGON ((0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0)) + + true + + + Test 565 + + POLYGON ((220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0)) + + true + + + Test 566 + + POLYGON ((0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, 0 0)) + + true + + + Test 567 + + POLYGON ((230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, 230 0)) + + true + + + Test 568 + + POLYGON ((0 0, 210 0, 210 230, 0 230, 0 0)) + + true + + + Test 569 + + MULTIPOLYGON (((40 20, 0 0, 20 40, 60 60, 40 20)), ((60 90, 60 60, 90 60, 90 90, 60 90)), ((70 120, 90 90, 100 120, 70 120)), ((120 70, 90 90, 120 100, 120 70))) + + true + + + Test 570 + + POLYGON ((0 0, 340 0, 340 300, 0 300, 0 0)) + + true + + + Test 571 + + MULTIPOLYGON (((40 20, 0 0, 20 40, 60 60, 40 20)), ((60 100, 60 60, 100 60, 100 100, 60 100))) + + true + + + Test 572 + + POLYGON ((0 0, 120 0, 120 120, 0 120, 0 0)) + + true + + + Test 573 + + MULTIPOLYGON (((60 20, 0 20, 60 60, 60 20)), ((60 100, 60 60, 100 60, 100 100, 60 100))) + + true + + + Test 574 + + POLYGON ((160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) + + true + + + Test 575 + + POLYGON ((300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), (290 240, 240 200, 240 110, 290 80, 330 170, 290 240)) + + true + + + Test 576 + + MULTIPOLYGON (((120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, 200 200, 220 200, 220 340, 120 340)), ((360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, 220 120, 220 100, 360 100, 360 200))) + + true + + + Test 577 + + MULTIPOLYGON (((100 220, 100 200, 300 200, 300 220, 100 220)), ((280 180, 280 160, 300 160, 300 180, 280 180)), ((220 140, 220 120, 240 120, 240 140, 220 140)), ((180 220, 160 240, 200 240, 180 220))) + + true + + + Test 578 + + MULTIPOLYGON (((100 200, 100 180, 120 180, 120 200, 100 200)), ((60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, 160 220, 220 220, 220 240, 60 240), (80 220, 80 160, 140 160, 140 220, 80 220)), ((280 220, 240 180, 260 160, 300 200, 280 220))) + + true + + + Test 579 + + MULTIPOLYGON (((80 220, 80 160, 140 160, 140 220, 80 220), (100 200, 100 180, 120 180, 120 200, 100 200)), ((220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, 220 140, 320 140, 320 240, 220 240), (240 220, 240 160, 300 160, 300 220, 240 220))) + + true + + + Test 580 + + POLYGON ((60 160, 140 160, 140 60, 60 60, 60 160)) + + true + + + Test 581 + + POLYGON ((160 160, 100 160, 100 100, 160 100, 160 160), (140 140, 120 140, 120 120, 140 120, 140 140)) + + true + + + Test 582 + + POLYGON ((10 10, 100 10, 10 11, 10 10)) + + true + + + Test 583 + + POLYGON ((90 0, 200 0, 200 200, 90 200, 90 0)) + + true + + + Test 584 + + POLYGON ((100 10, 10 10, 90 11, 90 20, 100 20, 100 10)) + + true + + + Test 585 + + POLYGON ((20 20, 0 20, 0 0, 20 0, 20 20)) + + true + + + Test 586 + + POLYGON ((10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10)) + + true + + + Test 587 + + POLYGON ((60 40, 40 40, 40 20, 60 20, 60 40)) + + true + + + Test 588 + + POLYGON ((10 100, 10 10, 100 10, 100 100, 10 100), (90 90, 11 90, 10 10, 90 11, 90 90)) + + true + + + Test 589 + + POLYGON ((0 30, 0 0, 30 0, 30 30, 0 30)) + + true + + + Test 590 + + MULTIPOLYGON (((0 0, 100 0, 100 20, 0 20, 0 0)), ((0 40, 0 21, 100 20, 100 40, 0 40))) + + true + + + Test 591 + + POLYGON ((110 30, 90 30, 90 10, 110 10, 110 30)) + + true + + + Test 592 + + POLYGON ((100 10, 0 10, 100 11, 100 10)) + + true + + + Test 593 + + POLYGON ((100 10, 0 10, 90 11, 90 20, 100 20, 100 10)) + + true + + + Test 594 + + POLYGON ((10 30, 10 0, 30 10, 30 30, 10 30)) + + true + + + Test 595 + + POLYGON ((10 30, 10 10, 30 10, 30 30, 10 30)) + + true + + + Test 596 + + POLYGON ((0 0, 200 0, 0 198, 0 0)) + + true + + + Test 597 + + POLYGON ((280 60, 139 60, 280 70, 280 60)) + + true + + + Test 598 + + POLYGON ((0 0, 140 10, 0 20, 0 0)) + + true + + + Test 599 + + POLYGON ((280 0, 139 10, 280 1, 280 0)) + + true + + + Test 600 + + MULTIPOLYGON (((1 4, 1 1, 2 1, 2 4, 1 4)), ((3 4, 3 1, 4 1, 4 4, 3 4)), ((5 4, 5 1, 6 1, 6 4, 5 4)), ((7 4, 7 1, 8 1, 8 4, 7 4)), ((9 4, 9 1, 10 1, 10 4, 9 4))) + + true + + + Test 601 + + POLYGON ((0 2, 11 3, 11 2, 0 2)) + + true + + + Test 602 + + POLYGON ((20 40, 20 200, 180 200, 180 40, 20 40), (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) + + true + + + Test 603 + + POLYGON ((200 160, 160 160, 160 80, 200 80, 200 160)) + + true + + + Test 604 + + LINESTRING (160 140, 160 100) + + true + + + Test 605 + + POLYGON ((20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), (140 160, 80 120, 140 80, 140 160)) + + true + + + Test 606 + + POLYGON ((200 160, 150 160, 150 80, 200 80, 200 160)) + + true + + + Test 607 + + POLYGON ((83 33, 62 402, 68 402, 83 33)) + + true + + + Test 608 + + POLYGON ((78 39, 574 76, 576 60, 78 39)) + + true + + + Test 609 + + LINESTRING (240 190, 120 120) + + true + + + Test 610 + + POLYGON ((110 240, 50 80, 240 70, 110 240)) + + true + + + Test 611 + + LINESTRING (0 100, 100 100, 200 200) + + true + + + Test 612 + + POLYGON ((30 240, 260 30, 30 30, 30 240), (80 140, 80 80, 140 80, 80 140)) + + true + + + Test 613 + + LINESTRING (40 340, 200 250, 120 180, 160 110, 270 40) + + true + + + Test 614 + + MULTIPOLYGON (((60 320, 60 80, 300 80, 60 320), (80 280, 80 100, 260 100, 80 280)), ((120 160, 140 160, 140 140, 120 160))) + + true + + + Test 615 + + MULTILINESTRING ((100 240, 100 180, 160 180, 160 120, 220 120), (40 360, 40 60, 340 60, 40 360, 40 20), (120 120, 120 140, 100 140, 100 120, 140 120)) + + true + + + Test 616 + + MULTIPOLYGON (((60 260, 60 120, 220 120, 220 260, 60 260), (80 240, 80 140, 200 140, 200 240, 80 240)), ((100 220, 100 160, 180 160, 180 220, 100 220), (120 200, 120 180, 160 180, 160 200, 120 200))) + + true + + + Test 617 + + MULTILINESTRING ((40 260, 240 260, 240 240, 40 240, 40 220, 240 220), (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320)) + + true + + + Test 618 + + MULTIPOLYGON (((60 320, 60 120, 280 120, 280 320, 60 320), (120 260, 120 180, 240 180, 240 260, 120 260)), ((280 400, 320 400, 320 360, 280 360, 280 400)), ((300 240, 300 220, 320 220, 320 240, 300 240))) + + true + + + Test 619 + + MULTILINESTRING ((80 300, 80 160, 260 160, 260 300, 80 300, 80 140), (220 360, 220 240, 300 240, 300 360)) + + true + + + Test 620 + + MULTIPOLYGON (((120 180, 60 80, 180 80, 120 180)), ((100 240, 140 240, 120 220, 100 240))) + + true + + + Test 621 + + MULTILINESTRING ((180 260, 120 180, 60 260, 180 260), (60 300, 60 40), (100 100, 140 100)) + + true + + + Test 622 + + POLYGON ((95 9, 81 414, 87 414, 95 9)) + + true + + + Test 623 + + LINESTRING (93 13, 96 13) + + true + + + Test 624 + + LINESTRING (0 0, 100 100) + + true + + + Test 625 + + LINESTRING (0 100, 100 0) + + true + + + Test 626 + + LINESTRING (0 0, 100 100, 200 0) + + true + + + Test 627 + + LINESTRING (0 0, 100 100, 200 200) + + true + + + Test 628 + + LINESTRING (40 360, 40 220, 120 360) + + true + + + Test 629 + + LINESTRING (120 340, 60 220, 140 220, 140 360) + + true + + + Test 630 + + LINESTRING (220 240, 200 220, 60 320, 40 300, 180 200, 160 180, 20 280) + + true + + + Test 631 + + LINESTRING (220 240, 140 160, 120 180, 220 280, 200 300, 100 200) + + true + + + Test 632 + + LINESTRING (80 320, 220 320, 220 160, 80 300) + + true + + + Test 633 + + LINESTRING (60 200, 60 260, 140 200) + + true + + + Test 634 + + LINESTRING (60 200, 60 140, 140 200) + + true + + + Test 635 + + LINESTRING (180 200, 100 280, 20 200, 100 120, 180 200) + + true + + + Test 636 + + LINESTRING (100 200, 220 200, 220 80, 100 80, 100 200) + + true + + + Test 637 + + LINESTRING (0 10, 620 10, 0 11) + + true + + + Test 638 + + LINESTRING (400 60, 400 10) + + true + + + Test 639 + + MULTIPOLYGON (((120 320, 180 200, 240 320, 120 320)), ((180 200, 240 80, 300 200, 180 200))) + + true + + + Test 640 + + MULTIPOINT (120 320, 180 260, 180 320, 180 200, 300 200, 200 220) + + true + + + Test 641 + + MULTIPOLYGON (((120 80, 420 80, 420 340, 120 340, 120 80), (160 300, 160 120, 380 120, 380 300, 160 300)), ((200 260, 200 160, 340 160, 340 260, 200 260), (240 220, 240 200, 300 200, 300 220, 240 220))) + + true + + + Test 642 + + MULTIPOINT (200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200) + + true + + + Test 643 + + MULTIPOINT (40 90, 20 20, 70 70) + + true + + + Test 644 + + LINESTRING (20 20, 100 100) + + true + + + Test 645 + + LINESTRING (20 20, 110 110, 170 50, 130 10, 70 70) + + true + + + Test 646 + + MULTILINESTRING ((100 320, 100 220), (100 180, 200 180), (220 180, 220 320), (220 320, 160 320), (100 320, 100 220), (100 180, 200 180), (220 180, 220 320), (220 320, 160 320), (100 220, 100 320)) + + true + + + Test 647 + + MULTIPOINT (100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320) + + true + + + Test 648 + + MULTILINESTRING ((-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340), (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140)) + + true + + + Test 649 + + MULTIPOINT (-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120) + + true + + + Test 650 + + MULTILINESTRING ((180 100, 140 280, 240 140, 220 120, 140 280), (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280)) + + true + + + Test 651 + + POINT (200 200) + + true + + + Test 652 + + MULTIPOINT (100 100, 200 200) + + true + + + Test 653 + + MULTIPOINT (100 100, 200 200, 300 300, 500 500) + + true + + + Test 654 + + MULTIPOINT (100 100, 200 200, 400 400, 600 600) + + true + + + Test 655 + + POINT (80 200) + + true + + + Test 656 + + POINT (260 80) + + true + + + Test 657 + + POINT (60 260) + + true + + + Test 658 + + POINT (120 260) + + true + + + Test 659 + + POINT (80 80) + + true + + + Test 660 + + POINT (80 280) + + true + + + Test 661 + + POLYGON ((0 0, 140 0, 140 140, 0 140, 0 0)) + + true + + + Test 662 + + POLYGON ((140 0, 0 0, 0 140, 140 140, 140 0)) + + true + + + Test 663 + + POLYGON ((40 60, 360 60, 360 300, 40 300, 40 60)) + + true + + + Test 664 + + POLYGON ((120 100, 280 100, 280 240, 120 240, 120 100)) + + true + + + Test 665 + + POLYGON ((80 100, 360 100, 360 280, 80 280, 80 100)) + + true + + + Test 666 + + POLYGON ((0 280, 0 0, 260 0, 260 280, 0 280), (220 240, 40 240, 40 40, 220 40, 220 240)) + + true + + + Test 667 + + POLYGON ((20 260, 240 260, 240 20, 20 20, 20 260), (160 180, 80 180, 120 120, 160 180)) + + true + + + Test 668 + + POLYGON ((60 80, 200 80, 200 220, 60 220, 60 80)) + + true + + + Test 669 + + POLYGON ((120 140, 260 140, 260 260, 120 260, 120 140)) + + true + + + Test 670 + + POLYGON ((60 220, 220 220, 140 140, 60 220)) + + true + + + Test 671 + + POLYGON ((100 180, 180 180, 180 100, 100 100, 100 180)) + + true + + + Test 672 + + POLYGON ((40 40, 180 40, 180 180, 40 180, 40 40)) + + true + + + Test 673 + + POLYGON ((180 40, 40 180, 160 280, 300 140, 180 40)) + + true + + + Test 674 + + POLYGON ((40 280, 200 280, 200 100, 40 100, 40 280), (100 220, 120 220, 120 200, 100 180, 100 220)) + + true + + + Test 675 + + POLYGON ((40 280, 180 260, 180 120, 60 120, 40 280)) + + true + + + Test 676 + + POLYGON ((0 200, 0 0, 200 0, 200 200, 0 200), (20 180, 130 180, 130 30, 20 30, 20 180)) + + true + + + Test 677 + + POLYGON ((60 90, 130 90, 130 30, 60 30, 60 90)) + + true + + + Test 678 + + LINESTRING (100 120, 100 240) + + true + + + Test 679 + + POLYGON ((40 60, 160 60, 160 180, 40 180, 40 60)) + + true + + + Test 680 + + LINESTRING (80 80, 140 140, 200 200) + + true + + + Test 681 + + POLYGON ((40 40, 140 40, 140 140, 40 140, 40 40)) + + true + + + Test 682 + + POLYGON ((190 190, 360 20, 20 20, 190 190), (111 110, 250 100, 140 30, 111 110)) + + true + + + Test 683 + + POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (130 110, 60 40, 60 180, 130 110), (130 180, 131 40, 200 110, 130 180)) + + true + + + Test 684 + + LINESTRING (100 140, 100 40) + + true + + + Test 685 + + MULTIPOLYGON (((20 80, 180 79, 100 0, 20 80)), ((20 160, 180 160, 100 80, 20 160))) + + true + + + Test 686 + + MULTIPOLYGON (((20 80, 180 80, 100 0, 20 80)), ((20 160, 180 160, 100 80, 20 160))) + + true + + + Test 687 + + LINESTRING (60 0, 20 80, 100 80, 80 120, 40 140) + + true + + + Test 688 + + LINESTRING (140 300, 220 160, 260 200, 240 260) + + true + + + Test 689 + + LINESTRING (60 40, 140 40, 140 160, 0 160) + + true + + + Test 690 + + LINESTRING (140 280, 240 280, 240 180, 140 180, 140 280) + + true + + + Test 691 + + LINESTRING (140 0, 0 0, 40 60, 0 120, 60 200, 220 160, 220 40) + + true + + + Test 692 + + LINESTRING (80 140, 180 100, 160 40, 100 40, 60 100, 80 140) + + true + + + Test 693 + + LINESTRING (20 20, 80 80) + + true + + + Test 694 + + LINESTRING (40 40, 160 160, 200 60, 60 140) + + true + + + Test 695 + + LINESTRING (40 40, 200 40) + + true + + + Test 696 + + LINESTRING (200 40, 140 40, 40 40) + + true + + + Test 697 + + LINESTRING (0 0, 110 0, 60 0) + + true + + + Test 698 + + LINESTRING (0 0, 110 0) + + true + + + Test 699 + + LINESTRING (0 0, 80 0, 80 60, 80 0, 170 0) + + true + + + Test 700 + + MULTILINESTRING ((0 0, 170 0), (80 0, 80 60)) + + true + + + Test 701 + + LINESTRING (80 100, 180 200) + + true + + + Test 702 + + LINESTRING (80 180, 180 120) + + true + + + Test 703 + + LINESTRING (40 40, 100 100, 160 160) + + true + + + Test 704 + + LINESTRING (160 60, 100 100, 60 140) + + true + + + Test 705 + + LINESTRING (140 60, 60 140) + + true + + + Test 706 + + LINESTRING (40 40, 180 180, 100 180, 100 100) + + true + + + Test 707 + + LINESTRING (80 90, 50 50, 0 0) + + true + + + Test 708 + + LINESTRING (40 140, 240 140) + + true + + + Test 709 + + LINESTRING (40 140, 100 140, 80 80, 120 60, 100 140, 160 140, 160 100, 200 100, 160 140, 240 140) + + true + + + Test 710 + + LINESTRING (20 20, 100 20, 20 20) + + true + + + Test 711 + + LINESTRING (60 20, 200 20) + + true + + + Test 712 + + LINESTRING (40 60, 180 60, 180 140, 100 140, 100 60, 220 60, 220 180, 80 180, 80 60, 280 60) + + true + + + Test 713 + + LINESTRING (140 60, 180 60, 220 60, 260 60) + + true + + + Test 714 + + MULTIPOINT (0 20, 40 20) + + true + + + Test 715 + + POLYGON ((20 40, 20 0, 60 0, 60 40, 20 40)) + + true + + + Test 716 + + MULTIPOINT (0 20, 20 20) + + true + + + Test 717 + + MULTIPOINT (20 20, 40 20) + + true + + + Test 718 + + MULTIPOINT (80 260, 140 260, 180 260) + + true + + + Test 719 + + POLYGON ((40 320, 140 320, 140 200, 40 200, 40 320)) + + true + + + Test 720 + + MULTIPOLYGON (((0 40, 0 0, 40 0, 40 40, 0 40)), ((40 80, 40 40, 80 40, 80 80, 40 80))) + + true + + + Test 721 + + LINESTRING (40 40, 120 120, 200 120) + + true + + + Test 722 + + LINESTRING (40 40, 100 100, 160 100) + + true + + + Test 723 + + POINT (60 60) + + true + + + Test 724 + + MULTIPOINT (40 40, 100 40) + + true + + + Test 725 + + LINESTRING (40 40, 80 80) + + true + + + Test 726 + + MULTIPOINT (40 40, 60 60) + + true + + + Test 727 + + MULTIPOINT (60 60, 100 100) + + true + + + Test 728 + + LINESTRING (40 40, 60 60, 80 80) + + true + + + Test 729 + + POINT (20 30) + + true + + + Test 730 + + MULTIPOINT (40 40, 80 60, 40 100) + + true + + + Test 731 + + MULTIPOINT (80 280, 80 220, 160 220, 80 220) + + true + + + Test 732 + + MULTIPOINT (80 280, 80 220, 160 220) + + true + + + Test 733 + + MULTIPOINT EMPTY + + true + + + Test 734 + + LINESTRING (20 60, 160 60, 80 160, 80 20) + + true + + + Test 735 + + LINESTRING (20 80, 80 20, 80 80, 140 60, 80 20, 160 20) + + true + + + Test 736 + + LINESTRING (20 60, 100 60, 60 100, 60 60) + + true + + + Test 737 + + LINESTRING (20 60, 60 60, 100 60, 60 100, 60 60) + + true + + + Test 738 + + LINESTRING (20 20, 80 20, 80 80, 20 20) + + true + + + Test 739 + + LINESTRING (80 80, 20 20, 20 80, 140 80, 140 140, 80 80) + + true + + + Test 740 + + LINESTRING EMPTY + + true + + + Test 741 + + MULTILINESTRING ((40 140, 160 40), (160 140, 40 40)) + + true + + + Test 742 + + MULTILINESTRING ((20 160, 20 20), (100 160, 100 20)) + + true + + + Test 743 + + MULTILINESTRING ((60 140, 20 80, 60 40), (60 40, 100 80, 60 140)) + + true + + + Test 744 + + MULTILINESTRING ((60 40, 140 40, 100 120, 100 0), (100 200, 200 120)) + + true + + + Test 745 + + MULTILINESTRING ((40 120, 100 60), (160 120, 100 60), (40 60, 160 60)) + + true + + + Test 746 + + MULTILINESTRING ((80 160, 40 220, 40 100, 80 160), (80 160, 120 220, 120 100, 80 160)) + + true + + + Test 747 + + MULTILINESTRING ((80 160, 40 220), (80 160, 120 220, 120 100, 80 160), (40 100, 80 160)) + + true + + + Test 748 + + POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260)) + + true + + + Test 749 + + POLYGON EMPTY + + true + + + Test 750 + + MULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340))) + + true + + + Test 751 + + MULTIPOLYGON (((240 160, 100 240, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340))) + + true + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestValid.xml geos-3.2.2/tests/xmltester/tests/general/TestValid.xml --- geos-3.1.0/tests/xmltester/tests/general/TestValid.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestValid.xml 2010-03-18 18:26:02.000000000 +0000 @@ -0,0 +1,678 @@ + + + + + L - linear-ring bowtie + LINEARRING(0 0, 100 100, 100 0, 0 100, 0 0) + + false + + + + + L - linestring bowtie + LINESTRING(0 0, 100 100, 100 0, 0 100, 0 0) + + true + + + + + P - point + + POINT(10 10) + + + + true + + + + + + mP - no repeated points + + MULTIPOINT(10 10, 20 20, 30 30) + + + true + + + + + P - repeated points + + MULTIPOINT(10 10, 20 20, 30 30, 10 10) + + + true + + + + + L - no repeated points + +LINESTRING (40 180, 120 120, 140 200, 200 140, 240 200) + + + true + + + + + L - repeated points + +LINESTRING (40 180, 120 120, 140 200, 140 200, 200 140, 240 200) + + + true + + + + + L - linestring with two identical points + LINESTRING(0 0, 0 0) + + false + + + + + mL - MultiLinestring with two identical points in second component + MULTILINESTRING((1 1, 0 0), (0 0, 0 0)) + + false + + + + + A - zero-area polygon + POLYGON ((0 0, 0 0, 0 0, 0 0, 0 0)) + + false + + + + + A - polygon with too few points + POLYGON ((0 0, 10 0, 20 0, 0 0, 0 0)) + + false + + + + + A - polygon with repeated point + POLYGON ((107 246, 107 246, 250 285, 294 137, 151 90, 15 125, 157 174, 107 246)) + + true + + + + + A - polygon with degenerate hole ring (A-B-A) + POLYGON ((0 0, 0 240, 260 240, 260 0, 0 0), + (220 200, 40 200, 40 20, 40 200, 220 200, 220 200)) + + false + + + + + mA - multipolygon with component with too few points + MULTIPOLYGON ( ((100 20, 180 20, 180 100, 100 100, 100 20)), +((20 100, 100 100, 100 180, 20 180, 20 100)), +((100 180, 180 180, 180 260, 100 260, 100 180)), +((180 100, 180 180, 180 180, 180 100))) + + false + + + + + A - polygon self-intersects at non-vertex + POLYGON ((0 40, 0 0, 40 40, 40 0, 0 40)) + + false + + + + A - polygon self-intersects at vertex + MULTIPOLYGON ( ((0 40, 20 20, 40 0, 40 40, 20 20, 0 0, 0 40)) ) + + false + + + + A - polygon self-intersects at vertex/non-vertex + POLYGON ((0 40, 20 20, 40 0, 40 40, 0 0, 0 40)) + + false + + + + A - hole self-intersects at non-vertex + POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 0 0, 40 40, 40 0, 0 40)) + + false + + + + A - polygon self-intersects at vertex + POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 20 20, 40 0, 40 40, 20 20, 0 0, 0 40)) + + false + + + + A - polygon self-intersects at vertex/non-vertex + POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 20 20, 40 0, 40 40, 0 0, 0 40)) + + false + + + + A - Valid doughnut + POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 40 20, 40 40, 20 40)) + + true + + + + A - shell has repeated points + POLYGON ((0 60, 0 0, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 40 20, 40 40, 20 40)) + + true + + + + + A - shell touches hole without crossing it (valid) + POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 60 20, 20 40)) + + true + + + + A - shell touches hole without crossing it, but does so twice (invalid) + POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (0 40, 20 20, 60 20, 0 40)) + + false + + + + A - hole touches hole without crossing it (valid) + POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), (100 100, 100 20, 120 20, 120 100, 100 100), (20 100, 20 40, 100 40, 20 100)) + + true + + + + A - holel touches hole without crossing it, but does so twice (invalid) + POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), + (100 100, 100 20, 120 20, 120 100, 100 100), + (20 100, 20 40, 100 40, 80 60, 100 80, 20 100)) + + false + + + + A - hole touches hole without crossing it, but does so at an infinite number of points (invalid) + POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), + (100 100, 100 20, 120 20, 120 100, 100 100), + (20 100, 20 40, 100 40, 100 80, 20 100)) + + false + + + + A - spike (invalid) + POLYGON ((0 60, 0 0, 60 0, 60 20, 100 20, 60 20, 60 60, 0 60)) + + false + + + + A - puncture (invalid) + POLYGON ((0 60, 0 0, 60 0, 60 20, 20 20, 60 20, 60 60, 0 60)) + + false + + + + A - hole within a hole (invalid) + POLYGON ((0 140, 0 0, 180 0, 180 140, 0 140), (20 20, 160 20, 160 120, 20 120, 20 20), (40 100, 40 40, 140 40, 140 100, 40 100)) + + false + + + + A - empty shell and holes (valid) + POLYGON (EMPTY, EMPTY, EMPTY) + + true + + + + + A - hole overlapping shell at non-vertex + +POLYGON ((60 280, 260 180, 60 80, 60 280), + (140 80, 120 180, 200 180, 140 80)) + + + + false + + + + + + A - shell self-overlaps + +POLYGON ((60 340, 60 100, 340 100, 340 280, 340 200, 340 340, 60 340)) + + + false + + + + + A - hole with repeated points + +POLYGON ((40 260, 40 60, 120 60, 180 160, 240 60, 300 60, 300 260, 40 260), + (70 230, 80 230, 80 220, 80 220, 70 230)) + + + true + + + + + A - hole outside but adjacent to shell + +POLYGON ((40 260, 40 60, 120 60, 180 160, 240 60, 300 60, 300 260, 40 260), + (180 160, 240 60, 120 60, 180 160)) + + + false + + + + + + A - hole touches shell at two points + +POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), + (140 180, 40 180, 140 260, 140 180)) + + + + false + + + + + + A - hole touches shell at one non-vertex point + +POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), + (140 180, 40 180, 140 240, 140 180)) + + + true + + + + + A - hole touches shell at one vertex point + +POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), + (140 180, 40 260, 140 240, 140 180)) + + + true + + + + + A - hole outside shell + +POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), + (160 120, 180 100, 160 80, 160 120)) + + + + false + + + + + + A - hole identical to shell + +POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), + (20 180, 20 20, 140 20, 140 180, 20 180)) + + + + false + + + + + + A - hole identical to shell + +POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), + (20 180, 20 20, 140 20, 140 180, 20 180)) + + + + false + + + + + + A - hole self-intersects + +POLYGON ((380 340, 40 340, 40 20, 380 20, 380 340), + (120 300, 300 280, 320 200, 160 140, 200 80, 320 120, 320 200, 360 60, 120 40, 120 300)) + + + false + + + + + A - holes overlap, first point is identical + +POLYGON ((20 320, 260 320, 260 20, 20 20, 20 320), + (140 280, 80 100, 200 100, 140 280), + (140 280, 40 80, 240 80, 140 280)) + + + false + + + + + A - holes do not overlap, first point is identical + +POLYGON ((20 320, 240 320, 240 40, 20 40, 20 320), + (140 180, 60 120, 60 240, 140 180), + (140 180, 200 120, 200 240, 140 180)) + + + true + + + + + A - shell self-touches at vertex + +POLYGON ((340 320, 340 200, 200 280, 200 80, 340 200, 340 20, 60 20, 60 340, 340 320)) + + + false + + + + + A - shell self-touches at non-vertex + +POLYGON ((300 320, 300 220, 260 260, 180 220, 360 220, 360 140, 120 140, 120 320, 300 320)) + + false + + + + + A - chain of holes surrounds an island inside the polygon + +POLYGON ((40 300, 40 20, 280 20, 280 300, 40 300), + (120 240, 80 180, 160 220, 120 240), + (220 240, 160 220, 220 160, 220 240), + (160 100, 80 180, 100 80, 160 100), + (160 100, 220 160, 240 100, 160 100)) + + false + + + + + A - chain of holes splits polygon in two (touching at vertices) + +POLYGON ((40 320, 340 320, 340 20, 40 20, 40 320), + (100 120, 40 20, 180 100, 100 120), + (200 200, 180 100, 240 160, 200 200), + (260 260, 240 160, 300 200, 260 260), + (300 300, 300 200, 340 320, 300 300)) + + + false + + + + + A - chain of holes splits polygon in two (touching at non-vertex) + +POLYGON ((40 320, 340 320, 340 20, 40 20, 40 320), + (100 120, 40 20, 180 100, 100 120), + (200 200, 180 100, 240 160, 200 200), + (260 260, 240 160, 300 200, 260 260), + (300 300, 300 200, 340 260, 300 300)) + + + false + + + + + A - holes touch in one point + +POLYGON ((190 190, 360 20, 20 20, 190 190), + (90 50, 150 110, 190 50, 90 50), + (190 50, 230 110, 290 50, 190 50)) + + + true + + + + + A - holes touch in one point + +POLYGON ((190 190, 360 20, 20 20, 190 190), + (90 50, 150 110, 190 50, 90 50), + (190 50, 230 110, 290 50, 190 50)) + + + true + + + + + A - hole disconnects interiors + +POLYGON ((0 0, 10 10, 10 0, 0 0), + (5 5, 5 0, 10 5, 5 5)) + + + false + + + + + A - touching holes do NOT disconnect (isCCW bug) + +POLYGON ((60 40, 60 240, 460 240, 460 40, 60 40), + (260 200, 340 60, 400 120, 260 200), + (260 200, 120 100, 200 60, 260 200)) + + + true + + + + + + + mA - adjacent shells (shared vertices) + +MULTIPOLYGON (((40 120, 140 120, 140 40, 40 40, 40 120)), + ((140 120, 40 120, 40 200, 140 200, 140 120))) + + + + false + + + + + + mA - adjacent shells (different vertices) + +MULTIPOLYGON (((40 120, 140 120, 140 40, 40 40, 40 120)), + ((160 120, 60 120, 40 200, 140 200, 160 120))) + + + + false + + + + + + mA - nested overlapping shells + +MULTIPOLYGON (((80 260, 240 260, 240 100, 80 100, 80 260)), + ((120 240, 220 240, 220 140, 120 140, 120 240))) + + + false + + + + + mA - nested non-overlapping shells + +MULTIPOLYGON (((60 320, 60 80, 300 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + ((120 160, 140 160, 140 140, 120 160))) + + + true + + + + + mA - nested non-overlapping shells, all vertices touch + +MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), + (220 340, 180 240, 60 200, 180 160, 340 60, 240 220, 220 340)), + ((180 240, 180 160, 240 220, 180 240))) + + + true + + + + + mA - nested overlapping shells, all vertices touch + +MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), + (220 340, 180 240, 60 200, 140 100, 340 60, 300 240, 220 340)), + ((60 200, 340 60, 220 340, 60 200))) + + + false + + + + + mA - nested non-overlapping shells, all vertices touch + +MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), + (220 340, 80 320, 60 200, 140 100, 340 60, 300 240, 220 340)), + ((60 200, 340 60, 220 340, 60 200))) + + + true + + + + + mA - nested overlapping shells, all vertices touch + +MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), + (220 340, 180 240, 60 200, 200 180, 340 60, 240 220, 220 340)), + ((60 200, 340 60, 220 340, 60 200))) + + + false + + + + + mA - disconnected exterior + +MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), + ((20 100, 100 100, 100 180, 20 180, 20 100)), + ((100 180, 180 180, 180 260, 100 260, 100 180)), + ((180 100, 260 100, 260 180, 180 180, 180 100))) + + + true + + + + + mA - shells touch in single point + +MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110)), + ((110 110, 150 20, 70 20, 110 110))) + + + true + + + + + mA - duplicate shells + +MULTIPOLYGON (((60 300, 320 220, 260 60, 60 100, 60 300)), + ((60 300, 320 220, 260 60, 60 100, 60 300))) + + + false + + + + + mA - shells are not nested but share all vertices + +MULTIPOLYGON (((180 60, 240 160, 300 60, 180 60)), + ((80 80, 180 60, 160 140, 240 160, 360 140, 300 60, 420 100, 320 280, 120 260, 80 80))) + + + true + + + + + mA - shell is nested inside first hole + +MULTIPOLYGON (((0 0, 0 8, 8 8, 8 0, 0 0), + (3 3, 7 3, 7 7, 3 7, 3 3), + (1 1, 2 1, 2 2, 1 2, 1 1)), + ((4 4, 4 6, 6 6, 6 4, 4 4))) + + + true + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/general/TestWithinDistance.xml geos-3.2.2/tests/xmltester/tests/general/TestWithinDistance.xml --- geos-3.1.0/tests/xmltester/tests/general/TestWithinDistance.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/general/TestWithinDistance.xml 2009-05-02 10:25:36.000000000 +0100 @@ -0,0 +1,92 @@ + + + + + PP - disjoint points + POINT(10 10) + POINT(100 100) + true + false + + + + PP - overlapping points + POINT(10 10) + POINT(10 10) + true + true + + + + PL - point on linestring + POINT (340 200) + LINESTRING (80 280, 340 200, 80 80) + true + true + + + + PL - point not on linestring + LINESTRING (100 100, 200 100, 200 200, 100 200, 100 100) + POINT (10 10) + true + false + + + + PA - point inside polygon + POINT (240 160) + POLYGON ((100 260, 340 180, 100 60, 180 160, 100 260)) + true + true + + + + mPA - points outside polygon + POLYGON ((200 180, 60 140, 60 260, 200 180)) + MULTIPOINT ((140 280), (140 320)) + true + false + + + + LL - disjoint linestrings + LINESTRING (40 300, 240 260, 60 160, 140 60) + LINESTRING (140 360, 260 280, 240 120, 120 160) + true + false + + + + LL - crossing linestrings + LINESTRING (40 300, 280 220, 60 160, 140 60) + LINESTRING (140 360, 260 280, 240 120, 120 160) + true + true + + + + AA - overlapping polygons + POLYGON ((60 260, 260 180, 100 60, 60 160, 60 260)) + POLYGON ((220 280, 120 160, 300 60, 360 220, 220 280)) + true + true + + + + AA - disjoint polygons + POLYGON ((100 320, 60 120, 240 180, 200 260, 100 320)) + POLYGON ((420 320, 280 260, 400 100, 420 320)) + true + false + + + + mAmA - overlapping multipolygons + MULTIPOLYGON (((40 240, 160 320, 40 380, 40 240)), ((100 240, 240 60, 40 40, 100 240))) + MULTIPOLYGON (((220 280, 120 160, 300 60, 360 220, 220 280)), ((240 380, 280 300, 420 340, 240 380))) + true + true + + + diff -Nru geos-3.1.0/tests/xmltester/tests/heisenbugs.xml geos-3.2.2/tests/xmltester/tests/heisenbugs.xml --- geos-3.1.0/tests/xmltester/tests/heisenbugs.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/heisenbugs.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,22 @@ + + + + + + +Heisenbug provided by "Rene Neidt" (r.neidt at idu.de) + + + 01060000001C000000010300000001000000040000005C8FC245BCA25441F853E3DD919355419133753ABCA25441053861CD91935541E833753ABCA25441853861CD919355415C8FC245BCA25441F853E3DD91935541010300000001000000040000009133753ABCA25441053861CD91935541C520B01ABCA2544123DBF99E919355418833753ABCA25441F83761CD919355419133753ABCA25441053861CD9193554101030000000100000004000000F24283B3B4A254418422B80B87935541FD3F83B3B4A254415B1EB80B879355418FC2F508B4A25441C3F5281C86935541F24283B3B4A254418422B80B87935541010300000001000000070000007B14AE1FB2A25441B072686183935541736891E5AFA25441B81E8533809355412FDD2496AFA25441560E2DC27F9355416A184AE0AFA2544113B2FC2B809355415C8FC2E5AFA254413D0AD733809355412881420FB0A25441B1F5096F809355417B14AE1FB2A25441B07268618393554101030000000100000005000000448B6CD7A9A2544139B4C88E77935541BD7206BDA9A25441E03F2169779355415C8FC2A5A9A2544185EB514877935541AE7206BDA9A25441CB3F216977935541448B6CD7A9A2544139B4C88E7793554101030000000100000004000000AD448E189CA2544144E1C8F86393554154BF62AF9BA25441505D126363935541F6285CAF9BA254413333336363935541AD448E189CA2544144E1C8F863935541010300000001000000040000009CC420189BA2544104560E4D5B935541C74B377197A25441D122DBC15A9355416D707F0798A25441E74A3BD85A9355419CC420189BA2544104560E4D5B9355410103000000010000000400000052B81EED90A25441EC51B83E54935541C1CAA10D8FA2544148E17A7451935541E6A570C18FA2544196EE51805293554152B81EED90A25441EC51B83E5493554101030000000100000004000000ED2D96108BA25441051F3EAB4B9355418A2D96108BA25441761E3EAB4B9355413D0AD7338DA254415C8FC2C54E935541ED2D96108BA25441051F3EAB4B935541010300000001000000040000008DF47DDF8AA2544134CC05644B93554128F47DDF8AA25441A1CB05644B93554152B81E7589A25441713D0A57499355418DF47DDF8AA2544134CC05644B9355410103000000010000000400000004560E2D85A254415A643B4743935541000000D082A25441250681CD3F935541773FCC6B83A25441F25B9AB24093554104560E2D85A254415A643B474393554101030000000100000014000000819543D375A25441000000702D935541B6F3FDE471A254412DB29D5731935541FCA9F1E272A254415C8FC27D31935541C520B02275A25441250681AD34935541B6F3FD8475A254418B6CE72B35935541355EBAA975A25441BC749318359355411B2FDD1C77A2544104560E85379355412FDD243677A254416F1283A83793554139B4C8B677A254413108AC5C389355414A0C029379A254413BDF4F1D3B9355419102F4F578A25441AA6AED343A93554148E17AB477A254417B14AE573893554152B81E3577A2544148E17AA437935541B81E851B77A254410AD7A380379355419A9999A975A254413D0AD7133593554148E17A8475A25441713D0A2735935541295C8F2275A2544185EB51A83493554148E17AE472A25441A4703D7A31935541291701E871A2544182A89F5431935541819543D375A25441000000702D93554101030000000100000006000000B579E52F7FA25441B2E4F0124393554104560E557FA254410C022B57439355417593186C81A254418FC2F540469355413EC2875880A254417C5FD9C04493554152B81E557FA25441713D0A5743935541B579E52F7FA25441B2E4F01243935541010300000001000000070000007593186C81A254418FC2F54046935541DD2406F182A2544189416095489355416ABC744B85A254415839B4C84B935541E94EE8C784A254412D23CB154B93554114AE47F182A2544152B81E95489355412EF656CF81A25441B81E26D9469355417593186C81A254418FC2F5404693554101030000000100000005000000809754BF85A25441F27DDB674C9355416F12839086A254410C022B874D935541652160F887A2544191B2E8894F9355410AD7A39086A25441713D0A874D935541809754BF85A25441F27DDB674C93554101030000000100000006000000666666D688A2544191ED7CC750935541FCA9F1328AA25441AAF1D2BD5293554131A117908AA254417F880C4453935541333333338AA25441E17A14BE5293554123BD00B289A25441541EFD0352935541666666D688A2544191ED7CC7509355410103000000010000000400000031A117908AA254417F880C44539355415839B4108BA25441894160FD5393554149A117908AA25441A1880C445393554131A117908AA254417F880C4453935541010300000001000000040000005839B4108BA25441894160FD53935541FA41670E8CA25441C185F56755935541AF3E670E8CA254410C81F567559355415839B4108BA25441894160FD5393554101030000000100000009000000FA41670E8CA25441C185F56755935541EC51B8568DA25441A01A2F3D579355412FDD24468FA2544104560E0D5A9355410681958B90A2544121B072D85B93554182A07A2C91A25441514995BB5C935541B81E858B90A2544185EB51D85B935541666666468FA25441CDCCCC0C5A935541713D0A578DA25441D7A3703D57935541FA41670E8CA25441C185F567559355410103000000010000000400000082A07A2C91A25441514995BB5C935541B6F3FD6C91A254419EEFA7165D935541C4A37A2C91A25441EA4D95BB5C93554182A07A2C91A25441514995BB5C93554101030000000100000004000000A5A644AD91A25441FE677FDD64935541FCA9F1DA91A25441A245B62B6593554117A844AD91A25441776A7FDD64935541A5A644AD91A25441FE677FDD649355410103000000010000000400000056D0BCD993A25441741BC98B659355415BD2BCD993A25441D51BC98B6593554152B81E6593A254415C8FC2756593554156D0BCD993A25441741BC98B6593554101030000000100000007000000AE47E1BA98A25441DF4F8D97679355416DE7FB619AA25441EE7C3FF569935541BA490C929CA25441D578E9166D935541E8228C9C9AA25441010F13496A9355411F85EB619AA2544152B81EF569935541E90F4B049AA2544185E71F6F69935541AE47E1BA98A25441DF4F8D976793554101030000000100000004000000D34D62989CA25441000000206D9355414A0C025B9DA25441508D97366E9355412C12DF499DA25441E3DE0F1E6E935541D34D62989CA25441000000206D93554101030000000100000004000000D5F04439A0A254416BFCF05872935541E9F34439A0A25441E200F1587293554100000000A1A254418FC2F57873935541D5F04439A0A254416BFCF05872935541010300000001000000040000002FDD247EA2A25441FA7E6A8C759355417F6ABC2CA3A25441BE9F1A7F76935541D2A270D5A2A25441F18DC205769355412FDD247EA2A25441FA7E6A8C75935541010300000001000000050000007F6ABC2CA3A25441BE9F1A7F769355414D412ABFA4A2544170642EBF7893554114AE4771A5A25441E17A14BE79935541B2372ABFA4A25441AF562EBF789355417F6ABC2CA3A25441BE9F1A7F7693554101030000000100000005000000B81E85FBADA25441000000F085935541022B87DEAFA25441F2D24DA2889355417B14AEE7AFA25441F6285CAF88935541EC51B8DEAFA25441295C8FA288935541B81E85FBADA25441000000F085935541 + + + 010300000001000000090000001340670E8CA254410883F56755935541713D0A578DA25441D7A3703D57935541666666468FA25441CDCCCC0C5A935541B81E858B90A2544185EB51D85B935541CD9D7A2C91A254417E4595BB5C9355410681958B90A2544121B072D85B9355412FDD24468FA2544104560E0D5A935541EC51B8568DA25441A01A2F3D579355411340670E8CA254410883F56755935541 + + + 5 + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/hexwkb.xml geos-3.2.2/tests/xmltester/tests/hexwkb.xml --- geos-3.1.0/tests/xmltester/tests/hexwkb.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/hexwkb.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,61 @@ + + + + + + HEXWKB (Little Endian) POINT(0 1) + + 01010000000000000000000000000000000000F03F + + true + + + + HEXWKB (Little Endian) LINESTRING(0 1, 2 3, 4 5) + + 0102000000030000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000001440 + + true + + + + HEXWKB (Little Endian) POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)) + + 010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000 + + true + + + + HEXWKB (Little Endian) MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0) + + 010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 + + true + + + + HEXWKB (Little Endian) MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)) + + 01050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440 + + true + + + + HEXWKB (Little Endian) MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))) + + 010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A40000000000000394000000000000039400000000000003940 + + true + + + + HEXWKB (Little Endian) GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))),MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)),MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)) + + 010700000003000000010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A4000000000000039400000000000003940000000000000394001050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000 + + true + + + diff -Nru geos-3.1.0/tests/xmltester/tests/hole_from_shell.xml geos-3.2.2/tests/xmltester/tests/hole_from_shell.xml --- geos-3.1.0/tests/xmltester/tests/hole_from_shell.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/hole_from_shell.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,22 @@ + + + +GEOS 3.0.0_rc4 bufferReducedPrecision + +MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), + ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) + + + +MULTIPOLYGON (((2350000.0000000000000000 1488707.0969169281888753, 2349964.4004191001877189 1488636.0190692699979991, 2350000.0000000000000000 1488563.5240085718687624, 2350000.0000000000000000 1486139.5954903985839337, 2349862.9023056798614562 1486219.9886801000684500, 2349276.5575175802223384 1486686.9452663098927587, 2349189.6188003402203321 1486714.0890033100731671, 2349075.2651923401281238 1486839.4363198699429631, 2349177.6410056301392615 1487348.6899289600551128, 2349095.0335451299324632 1487322.3496956799644977, 2348966.6837510201148689 1487132.5463537599425763, 2348855.5631697699427605 1486958.4198595299385488, 2348746.1466918801888824 1487029.9212600900791585, 2348637.5355608197860420 1487162.9215295300818980, 2348675.8306268397718668 1487255.0497121699154377, 2349197.2302119499072433 1487757.7338257899973541, 2349432.8564184200949967 1487884.7684968400280923, 2349765.1257171598263085 1488676.7953792500775307, 2350000.0000000000000000 1489132.4801826500333846, 2350000.0000000000000000 1488707.0969169281888753)), + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)), + ((2347572.7863241606391966 1485000.0000000000000000, 2348407.4356893599033356 1486442.4005138298962265, 2348538.4335729400627315 1486681.6946907700039446, 2348581.4885673602111638 1486644.2865022399928421, 2348497.7225665301084518 1486404.7074402100406587, 2348459.7195179299451411 1486318.0383337000384927, 2348448.2131743398495018 1485957.4058874400798231, 2348506.7706681001000106 1485883.9986570500768721, 2348472.0240390901453793 1485660.5130987700540572, 2348203.9518477302044630 1485187.3743550300132483, 2348081.8803086061961949 1485000.0000000000000000, 2347572.7863241606391966 1485000.0000000000000000))) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/hole_red.xml geos-3.2.2/tests/xmltester/tests/hole_red.xml --- geos-3.1.0/tests/xmltester/tests/hole_red.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/hole_red.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,22 @@ + + + +GEOS 3.0.0_rc4 bufferReducedPrecision + +MULTIPOLYGON ( + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) +) + + + +MULTIPOLYGON ( + ((2350001.0000000000000000 1489673.5379561646841466, 2349939.3882785998284817 1489622.4783083000220358, 2349744.2255139001645148 1489564.2840713199693710, 2349714.5727142500691116 1489555.4998093899339437, 2349656.1571633601561189 1489548.4856726101133972, 2349506.3355672401376069 1489530.0346219500061125, 2349451.7939001601189375 1489559.0524864098988473, 2349350.2853812701068819 1489613.4625319899059832, 2349462.3675328497774899 1489926.2343633500859141, 2349330.2864756002090871 1489979.5005766900721937, 2349260.1990413102321327 1489893.8673000501003116, 2349230.8788724797777832 1489867.6174024299252778, 2349166.9456986500881612 1489723.0448318300768733, 2349154.8086357498541474 1489739.3992036799900234, 2349131.1424813498742878 1489770.6534391599707305, 2349099.0351308397948742 1489781.1517036699224263, 2349004.9882596200332046 1489541.9173064299393445, 2348980.2695384998805821 1489479.6504641300998628, 2348907.8565663797780871 1489514.8251357700210065, 2349009.3763570399023592 1489810.8385419999249279, 2348931.2276480901055038 1489836.9062225199304521, 2348616.8570989957079291 1490000.0000000000000000, 2350000.0000000000000000 1490000.0000000000000000, 2350001.0000000000000000 1489673.5379561646841466)), + ((2348513.9023286257870495 1490000.0000000000000000, 2348551.0426795501261950 1489629.9404302500188351, 2347950.9423539699055254 1488768.7056682100519538, 2347701.5905358898453414 1488337.4487687300425023, 2347624.7384369401261210 1488310.0302828899584711, 2347499.1729842298664153 1488265.0651581101119518, 2347502.5397046101279557 1488242.8735023899935186, 2347521.6533973598852754 1488218.1605436000972986, 2347569.8924814299680293 1488156.0150597000028938, 2347694.8907968699932098 1487994.6547907099593431, 2347653.5779449897818267 1487947.1325197399128228, 2348543.3460486000403762 1487182.0493400199338794, 2348013.1856879801489413 1486291.0932264500297606, 2347256.6836529830470681 1485000.0000000000000000, 2345000.0000000000000000 1485000.0000000000000000, 2345000.0000000000000000 1486224.2831608161795884, 2345083.9256702000275254 1486101.5096448599360883, 2345183.0970447300933301 1486188.2705280799418688, 2345331.7724219402298331 1486561.8534152100328356, 2345316.8952683401294053 1486588.3938146599102765, 2345200.3844798500649631 1486747.5935537801124156, 2345000.0000000000000000 1486303.9886013225186616, 2345000.0000000000000000 1490000.0000000000000000, 2348513.9023286257870495 1490000.0000000000000000), + (2347201.0095643401145935 1489535.2747832599561661, 2347264.5333871799521148 1489565.9454100900329649, 2347223.8374039400368929 1489645.2065054799895734, 2347153.6678731199353933 1489605.7917709499597549, 2347201.0095643401145935 1489535.2747832599561661)) +) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/linemerge.xml geos-3.2.2/tests/xmltester/tests/linemerge.xml --- geos-3.1.0/tests/xmltester/tests/linemerge.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/linemerge.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,13 @@ + + +Case # + +MULTILINESTRING((0 0, 10 0), (10 0, 20 0)) + + + +GEOMETRYCOLLECTION ( LINESTRING(0 0, 10 0, 20 0) ) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/robust/TestRobustOverlayFixed.xml geos-3.2.2/tests/xmltester/tests/robust/TestRobustOverlayFixed.xml --- geos-3.1.0/tests/xmltester/tests/robust/TestRobustOverlayFixed.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/robust/TestRobustOverlayFixed.xml 2009-05-02 09:37:08.000000000 +0100 @@ -0,0 +1,18 @@ + + + + + AA + +POLYGON ((545 317, 617 379, 581 321, 545 317)) + + +POLYGON ((484 290, 558 359, 543 309, 484 290)) + + + + POINT (545 317) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/robust/TestRobustRelate.xml geos-3.2.2/tests/xmltester/tests/robust/TestRobustRelate.xml --- geos-3.1.0/tests/xmltester/tests/robust/TestRobustRelate.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/robust/TestRobustRelate.xml 2009-05-02 09:37:08.000000000 +0100 @@ -0,0 +1,19 @@ + + + + + PP - Point is not on line. Non-robust algorithms fail by erroneously reporting intersects=true. + + LINESTRING(-123456789 -40, 381039468754763 123456789) + + + POINT(0 0) + + + + false + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/robustness.xml geos-3.2.2/tests/xmltester/tests/robustness.xml --- geos-3.1.0/tests/xmltester/tests/robustness.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/robustness.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,250 @@ + + + + + + + +http://geos.refractions.net/pipermail/geos-devel/2005-May/001441.html + + + 0103000020E80A00000100000069010000ECA2396C13BBFF40E8BA3424319F2541DEFB1D49DFB8FF40E73660ADA07F2541FAD6C80B43B2FF407033A9AC12602541E43630383FA7FF401F0EFC9789402541470638AAD497FF408AE2E2E40721254133F2A0950484FF40D372540890012541776AF085D06BFF40B21B837624E22441E2C9515E3A4FFF40DBD7ABA2C7C22441CDA87059442EFF407956E5FE7BA32441DF5C4C09F108FF40A728EFFB4384244184A9045743DFFE40A40901092265244116A59F823EB1FE4096459A931846244141D7C822E67EFE40AD4251072A272441B29589243E48FE405630A3CD58082441A6A4FACA4A0DFE4065E0C34DA7E923417321EFAE10CEFD40D6CD6DEC17CB2341B7BD98BE948AFD40F954B20BADAC23414652253DDC42FD40B720CA0A698E234192D155C2ECF6FC40ADD0E5454E702341B3A10E3ACCA6FC40CCDBFE155F522341D166E1E38052FC4022B3A8D09D3423411747905211FAFB408628E2C70C172341F7B18A6B849DFB40B61CE749AEF92241F6B46366E13CFB40907802A184DC2241B9E841CC2FD8FA40FA74601392BF224194014977776FFA400135E1E2D8A22241500FFD91C002FA40CFB5EB4C5B8622416E789F961392F940DE17418A1B6A22418ABD854E791DF940FD44D0CE1B4E224122126AD1FAA4F84096F689495E32224164D8B584A128F840951F3524E5162241350EC61A77A8F7406EBD4383B2FB2141FEB929928524F7408B13A885C8E021417066DA34D79CF6408654AA4429C62141BCBC6E977611F64071BCBED3D6AB21414A4D47986E82F5407B1F5C40D39121416897B55ECAEFF44024F0D29120782141DA601D5A9559F4403AC024C9C05E2141AC6E1041DBBFF340C23FDCE0B545214109B16410A822F340EABCE5CC012D214160F4440A0882F2402528687AA61421417B2A3CB507DEF140659F9ECFA5FC2041975E3BDBB336F1408B83B2AB01E5204109689A88198CF040F01A96E6BBCD204192DE26168CBCEF40FDC3DF50D6B620418BB372E18D5AEE40A5BAA5B352A020414762D20D54F2EC409D735AD0328A204125366DB2FA83EB401B90A9607874204149EEA6609E0FEA40CC6C5516255F20412C71E5215C95E840C14E159B3A4A204167244D755115E740E4307490BA3520410516744D9C8FE5409C34B08FA621204130250C0E5B04E44024B89A29000E2041F2588489AC73E240152AF2CC91F51F414194A1FEAFDDE040A812CC8B04D01F41B9AE1D2C0A85DE40479B677D5BAB1F413F7ECABF9744DB4062B59D7D99871F4122E757A249FAD740CEC04256C1641F412B6FA08261A6D440A7E1EEBED5421F41A4982BCF2149D14038C2C75CD9211F41436DFF619BC5CB402FC54BC2CE011F41DF6CCA0C52E7C44028AC1E6FB8E21E41DD196F76E1EFBB409BB6D7CF98C41E41F3220E7C07E0AB40163DD13D72A71E4180CA45A3CBEE47C079CCF9FE468B1E4173AA092451DDACC0EBC4A64519701E41488EA3D140CBBCC00E806830EB551E41721152D143A2C5C0D501E0C9BE3C1E41BB857A0AAEECCCC05637960896241E4176759EC42622D2C0BAC6D4CE720D1E41BE846FDD47D4D5C0657380EA56F71D41F4583488708CD9C03319F51444E21D4153B71285564ADDC0B041E3F23BCE1D41F73ECE90D786E0C0E7552F1440BB1D417067519F176BE2C05E6FD2F351A91D413DDB08ABC551E4C0B5CABCF772981D41C6EB69C0BB3AE6C01FDEB970A4881D4115D45EBED325E8C00516569AE7791D4168E43F59E712EAC0BF39C69A3D6C1D4198FFCF1DD001ECC05C7AD082A75F1D41AE2E3C7467F2EDC0482DB74D26541D41D30E1EA386E4EFC0703425E1BA491D41C76E406903ECF0C06B151C0D66401D417873748760E6F1C014C1E38B28381D41AC8C2E2647E1F2C0D60CFC0103311D410441B9B4A3DCF3C0C9DE0FFEF52A1D41EDBA2C9962D8F4C0A10DEAF801261D419914F63170D4F5C053F56B5527221D41003D5FD7B8D0F6C024C18560661F1D41725717DD28CDF7C0C06B3051BF1D1D410D77BB93ACC9F8C0D0756948321D1D4181975F4A30C6F9C067533051BF1D1D4180B41750A0C2FAC075908560661F1D4127E180F5E8BEFBC051AC6B5527221D41C5404A8EF6BAFCC051ACE9F801261D4152C2BD72B5B6FDC033650FFEF52A1D41FF7F480112B2FEC0047BFB0103311D4139A402A0F8ACFFC01117E38B28381D41D05A1BDFAA5300C145531B0D66401D41B215F4EA8AD000C1365A24E1BA491D41C495ACB6124D01C10B3BB64D26541D4169AA478C38C901C12E70CF82A75F1D41EBBA6BBDF24402C1B517C59A3D6C1D418A0924A437C002C136DC549AE7791D41FC4EA1A3FD3A03C1A38CB870A4881D414F9FF9283BB503C1A661BBF772981D414689E7ABE62E04C1DAEED0F351A91D41386188AFF6A704C10ABE2D1440BB1D41B0A819C3612005C19B92E1F23BCE1D41F083B5821E9805C10753F31444E21D41B72E0E98230F06C145967EEA56F71D41AE6128BB678506C1CDD2D2CE720D1E41DA9914B3E1FA06C1C12C940896241E41C133A756886F07C1C2E0DDC9BE3C1E41D14B2F8D52E307C1A7486630EB551E41CA552C4F375608C15C77A44519701E410E5D02A72DC808C1F068F7FE468B1E41B1DFACB12C3909C1C3C3CE3D72A71E417036709F2BA909C1B027D5CF98C41E41AB7B89B421180AC1D7071C6FB8E21E41ACE3DC4906860AC1AD0B49C2CE011F41A378A2CDD0F20AC1BCF3C45CD9211F41E52C11C4785E0BC168FEEBBED5421F410D3608C8F5C80BC107C93F56C1641F41D1A3B68B3F320CC14DA99A7D99871F41742541D94D9A0CC1207B647D5BAB1F41F3F0659318010DC1AFDEC88B04D01F4116BF1EB697660DC189E2EECC91F51F41C9CF4057C3CA0DC1B60A9929000E20414EEA1AA7932D0EC1A77DAE8FA6212041DF4C11F1008F0EC189707290BA352041B07F379C03EF0EC12585139B3A4A20413BFFE72B944D0FC1129A5316255F204117B25940ABAA0FC167B4A76078742041528F99CB200310C1148F58D0328A20418BAA0D06283010C16DCDA3B352A020414941A4CC675C10C13DCEDD50D6B62041221106ACDC8710C1CE1C94E6BBCD2041B960AE4083B210C12F7DB0AB01E52041EEA52E3758DC10C1F8909CCFA5FC2041EAEA704C580511C1D011667AA6142141DEECF84D802D11C1D79EE3CC012D214154EF231ACD5411C11A1ADAE0B5452141313F67A03B7B11C1299322C9C05E214166608DE1C8A011C1D5BBD09120782141B1E1F1EF71C511C11AE45940D39121419ED1BBEF33E911C12B7ABCD3D6AB214159D016170C0C12C1870BA84429C62141C5B96AAEF72D12C101C4A585C8E0214195E39110F44E12C187674183B2FB21411BEB0DABFE6E12C181C33224E5162241BB0E3BFE148E12C1839487495E322241FB0E829D34AC12C11BDDCDCE1B4E22414D93882F5BC912C15CAA3E8A1B6A2241D00E606E86E512C1DF42E94C5B8622415A21B327B40013C1D3BCDEE2D8A222414B71F13CE21A13C1BFF75D1392BF2241AFFA79A30E3413C17BF6FFA084DC22416DD0C364374C13C1F895E449AEF922415D4C859E5A6313C1519DDFC70C1723411AABD982767913C1AA23A6D09D342341C6106558898E13C14348FC155F522341D5F3767A91A213C14839E3454E7023413AEB2A598DB513C1A885C70A698E23416FDD87797BC713C175B6AF0BADAC2341D48D9D755AD813C1112C6BEC17CB23413386A0FC28E813C1943BC14DA7E92341235A04D3E5F613C1AD88A0CD580824414D4294D28F0414C161984E072A2724419E0D8AEA251114C1DD98979318462441AA66A31FA71C14C1B25AFE0822652441856B358C122714C1B377ECFB4384244195963E60673014C1B9A3E2FE7BA32441FEF676E1A43814C18423A9A2C7C2244154B75E6BCA3F14C1FA65807624E2244180F14A6FD74514C1EFBB510890012541CBCE7074CB4A14C1B22AE0E40721254140F3EE17A64E14C18855F997894025419833D50C675114C1517AA6AC1260254128952A1C0E5314C1777D5DADA07F25414597F1249B5314C15C013224319F2541DAC52A1C0E5314C17985069BC1BE2541F994D50C675114C14189BD9B4FDE25414685EF17A64E14C11AAF6AB0D8FD25416D917174CB4A14C16DDB83635A1D2641AEE44B6FD74514C1194C1240D23C2641FCDA5F6BCA3F14C164A4E3D13D5C2641074B78E1A43814C19CE9BAA59A7B2641E61A4060673014C1946C8149E69A26410020378C122714C1339C774C1EBA26412D4BA51FA71C14C139BD653F40D9264102228CEA251114C17E83CCB449F82641698696D28F0414C1D588154138172741CBCD06D3E5F613C1CE9DC37A093627413529A3FC28E813C196F0A2FABA542741FB5FA0755AD813C13106F95B4A73274183DE8A797BC713C14F82B43CB5912741FF1A2E598DB513C107BA9C3DF9AF27410B527A7A91A213C1B90D810214CE27412B9D6858898E13C17706683203EC27416665DD82767913C13233BE77C40928414634899E5A6313C111C2848055272841A6E5C764374C13C157D27FFEB3442841E43C7EA30E3413C1257B64A7DD6128412AE0F53CE21A13C197830635D07E284189BCB727B40013C19BC88565899B2841F2D5646E86E512C10B4D7BFB06B8284104868D2F5BC912C16BF025BE46D42841E42C879D34AC12C1EBC8967946F02841705740FE148E12C1211DDDFE030C2941325E13ABFE6E12C121FA31247D272941A1809710F44E12C1756223C5AF422941578070AEF72D12C1B412BFC2995D2941FDBF1C170C0C12C143D8BC0339782941DEE9C1EF33E911C11077A8748B9229411322F8EF71C511C1EC1A0B088FAC29416DC893E1C8A011C1555194B641C629415DCE6DA03B7B11C17C88427FA1DF294123A52A1ACD5411C15E108B67ACF82941C9C8FF4D802D11C1C99A817B60112A4169EC774C580511C14D37FFCDBB292A4173CC353758DC10C1F5C7C878BC412A41B7ABB54083B210C1E0EBB49C60592A4108800DACDC8710C1B45CD161A6702A4182D3ABCC675C10C108BC87F78B872A417F5F1506283010C1E9CDC1940F9E2A416866A1CB200310C1A01D0D782FB42A414EA36940ABAA0FC1F609BEE7E9C92A413E32F82B944D0FC13F3612323DDF2A413DF3479C03EF0EC1685D52AD27F42A41AAFF21F1008F0EC18884F3B7A7082B410ADB2BA7932D0EC1358AB7B8BB1C2B4123FD5157C3CA0DC13510CD1E62302B41B72730B697660DC1F8BCEE6199432B418093779318010DC177D2810260562B418C0053D94D9A0CC11218B489B4682B4110B6C88B3F320CC10D159989957A2B410B7E1AC8F5C80BC17F99469D018C2B4134A923C4785E0BC15793F068F79C2B41D227B5CDD0F20AC1702D049A75AD2B4146C4EF4906860AC1733642E77ABD2B41378C9CB421180AC18FCDD81006CD2B417275839F2BA909C109537CE015DC2B41A84BC0B12C3909C1989A7F29A9EA2B4177F415A72DC808C1CD5DEBC8BEF82B411D17404F375608C191EC94A555062C418335438D52E307C1141A34B06C132C414644BB56886F07C15A6478E302202C41A1CF28B3E1FA06C1DA541D44172C2C4123BB3CBB678506C17B18FEE0A8372C4144AA2298230F06C18E4D28D3B6422C41FB1FCA821E9805C12106EE3D404D2C41A0632EC3612005C16EFDF64E44572C416D399DAFF6A704C1EFFE503EC2602C41207DFCABE62E04C1DF7D7F4EB9692C412DAD0E293BB503C1EF5B8ACC28722C413875B6A3FD3A03C104DE0B10107A2C417F4639A437C002C1E7CD3D7B6E812C41F10C81BDF24402C1EDC7057B43882C41D70F5D8C38C901C18CB300878E8E2C41ED0CC2B6124D01C10E668D214F942C41EA9C09EB8AD000C17C6ED6D784992C416AF030DFAA5300C1090ADB412F9E2C41D2E82DA0F8ACFFC0464077024EA22C419DDA730112B2FEC07D266BC7E0A52C41942FE972B5B6FDC0A2496149E7A82C4148BD758EF6BAFCC0593EF44B61AB2C418769ACF5E8BEFBC0A656B39D4EAD2C4158454350A0C2FAC0E77C2618AFAE2C416B2D8B4A30C6F9C0C433D19F82AF2C41A30EE793ACC9F8C0E8BA3424C9AF2C414FED42DD28CDF7C04858D19F82AF2C41BCCD8AD7B8D0F6C0EDC52618AFAE2C41CF9C213270D4F5C028C4B39D4EAD2C413837589962D8F4C04ED0F44B61AB2C41FFADE4B4A3DCF3C0FFFF6149E7A82C41F6E6592647E1F2C034016CC7E0A52C41AFB79F8760E6F1C0463F78024EA22C418B996B6903ECF0C03D2DDC412F9E2C41B92A74A386E4EFC0CEB5D7D784992C413B0A927467F2EDC065D18E214F942C411C94251ED001ECC0CB4202878E8E2C41352B9559E712EAC0F57A077B43882C4184C6B3BED325E8C096A43F7B6E812C413983BEC0BB3AE6C036D80D10107A2C411C115DABC551E4C07C798CCC28722C412835A59F176BE2C09DBE814EB9692C41009E2191D786E0C0B062533EC2602C41078BB885564ADDC00384F94E44572C415C35D988708CD9C058AFF03D404D2C41FF5C13DE47D4D5C031192BD3B6422C41C93C41C52622D2C0540601E1A8372C4123D9BD0BAEECCCC0AC642044172C2C41681093D243A2C5C0EA957BE302202C413EB120D440CBBCC0216D37B06C132C411BD7F92851DDACC0D96098A555062C4127FFB1DCCCEE47C00BF3EEC8BEF82B41B64F337707E0AB4085508329A9EA2B417C4F0774E1EFBB405A2980E015DC2B41506F990B52E7C440F8C3DC1006CD2B411C6FD1609BC5CB40A54C46E77ABD2B410A2596CE2149D1401A63089A75AD2B41B2920C8261A6D44024E8F468F79C2B414CADC5A149FAD740170D4B9D018C2B4172F239BF9744DB401AA79D89957A2B4139DC8E2B0A85DE4037C8B889B4682B413A0D5BFEAFDDE04058A0860260562B41A3B93E89AC73E24033A8F36199432B410773C70D5B04E4406918D21E62302B415C56304D9C8FE540FEAEBCB8BB1C2B41885C0A755115E7407FC5F8B7A7082B414AA6A3215C95E84024BA57AD27F42A41872566609E0FEA4053AE17323DDF2A418F742DB2FA83EB40F79CC3E7E9C92A41D6AC930D54F2EC401DCB12782FB42A41220F35E18D5AEE407195C7940F9E2A41FF4FEA158CBCEF40299D8DF78B872A4107AE7C88198CF040F756D761A6702A412F341EDBB336F140CFFEBA9C60592A41F1911FB507DEF14015F3CE78BC412A41F0EF280A0882F240247A05CEBB292A41E2424910A822F340DAF4877B60112A41F298F540DBBFF3402A819167ACF82941A425035A9559F440820F497FA1DF2941C0F89B5ECAEFF44013EE9AB641C62941314D2E986E82F540DECC11088FAC2941255D56977611F640B13DAF748B92294141A9C234D79CF6400BB3C3033978294111A112928524F7401A01C6C2995D2941579BAF1A77A8F740EF632AC5AF422941540DA084A128F840220E39247D27294193F054D1FAA4F8401D43E4FE030C29412347714E791DF94053009E7946F02841C8AE8B961392F940AF382DBE46D42841F4F3E991C002FA409AA582FB06B8284100963677776FFA40E2308D65899B28415D2E30CC2FD8FA4001FB0D35D07E284133AD5266E13CFB401E016CA7DD612841215E7A6B849DFB40496687FEB344284173A8805211FAFB4064638C8055272841987ED2E38052FC404EE1C577C40928410E71003ACCA6FC40C3C06F3203EC27419C5948C2ECF6FC409AD3880214CE27410C94183DDC42FD40E28AA43DF9AF274136BA8CBE948AFD40895DBC3CB59127419BD9E3AE10CEFD402CEB005C4A7327415819F0CA4A0DFE40B5DEAAFABA542741C1C77F243E48FE407294CB7A0936274170C7BF22E67EFE405F871D41381727411A5497823EB1FE404F89D4B449F826410318FD5643DFFE40B1C96D3F40D926416F8B4509F108FF40B1AE7F4C1EBA2641F6976A59442EFF4077848949E69A26411D7A4C5E3A4FFF404206C3A59A7B26412FDCEB85D06BFF402CC5EBD13D5C2641C2259D950484FF4060701A40D23C2641F9FB34AAD497FF4090028C635A1D2641F4EE2D383FA7FF4077D872B0D8FD25419651C70B43B2FF4035B4C59B4FDE254124391D49DFB8FF4060B10E9BC1BE2541ECA2396C13BBFF40E8BA3424319F2541 + + + 0103000020E80A0000010000001B0000003731C25DB7A40AC123BABA3D2F2E1541482DDA6520AE15C150176B846E0E04419D9BAD51D2DD20C188B238C6A20F1341C93BA6B63EF616C1773C690356B72041AFE718BD3DE01AC1363F67295618224104666722A81614C128DF2B476DE92641E3BF74CA1BBCF1C0D43292B68C652141BDD1D74AAFA6CCC01D27263DE8A122418FF95A96AD86C240BA1AA7079685274134285EE6E81EF9C040F2AA56B1AF2C4117B1B91CDC81FA40E8363289617C3041DF296F1F14800941806416C77A5C2C4143DE3E9BAE901A41E5DD836A7C8E2E413E4390CBBBDE1E41DCBAED0B9BC82741489E9ED935770A41535871C71BFB2441A247FE423D360841CDF36716539B2441ECC1420680470741BD3D4C94710F23414D024D7D04380A41FEC5364D1A022241407DA7BAAF811D41DD0784C658ED184192B08CF1A618184108E3295E56ED104121896F9066610541F13A975D57FE1941096E8D134BEBFB406847DAE3D9661741AABE21A245A00B41845A019F2304FF40E48112BC1AF0F84080891F1A39C7F140DD811CEEB3B3EF40AE82AE28194B0341AB6F85D09F3409C1B06BA7169F6201413731C25DB7A40AC123BABA3D2F2E1541 + + + + + 1 + + + + + + + +http://postgis.refractions.net/pipermail/postgis-users/2006-March/011316.html + +POLYGON((742605.987032656 5087763.72510381,742599.903121688 +5087760.56016809,742598.666141033 +5087762.50894352,742591.100910753 +5087758.50480931,742586.861672536 +5087766.63211263,742591.417801844 +5087769.04526206,742592.428792606 +5087767.35034731,742601.541294342 +5087772.18101105,742605.987032656 5087763.72510381)) + + +POLYGON((742601.541294537 5087772.18101068,742592.428792606 +5087767.35034731,742589.944404072 +5087771.51539701,742583.880455986 5087782.54873438,742582.81550675 +5087784.27809355,742583.216887765 5087784.43459684,742582.99081514 +5087785.0349637,742592.341351823 5087789.67654,742593.375823205 +5087787.7060691,742599.28794443 5087776.4640487,742601.541294537 +5087772.18101068)) + + + + + 1 + + + + + + +http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html + + +POLYGON ((613697.0000000041909516 2369267.9999981997534633, 613797.0000000043073669 2368322.9999981978908181, 613643.0000000041909516 2367807.9999981969594955, 613674.0000000041909516 2367405.9999981969594955, 613400.0000000041909516 2367299.9999981955625117, 613200.0000000040745363 2366813.9999981950968504, 613252.0000000040745363 2366474.9999981927685440, 613094.0000000040745363 2366400.9999981927685440, 612695.0000000039581209 2365506.9999981909058988, 612326.0000000038417056 2365402.9999981909058988, 612145.0000000037252903 2365470.9999981913715601, 612061.0000000037252903 2365967.9999981918372214, 611724.0000000036088750 2366168.9999981927685440, 611334.0000000034924597 2366316.9999981927685440, 610743.0000000033760443 2366221.9999981932342052, 610174.0000000031432137 2366305.9999981927685440, 609973.0000000031432137 2367066.9999981955625117, 609073.0000000027939677 2367938.9999981974251568, 609061.0000000027939677 2368332.9999981974251568, 609151.0000000027939677 2368684.9999981992878020, 608919.0000000027939677 2368811.9999982002191246, 608801.0000000026775524 2369192.9999982002191246, 609161.0000000027939677 2369096.9999982006847858, 609161.0000000027939677 2369509.9999982025474310, 609857.0000000030267984 2369498.9999982011504471, 609762.0000000030267984 2369689.9999982020817697, 610796.0000000033760443 2369794.9999982025474310, 611332.0000000034924597 2370097.9999982025474310, 613149.0000000040745363 2370460.9999982034787536, 613613.0000000041909516 2369720.9999982016161084, 613697.0000000041909516 2369267.9999981997534633)) + + + +POLYGON ((607216.0000000019790605 2370623.9999982002191246, 608128.0000000019790605 2370312.9999982002191246, 608317.0000000030267984 2370101.9999982002191246, 608328.0000000030267984 2369868.9999982002191246, 608644.0000000030267984 2369847.9999982002191246, 608801.0000000030267984 2369192.9999982002191246, 608919.0000000030267984 2368811.9999982002191246, 609151.0000000030267984 2368684.9999982002191246, 609061.0000000030267984 2368332.9999982002191246, 608602.0000000030267984 2368124.9999982002191246, 607980.0000000019790605 2367585.9999982002191246, 607295.0000000019790605 2367062.9999981899745762, 606251.0000000019790605 2366697.9999981899745762, 605456.0000000019790605 2367679.9999982002191246, 605108.0000000019790605 2368377.9999982002191246, 604906.0000000019790605 2369083.9999982002191246, 604191.0000000010477379 2369719.9999982002191246, 604107.0000000010477379 2370057.9999982002191246, 604264.0000000010477379 2370397.9999982002191246, 604141.0000000010477379 2370768.9999982002191246, 604561.0000000010477379 2370448.9999982002191246, 604940.0000000019790605 2370406.9999982002191246, 605460.0000000019790605 2370792.9999982002191246, 605942.0000000019790605 2370945.9999982099980116, 606364.0000000019790605 2370892.9999982002191246, 606881.0000000019790605 2370988.9999982002191246, 607216.0000000019790605 2370623.9999982002191246)) + + + + +1 + + + + + + +http://postgis.refractions.net/pipermail/postgis-users/2006-March/011332.html (2) + + + 0103000020BE6B0000010000002A000000FBFFFFFF0BB81A41D3FFFFFF12C63E41FBFFFFFF4FBD1A41D6FFFFFF66C63E41FCFFFFFF1BC11A41D7FFFFFF14C53E41FBFFFFFF93C31A41D3FFFFFFC4C23E41FCFFFFFF87C71A41D8FFFFFFC4C23E41FBFFFFFF8BD41A41D5FFFFFFBEC03E41FBFFFFFF2BD81A41D3FFFFFFDEC03E41FCFFFFFF63DA1A41DBFFFFFFB9BF3E41FCFFFFFF43D91A41D7FFFFFF5BBE3E41FBFFFFFFD7D81A41D1FFFFFFA8BC3E41FCFFFFFF37D61A41D3FFFFFF60BB3E41FCFFFFFFF3DD1A41D6FFFFFFFDB73E41FCFFFFFF6BE11A41D8FFFFFFBCB33E41FCFFFFFF4BDE1A41D8FFFFFFEBB13E41FCFFFFFF7BDB1A41D7FFFFFF8BB13E41FCFFFFFF4BDD1A41D6FFFFFF83B03E41FBFFFFFFB7D91A41D0FFFFFFADAE3E41FBFFFFFF07D81A41D6FFFFFFF4AD3E41FCFFFFFFBBD61A41D6FFFFFF45AB3E41FCFFFFFF67D61A41DBFFFFFFB3A93E41FCFFFFFF63D91A41D6FFFFFF92A83E41FBFFFFFF03C31A41D2FFFFFF75A93E41FBFFFFFF13BE1A41D7FFFFFFB7A83E41FBFFFFFF0FBF1A41D2FFFFFF84A73E41FBFFFFFFD7B41A41D5FFFFFF77A83E41FBFFFFFFAF871A41D6FFFFFFACA83E41FAFFFFFFDF811A41CEFFFFFF79AA3E41FBFFFFFFDF8B1A41D1FFFFFF9AAE3E41FAFFFFFF3B971A41D0FFFFFF76B03E41FBFFFFFF3B891A41D3FFFFFF4FB33E41FCFFFFFFE7871A41D3FFFFFF2EB43E41FBFFFFFFE7881A41D2FFFFFF16B53E41FCFFFFFFC3861A41D8FFFFFF9BB53E41FBFFFFFF27851A41D8FFFFFF67B73E41FBFFFFFFBB8C1A41D4FFFFFFA6B73E41FBFFFFFF03911A41D4FFFFFF38B93E41FBFFFFFF879E1A41D3FFFFFF11BC3E41FBFFFFFF37A91A41D4FFFFFF3EBB3E41FBFFFFFF0BA91A41D2FFFFFF46BC3E41FCFFFFFFC3B31A41D5FFFFFFFABC3E41FBFFFFFFF3B11A41D4FFFFFFDFC33E41FBFFFFFF0BB81A41D3FFFFFF12C63E41 + + + + 0103000020BE6B00000100000038000000000000009C801A41D5FFFFFF33D83E41000000006C821A41D5FFFFFFE0D63E410000000038861A41D5FFFFFFE3D53E4100000000E4851A41D5FFFFFFB0D43E4100000000C0821A41D5FFFFFFF2D33E4100000000B4691A41D5FFFFFFC6CF3E410000000038681A41D5FFFFFFBDCE3E410000000038751A41D5FFFFFF76CD3E410000000068731A41D5FFFFFF30CB3E4100000000787C1A41D5FFFFFFDCCA3E4100000000B4851A41D5FFFFFFDCCA3E4100000000788B1A41D5FFFFFF23CC3E41000000004C8C1A41D5FFFFFF10CB3E4100000000A48A1A41D5FFFFFFDEC93E4100000000788B1A41D5FFFFFFF5C83E4100000000C48E1A41D5FFFFFF17C83E4100000000B8921A41D5FFFFFFCDC73E41000000001C9D1A41D5FFFFFFE2C73E410000000008A31A41D5FFFFFFCBC83E4100000000ECAC1A41D5FFFFFF41C83E41000000005CB21A41D5FFFFFF31C63E41000000000CB81A41D5FFFFFF12C63E4100000000F4B11A41D5FFFFFFDFC33E4100000000C4B31A41D5FFFFFFFABC3E41000000000CA91A41D5FFFFFF46BC3E410000000038A91A41D5FFFFFF3EBB3E4100000000889E1A41D5FFFFFF11BC3E410000000004911A41D5FFFFFF38B93E4100000000BC8C1A41D5FFFFFFA6B73E410000000028851A41D5FFFFFF67B73E4100000000C4861A41D5FFFFFF9BB53E4100000000F0791A41D5FFFFFFD5B53E410000000038701A41D5FFFFFFDDB63E4100000000D0681A41D5FFFFFF84B83E4100000000D0581A41D5FFFFFF9CB73E410000000028581A41D5FFFFFF23B93E4100000000445E1A41D5FFFFFFB5BA3E4100000000245B1A41D5FFFFFF3CBC3E410000000080591A41D5FFFFFF99BD3E4100000000F8501A41D5FFFFFFBABE3E410000000018511A41D5FFFFFF75BF3E4100000000A84B1A41D5FFFFFF31C13E41000000004C4D1A41D5FFFFFFCCC73E4100000000244F1A41D5FFFFFF50CB3E41000000006C441A41D5FFFFFF8DCC3E4100000000BC451A41D5FFFFFF14CE3E4100000000D84B1A41D5FFFFFFFBCF3E4100000000B4571A41D5FFFFFFD6D13E4100000000B0581A41D5FFFFFF09D33E410000000028561A41D5FFFFFF5AD43E4100000000F45E1A41D5FFFFFF59D53E4100000000506B1A41D5FFFFFFB4D73E410000000044701A41D5FFFFFF5FD73E410000000038731A41D5FFFFFF74D73E4100000000E4721A41D5FFFFFFB4D73E41000000009C801A41D5FFFFFF33D83E41 + + + + +1 + + + + + + + +postgis-users/2006-November/013743.html + + +POLYGON((5417148.108 5658342.603,5417139.016 +5658338.009,5417126.791 5658331.833,5417116.292 5658327.518,5417112.871 +5658325.598,5417110.25 5658324.127,5417106.071 5658321.781,5417104.226 +5658320.745,5417093.266 5658315.008,5417091.265 5658313.961,5417085.335 +5658310.857,5417060.44 5658326.26,5417064.68 5658327.52,5417088.83 +5658336.46,5417088.52 5658337.31,5417102.92 5658342.65,5417103.26 +5658341.83,5417111.76 5658345.51,5417121.662 5658349.583,5417121.878 +5658349.672,5417125.217 5658351.119,5417131.761 5658353.388,5417137.589 +5658356.276,5417142.166 5658359.67,5417146.599 5658364.988,5417151.395 +5658370.641,5417150.853 5658371.392,5417152.59741167 +5658373.52811061,5417154.92 5658376.37,5417155.18955743 +5658376.89699992,5417154.919 5658376.371,5417155.814 +5658378.111,5417157.051 5658380.297,5417158.004 5658382.304,5417159.014 +5658384.47,5417159.775 5658386.619,5417160.629 5658389.278,5417161.5 +5658399.49,5417160.773 5658404.194,5417159.41 5658413.02,5417158.853 +5658414.442,5417153.671 5658427.659,5417153.67051161 +5658427.6586943,5417153.67 5658427.66,5417152.73 5658427.07,5417149.993 +5658436.599,5417148.81 5658439.42,5417149.233 5658439.67,5417148.36 +5658440.81,5417146.41 5658446.6,5417144.321 5658453.127,5417144.32092232 +5658453.13043826,5417154.59 5658458.01,5417154.99551047 +5658455.8409905,5417155.446 5658453.413,5417157.23981414 +5658448.75748237,5417157.22660892 5658448.57861162,5417157.22660849 +5658448.57860592,5417157.22660865 5658448.57860812,5417157.128 +5658447.265,5417157.64950997 5658446.06368023,5417157.64950961 +5658446.06368108,5417158.314 5658444.533,5417172.322 +5658417.957,5417174.99 5658418.57,5417175.23 5658417.74,5417176.696 +5658412.61,5417177.875 5658408.488,5417178.76 5658405.39,5417178.1 +5658393.55,5417178.08 5658393.36,5417177.11 5658384.95,5417178.151 +5658384.915,5417178.14836289 5658384.91508866,5417178.12 +5658384.83,5417177.91415246 5658383.81114117,5417176.927 +5658378.944,5417176.603 5658377.341,5417176.73975922 +5658378.01762048,5417176.6 5658377.34,5417176.51210558 +5658376.89535766,5417176.428 5658376.483,5417175.235 +5658370.602,5417171.577 5658362.886,5417170.762 5658360.107,5417168.522 +5658357.989,5417166.042 5658355.047,5417164.137 5658352.264,5417162.642 +5658351.593,5417160.702 5658350.843,5417160.05417889 +5658350.5823586,5417158.82 5658350.09,5417158.82103105 +5658350.0862195,5417159.50373263 5658350.36089455,5417158.818 +5658350.085,5417159.055 5658349.214,5417155.754 +5658347.679,5417156.78066321 5658348.15640928,5417155.7525011 +5658347.6811561,5417155.161 5658348.532,5417149.028 +5658343.237,5417152.26877967 5658346.03496647,5417149.03 +5658343.24,5417148.78133339 5658343.06701453,5417148.108 +5658342.603)) + + + +POLYGON((5417148.36 5658440.81,5417149.233 +5658439.67,5417148.81 5658439.42,5417149.993 5658436.599,5417152.73 +5658427.07,5417153.67 5658427.66,5417153.67051161 +5658427.6586943,5417153.671 5658427.659,5417158.853 +5658414.442,5417159.41 5658413.02,5417160.773 5658404.194,5417161.5 +5658399.49,5417160.63 5658389.28,5417159.78 5658386.62,5417159.366239 +5658385.46469333,5417159.014 5658384.47,5417158.004 +5658382.304,5417157.051 5658380.297,5417155.814 +5658378.111,5417155.18955747 5658376.897,5417154.92 +5658376.37,5417152.59740379 5658373.52810095,5417150.853 +5658371.392,5417151.13020611 5658371.00790076,5417151.4 +5658370.64,5417147.11100598 5658365.59149663,5417146.599 +5658364.988,5417145.96673439 5658364.22950947,5417142.17 +5658359.67,5417139.98754716 5658358.05460369,5417137.589 +5658356.276,5417131.761 5658353.388,5417125.33011568 +5658351.15822058,5417125.22 5658351.12,5417121.88 5658349.67,5417121.66 +5658349.58,5417111.76 5658345.51,5417103.26 5658341.83,5417102.92 +5658342.65,5417088.52 5658337.31,5417088.83 5658336.46,5417064.68 +5658327.52,5417060.44 5658326.26,5417085.34 5658310.86,5417085.90750076 +5658311.15666987,5417091.265 5658313.961,5417093.266 +5658315.008,5417093.61266829 5658315.18946314,5417104.23 +5658320.75,5417105.81727304 5658321.63852784,5417106.071 +5658321.781,5417106.60319005 5658322.07975996,5417110.25 +5658324.13,5417112.87 5658325.6,5417116.29 5658327.52,5417121.76604303 +5658329.76778528,5417126.791 5658331.833,5417139.016 +5658338.009,5417148.108 5658342.603,5417148.78133333 +5658343.06701449,5417149.03 5658343.24,5417152.26878253 +5658346.03496893,5417155.161 5658348.532,5417155.7525011 +5658347.6811561,5417156.78066337 5658348.15640935,5417159.055 +5658349.214,5417158.818 5658350.085,5417158.82103105 +5658350.0862195,5417158.82 5658350.09,5417160.0541792 +5658350.58235872,5417160.702 5658350.843,5417162.642 +5658351.593,5417164.137 5658352.264,5417165.25343486 +5658353.89499119,5417166.04 5658355.05,5417168.52 5658357.99,5417170.76 +5658360.11,5417171.26171711 5658361.81094338,5417171.577 +5658362.886,5417175.235 5658370.602,5417176.428 +5658376.483,5417176.51210558 5658376.89535766,5417176.6 +5658377.34,5417176.73975924 5658378.01762057,5417176.927 +5658378.944,5417177.91415134 5658383.81113564,5417178.12 +5658384.83,5417178.14836289 5658384.91508866,5417177.11 +5658384.95,5417178.08 5658393.36,5417178.1 5658393.55,5417178.76 +5658405.39,5417177.875 5658408.488,5417176.696 5658412.61,5417175.23 +5658417.74,5417174.99 5658418.57,5417172.322 +5658417.957,5417172.32037372 5658417.96008538,5417172.32 +5658417.96,5417158.31 5658444.53,5417157.64951003 +5658446.06368011,5417157.128 5658447.265,5417157.22660867 +5658448.5786084,5417157.23981414 5658448.75748238,5417155.446 +5658453.413,5417154.99551072 5658455.84098918,5417154.59 +5658458.01,5417144.32092232 5658453.13043826,5417144.321 +5658453.127,5417146.41 5658446.6,5417148.36 5658440.81)) + + + + +true + + + + + +true + + + + + +1 + + + + + + + +postgis-users/2006-November/014013.html + + +MULTIPOLYGON(((-112.237615 33.491154,-112.237614 33.490469,-112.237752 +33.490529,-112.23774 33.494274,-112.235109 33.494339,-112.235109 +33.494222,-112.233468 33.494258,-112.233631 33.491873,-112.236704 +33.491169,-112.237615 33.491154)),((-112.237137 33.506662,-112.237111 +33.505964,-112.236836 33.505292,-112.235281 33.503124,-112.23644 +33.502654,-112.237714 33.502702,-112.237695 33.50665,-112.237137 +33.506662)),((-112.236804 33.501624,-112.236731 33.501185,-112.234285 +33.501218,-112.234295 33.499851,-112.237725 33.499804,-112.237714 +33.501536,-112.236804 33.501624))) + + + +POLYGON((-112.235266 33.502267,-112.234309 33.502505,-112.234451 +33.501985,-112.234479 33.501868,-112.234509 33.501141,-112.236709 +33.501141,-112.236909 33.501541,-112.235687 33.502032,-112.235266 +33.502267)) + + + + +0.001 + + + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/safe/16595.xml geos-3.2.2/tests/xmltester/tests/safe/16595.xml --- geos-3.1.0/tests/xmltester/tests/safe/16595.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/safe/16595.xml 2009-10-01 10:10:08.000000000 +0100 @@ -0,0 +1,273 @@ + + +SAFE test 16595 line 1 + +LINESTRING(608919.148 232497.434 2047.83996582031,608912.759 232499.018 2054.42238984432,608908.967 232499.509 2058.24604268589,608904.178 232499.499 2063.0350492044,608899.288 232499.689 2067.92873501108,608892.205 232498.975 2075.0476255139,608886.918 232498.165 2080.39630966434,608882.13 232497.355 2085.25233740058,608877.841 232496.348 2089.65796314595,608873.953 232494.342 2094.03295442012,608870.963 232492.538 2097.52501627898,608868.671 232490.736 2100.44057009889,608865.882 232487.934 2104.39401156164,608864.088 232486.432 2106.73376176908,608861.298 232484.129 2110.35148032683,608856.515 232480.324 2116.46335833722,608851.432 232476.818 2122.63821562682,608844.353 232473.707 2130.37064500361,608838.072 232470.398 2137.46996605894,608832.189 232467.589 2143.98917616351,608826.604 232466.279 2149.72574927799,608815.232 232464.557 2161.22737748111,608809.944 232464.746 2166.51874962256,608804.854 232465.534 2171.66938070493,608799.763 232466.822 2176.9207785979,608795.171 232468.01 2181.66396014097,608789.88 232469.497 2187.15994053798,608783.791 232471.082 2193.45184654153,608776.705 232472.565 2200.69136304159,608771.415 232473.553 2206.0728309235,608765.827 232473.841 2211.66824303684,608761.536 232474.031 2215.96344393816,608756.147 232474.519 2221.37448977438,608751.159 232474.309 2226.36690433807,608746.57 232473.8 2230.98404274652,608739.986 232472.488 2237.69748643633,608734.9 232471.179 2242.94923203415,608728.317 232469.667 2249.70363491477,608718.443 232467.349 2259.84606221341,608713.656 232465.841 2264.86496565354,608709.567 232464.534 2269.15776658243,608698.698 232460.516 2280.74565962041,608692.815 232458.007 2287.14133808331,608686.734 232454.699 2294.06386265939,608679.954 232451.289 2301.65309224221,608673.872 232448.579 2308.31152684674,608666.994 232444.67 2316.22272539603,608662.209 232441.664 2321.87358450737,608655.829 232438.554 2328.97121914761,608650.545 232436.047 2334.81977871156,608645.26 232433.738 2340.58715693029,608638.38 232430.928 2348.01887338989,608632.796 232428.619 2354.06142890847,608626.016 232425.608 2361.47994836029,608620.932 232422.801 2367.28737892445,608614.351 232419.791 2374.5240615361,608608.768 232416.983 2380.7734366273,608602.987 232413.675 2387.43397356792,608597.903 232410.369 2393.49834754724,608589.032 232404.957 2403.88989257812) + + + +LINESTRING (608916.741593641 232487.72785718,608910.907705488 232489.174230452,608908.332673382 232489.50765365,608904.19888114 232489.499021801,608903.789744906 232489.506539943,608899.596850546 232489.669454039,608893.464514039 232489.051285429,608888.50930563 232488.292117884,608884.108834654 232487.547677305,608881.328810042 232486.894964602,608878.833975851 232485.607763628,608876.657972004 232484.294883715,608875.329586331 232483.250489744,608872.969490056 232480.879392661,608872.301483435 232480.266521117,608870.507483435 232478.764521117,608870.453885232 232478.719963614,608867.663885232 232476.416963614,608867.523577273 232476.30326121,608862.740577273 232472.49826121,608862.192859365 232472.09223755,608857.109859365 232468.58623755,608855.455311822 232467.663058057,608848.700607031 232464.6945757,608842.733005277 232461.550682338,608842.38080069 232461.373907989,608836.49780069 232458.564907989,608834.472591442 232457.853230378,608828.887591442 232456.543230378,608828.101178103 232456.391712317,608816.729178103 232454.669712317,608814.874815058 232454.56338109,608809.586815058 232454.75238109,608808.414091641 232454.863723925,608803.324091641 232455.651723925,608802.401321739 232455.839446408,608797.310321739 232457.127446408,608797.258354086 232457.140742393,608792.666354086 232458.328742393,608792.46538849 232458.382972091,608787.267396709 232459.843832756,608781.505872447 232461.343589031,608774.76256878 232462.754867515,608770.234457652 232463.600571446,608765.348463333 232463.852390766,608761.093646199 232464.040788635,608760.63414181 232464.07175044,608755.905332502 232464.499966981,608751.9214168 232464.332239977,608748.101194266 232463.908510783,608742.211089554 232462.734783963,608737.392502547 232461.494608896,608737.138538015 232461.43277265,608730.579005672 232459.926162761,608721.091725587 232457.698948335,608716.680647131 232456.309371082,608712.824647895 232455.076846992,608702.395405539 232451.221414498,608697.175628941 232448.995268062,608691.512599562 232445.91463968,608691.227206023 232445.765294183,608684.447206023 232442.355294183,608684.024022372 232442.154728388,608678.388313356 232439.643585436,608672.126811684 232436.084962284,608667.528540762 232433.196267949,608666.590737876 232432.67509722,608660.210737876 232429.56509722,608660.115522039 232429.519304166,608654.831522039 232427.012304166,608654.548548964 232426.883398323,608649.263548963 232424.574398323,608649.041088412 232424.480388514,608642.181175994 232421.67859289,608636.736650905 232419.427266165,608630.470442473 232416.644441152,608625.765458911 232414.046705342,608625.09136099 232413.707061571,608618.678787281 232410.774095933,608613.501319749 232408.170060677,608608.200242013 232405.136681478,608603.354506295 232401.985618873,608603.111075942 232401.832259113,608594.240075942 232396.420259112) + + + + +LINESTRING (608583.823924058 232413.493740887,608592.572105684 232418.830812126,608597.535493705 232422.058381127,608598.020437514 232422.354473317,608603.801437514 232425.662473317,608604.274754421 232425.916685923,608609.85775442 232428.724685923,608610.19163901 232428.884938429,608616.429176161 232431.737846319,608621.182541089 232434.362294658,608621.957241977 232434.747282429,608628.737241977 232437.758282429,608628.974772207 232437.860115634,608634.558772207 232440.169115634,608634.598911588 232440.185611486,608641.367113667 232442.949949835,608646.398962292 232445.14834879,608651.494749083 232447.566050812,608657.344361551 232450.417507673,608661.674459238 232453.137732051,608662.052906973 232453.363997912,608668.930906973 232457.272997912,608669.801977628 232457.713271612,608675.670037001 232460.327944565,608682.096894417 232463.560331555,608688.036400438 232466.79136032,608688.892041772 232467.205391095,608694.775041772 232469.714391095,608695.230590786 232469.895609445,608706.099590786 232473.913609445,608706.522370279 232474.059241722,608710.611370279 232475.366241722,608710.651362069 232475.378932213,608715.438362069 232476.886932213,608716.157552904 232477.084334179,608726.031552904 232479.402334179,608726.078461985 232479.41322735,608732.534075608 232480.895968926,608737.493497453 232482.172391104,608738.031713964 232482.295179314,608744.615713964 232483.607179314,608745.467586474 232483.739048466,608750.056586474 232484.248048466,608750.7383622 232484.300149275,608755.7263622 232484.510149275,608757.04885819 232484.47824956,608762.208462574 232484.011022442,608766.269353801 232483.831211365,608766.341706975 232483.827745052,608771.929706975 232483.539745052,608773.250928807 232483.383023673,608778.540928807 232482.395023673,608778.753477665 232482.352938458,608785.839477665 232480.869938458,608786.310107407 232480.759504734,608792.399107407 232479.174504734,608792.58561151 232479.124027909,608797.77641093 232477.665188609,608802.241679923 232476.509975289,608806.849717536 232475.344162591,608810.890831392 232474.718544179,608814.657044473 232474.583934823,608824.710579109 232476.106286797,608828.854389576 232477.078245921,608833.585355109 232479.33717541,608839.691994723 232482.554317662,608840.329688178 232482.861941943,608846.537488763 232485.590076937,608850.556356992 232488.362091891,608855.001755373 232491.898521085,608857.695238025 232494.121851031,608859.114608899 232495.310198329,608861.583509944 232497.790607339,608862.490361138 232498.59727873,608864.782361138 232500.39927873,608865.797001815 232501.100269719,608868.787001815 232502.904269719,608869.367851753 232503.228867589,608873.255851753 232505.234867589,608875.555287973 232506.08327198,608879.844287973 232507.09027198,608880.461971355 232507.214902659,608885.249971355 232508.024902659,608885.403610079 232508.049666063,608890.690610079 232508.859666063,608891.202035542 232508.924575986,608898.285035542 232509.638575986,608899.676255094 232509.681460057,608904.361763905 232509.499405522,608908.946118859 232509.508978199,608910.251111341 232509.426210196,608914.043111341 232508.935210196,608915.165406359 232508.72414282,608921.554406359 232507.14014282) + + + +SAFE test 16595 line 2 + +LINESTRING(609188.538 232627.432 1717.13000488281,609187.04 232627.928 1718.70807521457,609183.948 232627.123 1721.90333129484,609179.361 232625.415 1726.79828629907,609175.872 232623.61 1730.7267616047,609171.288 232620.305 1736.37828783883,609167.5 232617.7 1740.97583025788,609165.21 232614.7 1744.75018263909,609161.923 232611.597 1749.27072737107,609158.933 232609.293 1753.04566477512,609154.846 232606.588 1757.94702710631,609150.559 232604.482 1762.72366034349,609146.771 232602.477 1767.00980997084,609143.682 232599.874 1771.0495381826,609139.895 232596.869 1775.88421274695,609136.106 232595.563 1779.89220497454,609133.113 232595.557 1782.88538285307,609129.523 232594.351 1786.67275439575,609125.236 232592.045 1791.54088816792,609122.446 232589.742 1795.15881742541,609119.16 232585.64 1800.41499213391,609115.573 232582.137 1805.42901895725,609111.587 232579.033 1810.48133953794,609108.796 232577.529 1813.65196272768,609105.704 232576.524 1816.90337826442,609103.511 232575.221 1819.45441831082,609102.017 232573.72 1821.5723305127,609102.022 232570.924 1824.36849553563,609102.225 232568.627 1826.67458067964,609103.029 232564.834 1830.55207878163,609103.534 232561.04 1834.37975999249,609102.544 232556.244 1839.27715422177,609101.253 232552.646 1843.09997558594) + + + +LINESTRING (609186.9602967 232617.573896739,609183.418039307 232616.254913607,609181.122024306 232615.067092719,609177.136313611 232612.193450955,609176.954395972 232612.065342441,609174.480871301 232610.364304487,609173.158839862 232608.632385572,609172.074611158 232607.428334877,609168.787611158 232604.325334877,609168.026762934 232603.67588404,609165.036762934 232601.37188404,609164.452190674 232600.954023186,609160.365190674 232598.249023186,609159.255216338 232597.612543951,609155.103706964 232595.573104077,609152.395799275 232594.139800244,609150.125872788 232592.227006899,609149.897873505 232592.040551426,609146.110873505 232589.035551426,609143.153676462 232587.414846007,609139.364676462 232586.108846007,609136.126046736 232585.563020094,609134.75753066 232585.56027666,609133.512383768 232585.141990545,609130.841510087 232583.70531345,609129.606454841 232582.685839532,609126.964602725 232579.387946233,609126.146801772 232578.485658591,609122.559801772 232574.982658591,609121.717064274 232574.24710303,609117.731064274 232571.14310303,609116.330819346 232570.229808646,609113.539819346 232568.725808646,609112.518831632 232568.289004015,609112.811642575 232566.907621047,609112.941575395 232566.153412381,609113.446575395 232562.359412381,609113.327525233 232559.018400755,609112.337525233 232554.222400755,609111.956437207 232552.866719168,609110.665437207 232549.268719168) + + + + +LINESTRING (609091.840562793 232556.023280832,609092.893172374 232558.956889874,609093.397728796 232561.401185433,609093.166950182 232563.134995462,609092.442357425 232566.553378953,609092.263824436 232567.746669726,609092.060824436 232570.043669726,609092.02201599 232570.906117339,609092.01701599 232573.702117339,609092.770330549 232577.52776891,609094.929424844 232580.774521841,609096.423424844 232582.275521841,609098.402986025 232583.817987451,609100.595986024 232585.120987451,609102.612861086 232586.034250271,609104.846616915 232586.760293158,609106.104753839 232587.438271637,609108.986965062 232589.682723126,609111.736777614 232592.368140848,609114.641397275 232595.994053767,609116.080114768 232597.454036386,609118.870114768 232599.757036386,609120.498799826 232600.85175505,609124.785799826 232603.15775505,609126.338550739 232603.830413637,609129.928550739 232605.036413637,609133.092953264 232605.556979906,609134.421205178 232605.559642623,609135.019107031 232605.765728614,609137.350753774 232607.615899849,609140.327127212 232610.123993101,609142.09287323 232611.315276411,609145.88087323 232613.320276411,609146.149783662 232613.457456049,609149.861395144 232615.28079493,609153.114011866 232617.433554468,609155.422550839 232619.212442024,609157.754341326 232621.41370332,609159.551160138 232623.767614428,609161.833604028 232625.939657559,609165.529932565 232628.481615278,609170.023686389 232631.721549045,609171.27707829 232632.491818197,609174.76607829 232634.296818197,609175.871492792 232634.78641075,609180.458492792 232636.49441075,609181.428495445 232636.800401345,609184.520495445 232637.605401345,609190.183259659 232637.421151148,609191.681259659 232636.925151148) + + + +SAFE test 16595 line 3 + +LINESTRING(609093.181 232546.537 1853.38000488281,609091.088 232545.234 1855.84536607578,609088.795 232544.231 1858.34804304639,609086.102 232543.027 1861.29782569125,609083.81 232541.723 1863.93471072891,609078.925 232539.117 1869.47115187422,609074.936 232537.41 1873.8098808932,609072.644 232535.808 1876.60614380643,609069.853 232534.104 1879.87608287387,609067.359 232534.099 1882.36999511719) + + + +LINESTRING (609098.466033027 232538.047687548,609096.373033027 232536.744687548,609095.095559519 232536.072151568,609092.839598283 232535.085352998,609090.62587224 232534.095629212,609088.755044918 232533.03124927,609088.516819773 232532.89997061,609083.631819773 232530.29397061,609082.85918556 232529.923405274,609079.818982583 232528.622420947,609078.372861916 232527.611650742,609077.854912441 232527.272990244,609075.063912441 232525.568990244,609069.873048075 232524.104020096,609067.379048075 232524.099020096) + + + + +LINESTRING (609067.168870898 232544.181696538,609069.207138084 232545.606349258,609071.00181444 232546.603594726,609074.596551576 232548.14187908,609078.983174869 232550.482010155,609081.156955082 232551.71875073,609082.020495157 232552.156146631,609084.713495157 232553.360146631,609084.787440481 232553.392848432,609086.417366889 232554.105807956,609087.895966973 232555.026312452) + + + +SAFE test 16595 line 4 + +LINESTRING(609067.359 232534.099 1882.36999511719,609064.765 232533.594 1885.01256394715,609061.969 232535.086 1888.18158371422,609058.175 232536.876 1892.37643708604,609053.382 232538.863 1897.56472721392,609048.293 232539.052 1902.65698370207,609042.207 232539.039 1908.74269650551,609034.824 232538.524 1916.14327044958,609030.335 232537.516 1920.74382375671,609026.545 232536.509 1924.66512806707,609021.659 232534.701 1929.87465535857,609017.871 232532.696 1934.1603468529,609014.381 232531.191 1937.96083311229,609009.794 232529.383 1942.89104891279,609006.203 232529.076 1946.49496966992,609002.214 232527.57 1950.75857826658,609000.72 232526.268 1952.74020674876,608998.429 232523.767 1956.13174678721,608996.141 232519.168 1961.26819832597,608994.054 232514.37 1966.50018307343,608988.587 232509.148 1974.06005859375) + + + +LINESTRING (609069.269924747 232524.283279618,609066.675924747 232523.778279618,609063.280976628 232523.704729318,609060.057152467 232524.771518966,609057.478881915 232526.147334296,609054.124427721 232527.72995765,609051.213708413 232528.9366339,609048.118046122 232529.051603476,609042.56601786 232529.039744067,609036.275680762 232528.600962595,609032.715310609 232527.801485403,609029.570925419 232526.966024747,609025.75116778 232525.552573701,609022.54912677 232523.857723589,609021.830823674 232523.513418856,609018.340823674 232522.008418856,609018.048000857 232521.887607892,609013.461000857 232520.079607892,609010.645807887 232519.419344881,609008.437115 232519.230520399,609007.516432283 232518.882927476,609006.754607938 232518.051272003,609005.20861367 232514.943742441,609003.224062357 232510.381271334,609000.961179422 232507.1387572,608995.494179422 232501.9167572) + + + + +LINESTRING (608981.679820578 232516.3792428,608985.688398337 232520.20817879,608986.970937643 232523.156728666,608987.187790866 232523.622216677,608989.475790866 232528.221216677,608991.055133718 232530.521709177,608993.346133718 232533.022709177,608994.149971357 232533.806880794,608995.643971357 232535.108880794,608998.681955577 232536.925461624,609002.670955576 232538.431461624,609005.351192113 232539.039655119,609007.486358663 232539.222193724,609010.566630895 232540.436305822,609013.545162864 232541.720744393,609016.98087323 232543.539276411,609018.188607284 232544.079505979,609023.074607284 232545.887505979,609023.977103956 232546.173673295,609027.767103955 232547.180673295,609028.144067592 232547.273039263,609032.633067593 232548.281039263,609034.128142454 232548.499759734,609041.511142454 232549.014759734,609042.185639549 232549.038977187,609048.271639549 232549.051977187,609048.664133407 232549.045110627,609053.753133407 232548.856110627,609057.211588655 232548.100653963,609062.004588655 232546.113653963,609062.441922556 232545.919968814,609066.235922556 232544.129968814,609066.676847533 232543.908481034) + + + +SAFE test 16595 line 5 + +LINESTRING(610697.427 232662.077 82.0999984741211,610693.636 232661.769 85.9034983533511,610690.143 232662.261 89.4309861355961,610685.752 232662.551 93.8315622106401,610682.262 232661.246 97.5575773282136,610680.267 232660.742 99.6152605919326,610676.179 232659.236 103.971849512795,610672.59 232657.231 108.082934952672,610669.6 232655.626 111.476484392912,610665.511 232654.419 115.739916501307,610662.221 232652.615 119.492059962401,610657.137 232649.508 125.450303644566,610652.353 232646.502 131.1003335888,610649.063 232644.498 134.952629533395,610646.275 232640.896 139.50756566134,610643.487 232637.795 143.677604597904,610638.403 232634.788 149.584318148741,610635.409 232635.081 152.592627723176,610630.619 232635.271 157.386405499466,610628.321 232637.064 160.301142529422,610625.524 232639.055 163.734412697461,610623.226 232641.147 166.842034341098,610619.131 232643.635 171.633618032477,610615.637 232644.926 175.358504690936,610611.844 232645.418 179.183289662098,610606.755 232645.906 184.295645756759,610604.164 232644.103 187.452247677664,610599.875 232642.796 191.935980740536,610597.384 232640.793 195.132406376658,610591.801 232637.985 201.381800913136,610588.809 232637.18 204.480209055688,610585.216 232637.971 208.159256766947,610582.718 232639.764 211.234138285351,610578.126 232641.252 216.061219684784,610573.036 232642.24 221.246233404112,610567.747 232642.528 226.543080923488,610562.359 232642.517 231.931104504507,610556.271 232643.503 238.098447076676,610549.983 232644.987 244.559204879729,610544.392 232646.773 250.428551943498,610539.1 232649.059 256.193203916539,610532.512 232651.043 263.073481313022,610526.921 232652.828 268.942524159912,610520.534 232653.814 275.405198258445,610516.542 232654.105 279.407799719691,610511.654 232653.795 284.305631279915,610506.666 232652.786 289.394672815204,610500.281 232652.473 295.787354676403,610496.489 232652.964 299.611019415482,610490.101 232654.249 306.126996984121,610483.313 232656.232 313.198733850089,610477.223 232658.016 319.544672759963,610470.836 232659.002 326.007346858496,610465.846 232659.49 331.021163694299,610455.666 232661.067 341.322610950687,610452.076 232659.761 345.14279457383,610447.588 232658.953 349.702959411719,610442 232658.941 355.290985107422) + + + +LINESTRING (610698.236782348 232652.1098413,610694.445782348 232651.8018413,610692.241236479 232651.866745978,610689.114708683 232652.307127219,610687.239491508 232652.430974402,610685.764409278 232651.87940354,610684.711362175 232651.550608057,610683.228336126 232651.175948844,610680.371571622 232650.123530218,610677.467068662 232648.500925472,610677.319572113 232648.420146033,610674.329572113 232646.815146033,610672.43105896 232646.035113432,610669.374778925 232645.132953979,610667.235051967 232643.959681203,610662.404690575 232641.007688118,610657.673337983 232638.034768826,610657.555104468 232637.961618913,610655.841283449 232636.917698755,610654.182922651 232634.775153706,610653.711398452 232634.21019578,610650.923398452 232631.10919578,610648.577829051 232629.187825111,610643.493829051 232626.180825111,610640.568542672 232625.02529418,610637.429028856 232624.835544011,610634.723265729 232625.100336461,610630.222651975 232625.278857675,610627.17958304 232625.881089938,610624.467487558 232627.386908761,610622.342782336 232629.044696603,610619.724850888 232630.9082295,610618.792148327 232631.660260447,610617.208249154 232633.102173881,610614.761673608 232634.588640293,610613.230570686 232635.154368362,610610.723236588 232635.479601258,610609.30135993 232635.615949423,610607.078988422 232634.537288186,610604.636804622 232633.793074098,610603.650388836 232632.999902351,610601.877245579 232631.859314078,610596.29424558 232629.051314077,610594.399114285 232628.328406286,610591.407114285 232627.523406286,610586.658982182 232627.413863436,610583.065982182 232628.204863436,610579.384867646 232629.847091121,610578.152887828 232630.731374473,610575.62269551 232631.551262576,610571.805600089 232632.292184045,610567.485138921 232632.527444551,610562.379415696 232632.51702084,610560.760252648 232632.645626899,610554.672252648 232633.631626899,610553.974050559 232633.77037326,610547.686050559 232635.25437326,610546.940065113 232635.461216711,610541.349065113 232637.247216711,610540.42644362 232637.592893105,610535.664019734 232639.650130634,610529.628388724 232641.467782718,610529.470611244 232641.51672295,610524.623535964 232643.064215237,610519.405819519 232643.869705829,610516.494734339 232644.081911688,610512.967904379 232643.858237938,610508.648696164 232642.984524809,610507.155623486 232642.79799375,610500.770623486 232642.48499375,610498.996888659 232642.555789804,610495.204888659 232643.046789804,610494.516919936 232643.160383309,610488.128919936 232644.445383309,610487.296873399 232644.650204554,610480.508873399 232646.633204554,610475.045085022 232648.233759722,610469.585530831 232649.076584277,610464.872687383 232649.537479588,610464.31514363 232649.607870737,610456.672128903 232650.791862311,610455.494691673 232650.363524422,610453.847869836 232649.91922794,610449.359869836 232649.11122794,610447.609474539 232648.953023058,610442.021474539 232648.941023058) + + + + +LINESTRING (610441.978525461 232668.940976942,610446.68434957 232668.951082506,610449.461704023 232669.451105322,610452.247308327 232670.464475578,610457.19685637 232670.949129263,610467.099073827 232669.415160999,610471.809312617 232668.954520412,610472.361687735 232668.884928561,610478.748687735 232667.898928561,610480.034253174 232667.612710665,610486.120690298 232665.829754371,610492.493495075 232663.968046671,610498.11907708 232662.836413472,610500.681398212 232662.504636131,610505.422803497 232662.737065239,610509.671303836 232663.596475191,610511.02106539 232663.774949588,610515.90906539 232664.084949588,610517.269028833 232664.078536438,610521.261028833 232663.787536438,610522.059687735 232663.696928561,610528.446687735 232662.710928561,610529.962388756 232662.35427705,610535.47470214 232660.594398783,610541.983611276 232658.634217282,610543.06555638 232658.239106895,610547.904770448 232656.148698097,610552.656948263 232654.6306531,610558.221319142 232653.317433255,610563.153405385 232652.518642677,610567.726584304 232652.52797916,610568.290720882 232652.513207439,610573.579720882 232652.225207439,610574.941495951 232652.056775702,610580.031495952 232651.068775702,610581.208615121 232650.765016557,610585.800615121 232649.277016557,610588.549132354 232647.887908879,610588.831639811 232647.685132309,610591.943728061 232649.250373901,610593.608611164 232650.589097649,610596.960011578 232652.361711814,610599.743773599 232653.210016071,610601.043148526 232654.114212518,610604.221186316 232655.579664674,610607.709552284 232655.860337242,610612.798552284 232655.372337242,610613.130349773 232655.3349201,610616.923349773 232654.8429201,610619.102885215 232654.306172689,610622.596885215 232653.015172689,610624.323449646 232652.181254541,610628.418449646 232649.693254541,610629.957851673 232648.541739553,610631.812066449 232646.853742463,610634.120149112 232645.2107705,610634.220435135 232645.136009433,610635.805348025 232645.073142325,610636.113366419 232645.051979527,610637.076040587 232645.621366078,610638.592438941 232647.30800571,610641.155077349 232650.618846294,610643.860895532 232653.038381087,610647.091524512 232655.006217097,610651.816662017 232657.975231174,610651.922364129 232658.040735361,610657.006364129 232661.147735361,610657.413070467 232661.383341554,610660.703070467 232663.187341554,610662.67994104 232664.009886568,610665.779446364 232664.924805357,610667.786339985 232666.002084374,610671.301931338 232667.966074528,610672.722159155 232668.619509545,610676.810159155 232670.125509545,610677.817637825 232670.437391943,610679.2770324 232670.806081099,610682.249590722 232671.91759646,610686.411006139 232672.529261918,610690.802006139 232672.239261918,610691.537763521 232672.163254022,610693.93209123 232671.826005459,610696.617217652 232672.0441587) + + + +SAFE test 16595 line 6 + +LINESTRING(609243.805 232633.641 1657.5,609243.009 232632.141 1659.19849814777,609239.718 232631.036 1662.67082523786,609236.013 232629.856 1666.56005859375) + + + +LINESTRING (609252.63829116 232628.953466824,609251.84229116 232627.453466824,609249.477350762 232624.51470087,609246.192010078 232622.661103015,609242.901010078 232621.556103015,609242.752690253 232621.50758696,609239.047690253 232620.32758696) + + + + +LINESTRING (609232.978309747 232639.38441304,609236.608960551 232640.540733674) + + + +SAFE test 16595 line 7 + +LINESTRING(609624.315 232783.037 1234.64001464844,609622.224 232781.246 1237.39321386488,609619.931 232779.544 1240.2488762816,609616.144 232776.939 1244.84537442258,609612.557 232773.936 1249.5235143881,609607.775 232769.631 1255.95790131306,609603.193 232764.728 1262.66871259738,609601.2 232762.726 1265.49363817565,609594.621 232759.217 1272.95000308381,609587.241 232757.104 1280.62660962107,609582.654 232755.097 1285.6335142532,609578.165 232754.289 1290.19469611964,609574.076 232753.282 1294.40590814555,609570.285 232752.774 1298.23082942377,609566.494 232752.467 1302.03427584445,609563.701 232752.261 1304.83488897829,609559.909 232752.253 1308.62693341766,609556.816 232752.246 1311.71997070312) + + + +LINESTRING (609630.820221245 232775.442126956,609628.729221245 232773.651126956,609628.184144828 232773.216263166,609625.891144828 232771.514263166,609625.598411693 232771.305041043,609622.200847486 232768.967925976,609619.114095901 232766.383728872,609614.786473051 232762.487782329,609610.499190474 232757.900146695,609610.279979643 232757.672879906,609608.286979643 232755.670879906,609605.906091181 232753.902581966,609599.327091181 232750.393581966,609597.373544435 232749.603285883,609590.636651061 232747.674416546,609586.662502661 232745.935564173,609584.425487511 232745.255159115,609580.248464315 232744.50331355,609576.467258274 232743.572114117,609575.404144518 232743.37059081,609571.613144518 232742.86259081,609571.092170341 232742.806629432,609567.301170341 232742.499629432,609567.2295602 232742.494089131,609564.4365602 232742.288089131,609563.722097 232742.261022254,609559.930864244 232742.253023873,609556.838631691 232742.24602561) + + + + +LINESTRING (609556.793368309 232762.24597439,609559.886368309 232762.25297439,609563.322187287 232762.260223071,609565.722624782 232762.437269303,609569.216609265 232762.720216608,609572.210839173 232763.121448155,609575.773741726 232763.998885883,609576.393512489 232764.130840885,609579.723957178 232764.73030609,609583.232497339 232766.265435827,609584.488455565 232766.717714117,609590.849813415 232768.539062239,609595.170891925 232770.843768804,609595.994620681 232771.671217359,609600.468809526 232776.458853305,609601.084322363 232777.063014044,609605.866322363 232781.368014044,609606.137721116 232781.603650136,609609.724721116 232784.606650136,609610.476588306 232785.177958957,609614.115339406 232787.680981564,609615.983731686 232789.067812642,609617.809778755 232790.631873044) + + + +SAFE test 16595 line 8 + +LINESTRING(610442 232658.941 355.290985107422,610438.208 232659.232 359.094130190923,610435.413 232659.726 361.932447106464,610428.031 232659.211 369.332381299169,610418.452 232659.191 378.91139142481,610412.068 232658.178 385.375254913024,610403.487 232657.861 393.96209859711,610394.311 232656.044 403.316256418451,610383.735 232655.822 413.894574279224,610373.356 232656.599 424.302606119403,610359.587 232656.57 438.07162120207,610345.421 232654.942 452.330845707698,610334.746 232654.22 463.030221950211,610322.375 232653.395 475.428686406307,610300.616 232657.943 497.657885122763,610292.233 232659.124 506.123656740916,610284.05 232659.706 514.327318234372,610277.464 232659.892 520.915936795002,610271.177 232660.378 527.221686213318,610265.591 232659.867 532.831004028975,610259.803 232660.154 538.626108652756,610251.62 232661.135 546.867692086723,610243.836 232661.818 554.681590468218,610236.153 232661.802 562.364598503491,610227.772 232661.784 570.745608424561,610215.399 232662.058 583.121628023647,610205.719 232662.836 592.832831464125,610198.135 232663.519 600.447515621579,610185.261 232664.79 613.384089405171,610175.083 232665.268 623.573296190194,610165.504 232665.248 633.152306315953,610157.322 232665.43 641.336321077749,610146.746 232665.208 651.914638938522,610136.369 232665.386 662.293153821036,610113.217 232667.434 685.535533112759,610096.553 232668.398 702.227374426872,610073.702 232669.149 725.090686268668,610064.122 232670.327 734.742829804306,610056.537 232671.11 742.368128713434,610039.572 232673.071 759.446070368713,610024.303 232674.537 774.785268155239,610008.335 232677.1 790.957633652766,609994.36 232680.566 805.356012573512,609984.778 232682.343 815.101382744515,609977.391 232684.625 822.832822377346,609970.602 232686.907 829.995079691019,609965.01 232689.692 836.242207141137,609958.919 232692.975 843.161619146883,609953.824 232696.459 849.333911708401,609949.23 232699.046 854.606230229752,609943.938 232701.831 860.586314569434,609933.553 232706.603 872.015221592247,609928.959 232708.89 877.146999634257,609924.666 232710.879 881.878375727976,609919.373 232713.464 887.76887622425,609914.48 232715.95 893.257189022581,609908.688 232719.034 899.819065532172,609905.393 232720.525 903.43570439062,609901.598 232722.814 907.867577798319,609898.003 232724.305 911.759501743102,609894.009 232726.094 916.135860275022,609890.911 232728.884 920.304992675781) + + + +LINESTRING (610441.234844669 232648.970316106,610437.442844669 232649.261316106,610436.467533871 232649.38462585,610434.882853218 232649.664708942,610428.726951354 232649.23524681,610428.051878961 232649.211021797,610419.250831236 232649.192646084,610413.635172427 232648.301564885,610412.437168994 232648.184816611,610404.650104669 232647.897146247,610396.253449545 232646.234469442,610394.520862999 232646.046202366,610383.944862999 232645.824202366,610382.988462 232645.849904883,610372.992726062 232646.5982127,610360.170226137 232646.5712062,610346.562715787 232645.007389536,610346.095804935 232644.964794064,610335.420804936 232644.242794064,610323.040404234 232643.417162699,610320.329044609 232643.606534005,610298.893628239 232648.086899539,610291.179515034 232649.173666531,610283.553901563 232649.716023495,610277.181695311 232649.895985591,610276.693275662 232649.921745039,610271.247628824 232650.342706445,610266.501983195 232649.908580968,610265.095754967 232649.879270911,610259.307754967 232650.166270911,610258.61269609 232650.225093887,610250.58754588 232651.187170431,610243.40851384 232651.817088067,610236.174150784 232651.802022362,610227.793477101 232651.784023063,610227.550604348 232651.786451102,610215.177604348 232652.060451102,610214.597864351 232652.090142574,610204.917864352 232652.868142574,610204.822049819 232652.876307215,610197.238049819 232653.559307215,610197.152515306 232653.567380844,610184.534714939 232654.81308725,610174.858743135 232655.267509977,610165.524878961 232655.248021797,610165.281615509 232655.250473049,610157.315736329 232655.427665668,610146.955862999 232655.210202366,610146.574492032 232655.209470857,610136.197492032 232655.387470857,610135.487851958 232655.424896741,610112.487493449 232657.459482705,610096.099929355 232658.407491093,610073.373526522 232659.154396197,610072.481547079 232659.22375468,610062.998244964 232660.389864272,610055.51015616 232661.162860123,610055.388736446 232661.176144212,610038.519909445 232663.126027487,610023.347279646 232664.582774837,610022.718199605 232664.663378187,610006.750199605 232667.226378187,610005.927787266 232667.394057137,609992.24279121 232670.788132009,609982.954572081 232672.510649791,609981.826418475 232672.788515896,609974.439418475 232675.070515896,609974.204857226 232675.146155438,609967.415857226 232677.428155438,609966.14395605 232677.955695953,609960.55195605 232680.740695953,609960.265382521 232680.889238787,609954.174382521 232684.172238787,609953.274426198 232684.720377865,609948.538360987 232687.958935509,609944.447096938 232690.262831916,609939.518567813 232692.85654953,609929.377627295 232697.516402024,609929.096459959 232697.650947115,609924.627955868 232699.875472334,609920.462153745 232701.805539984,609920.277583261 232701.893355976,609914.984583261 232704.478355976,609914.843379877 232704.548701825,609909.950379877 232707.034701825,609909.780130179 232707.123266535,609904.27219258 232710.056015077,609901.270392284 232711.414341098,609900.228147082 232711.962039395,609897.074813538 232713.864010536,609894.171994186 232715.067933667,609893.915131105 232715.178701304,609889.921131105 232716.967701304,609887.316967702 232718.663205714,609884.218967702 232721.453205714) + + + + +LINESTRING (609897.603032298 232736.314794286,609899.532288331 232734.57734292,609901.963212053 232733.488478989,609905.429005814 232732.051066333,609906.762852918 232731.376960605,609910.052879695 232729.392541293,609912.810607716 232728.144658902,609913.387869821 232727.860733465,609919.095169898 232724.821832664,609923.832295877 232722.415028008,609928.962580253 232719.909495208,609933.162846255 232717.963460016,609933.415540041 232717.842052885,609937.870004945 232715.6245167,609948.113372705 232710.917597976,609948.595119725 232710.680363585,609953.887119725 232707.895363585,609954.136754183 232707.75942432,609958.730754183 232705.17242432,609959.468573802 232704.713622135,609964.12805569 232701.527432754,609969.612529551 232698.571345464,609974.442296672 232696.165962518,609980.460328229 232694.143109666,609987.173589478 232692.069241767,609996.183427919 232690.398350209,609996.767212734 232690.271942863,610010.334528125 232686.90705448,610025.57453903 232684.46090293,610040.527720354 232683.025225163,610040.720263554 232683.004855788,610057.624594263 232681.050868607,610065.14884384 232680.274139877,610065.342452921 232680.25224532,610074.478016082 232679.128895278,610096.881473478 232678.392603803,610097.130527008 232678.381309199,610113.794527008 232677.417309199,610114.098148042 232677.395103259,610136.895993321 232675.378431389,610146.726815509 232675.209800151,610157.112137001 232675.427797634,610157.544384491 232675.427526951,610165.604767675 232675.248232189,610175.062121039 232675.267978203,610175.552123332 232675.256990104,610185.730123332 232674.778990104,610186.243484694 232674.741619156,610199.074734778 232673.474839689,610206.568062544 232672.800005451,610215.910696729 232672.049120182,610227.87197402 232671.784237779,610236.131522899 232671.801976937,610243.815174847 232671.817978316,610244.710082564 232671.779725738,610252.494082564 232671.096725738,610252.81030391 232671.063906113,610260.646800885 232670.124445826,610265.382097721 232669.889644479,610270.266016805 232670.336419032,610271.947724338 232670.348254961,610277.99082958 232669.881108604,610284.332304689 232669.702014409,610284.75943852 232669.680803105,610292.94243852 232669.098803105,610293.628027798 232669.026216794,610302.011027798 232667.845216794,610302.661955391 232667.731465995,610323.078263685 232663.464111332,610334.075895279 232664.197523834,610344.51224023 232664.903382481,610358.445284213 232666.504610464,610359.565938241 232666.56997782,610373.334938241 232666.59897782,610374.102538 232666.571095117,610384.003952975 232665.829848423,610393.22660968 232666.023440498,610401.544550455 232667.670530558,610403.117831006 232667.854183389,610411.096309725 232668.148924999,610416.884827573 232669.067435115,610418.431121039 232669.190978203,610427.672175505 232669.210272607,610434.717048646 232669.70175319,610437.153466129 232669.57337415,610439.463844966 232669.165028123,610442.765155331 232668.911683894) + + + +SAFE test 16595 line 9 + +LINESTRING(609236.013 232629.856 1666.56005859375,609235.928 232629.829 1666.64923781753,609231.639 232629.021 1671.01339088307,609228.347 232628.814 1674.31167145913,609224.557 232628.007 1678.18637616007,609220.467 232627.2 1682.35495141766,609217.674 232626.495 1685.23536143201,609207.498 232625.674 1695.44374269009,609204.209 232623.371 1699.45861121687,609200.72 232621.865 1703.25850877845,609198.125 232621.86 1705.85333968766,609195.928 232623.353 1708.50944817875,609193.829 232625.446 1711.4734441922,609191.533 232626.44 1713.97520617731,609188.538 232627.432 1717.13000488281) + + + +LINESTRING (609239.040408113 232620.325270746,609238.955408113 232620.298270746,609237.779323358 232620.001864007,609233.490323358 232619.193864007,609232.266557671 232619.040710857,609229.709425503 232618.879919132,609226.639599785 232618.226264949,609226.492783494 232618.196151807,609222.660101445 232617.439923344,609220.121404189 232616.799113618,609218.478187225 232616.527388305,609211.009166319 232615.924787463,609209.944793454 232615.179499926,609208.171999131 232614.189788866,609204.682999131 232612.683788866,609200.739267787 232611.865018562,609198.144267787 232611.860018562,609195.193924692 232612.299205183,609192.504371364 232613.589054846,609190.307371364 232615.082054847,609188.867060224 232616.271818638,609188.113035068 232617.02368841,609187.967418884 232617.086729563,609185.393794577 232617.939162055) + + + + +LINESTRING (609191.682205423 232636.924837945,609194.677205423 232635.932837945,609195.505933443 232635.616916686,609197.801933443 232634.622916686,609200.36230491 232632.885270986,609201.762206546 232633.865500074,609206.693812775 232635.641611695,609216.036850676 232636.395408287,609218.019595811 232636.895886382,609218.531216506 232637.010848193,609222.547695529 232637.803341731,609226.264400215 232638.594735051,609227.719442329 232638.794289143,609230.394828341 232638.962516635,609234.076676642 232639.656135993) + + + +SAFE test 16595 line 10 + +LINESTRING(609556.816 232752.246 1311.71997070312,609554.023 232751.741 1314.55825551404,609552.028 232751.238 1316.61568765014,609548.24 232749.132 1320.94975605225,609543.951 232748.624 1325.26873210332,609539.563 232747.117 1329.90829645542,609535.076 232745.11 1334.8236985768,609531.486 232743.804 1338.64387028083,609526.402 232740.997 1344.45130079578,609522.115 232738.99 1349.1848386819,609516.832 232735.883 1355.3137436277,609512.745 232733.078 1360.27071380478,609507.463 232729.272 1366.78109703898,609503.378 232725.968 1372.035009421,609497.597 232721.961 1379.06892213882,609493.01 232720.154 1383.99901116188,609488.225 232717.547 1389.44810511055,609483.641 232714.042 1395.21854927843,609476.564 232709.233 1403.77485039758,609470.182 232706.923 1410.56204037313,609463.103 232704.112 1418.17872377157,609457.322 232700.005 1425.27007955011,609453.237 232696.201 1430.85197792229,609447.459 232691.096 1438.56211479659,609442.676 232687.091 1444.80046791227,609439.087 232684.786 1449.0659005855,609431.708 232682.174 1456.89354924909,609427.218 232682.165 1461.38355455381,609422.329 232681.955 1466.27705855098,609415.049 232679.942 1473.83023500769,609407.966 232679.128 1480.95984936457,609401.881 232677.817 1487.18446837927,609395.001 232675.505 1494.44254366266,609387.92 232673.193 1501.89142365735,609382.334 232671.983 1507.60696754556,609376.25 232670.472 1513.87578816551,609370.465 232669.362 1519.7663117057,609365.876 232669.152 1524.36011035991,609362.083 232669.643 1528.18475489143,609358.49 232670.135 1531.81128094744,609354.999 232669.828 1535.31575090389,609351.907 232669.123 1538.48710272217,609350.41 232669.119 1539.98410682745,609346.121 232668.112 1544.38973253541,609342.331 232667.305 1548.264693716,609338.041 232666.796 1552.58478053391,609332.954 232665.987 1557.73570337269,609329.163 232665.479 1561.56058517342,609320.484 232664.462 1570.2989605161,609316.693 232664.454 1574.08996582031) + + + +LINESTRING (609558.595242098 232742.405558061,609556.137468596 232741.961170084,609555.742611766 232741.861614703,609553.099171711 232740.391951357,609549.416203743 232739.201413675,609546.188438897 232738.819109049,609543.236011108 232737.805137153,609539.159080671 232735.981558061,609538.494691673 232735.712524422,609535.637140376 232734.672980691,609531.235458911 232732.242705342,609530.641954105 232731.940356627,609526.779934801 232730.132315399,609522.202604346 232727.440328701,609518.498122056 232724.897859207,609513.535049771 232721.321665887,609509.666641732 232718.192848222,609509.074682409 232717.749252557,609503.293682409 232713.742252557,609501.262245184 232712.656916072,609497.250936022 232711.076703372,609493.686450464 232709.134673309,609489.715050797 232706.09807736,609489.261414655 232705.770909437,609482.184414656 232700.961909437,609479.967467557 232699.830000022,609473.729860015 232697.572263666,609467.912823063 232695.262376553,609463.652796167 232692.235922573,609460.051880169 232688.882707284,609459.858148054 232688.706975817,609454.080148054 232683.601975817,609453.8789583 232683.428918715,609449.095958299 232679.423918715,609448.079902181 232678.676854695,609444.490902181 232676.371854695,609442.423886913 232675.359166718,609435.044886913 232672.747166718,609431.728044503 232672.174020089,609427.442686303 232672.165430284,609423.896195667 232672.013095853,609417.71410169 232670.303678934,609416.190715787 232670.007389536,609409.593821537 232669.249254294,609404.535095568 232668.1593628,609398.186414861 232666.025910795,609398.104819754 232665.998880764,609391.023819754 232663.686880764,609390.037032119 232663.419659987,609384.598199209 232662.241538286,609378.660339745 232660.766833216,609378.13438103 232660.651149317,609372.34938103 232659.541149317,609370.922137637 232659.372454205,609366.333137637 232659.162454205,609364.592221626 232659.234746696,609360.799221626 232659.725746696,609360.726330876 232659.735454952,609358.24664254 232660.075005929,609356.555760202 232659.926309029,609354.130024934 232659.373222559,609351.933720011 232659.123035698,609351.58136501 232659.122094202,609348.406712027 232658.37672802,609348.203599785 232658.331264949,609344.413599785 232657.524264949,609343.509216088 232657.374652229,609339.41594297 232656.888993484,609334.524591049 232656.111107951,609334.282144518 232656.07559081,609330.491144518 232655.56759081,609330.326830939 232655.546956024,609321.64783094 232654.529956024,609320.505102564 232654.462022266,609316.714102564 232654.454022266) + + + + +LINESTRING (609316.671897436 232674.453977734,609319.889585883 232674.460767897,609327.916926837 232675.401406882,609331.504414627 232675.882135924,609336.470408951 232676.671892049,609336.862783912 232676.726347771,609340.697159799 232677.181288873,609343.936607515 232677.871060458,609348.124287973 232678.85427198,609350.383279989 232679.118964302,609350.768216291 232679.119992856,609352.775975066 232679.577777441,609354.122976665 232679.789555256,609357.613976665 232680.096555256,609359.846669124 232680.042545048,609363.403241598 232679.555533176,609366.292481478 232679.181524006,609369.288163833 232679.318611236,609374.101081564 232680.242092425,609379.923660255 232681.688166784,609380.216967881 232681.756340013,609385.302735435 232682.857983181,609391.856324606 232684.997779561,609398.695585139 232687.296089205,609399.774848745 232687.592690609,609405.859848745 232688.903690609,609406.824284213 232689.062610464,609413.134060973 232689.787749286,609419.66389831 232691.593321066,609421.899860009 232691.9457877,609426.788860009 232692.1557877,609427.197955497 232692.164979911,609429.980606116 232692.170557607,609434.657941588 232693.826229141,609436.74046898 232695.163711905,609440.93729858 232698.677887641,609446.517836682 232703.608425373,609450.507119831 232707.323292716,609451.530446551 232708.15717202,609457.311446551 232712.26417202,609459.412420351 232713.406063797,609466.491420351 232716.217063797,609466.778532443 232716.325999978,609471.981068443 232718.209086496,609477.789190799 232722.155852133,609482.150949203 232725.49092264,609483.440722343 232726.328269117,609488.225722343 232728.935269117,609489.344754816 232729.458083928,609492.853124198 232730.840168836,609497.377128844 232733.975904282,609501.174358268 232737.047151778,609501.616958817 232737.38518695,609506.898958817 232741.19118695,609507.086306123 232741.322948975,609511.173306123 232744.127948975,609511.762583103 232744.502803497,609517.045583103 232747.609803497,609517.875045895 232748.046643373,609521.860255986 232749.912357544,609526.652541089 232752.558294658,609528.067308327 232753.201475578,609531.320289694 232754.384872142,609535.479919329 232756.245441939,609536.314852892 232756.574776714,609540.702852892 232758.081776714,609542.774796257 232758.554586325,609545.104889589 232758.830568468,609547.168828289 232759.978048643,609549.583206925 232760.934545097,609551.578206925 232761.437545097,609552.243757902 232761.581441939,609555.036757902 232762.086441939) + + + +SAFE test 16595 line 11 + +LINESTRING(610766.635 232685.492 0,610763.548 232681.99 4.66837115191394,610762.554 232679.491 7.35780893128456,610760.764 232676.092 11.1993424391044,610758.774 232672.293 15.4880017955653,610756.485 232668.992 19.50499171887,610754.192 232667.49 22.2461398481215,610749.704 232666.481 26.8461765691108,610745.313 232666.672 31.2413403894991,610741.022 232667.262 35.5727236603881,610735.432 232668.449 41.2873752805263,610730.942 232668.439 45.7773983875674,610726.055 232667.43 50.7674868417649,610722.566 232665.126 54.9485907891251,610718.778 232663.12 59.2349736431465,610716.486 232661.618 61.9752853119838,610713.693 232660.613 64.943604867428,610709.106 232659.305 69.7134638086124,610704.815 232659.296 74.0044846876773,610701.72 232660.588 77.3583405253578,610698.427 232661.08 80.6879008738046,610697.427 232662.077 82.0999984741211) + + + +LINESTRING (610774.136565799 232678.879397595,610772.198026247 232676.68025101,610771.845929644 232675.795050394,610771.402052621 232674.831390058,610769.617171836 232671.442110847,610767.632269713 232667.652842925,610766.991617828 232666.594688213,610764.702617829 232663.293688213,610761.964470404 232660.62686975,610759.671470404 232659.12486975,610756.385466599 232657.733530132,610751.897466599 232656.724530132,610749.269430284 232656.490447004,610744.878430284 232656.681447004,610743.950844919 232656.765207707,610739.659844919 232657.355207707,610738.944877467 232657.480100288,610734.393002697 232658.446661173,610731.974575859 232658.441274922,610729.960584503 232658.025453912,610728.076521077 232656.78129165,610727.245949078 232656.288688382,610723.869568034 232654.50066822,610721.967142973 232653.253965584,610719.871763092 232652.208610632,610717.078763092 232651.203610632,610716.435226769 232650.996337775,610711.848226769 232649.688337775,610709.126974086 232649.305021996,610704.835974086 232649.296021996,610700.962707274 232650.067791032,610699.013902576 232650.881314673,610696.949323489 232651.189778965,610693.932912854 232652.146737398,610691.366562691 232653.998317643,610690.366562691 232654.995317643) + + + + +LINESTRING (610703.197676511 232670.478221035,610705.572292726 232669.816208968,610706.80839071 232669.30020296,610707.697812474 232669.302068445,610710.625499676 232670.136909269,610711.990926434 232670.628228242,610713.296857028 232671.484034416,610714.098050923 232671.957311618,610717.4588588 232673.737084744,610720.544478923 232675.77470835,610724.032986364 232677.223439684,610728.919986364 232678.232439685,610730.91972834 232678.438975199,610735.40972834 232678.448975199,610737.509122533 232678.230899712,610742.743906457 232677.119327527,610746.213314799 232676.642293986,610748.80897506 232676.52938779,610749.678147326 232676.724796617,610750.203270484 232677.482084316,610751.905730287 232680.732157075,610751.915947379 232680.751609942,610753.458412337 232683.680569937,610754.256070356 232685.685949606,610756.046434201 232688.602602405,610759.133434201 232692.104602405) + + + +SAFE test 16595 line 12 + +LINESTRING(609780.059 232789.469 1051.80004882812,609775.468 232790.458 1056.49630718269,609773.97 232791.554 1058.35241402419,609772.968 232794.048 1061.04013736407,609771.167 232796.841 1064.36341433737,609768.668 232799.832 1068.26093876405,609767.367 232801.926 1070.72615332611,609765.368 232804.419 1073.92158615777,609762.566 232809.206 1079.4682781955,609758.265 232815.589 1087.16501693724,609752.669 232820.87 1094.85934440624,609749.076 232821.861 1098.58645825157,609746.281 232822.155 1101.39684268156,609741.692 232821.846 1105.99617582748,609736.203 232822.333 1111.50666761276,609729.618 232822.12 1118.09502802359,609722.938 232819.309 1125.34228879232,609718.949 232817.803 1129.60605424477,609714.663 232815.197 1134.62206797628,609709.578 232813.189 1140.08910838352,609704.791 232811.182 1145.27974750999,609701 232810.874 1149.08319042856,609698.207 232810.369 1151.92144158919,609696.113 232809.865 1154.07521370549,609693.82 232808.861 1156.57835294603,609691.03 232806.559 1160.19539208357,609688.837 232805.256 1162.74625329872,609683.95 232803.747 1167.86085850523,609679.96 232802.94 1171.93159905746,609676.368 232803.232 1175.53540240213,609674.073 232803.227 1177.83037874053,609670.082 232803.219 1181.82133613931,609667.486 232804.012 1184.53571969703,609664.193 232804.205 1187.83432879566,609660.403 232803.398 1191.70924403516,609656.912 232802.392 1195.34225686,609653.621 232801.386 1198.78353810281,609650.531 232799.382 1202.46644075248,609648.539 232797.581 1205.15186102975,609644.952 232793.978 1210.23590689137,609643.458 232792.277 1212.49982097676,609642.165 232790.177 1214.96593020487,609640.671 232788.676 1217.08369393832,609638.179 232787.172 1219.99434078967,609636.084 232786.669 1222.1488514645,609632.593 232786.162 1225.67643056876,609630.298 232785.857 1227.99157938358,609627.008 232784.353 1231.6090072061,609624.914 232783.549 1233.85202400835,609624.315 232783.037 1234.64001464844) + + + +LINESTRING (609777.95309487 232779.693256367,609773.36209487 232780.682256367,609769.563242393 232782.387446264,609768.065242393 232783.483446264,609764.690888825 232787.825985005,609764.045442382 232789.432515373,609763.097246367 232790.902982596,609760.993995332 232793.420319069,609760.173918092 232794.554635835,609759.189759254 232796.138670121,609757.566338967 232798.163275811,609756.737740284 232799.367404486,609754.095859976 232803.880852394,609750.593145291 232809.079138335,609747.613614536 232811.890950686,609747.210955152 232812.002009815,609746.092469002 232812.119660952,609742.363828004 232811.868593166,609740.808242538 232811.885127912,609735.921742667 232812.318672353,609731.790928203 232812.185056031,609726.816657657 232810.091841285,609726.470044423 232809.953538376,609723.350345279 232808.775732683,609719.858294684 232806.652474668,609718.33587304 232805.895924598,609713.348111958 232803.926322975,609708.65752683 232801.959745922,609705.600782347 232801.2148413,609702.297613224 232800.946475146,609700.268339052 232800.579563776,609699.313345089 232800.349708495,609699.108479911 232800.260007388,609697.394240793 232798.84560651,609696.138013976 232797.962012549,609693.945013976 232796.659012549,609691.787336927 232795.701131502,609686.900336927 232794.192131502,609685.932415126 232793.945467963,609681.942415126 232793.138467963,609679.149755188 232792.972878884,609675.973086275 232793.231115889,609674.09478644 232793.227023732,609670.102045061 232793.21902009,609667.160563419 232793.655255529,609665.707689518 232794.099064852,609664.955398053 232794.143156032,609662.831848245 232793.690991204,609659.758338898 232792.80529931,609657.885562047 232792.23282483,609656.643804825 232791.427491021,609655.440404315 232790.339476804,609652.259240652 232787.144123395,609651.529750824 232786.313559675,609650.680329902 232784.933989732,609649.252575156 232783.122478159,609647.758575156 232781.621478159,609645.838170739 232780.114437844,609643.34617074 232778.610437844,609640.513607232 232777.448337672,609638.418607232 232776.945337672,609637.521228067 232776.772820157,609634.030228066 232776.265820157,609633.910393205 232776.249156052,609633.096617542 232776.141007216,609631.165597603 232775.258255244,609630.592412751 232775.017477238) + + + + +LINESTRING (609617.817543303 232790.638516722,609618.416543303 232791.150516722,609621.329587249 232792.884522762,609623.133250702 232793.577046838,609626.140402397 232794.951744756,609628.980606795 232795.769843948,609631.21563896 232796.066874367,609634.194137018 232796.499443406,609634.335136482 232796.533296738,609634.942670098 232797.520010268,609635.944559288 232798.876106657,609637.438559288 232800.577106657,609637.865214396 232801.033315004,609641.452214396 232804.636315004,609641.83249982 232804.998739233,609643.82449982 232806.799739233,609645.089708787 232807.772014895,609648.179708787 232809.776014895,609650.69770728 232810.949177279,609653.98870728 232811.955177279,609654.142983514 232812.000982657,609657.633983514 232813.006982657,609658.320400215 232813.178735051,609662.110400215 232813.985735051,609664.778087673 232814.187868947,609668.071087673 232813.994868947,609670.407436581 232813.575744471,609671.565490603 232813.221993762,609674.052084217 232813.226978164,609676.34621356 232813.231976268,609677.178244812 232813.199121116,609679.3622187 232813.021582036,609681.477456736 232813.449400857,609684.750893787 232814.460167485,609685.259845378 232814.762567814,609687.455759207 232816.57439349,609689.809087424 232818.021381013,609692.102087424 232819.025381013,609693.772949241 232819.58735375,609695.866949241 232820.09135375,609696.427757902 232820.209441939,609699.220757902 232820.714441939,609700.190217652 232820.8411587,609702.393516261 232821.020165815,609705.71147317 232822.411254078,609705.90512696 232822.490075402,609710.19664521 232824.184739836,609713.753705316 232826.347525332,609715.416955577 232827.158461624,609719.231358415 232828.59854452,609725.739342343 232831.337158715,609729.294706669 232832.114772705,609735.879706669 232832.327772705,609737.086757462 232832.293872088,609741.79860975 232831.875822887,609745.609171996 232832.132406834,609747.327106959 232832.100132489,609750.122106959 232831.806132489,609751.734860105 232831.501044758,609755.327860105 232830.510044758,609759.532410793 232828.142798106,609765.128410793 232822.861798106,609766.558017675 232821.177010186,609770.859017675 232814.794010186,609771.196259716 232814.257595514,609773.628079558 232810.103019645,609775.168661033 232808.181724189,609775.861081908 232807.203364165,609776.791833851 232805.70528994,609778.841004668 232803.252680931,609779.571248571 232802.260280944,609781.372248571 232799.467280944,609781.402393726 232799.409004966,609782.16490513 232799.244743633) + + + +SAFE test 16595 line 13 + +LINESTRING(609890.911 232728.884 920.304992675781,609887.614 232731.673 924.623392735533,609884.315 232735.661 929.799040347982,609881.017 232738.75 934.317730396102,609877.22 232742.237 939.472937755411,609872.626 232745.024 944.846202250726,609868.33 232748.11 950.13569991747,609864.233 232751.897 955.714815088414,609858.64 232755.68 962.467027245764,609854.144 232758.966 968.035829722215,609849.249 232762.451 974.044653050655,609844.755 232765.038 979.23005442278,609839.861 232768.024 984.963043695717,609834.867 232771.309 990.940582639761,609830.772 232773.597 995.631402495782,609827.974 232776.688 999.800688324114,609824.975 232779.677 1004.0348325007,609822.678 232781.17 1006.77439400943,609818.383 232783.758 1011.78882972072,609813.99 232785.546 1016.5317413734,609809.498 232787.235 1021.33076196218,609805.703 232788.824 1025.44498230272,609802.111 232789.017 1029.04214900424,609799.118 232789.01 1032.03514507878,609796.324 232788.805 1034.83664422788,609794.03 232788.3 1037.18556235058,609790.44 232787.494 1040.86491371185,609787.946 232787.189 1043.37748409059,609785.351 232787.184 1045.97247840681,609783.155 232787.678 1048.2233473495,609780.059 232789.469 1051.80004882812) + + + +LINESTRING (609884.452615701 232721.249258862,609881.155615701 232724.038258862,609879.908715249 232725.298944234,609877.014957404 232728.797066782,609874.21682031 232731.417881058,609871.185924108 232734.201324581,609867.439229974 232736.474297274,609866.791821205 232736.902278644,609862.495821205 232739.988278644,609861.542212762 232740.766571345,609858.002175872 232744.038750916,609853.037414353 232747.396822224,609852.739293848 232747.606483609,609848.293529951 232750.855767454,609843.842071297 232754.024987762,609839.76601391 232756.37139641,609839.546568979 232756.501475748,609834.652568979 232759.487475748,609834.36544951 232759.669424917,609829.67364274 232762.75564543,609825.894407571 232764.867218096,609823.358290268 232766.886045671,609820.732741989 232769.786535209,609818.652774555 232771.859567108,609817.371044332 232772.692663852,609813.890354572 232774.789992164,609810.344703815 232776.23311157,609805.978546115 232777.874794642,609805.635801482 232778.010932426,609803.437715418 232778.931290464,609801.854226933 232779.016372112,609799.496042883 232779.010856813,609797.772269779 232778.884380977,609796.200265362 232778.53832072,609792.630594644 232777.736884898,609791.653891433 232777.567950051,609789.159891433 232777.262950051,609787.965267787 232777.189018562,609785.370267787 232777.184018562,609783.156300914 232777.427807304,609780.960300914 232777.921807304,609778.147613268 232779.022014896,609775.051613268 232780.813014896) + + + + +LINESTRING (609785.066386732 232798.124985104,609786.688527233 232797.186595686,609787.327204186 232797.187826278,609788.733565582 232797.359815141,609791.839405356 232798.057115102,609791.880082761 232798.066158706,609794.174082761 232798.571158706,609795.592251891 232798.7781913,609798.386251891 232798.9831913,609799.094612159 232799.00997265,609802.087612159 232799.01697265,609802.647531206 232799.00259634,609806.239531206 232798.80959634,609809.565198518 232798.048067574,609813.190081577 232796.530297039,609817.509453885 232794.906205358,609817.759820936 232794.808205467,609822.152820937 232793.020205467,609823.544078288 232792.323236185,609827.839078288 232789.735236185,609828.127755203 232789.554519559,609830.424755203 232788.061519559,609832.034249237 232786.759866666,609835.033249237 232783.770866666,609835.387709732 232783.398954329,609837.083445751 232781.52564481,609839.744592429 232780.038781904,609840.36255049 232779.663575083,609845.214537166 232776.471989934,609849.854538208 232773.640963553,609854.23798609 232771.11760359,609855.048780935 232770.59732071,609859.943780935 232767.11232071,609860.044706152 232767.039516391,609864.393556566 232763.861063886,609869.835585647 232760.180177776,609871.020787238 232759.240428655,609874.664978467 232755.871975595,609878.144784405 232753.372282596,609882.406770026 232750.786702726,609883.984007045 232749.602338328,609887.781007045 232746.115338328,609887.853024307 232746.048545861,609891.151024307 232742.959545861,609892.020284751 232742.035055766,609894.751940312 232738.732890752,609897.369384299 232736.518741138) + + + +SAFE test 16595 line 14 + +LINESTRING(609101.253 232552.646 1843.09997558594,609099.76 232550.645 1845.59684261421,609098.464 232549.644 1847.23457706256,609096.172 232548.041 1850.03180752373,609093.181 232546.537 1853.38000488281) + + + +LINESTRING (609109.26787555 232546.665885459,609107.77487555 232544.664885459,609105.872736883 232542.730807192,609104.576736883 232541.729807192,609104.195263585 232541.44932992,609101.903263585 232539.84632992,609100.664435969 232539.106906926,609097.673435969 232537.602906926) + + + + +LINESTRING (609088.688564031 232555.471093074,609091.033411058 232556.650180313,609092.538678781 232557.702948271,609092.56380557 232557.722355613,609093.23812445 232558.626114541) + + + +SAFE test 16595 line 15 + +LINESTRING(608988.587 232509.148 1974.06005859375,608987.977 232508.565 1974.90388095372,608983.194 232504.16 1981.4064893125,608977.911 232501.153 1987.48551772014,608973.125 232499.345 1992.60180487824,608968.038 232497.836 1997.90807621276,608961.654 232497.024 2004.34372257249,608955.371 232495.313 2010.85574373215,608947.989 232493.999 2018.35402654017,608940.407 232493.184 2025.9799561211,608936.316 232493.475 2030.08142860374,608928.229 232496.454 2038.69995117188) + + + +LINESTRING (608995.496265997 232501.918750842,608994.886265997 232501.335750842,608994.751429103 232501.209246447,608989.968429103 232496.804246447,608988.140678015 232495.469178599,608982.857678015 232492.462178599,608981.444929665 232491.798250344,608976.658929665 232489.990250344,608975.968899032 232489.75791294,608970.881899031 232488.24891294,608969.299764328 232487.915921836,608963.608122601 232487.19198495,608957.998535509 232485.664370193,608957.123459282 232485.467753103,608949.741459282 232484.153753103,608949.057757574 232484.056276166,608941.475757574 232483.241276166,608939.697475209 232483.209203031,608935.606475209 232483.500203031,608932.859376587 232484.091410358,608924.772376587 232487.070410358) + + + + +LINESTRING (608931.685623414 232505.837589642,608938.441022454 232503.349110139,608940.225951827 232503.222144985,608946.57670759 232503.904796785,608953.176589554 232505.07957935,608959.026464492 232506.672629807,608960.392235672 232506.944078164,608965.971664647 232507.653742376,608969.931853751 232508.828486893,608973.644707414 232510.23108602,608977.257412405 232512.287380532,608981.134567689 232515.858124631,608981.677734003 232516.377249158) + + + +SAFE test 16595 line 16 + +LINESTRING(608589.032 232404.957 2403.88989257812,608580.657 232400.945 2413.17630313634,608575.574 232397.639 2419.23986669253,608569.992 232393.732 2426.05336241927,608563.913 232389.425 2433.50352414116,608557.634 232385.117 2441.11832180329,608551.552 232382.108 2447.90397970466,608545.173 232378.2 2455.38492404065,608539.891 232374.394 2461.89533727516,608524.24 232365.472 2479.91084001694,608507.993 232354.852 2499.32094711831,608501.41 232353.34 2506.07538106635,608498.916 232353.335 2508.56939550729,608497.618 232354.031 2510.04222828865,608496.618 232355.028 2511.45432746263,608495.319 232356.623 2513.51137826287,608494.318 232358.618 2515.74343195181,608492.517 232361.411 2519.06676363997,608490.515 232365.202 2523.35393333254,608488.213 232369.791 2528.48796920112,608485.911 232374.08 2533.35571037761,608484.109 232378.071 2537.73468628396,608481.607 232382.66 2542.96145694711,608475.505 232392.034 2554.14659109725,608471.906 232396.621 2559.97699648898,608468.404 232402.206 2566.56915528426,608464.803 232407.991 2573.38338870365,608459.501 232416.668 2583.55208158137,608454.896 232425.746 2593.73131988617,608451.091 232433.828 2602.6642562657,608447.286 232442.209 2611.86859364442,608443.983 232448.793 2619.23468319474,608440.379 232456.375 2627.62968604655,608436.378 232462.159 2634.66268192299,608432.278 232467.743 2641.59026583592,608422.885 232476.112 2654.17079868258,608418.591 232478.4 2659.03634685311,608413.001 232480.386 2664.96867878049,608408.21 232481.375 2669.86071137999,608402.62 232482.661 2675.59675049931,608397.53 232483.449 2680.74740527242,608392.939 232484.139 2685.38998472464,608388.146 232486.425 2690.7002444374,608385.633 232497.605 2702.15923923827,608384.829 232501.199 2705.84208522401,608383.827 232504.193 2708.99931745662,608382.324 232507.785 2712.89310579697,608381.024 232509.48 2715.02923769884,608376.43 232512.267 2720.40254425147,608372.137 232514.055 2725.05302342309,608368.044 232515.045 2729.26406641519,608363.752 232516.135 2733.69232931061,608360.458 232517.126 2737.1321848989,608357.463 232517.819 2740.20632631654,608354.668 232518.812 2743.17249228029,608352.372 232519.606 2745.60191538601,608349.875 232521.099 2748.51123180031,608348.076 232522.893 2751.05187853029,608346.776 232524.688 2753.26819577766,608345.775 232526.483 2755.32344708559,608344.272 232530.475 2759.58903152118,608343.27 232533.269 2762.55728127779,608341.968 232535.863 2765.45971193092,608340.168 232538.356 2768.53462989599,608337.671 232540.348 2771.72886691719,608334.375 232541.939 2775.38878471431,608331.779 232542.932 2778.16823131617,608329.283 232544.425 2781.07668949199,608326.985 232546.217 2783.99081581232,608323.886 232549.706 2788.65740843004,608319.386 232555.789 2796.22400091953,608318.585 232557.585 2798.1905324451,608318.082 232560.38 2801.030443532,608317.579 232562.376 2803.08885482159,608316.279 232564.471 2805.55443202886,608315.278 232566.166 2807.52294804348,608313.978 232568.461 2810.16057531128,608313.474 232571.056 2812.80407561166,608313.468 232575.051 2816.79909522083,608313.462 232578.846 2820.59411431131,608312.955 232583.439 2825.21502974582,608311.452 232587.73 2829.76165995984,608309.95 232590.823 2833.20008145728,608307.351 232593.813 2837.161775498,608304.852 232596.604 2840.90807875851,608303.352 232598.698 2843.4839060368,608302.052 232600.693 2845.86509646852,608299.753 232603.185 2849.25560556301,608297.954 232604.979 2851.79625229297,608295.456 232606.971 2854.99127110131,608292.96 232608.264 2857.80230734227,608290.364 232609.057 2860.51673558994,608287.869 232609.551 2863.06018008786,608285.274 232610.045 2865.70179205077,608282.778 232611.039 2868.38844546662,608280.98 232612.033 2870.44292153487,608279.481 232613.329 2872.42449835394,608278.681 232614.625 2873.94753267372,608277.68 232616.321 2875.91690981522,608276.68 232618.116 2877.97167426005,608275.38 232619.911 2880.18799150742,608273.881 232621.406 2882.30507910349,608271.882 232623.499 2885.19933433379,608269.784 232625.192 2887.89524010994,608267.786 232626.487 2890.27622139187,608263.188 232631.77 2897.2799392539,608260.186 232636.857 2903.18670121015,608258.683 232640.649 2907.26572055381,608257.381 232643.742 2910.62160168299,608255.378 232648.032 2915.35618492689,608253.777 232650.825 2918.57552156121,608253.075 232653.62 2921.45734247769,608252.272 232656.115 2924.07838920453,608252.069 232658.411 2926.38335453431,608252.263 232662.007 2929.98459738374,608252.557 232665.303 2933.29369617281,608253.249 232669.1 2937.15325387188,608254.041 232672.896 2941.03101014288,608255.032 232676.893 2945.14904586687,608255.325 232680.789 2949.05606268529,608256.017 232684.785 2953.11155332869,608256.509 232689.08 2957.43465757359,608257.002 232692.876 2961.26255200685,608257.294 232697.271 2965.66725809213,608256.989 232700.766 2969.17555441143,608256.783 232704.86 2973.27474933887,608255.476 232711.149 2979.69815046092,608250.172 232720.526 2990.4713311686,608246.573 232725.112 2996.3009498493,608244.573 232727.904 2999.73538622035,608242.074 232730.695 3003.48168948079,608238.975 232734.284 3008.2235131819,608235.677 232737.572 3012.88054141732,608231.58 232741.059 3018.26057829983,608228.083 232743.848 3022.73357296574,608224.789 232745.139 3026.27154012849,608219.199 232746.326 3031.98619811714,608212.61 232748.409 3038.8966373997,608208.018 232750.197 3043.82447583168,608205.521 232751.69 3046.73379224609,608202.924 232753.183 3049.72937663817,608201.724 232754.678 3051.64641935748,608200.724 232756.474 3053.70205744595,608199.423 232758.768 3056.33930783015,608198.122 232761.062 3058.97655821426,608196.821 232763.356 3061.61380859838,608195.322 232764.851 3063.73089619446,608193.324 232766.345 3066.22570822375,608191.526 232767.639 3068.4409457065,608190.227 232768.635 3070.07784437768,608189.028 232769.931 3071.84341526829,608188.228 232770.928 3073.12170371586,608186.728 232773.222 3075.86259641773,608185.925 232775.717 3078.48364314458,608184.722 232779.31 3082.27270194006,608183.419 232782.802 3085.99989633256,608181.915 232787.393 3090.83099077106,608180.113 232791.184 3095.02849219697,608178.313 232793.977 3098.35128206131,608177.013 232795.772 3100.56759930861,608175.812 232797.567 3102.72733569735,608174.512 232799.262 3104.8634675992,608174.212 232800.06 3105.71599882766,608173.51 232802.056 3107.831856538,608173.006 232805.351 3111.1651919566,608172.703 232807.447 3113.28298772398,608171.901 232809.942 3115.90372825528,608170.199 232813.734 3120.0601929343,608168.396 232817.824 3124.52998712031,608166.394 232821.815 3128.99498832314,608164.293 232825.106 3132.89947257462,608161.993 232828.397 3136.91454454058,608159.994 232830.49 3139.80879977085,608157.496 232832.482 3143.0038185791,608154.9 232833.975 3145.99853606348,608150.904 232836.763 3150.8710240841,608148.605 232839.055 3154.11736736311,608147.104 232841.848 3157.28816001153,608145.304 232844.64 3160.61010935497,608144.002 232847.434 3163.69259404173,608142.701 232849.928 3166.505545664,608140.699 232853.519 3170.61692168784,608138.899 232856.012 3173.6918396529,608137.1 232858.105 3176.45175044753,608133.796 232865.389 3184.45009750894,608133.293 232867.685 3186.80055847926,608131.791 232870.977 3190.41903426351,608129.489 232875.566 3195.55307013207,608127.987 232878.359 3198.72433628964,608125.982 232884.147 3204.84979567686,608125.98 232885.945 3206.64780358676,608126.672 232889.742 3210.50736128584,608128.258 232896.336 3217.28943912292,608128.454 232898.334 3219.29703730853,608129.244 232903.229 3224.25539498961,608129.737 232906.726 3227.78698844074,608129.232 232910.52 3231.61446434111,608128.23 232913.314 3234.58271409775,608127.128 232916.108 3237.58619677766,608126.923 232919.203 3240.68799025031,608126.62 232921.999 3243.50037087977,608125.417 232924.993 3246.72702916995,608123.618 232927.286 3249.64152985222,608121.319 232929.278 3252.68349220694,608118.322 232931.569 3256.45586514732,608115.526 232933.361 3259.77685346293,608112.729 232935.352 3263.21012873967,608101.843 232941.221 3275.57747742449,608098.246 232944.509 3280.45082663975,608095.748 232946.501 3283.64584544809,608092.651 232949.092 3287.68376734975,608089.354 232951.781 3291.93830220853,608085.359 232954.369 3296.69833795636,608081.765 232955.66 3300.51718952058,608078.77 232956.153 3303.55250559343,608075.676 232957.145 3306.8016562245,608074.178 232957.841 3308.45345543453,608072.679 232959.436 3310.6423049556,608071.38 232960.432 3312.27920362678,608069.082 232962.224 3315.193329947,608067.286 232962.42 3317) + + + +LINESTRING (608593.352307769 232395.938411375,608585.563959691 232392.207443914,608581.168863295 232389.348858691,608575.749714229 232385.555842676,608569.694104416 232381.265414733,608569.570427128 232381.179181769,608563.291427128 232376.871181769,608562.0683694 232376.15394427,608556.391006459 232373.345133831,608550.715735792 232369.868263198,608545.737041183 232366.28081305,608544.843420067 232365.706449397,608529.456732874 232356.935123403,608513.464396986 232346.481586927,608510.231538015 232345.10577265,608503.648538015 232343.59377265,608501.430048075 232343.340020096,608498.936048075 232343.335020096,608494.190394757 232344.522017809,608492.892394757 232345.218017809,608490.557562691 232346.949317643,608489.557562691 232347.946317643,608488.864151481 232348.713110203,608487.565151481 232350.308110203,608486.381009161 232352.138323895,608485.621696517 232353.651639304,608484.112751429 232355.991719056,608483.674302827 232356.741234835,608481.672302827 232360.532234835,608481.576579103 232360.718181106,608479.336543822 232365.183655436,608477.099898383 232369.35088927,608476.79696244 232369.96486703,608475.1494546 232373.613703763,608473.013660981 232377.531032666,608467.365061436 232386.208510892,608464.03859279 232390.44816404,608463.433781281 232391.308607886,608459.931781281 232396.893607886,608459.914384933 232396.921453093,608456.313384933 232402.706453093,608456.269914274 232402.776937477,608450.967914274 232411.453937477,608450.582813738 232412.144068767,608445.977813738 232421.222068767,608445.848548847 232421.486466266,608442.043548847 232429.568466266,608441.985475789 232429.69406376,608438.260695321 232437.898369961,608435.04470941 232444.308921352,608434.951402515 232444.499953662,608431.694681596 232451.351357104,608428.234041662 232456.354191739,608424.840107944 232460.976563906,608417.126253919 232467.849473981,608414.543698533 232469.225553795,608410.303499368 232470.732000225,608406.188337799 232471.581487762,608405.96802634 232471.629562395,608400.731576839 232472.834226806,608396.021914292 232473.563345488,608391.452751642 232474.250063464,608388.634109531 232475.113041987,608383.841109531 232477.399041987,608380.3291398 232480.188278376,608378.389435431 232484.231954672,608375.876435431 232495.411954673,608375.874205846 232495.421897468,608375.182592692 232498.513511492,608374.460405727 232500.671423441,608373.846832799 232502.13779334,608371.888502471 232503.325835705,608369.019876917 232504.520595195,608365.6930296 232505.325280962,608365.582528885 232505.352675204,608361.290528885 232506.442675204,608360.871054213 232506.5589804,608357.887677219 232507.45652946,608355.208703513 232508.076405513,608354.11523131 232508.396025692,608351.35991799 232509.374925917,608349.103722029 232510.155160931,608347.240190902 232511.023195366,608344.743190902 232512.516195366,608342.813779086 232514.018098983,608341.014779086 232515.812098983,608339.976948349 232517.027391562,608338.676948349 232518.822391562,608338.042241849 232519.81753097,608337.041241849 232521.61253097,608336.416340823 232522.959436688,608334.913340823 232526.951436688,608334.859009881 232527.099260523,608334.061237696 232529.323786954,608333.39064202 232530.659827802,608332.86171491 232531.39239185,608332.312588374 232531.830461557,608330.408055611 232532.749791541,608328.20633286 232533.591975936,608326.645676589 232534.350100982,608324.149676589 232535.843100982,608323.133620811 232536.539244767,608320.835620811 232538.331244767,608319.508424528 232539.576155234,608316.409424528 232543.065155234,608315.846683748 232543.758782651,608311.346683748 232549.841782651,608310.253134513 232551.715823354,608309.452134513 232553.511823354,608308.743105373 232555.813811092,608308.301063294 232558.270088646,608308.262128242 232558.424590365,608307.781971741 232559.198381033,608307.668420276 232559.385931975,608306.667420276 232561.080931975,608306.576965155 232561.237309238,608305.276965155 232563.532309238,608304.161432889 232566.55442974,608303.657432889 232569.14942974,608303.474011278 232571.040981243,608303.468011873 232575.035585149,608303.462869931 232578.287863431,608303.14042713 232581.208928101,608302.204758354 232583.88022199,608301.533394851 232585.26273019,608299.851922758 232587.197167111,608297.401960968 232589.933398946,608296.722542197 232590.780606159,608295.222542197 232592.874606159,608294.973805985 232593.238525204,608294.132429228 232594.52971492,608292.544284932 232596.251183204,608291.285568673 232597.506401085,608289.986825044 232598.542068543,608289.168268344 232598.966104525,608287.925941707 232599.345597986,608285.962807894 232599.734290613,608283.403922659 232600.221415586,608281.574215904 232600.754596476,608279.078215904 232601.748596476,608277.939765215 232602.287343919,608276.141765215 232603.281343919,608274.439729206 232604.468288642,608272.940729206 232605.764288642,608270.971638899 232608.076307962,608270.171638899 232609.372307962,608270.069107559 232609.542155464,608269.068107559 232611.238155464,608268.944172442 232611.4542437,608268.232928297 232612.730926941,608267.750988902 232613.396374028,608266.819385475 232614.325491523,608266.649405872 232614.499188408,608265.097887015 232616.123665131,608263.908723111 232617.083271655,608262.347045458 232618.095470134,608260.24283496 232619.92189062,608255.64483496 232625.20489062,608254.575803894 232626.68767,608251.573803894 232631.77467,608250.889612764 232633.172276895,608249.425433771 232636.866333275,608248.238777183 232639.685326232,608246.494080979 232643.422094436,608245.10126684 232645.851906985,608244.078234366 232648.389030957,608243.455799132 232650.867245316,608242.752866262 232653.051326897,608242.310858066 232655.23428928,608242.107858066 232657.53028928,608242.083520693 232658.949704946,608242.277520693 232662.545704946,608242.302546502 232662.895462782,608242.596546502 232666.191462782,608242.719047957 232667.095958339,608243.411047957 232670.892958339,608243.459796951 232671.142425926,608244.251796951 232674.938425926,608244.334879463 232675.302496235,608245.123292064 232678.482400538,608245.35315982 232681.538935619,608245.471654354 232682.495335132,608246.114653787 232686.208378099,608246.573971848 232690.218075402,608246.592283598 232690.367919174,608247.044823826 232693.85238714,608247.265055121 232697.167169814,608247.026861984 232699.896628871,608247.001635285 232700.263460398,608246.83456706 232703.583738626,608246.002995895 232707.585078375,608241.839426068 232714.945899316,608238.706246463 232718.938331011,608238.443542197 232719.288606159,608236.760216177 232721.638529283,608234.623960968 232724.024398946,608234.505153508 232724.159515108,608231.650214458 232727.465864334,608228.895636045 232730.212090477,608225.220075959 232733.340398512,608223.028220515 232735.088492545,608221.906531186 232735.528110312,608217.121877467 232736.544100288,608216.184708448 232736.791114241,608209.595708448 232738.874114241,608208.981620571 232739.090477439,608204.389620571 232740.878477439,608202.886190902 232741.614195366,608200.462713639 232743.063234835,608197.939978691 232744.513540294,608195.125500588 232746.92333492,608193.925500588 232748.41833492,608192.98702047 232749.813312066,608192.006132454 232751.574986944,608190.724513552 232753.834813047,608188.794662705 232757.237639982,608188.763962426 232757.268258339,608187.408591987 232758.281733533,608185.684617746 232759.522458042,608185.44129981 232759.703231379,608184.14229981 232760.699231379,608182.886570303 232761.843969749,608181.687570304 232763.139969749,608181.22847892 232763.67260796,608180.42847892 232764.66960796,608179.858432409 232765.455309771,608178.358432409 232767.749309771,608177.208866262 232770.158326897,608176.423806436 232772.597585011,608175.293459778 232775.973591282,608174.049987187 232779.306059652,608173.915941397 232779.688822013,608172.610118269 232783.674881838,608171.358158326 232786.308722097,608170.054572148 232788.331453316,608168.913948349 232789.906391562,608168.701769076 232790.211115131,608167.680438217 232791.737583818,608166.577066737 232793.176210477,608165.151603685 232795.743054018,608164.851603685 232796.541054018,608164.778437732 232796.742184012,608164.076437732 232798.738184012,608163.624968813 232800.54399523,608163.120968813 232803.83899523,608163.108879813 232803.920261728,608162.925945282 232805.185709834,608162.55058234 232806.353453652,608161.075827716 232809.639158432,608161.048655952 232809.700241976,608159.34600946 232813.562595914,608157.687201748 232816.86943986,608155.976645839 232819.548849425,608154.233879021 232822.042521424,608153.229980728 232823.09362654,608151.853693563 232824.191130156,608149.914535921 232825.306369894,608149.178055629 232825.773820048,608145.182055629 232828.561820048,608143.84372181 232829.681159005,608141.54472181 232831.973159005,608139.796443689 232834.32115001,608138.483737269 232836.763780944,608136.899264506 232839.221474252,608136.239849333 232840.416118766,608135.03235409 232843.007318235,608133.899053167 232845.179841296,608132.249281488 232848.139047138,608131.039343484 232849.814811275,608129.516392889 232851.586648737,608127.993083931 232853.974130877,608124.689083931 232861.258130877,608124.027666429 232863.248986156,608123.752768352 232864.50378931,608122.769823776 232866.65815252,608120.614372939 232870.95500912,608119.179758916 232873.622703506,608118.537877059 232875.085763736,608116.532877059 232880.873763736,608115.982006187 232884.135876536,608115.980006187 232885.933876536,608116.142047957 232887.737958339,608116.834047957 232891.534958339,608116.949279194 232892.080525204,608118.37336719 232898.001355121,608118.501771671 232899.310294671,608118.581742247 232899.927275511,608119.355845234 232904.723774398,608119.64361318 232906.76500058,608119.459816017 232908.145845011,608118.869921339 232909.79072099,608117.825430747 232912.438912199,608117.149864034 232915.44708954,608116.958681912 232918.333473283,608116.826800746 232919.550436119,608116.669495966 232919.941932803,608116.343456887 232920.357501234,608115.002291135 232921.519572647,608112.577617211 232923.373068797,608110.129995544 232924.94178769,608109.726850888 232925.2142295,608107.436263799 232926.844747517,608097.097421673 232932.418756744,608095.096074456 232933.840011198,608091.74780203 232936.900650546,608089.513271348 232938.682550113,608089.331308794 232938.831184228,608086.282236329 232941.382087282,608083.45774781 232943.685711677,608080.891404814 232945.348213723,608079.241814275 232945.9407628,608077.145780802 232946.285786006,608075.716882853 232946.630475351,608072.622882853 232947.622475351,608071.462396875 232948.076066837,608069.964396875 232948.772066837,608066.891039363 232950.992627589,608065.948955538 232951.995045001,608065.29529981 232952.496231379,608065.230620811 232952.546244767) + + + + +LINESTRING (608068.370872917 232972.36097836,608070.166872917 232972.16497836,608075.231379189 232970.109755232,608077.497141918 232968.342894131,608078.76370019 232967.371768621,608079.965960637 232966.28437241,608079.983992397 232966.265185849,608081.121368857 232965.900519576,608083.389219198 232965.527213994,608085.145610267 232965.071241906,608088.739610267 232963.780241906,608090.795954513 232962.761825842,608094.790954513 232960.173825842,608095.67433878 232959.530407571,608098.97133878 232956.841407571,608099.067691206 232956.761815772,608102.074583037 232954.246201715,608104.480728653 232952.327449887,608104.992925544 232951.889988802,608107.677133752 232949.436367288,608117.474578327 232944.154243256,608118.528149112 232943.4987705,608121.126891814 232941.648896807,608123.718004456 232939.98821231,608124.395123463 232939.513631609,608127.392123463 232937.222631609,608127.867429266 232936.835650041,608130.166429266 232934.843650041,608131.48558666 232933.45860724,608133.28458666 232931.16560724,608134.695984788 232928.721329559,608135.898984788 232925.727329559,608136.561792876 232923.076383133,608136.864792876 232920.280383133,608136.901135966 232919.86391046,608137.003020658 232918.32570012,608137.532569253 232916.983087801,608137.642990119 232916.689739477,608138.644990119 232913.895739477,608139.144575395 232911.839412381,608139.649575395 232908.045412381,608139.639083207 232905.3300243,608139.146083207 232901.8330243,608139.116257753 232901.635724489,608138.37584393 232897.047970481,608138.210228329 232895.359705329,608137.980720806 232893.997474796,608136.459944629 232887.674651272,608136.074885425 232885.561833643,608137.173806645 232882.389486501,608138.296241084 232880.302296494,608138.427420897 232880.049818894,608140.729420897 232875.460818894,608140.888787693 232875.127934725,608142.390787693 232871.835934725,608143.061333571 232869.825013844,608143.338616934 232868.559322785,608145.616019298 232863.53856043,608146.482607111 232862.530351263,608147.006564018 232861.865836836,608148.806564018 232859.372836836,608149.433335063 232858.388434362,608151.435335063 232854.797434362,608151.56716538 232854.55305259,608152.86816538 232852.05905259,608153.066150667 232851.657881234,608154.07929215 232849.4837512,608155.508735494 232847.266525748,608155.912556311 232846.58184999,608156.713124455 232845.092185215,608157.344121525 232844.463109406,608160.263907892 232842.42598118,608162.481464079 232841.150630106,608163.730728653 232840.300449886,608166.228728653 232838.308449886,608167.225594128 232837.396811592,608169.224594128 232835.303811592,608170.189646212 232834.125437036,608172.489646212 232830.834437036,608172.721801936 232830.487012722,608174.822801936 232827.196012722,608175.332441239 232826.298778341,608177.334441239 232822.307778341,608177.546344048 232821.857758024,608179.335860262 232817.798345204,608181.024172284 232814.036841568,608181.421245911 232813.002215319,608182.223245911 232810.507215319,608182.600120187 232808.877738272,608182.897242611 232806.822396355,608183.253696096 232804.492010974,608183.381088971 232804.129794196,608183.746933263 232803.652789523,608184.123230924 232803.127884869,608185.220970503 232801.487216638,608186.412051651 232799.842608438,608186.718618993 232799.394155097,608188.518618993 232796.601155097,608189.144597485 232795.477046338,608190.946597485 232791.686046338,608191.418058603 232790.506177987,608192.85891729 232786.107918524,608194.091012813 232782.805940348,608194.204601822 232782.484942943,608195.407601822 232778.891942943,608195.444133738 232778.780673103,608195.834558178 232777.567585958,608196.331634073 232776.807391222,608196.607344754 232776.463786786,608196.988369906 232776.051936413,608197.490411287 232775.666999373,608199.165382254 232774.461541958,608199.312449754 232774.353649671,608201.310449754 232772.859649671,608202.383614525 232771.931508477,608203.882614525 232770.436508477,608205.519486448 232768.289186953,608208.121486448 232763.701186953,608209.422486448 232761.407186953,608209.46097953 232761.338687934,608209.771366011 232760.781233815,608210.505021309 232760.359459706,608210.652809098 232760.272804634,608212.428988625 232759.210795809,608215.934859151 232757.845705108,608221.75069908 232756.007126481,608226.866122533 232754.920899712,608228.438001874 232754.44946644,608231.732001874 232753.15846644,608234.31821992 232751.666058106,608237.81521992 232748.877058106,608238.06139271 232748.67421822,608242.15839271 232745.18721822,608242.73732316 232744.653796162,608246.03532316 232741.365796162,608246.543846492 232740.819484893,608249.584050546 232737.29857739,608252.023039032 232734.574601054,608252.702457803 232733.727393841,608254.574940724 232731.113407683,608258.038753537 232726.699668989,608258.876054731 232725.449355689,608264.180054731 232716.072355689,608265.26680032 232713.18375529,608266.57380032 232706.89475529,608266.770364715 232705.362539602,608266.967124015 232701.452187302,608267.256138016 232698.140371129,608267.272002007 232696.608070174,608266.980002007 232692.213070174,608266.918716402 232691.588080825,608266.435437798 232687.8669336,608265.952028152 232683.646924598,608265.870345646 232683.078664868,608265.260662054 232679.558006439,608265.00384018 232676.143064381,608264.738120537 232674.486503765,608263.792061254 232670.670763148,608263.064162953 232667.181998057,608262.476863833 232663.959491183,608262.239032956 232661.29319672,608262.092813931 232658.582868819,608262.134449369 232658.111957661,608262.594133738 232656.683673103,608262.773765634 232656.055969043,608263.139410584 232654.600160444,608264.05373316 232653.005093015,608264.439021843 232652.262588986,608266.442021843 232647.972588986,608266.597690265 232647.621770684,608267.899690265 232644.528770684,608267.979387236 232644.333723105,608269.194827113 232641.267224093,608271.33372717 232637.64277886,608274.405536954 232634.113337562,608275.222954542 232633.583529866,608276.063916811 232632.974200514,608278.161916811 232631.281200514,608279.113594128 232630.405811592,608281.028659744 232628.400692865,608282.441614525 232626.991508477,608283.479051651 232625.776608438,608284.779051651 232623.981608438,608285.415827558 232622.9827563,608286.355205828 232621.296572304,608287.063743037 232620.096093677,608287.064006874 232620.095947819,608288.084450372 232619.689569278,608289.739077341 232619.374584414,608289.811255347 232619.36056901,608292.306255347 232618.86656901,608293.285436581 232618.620744471,608295.881436581 232617.827744471,608297.55974464 232617.14332144,608300.05574464 232615.85032144,608301.690728653 232614.789449887,608304.188728653 232612.797449887,608305.015220914 232612.059901017,608306.814220914 232610.265901017,608307.102956457 232609.965718257,608309.401956457 232607.473718257,608310.430194015 232606.152474796,608311.609837294 232604.342176072,608312.664783823 232602.869470717,608314.801039032 232600.483601054,608314.898304949 232600.373349686,608317.497304949 232597.383349686,608318.945440773 232595.191300046,608320.447440773 232592.098300046,608320.889794632 232591.035757476,608322.392794632 232586.744757476,608322.894626529 232584.536189343,608323.40162653 232579.943189343,608323.461987502 232578.861810257,608323.467987502 232575.066810257,608323.472555135 232572.025548588,608323.483409917 232571.969659385,608323.93451357 232571.173287936,608324.833832053 232569.65046593,608326.076028259 232567.648618967,608327.2758354 232564.819641386,608327.7788354 232562.823641386,608327.923894627 232562.151188908,608328.182864715 232560.712180172,608331.659449934 232556.01260953,608333.854846816 232553.540928432,608334.945827368 232552.690172492,608336.165004362 232551.960913177,608337.94766714 232551.279024064,608338.722108605 232550.944700793,608342.018108605 232549.353700793,608343.907254598 232548.165232796,608346.404254598 232546.173232796,608348.275564017 232544.209836836,608350.075564018 232541.716836836,608350.90537049 232540.348912251,608352.20737049 232537.754912251,608352.682990119 232536.644739477,608353.658406692 232533.924865321,608354.871344446 232530.703276821,608355.22182074 232530.07480035,608355.704847018 232529.407852528,608356.064015167 232529.049682623,608356.616893295 232528.719107115,608357.936277971 232528.262839069,608358.01576869 232528.234974308,608360.273150392 232527.432977874,608362.712296487 232526.868594487,608363.338945787 232526.7020196,608366.424474441 232525.77373821,608370.450298729 232524.751336422,608374.4879704 232523.774719038,608375.981779632 232523.2863417,608380.274779632 232521.4983417,608381.616770026 232520.816702726,608386.210770026 232518.029702726,608388.958933263 232515.565789523,608390.258933263 232513.870789523,608391.54898417 232511.645008688,608393.05198417 232508.053008688,608393.310025316 232507.366677811,608394.312025316 232504.372677811,608394.587794154 232503.382102532,608395.390681893 232499.793074502,608396.765612242 232493.676193761,608399.016248358 232493.337936536,608399.059908359 232493.331276075,608404.149908359 232492.543276075,608404.86197366 232492.406437605,608410.342088963 232491.145716982,608415.022662201 232490.179512238,608416.34876869 232489.808974308,608421.93876869 232487.822974308,608423.293468396 232487.225349341,608427.587468396 232484.937349341,608429.53736659 232483.578325652,608438.930366591 232475.209325652,608440.338560769 232473.661391682,608444.438560768 232468.077391682,608444.602122364 232467.847920051,608448.603122364 232462.063920051,608449.410597485 232460.668046338,608452.968959441 232453.182058451,608456.22429059 232446.693078648,608456.391524211 232446.34293624,608460.167922176 232438.024935887,608463.880764256 232430.138683669,608468.240282024 232421.544611508,608473.314496319 232413.240394715,608476.88493975 232407.504483789,608480.098468429 232402.379538708,608483.37240721 232398.20683596,608483.8857984 232397.48947598,608489.9877984 232388.11547598,608490.386832989 232387.446912647,608492.888832989 232382.857912647,608493.22303756 232382.18613297,608494.884084673 232378.50730998,608497.024101617 232374.52011073,608497.151420897 232374.274818894,608499.406531303 232369.779292546,608501.156759057 232366.465050079,608502.722248571 232364.037280944,608502.790657901 232363.917493372,608504.015277578 232364.1987671,608518.768603014 232373.842413073,608519.287579932 232374.159550603,608534.476494346 232382.818134361,608539.326958816 232386.31318695,608539.949040832 232386.727030586,608546.328040832 232390.635030586,608547.1176306 232391.07105573,608552.562614221 232393.764899156,608558.193409183 232397.62816794,608564.210895584 232401.891585267,608564.257770571 232401.924595002,608569.839770571 232405.831595002,608570.121740008 232406.021890968,608575.204740008 232409.327890968,608576.336692231 232409.963588625,608584.711692231 232413.975588625) + + + +SAFE test 16595 line 17 + +LINESTRING(609316.693 232664.454 1574.08996582031,609314.198 232664.449 1576.58501397663,609310.605 232665.44 1580.31223954877,609306.013 232666.729 1585.0818068008,609302.821 232666.223 1588.31371974088,609299.429 232665.417 1591.80022521322,609295.64 232664.21 1595.77689680241,609292.151 232662.105 1599.85178579216,609289.559 232660.402 1602.95323798033,609284.274 232658.793 1608.47783403638,609279.188 232656.785 1613.9459684638,609274.103 232654.777 1619.41317275522,609269.317 232652.47 1624.72627178568,609264.231 232650.961 1630.03150037809,609260.244 232648.656 1634.6369240884,609256.456 232646.051 1639.23428202346,609252.668 232644.246 1643.43042048197,609249.081 232641.242 1648.1092389351,609246.789 232639.24 1651.15252471111,609245.296 232636.64 1654.15075083655,609243.805 232633.641 1657.5) + + + +LINESTRING (609316.71304004 232654.45402008,609314.21804004 232654.44902008,609311.539139895 232654.808955242,609307.946139895 232655.799955242,609307.902402002 232655.812125673,609305.417309672 232656.509704944,609304.762544835 232656.405910769,609302.10630535 232655.774740655,609299.797443009 232655.039243995,609297.481441016 232653.641942707,609295.050071107 232652.044480147,609292.471480493 232650.835524297,609287.571702984 232649.343803954,609282.860561445 232647.483801553,609278.115878653 232645.610188368,609273.659173714 232643.461918771,609272.161412958 232642.883065405,609268.210779581 232641.710925066,609265.587899278 232640.194562112,609262.122395972 232637.811342441,609260.757648365 232637.023496395,609258.115457869 232635.764480068,609255.581235013 232633.642147907,609254.627722574 232632.809280585,609254.117076832 232631.920011376,609252.75940057 232629.189178976) + + + + +LINESTRING (609234.85059943 232638.092821024,609236.34159943 232641.091821024,609236.624055813 232641.619697181,609238.117055813 232644.219697181,609240.210470187 232646.771463702,609242.502470187 232648.773463702,609242.660464605 232648.908598023,609246.247464605 232651.912598023,609248.366351635 232653.273503605,609251.440843269 232654.738513478,609254.577604028 232656.895657559,609255.238945079 232657.31333361,609259.225945079 232659.61833361,609261.386587042 232660.547934595,609265.700394399 232661.827827497,609269.760826286 232663.785081229,609270.43012696 232664.078075402,609275.51512696 232666.086075402,609280.60175172 232668.094322087,609281.361519507 232668.359475703,609285.270262501 232669.54947901,609286.659928893 232670.462519853,609286.985125771 232670.667344507,609290.474125771 232672.772344506,609292.604745905 232673.738233445,609296.393745905 232674.945233445,609297.117189665 232675.146107512,609300.509189665 232675.952107512,609301.255336693 232676.099674461,609304.447336693 232676.605674461,609308.715597998 232676.356874327,609313.285742868 232675.074009184,609315.541957617 232674.451713382,609316.67295996 232674.45397992) + + + +SAFE test 16595 line 18 + +LINESTRING(608928.229 232496.454 2038.69995117188,608923.439 232496.744 2043.49616183397,608919.148 232497.434 2047.83996582031) + + + +LINESTRING (608927.624678561 232486.472276922,608922.834678561 232486.762276922,608921.851377939 232486.870831502,608917.560377939 232487.560831502) + + + + +LINESTRING (608920.735622061 232507.307168498,608924.537659798 232506.69579445,608928.833321439 232506.435723078) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/safe/16596.xml geos-3.2.2/tests/xmltester/tests/safe/16596.xml --- geos-3.1.0/tests/xmltester/tests/safe/16596.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/safe/16596.xml 2009-10-01 10:10:08.000000000 +0100 @@ -0,0 +1,1548 @@ + + +SAFE test 16596 line 1 + +LINESTRING (658588.69478542 2088471.45516372,658599.81438543 2088528.25234777,658608.877809439 2088556.1276758,658620.369153449 2088574.02309982,658620.83814545 2088606.26271585,658625.151233454 2088642.98642788,658627.046657455 2088688.57797992,658622.179585451 2088709.65087594,658607.897841438 2088739.52709997,658598.270193429 2088770.558396,658598.120689429 2088786.11910001,658605.639921436 2088812.86802804) + + + +LINESTRING (658612.378734295 2088810.97372045,658605.129968417 2088785.18694906,658605.260007681 2088771.6521774,658614.432728887 2088742.08717598,658628.495091372 2088712.66987991,658629.00003324 2088711.22615114,658633.867105245 2088690.15325512,658634.04061589 2088688.28721297,658632.145191888 2088642.69566093,658632.103448984 2088642.16991136,658627.832188998 2088605.80234325,658627.368412906 2088573.92128109,658626.259326974 2088570.24079155,658615.255681816 2088553.104859,658606.60248678 2088526.49122492,658595.564371963 2088470.11025453) + + + + +LINESTRING (658581.825198876 2088472.80007291,658592.944798886 2088529.59725696,658593.157423756 2088530.41680181,658602.220847765 2088558.29212984,658602.987635914 2088559.90998407,658613.398967634 2088576.12350927,658613.838885993 2088606.36453457,658613.885929919 2088607.07923236,658618.168236492 2088643.54085644,658620.013422386 2088687.92400694,658615.532270894 2088707.32598812,658601.582335516 2088736.508096,658601.212224526 2088737.45284673,658591.584576517 2088768.48414276,658591.27051649 2088770.49114456,658591.12101249 2088786.05184858,658591.381876569 2088788.0134076,658598.901108576 2088814.76233563) + + + +SAFE test 16596 line 2 + +LINESTRING (658513.98065735 2088478.52178773,658522.161393358 2088517.50444376,658531.288305366 2088538.71148378,658544.346369378 2088555.5102038,658565.913841399 2088576.83602782,658578.21515341 2088591.40447583,658588.83404942 2088619.29516386,658590.899457422 2088647.10393188,658590.612737422 2088677.11327591,658584.637697416 2088732.63455596) + + + +LINESTRING (658591.59751109 2088733.38355104,658597.572551096 2088677.86227098,658597.612417943 2088677.18015336,658597.899137944 2088647.17080933,658597.880229869 2088646.58545716,658595.814821867 2088618.77668914,658595.375941612 2088616.8044518,658584.757045602 2088588.91376378,658583.563531656 2088586.88841005,658571.262219644 2088572.31996204,658570.835625365 2088571.85847394,658549.592827722 2088550.85368656,658537.36429324 2088535.12212583,658528.868239003 2088515.38092946,658520.83143047 2088477.08411333) + + + + +LINESTRING (658507.12988423 2088479.95946212,658515.310620238 2088518.94211816,658515.731576914 2088520.27165545,658524.858488923 2088541.47869547,658525.761627221 2088543.00750854,658538.819691233 2088559.80622855,658539.424585411 2088560.48775767,658560.768391846 2088581.59242212,658572.09752179 2088595.00951458,658581.92889485 2088620.83176189,658583.896976786 2088647.33012635,658583.616324804 2088676.70436562,658577.677883741 2088731.88556089) + + + +SAFE test 16596 line 3 + +LINESTRING (658719.186161541 2088486.04613973,658724.850929547 2088543.90111579) + + + +LINESTRING (658731.817614393 2088543.21898512,658726.152846388 2088485.36400907) + + + + +LINESTRING (658712.219476695 2088486.7282704,658717.8842447 2088544.58324646) + + + +SAFE test 16596 line 4 + +LINESTRING (659042.039025842 2088469.14604372,659035.357441836 2088516.87877976,659024.992513826 2088543.45567579) + + + +LINESTRING (659031.514100815 2088545.99907964,659041.879028825 2088519.42218361,659042.289853984 2088517.84917237,659048.97143799 2088470.11643632) + + + + +LINESTRING (659035.106613694 2088468.17565111,659028.538485803 2088515.09786516,659018.470926837 2088540.91227194) + + + +SAFE test 16596 line 5 + +LINESTRING (658743.362801564 2088478.49721173,658789.830897607 2088497.83954774,658823.805169639 2088522.62137177) + + + +LINESTRING (658827.930343794 2088516.96602579,658793.956071763 2088492.18420176,658792.520909691 2088491.37705326,658746.052813648 2088472.03471724) + + + + +LINESTRING (658740.67278948 2088484.95970621,658786.375507649 2088503.98345384,658819.679995483 2088528.27671775) + + + +SAFE test 16596 line 6 + +LINESTRING (659042.039025842 2088469.14604372,659119.584497914 2088491.01458774,659167.627505959 2088508.15225175,659184.710897975 2088510.54124376) + + + +LINESTRING (659185.680365075 2088503.60870212,659169.30551307 2088501.31879445,659121.936351023 2088484.42150144,659121.484457046 2088484.27736611,659043.938984974 2088462.40882209) + + + + +LINESTRING (659040.13906671 2088475.88326535,659117.456148718 2088497.68740125,659165.27565285 2088514.74533805,659166.658038858 2088515.08479339,659183.741430874 2088517.47378539) + + + +SAFE test 16596 line 7 + +LINESTRING (658743.362801564 2088478.49721173,658719.186161541 2088486.04613973) + + + +LINESTRING (658721.272507222 2088492.7279929,658745.449147245 2088485.17906489) + + + + +LINESTRING (658741.276455883 2088471.81535856,658717.099815861 2088479.36428657) + + + +SAFE test 16596 line 8 + +LINESTRING (658710.132977533 2088457.05772371,658719.186161541 2088486.04613973) + + + +LINESTRING (658725.867895062 2088483.95941092,658716.814711054 2088454.97099489) + + + + +LINESTRING (658703.451244012 2088459.14445252,658712.50442802 2088488.13286855) + + + +SAFE test 16596 line 9 + +LINESTRING (658588.69478542 2088471.45516372,658513.98065735 2088478.52178773) + + + +LINESTRING (658514.639790838 2088485.49068599,658589.353918907 2088478.42406199) + + + + +LINESTRING (658588.035651932 2088464.48626545,658513.321523863 2088471.55288946) + + + +SAFE test 16596 line 10 + +LINESTRING (658879.670529691 2088454.2417237,658872.640753684 2088457.50828371,658842.286337656 2088460.55161171,658804.923649621 2088464.63839571,658784.708849602 2088464.44383571,658769.915121589 2088466.52460372,658743.362801564 2088478.49721173) + + + +LINESTRING (658746.240162862 2088484.87849623,658771.880617381 2088473.31705411,658785.165189071 2088471.44855202,658804.856280321 2088471.63807152,658805.68477993 2088471.59689272,658843.016076514 2088467.51354236,658873.33907138 2088464.47336464,658875.590564811 2088463.85640267,658882.620340818 2088460.58984266) + + + + +LINESTRING (658876.720718563 2088447.89360475,658870.764519778 2088450.66130043,658841.588019961 2088453.58653078,658841.525207347 2088453.5931147,658804.575547015 2088457.63472114,658784.776218902 2088457.44415991,658783.733881993 2088457.51206551,658768.940153979 2088459.59283351,658767.03776029 2088460.14331921,658740.485440266 2088472.11592722) + + + +SAFE test 16596 line 11 + +LINESTRING (658879.670529691 2088454.2417237,658924.572929733 2088474.68178772) + + + +LINESTRING (658927.473063731 2088468.31082054,658882.57066369 2088447.87075653) + + + + +LINESTRING (658876.770395692 2088460.61269088,658921.672795734 2088481.0527549) + + + +SAFE test 16596 line 12 + +LINESTRING (658710.132977533 2088457.05772371,658588.69478542 2088471.45516372) + + + +LINESTRING (658589.51891797 2088478.40648054,658710.957110083 2088464.00904053) + + + + +LINESTRING (658709.308844983 2088450.10640689,658587.87065287 2088464.5038469) + + + +SAFE test 16596 line 13 + +LINESTRING (658582.165761414 2088422.48441167,658582.059249414 2088433.59890768,658588.69478542 2088471.45516372) + + + +LINESTRING (658595.589667793 2088470.24661208,658589.065086394 2088433.02336083,658589.165440006 2088422.55149072) + + + + +LINESTRING (658575.166082821 2088422.41733263,658575.059570821 2088433.53182864,658575.164367041 2088434.80745932,658581.799903047 2088472.66371536) + + + +SAFE test 16596 line 14 + +LINESTRING (659050.37132985 2088411.42418766,659042.039025842 2088469.14604372) + + + +LINESTRING (659048.967214278 2088470.14614621,659057.299518285 2088412.42429016) + + + + +LINESTRING (659043.443141414 2088410.42408517,659035.110837406 2088468.14594122) + + + +SAFE test 16596 line 15 + +LINESTRING (658986.953985791 2088456.38700371,659042.039025842 2088469.14604372) + + + +LINESTRING (659043.618578873 2088462.32658537,658988.533538822 2088449.56754535) + + + + +LINESTRING (658985.374432759 2088463.20646206,659040.459472811 2088475.96550207) + + + +SAFE test 16596 line 16 + +LINESTRING (658582.165761414 2088422.48441167,658551.800049385 2088426.63980368,658502.76478534 2088431.72805968) + + + +LINESTRING (658503.487276951 2088438.69067456,658552.522540997 2088433.60241855,658552.749118335 2088433.57516727,658583.114830363 2088429.41977526) + + + + +LINESTRING (658581.216692464 2088415.54904808,658550.964046971 2088419.68896751,658502.042293728 2088424.76544481) + + + +SAFE test 16596 line 17 + +LINESTRING (658646.889713474 2088403.09599566,658593.966337425 2088408.14738766,658586.127601417 2088414.74092367,658582.165761414 2088422.48441167) + + + +LINESTRING (658588.397480462 2088425.67277767,658591.715410208 2088419.18782391,658596.802945502 2088414.9084545,658647.554821637 2088410.06432624) + + + + +LINESTRING (658646.224605311 2088396.12766507,658593.301229262 2088401.17905708,658591.258177366 2088401.6924772,658589.460388674 2088402.79048316,658581.621652666 2088409.38401916,658579.895882369 2088411.55255768,658575.934042365 2088419.29604568) + + + +SAFE test 16596 line 18 + +LINESTRING (659066.742001865 2088407.13669966,659059.712241858 2088410.40325966,659050.37132985 2088411.42418766) + + + +LINESTRING (659051.131875469 2088418.3827486,659060.472787478 2088417.3618206,659062.662058507 2088416.75137606,659069.691818514 2088413.48481605) + + + + +LINESTRING (659063.792185216 2088400.78858327,659057.80684426 2088403.56982692,659049.61078423 2088404.46562672) + + + +SAFE test 16596 line 19 + +LINESTRING (659036.515569837 2088396.84037965,659041.094897841 2088405.77682766,659050.37132985 2088411.42418766) + + + +LINESTRING (659054.011351724 2088405.44503716,659046.423211801 2088400.82548539,659042.745272805 2088393.64807626) + + + + +LINESTRING (659030.285866869 2088400.03268304,659034.865194873 2088408.96913105,659037.454875967 2088411.75597816,659046.731307976 2088417.40333817) + + + +SAFE test 16596 line 20 + +LINESTRING (658803.90270562 2088409.05055566,658785.232113603 2088409.98239566) + + + +LINESTRING (658785.581045819 2088416.97369356,658804.251637836 2088416.04185356) + + + + +LINESTRING (658803.553773404 2088402.05925776,658784.883181387 2088402.99109776) + + + +SAFE test 16596 line 21 + +LINESTRING (658884.018433695 2088406.48645966,658803.90270562 2088409.05055566) + + + +LINESTRING (658804.126625279 2088416.04697332,658884.242353354 2088413.48287731) + + + + +LINESTRING (658883.794514035 2088399.49004201,658803.678785961 2088402.05413801) + + + +SAFE test 16596 line 22 + +LINESTRING (658885.904641696 2088372.04626763,658823.715057639 2088370.33618763,658818.239745633 2088373.61810763,658807.940337624 2088393.52671565,658803.90270562 2088409.05055566) + + + +LINESTRING (658810.67731078 2088410.81257863,658814.517690904 2088396.04713032,658823.543624862 2088378.60012938,658825.563097716 2088377.38965072,658885.712229461 2088379.04362267) + + + + +LINESTRING (658886.097053932 2088365.04891259,658823.907469874 2088363.33883259,658820.116222031 2088364.33215712,658814.640910026 2088367.61407713,658812.022458177 2088370.40169088,658801.723050168 2088390.3102989,658801.165732464 2088391.76469268,658797.12810046 2088407.2885327) + + + +SAFE test 16596 line 23 + +LINESTRING (658885.904641696 2088372.04626763,658884.018433695 2088406.48645966) + + + +LINESTRING (658891.007959023 2088406.86925946,658892.894167025 2088372.42906743) + + + + +LINESTRING (658878.915116368 2088371.66346783,658877.028908367 2088406.10365986) + + + +SAFE test 16596 line 24 + +LINESTRING (658576.254193408 2088390.19257164,658528.730353364 2088399.74137165,658516.237569352 2088405.17983566,658498.344177336 2088406.11986766) + + + +LINESTRING (658498.711416942 2088413.11022781,658516.604808959 2088412.17019581,658519.031598067 2088411.59804441,658530.840518733 2088406.45728556,658577.633119837 2088397.05541085) + + + + +LINESTRING (658574.87526698 2088383.32973244,658527.351426935 2088392.87853245,658525.936324649 2088393.3231629,658514.605158943 2088398.25594144,658497.976937729 2088399.12950751) + + + +SAFE test 16596 line 25 + +LINESTRING (659041.341697841 2088380.21369164,659036.612865837 2088386.83692364,659036.515569837 2088396.84037965) + + + +LINESTRING (659043.515238761 2088396.9084601,659043.591089527 2088389.10988874,659047.038665203 2088384.28119245) + + + + +LINESTRING (659035.64473048 2088376.14619082,659030.915898476 2088382.76942283,659029.957042517 2088384.66897163,659029.613196912 2088386.76884319,659029.515900912 2088396.7722992) + + + +SAFE test 16596 line 26 + +LINESTRING (659010.944257813 2088387.70117964,659036.515569837 2088396.84037965) + + + +LINESTRING (659038.871430803 2088390.24872439,659013.300118779 2088381.10952438) + + + + +LINESTRING (659008.588396847 2088394.29283491,659034.159708871 2088403.43203491) + + + +SAFE test 16596 line 27 + +LINESTRING (658885.969153697 2088365.37695562,658964.32563377 2088383.91647564,659002.348785805 2088392.06444365,659010.944257813 2088387.70117964) + + + +LINESTRING (659007.775752529 2088381.45933903,659001.391146847 2088384.70031522,658965.865039028 2088377.08743795,658887.580887757 2088358.56503127) + + + + +LINESTRING (658884.357419636 2088372.18887997,658962.713899709 2088390.72839999,658962.858904381 2088390.76108702,659000.882056417 2088398.90905502,659003.251472599 2088399.00599654,659005.517291089 2088398.30628426,659014.112763097 2088393.94302026) + + + +SAFE test 16596 line 28 + +LINESTRING (658733.993217555 2088320.56466758,658765.019377584 2088328.64402759,658785.170673603 2088335.50687559,659010.944257813 2088387.70117964) + + + +LINESTRING (659012.520933138 2088380.88105538,658787.092253745 2088328.76648638,658767.276058773 2088322.01776242,658766.783382737 2088321.86993829,658735.757222708 2088313.79057828) + + + + +LINESTRING (658732.229212402 2088327.33875688,658763.006316968 2088335.35326166,658782.913992414 2088342.13314076,658783.593998278 2088342.32699985,659009.367582488 2088394.5213039) + + + +SAFE test 16596 line 29 + +LINESTRING (659055.401201854 2088373.67954763,659066.243313864 2088378.23122763,659072.38833787 2088386.07097164) + + + +LINESTRING (659077.897606519 2088381.75264338,659071.752582513 2088373.91289937,659068.952925589 2088371.77692641,659058.110813579 2088367.2252464) + + + + +LINESTRING (659052.691590129 2088380.13384885,659061.85631881 2088383.98133837,659066.879069222 2088390.3892999) + + + +SAFE test 16596 line 30 + +LINESTRING (659055.401201854 2088373.67954763,659047.615729847 2088374.71583563,659041.341697841 2088380.21369164) + + + +LINESTRING (659045.95506798 2088385.47836788,659050.637300688 2088381.37538575,659056.324793594 2088380.61835) + + + + +LINESTRING (659054.477610115 2088366.74074526,659046.692138107 2088367.77703326,659043.002359708 2088369.45115939,659036.728327702 2088374.94901539) + + + +SAFE test 16596 line 31 + +LINESTRING (659025.802481827 2088378.95212363,659041.341697841 2088380.21369164) + + + +LINESTRING (659041.908136702 2088373.23664735,659026.368920688 2088371.97507934) + + + + +LINESTRING (659025.236042966 2088385.92916792,659040.77525898 2088387.19073592) + + + +SAFE test 16596 line 32 + +LINESTRING (658736.432369557 2088309.47269957,658785.288449603 2088323.28031558,659025.802481827 2088378.95212363) + + + +LINESTRING (659027.381036091 2088372.13243402,658787.030607875 2088316.4984954,658738.336127704 2088302.73655045) + + + + +LINESTRING (658734.528611411 2088316.20884869,658783.384691456 2088330.0164647,658783.709895339 2088330.1000052,659024.223927563 2088385.77181325) + + + +SAFE test 16596 line 33 + +LINESTRING (659076.181233874 2088234.9347155,659073.633537871 2088257.14117952,659054.753009854 2088360.33477962,659055.401201854 2088373.67954763) + + + +LINESTRING (659062.392958847 2088373.33993881,659061.7839081 2088360.80099831,659080.519236605 2088258.4010021,659080.587919182 2088257.93903952,659083.135615184 2088235.7325755) + + + + +LINESTRING (659069.226852563 2088234.1368555,659066.705788015 2088256.11119196,659047.86731112 2088359.07495703,659047.761252861 2088360.67438844,659048.409444861 2088374.01915645) + + + +SAFE test 16596 line 34 + +LINESTRING (658885.969153697 2088365.37695562,658885.904641696 2088372.04626763) + + + +LINESTRING (658892.904314238 2088372.11397519,658892.968826238 2088365.44466319) + + + + +LINESTRING (658878.969481155 2088365.30924806,658878.904969155 2088371.97856006) + + + +SAFE test 16596 line 35 + +LINESTRING (658885.969153697 2088365.37695562,658885.904641696 2088372.04626763) + + + +LINESTRING (658892.904314238 2088372.11397519,658892.968826238 2088365.44466319) + + + + +LINESTRING (658878.969481155 2088365.30924806,658878.904969155 2088371.97856006) + + + +SAFE test 16596 line 36 + +LINESTRING (658733.993217555 2088320.56466758,658749.415681569 2088334.05177159,658786.640129604 2088344.4136276,658831.650033646 2088353.73817161,658885.969153697 2088365.37695562) + + + +LINESTRING (658887.435733537 2088358.5323122,658833.116613487 2088346.89352819,658833.07004718 2088346.88371601,658788.290580457 2088337.60691089,658752.825874018 2088327.73489933,658738.60128825 2088315.29535221) + + + + +LINESTRING (658729.38514686 2088325.83398295,658744.807610874 2088339.32108696,658747.538519906 2088340.79538072,658784.762967941 2088351.15723673,658785.22011607 2088351.2680832,658830.206720283 2088360.58780027,658884.502573856 2088372.22159904) + + + +SAFE test 16596 line 37 + +LINESTRING (658716.931329539 2088315.95461958,658719.071489541 2088335.98303559) + + + +LINESTRING (658726.031864704 2088335.2392765,658723.891704702 2088315.21086048) + + + + +LINESTRING (658709.970954376 2088316.69837867,658712.111114378 2088336.72679469) + + + +SAFE test 16596 line 38 + +LINESTRING (658925.925633734 2088253.49369152,658910.66086572 2088304.47865156,658911.38481772 2088310.04306757,658923.706609732 2088322.38943558,658939.214081746 2088326.98514759,658971.848945777 2088329.52261959) + + + +LINESTRING (658972.391581848 2088322.5436837,658940.49401693 2088320.06353922,658927.4031826 2088316.18400912,658918.019483354 2088306.78159394,658917.794987784 2088305.05608349,658932.631528772 2088255.50141952) + + + + +LINESTRING (658919.219738696 2088251.48596351,658903.954970682 2088302.47092356,658903.719368599 2088305.38176713,658904.4433206 2088310.94618314,658905.102814348 2088313.13117923,658906.430141456 2088314.98788133,658918.751933467 2088327.33424934,658921.717631171 2088329.10091562,658937.225103185 2088333.69662762,658938.671445674 2088333.96408347,658971.306309705 2088336.50155547) + + + +SAFE test 16596 line 39 + +LINESTRING (658716.931329539 2088315.95461958,658733.993217555 2088320.56466758) + + + +LINESTRING (658735.819110824 2088313.80699684,658718.757222808 2088309.19694884) + + + + +LINESTRING (658715.10543627 2088322.71229031,658732.167324286 2088327.32233832) + + + +SAFE test 16596 line 40 + +LINESTRING (658714.715393537 2088303.70655556,658716.931329539 2088315.95461958) + + + +LINESTRING (658723.819503587 2088314.70840198,658721.603567585 2088302.46033797) + + + + +LINESTRING (658707.827219489 2088304.95277316,658710.043155492 2088317.20083717) + + + +SAFE test 16596 line 41 + +LINESTRING (658503.04844934 2088239.4300755,658513.146097349 2088240.63839551,658548.007169382 2088254.31084352,658565.794049398 2088264.48530753,658627.772673456 2088288.42233155,658716.931329539 2088315.95461958) + + + +LINESTRING (658718.99670384 2088309.26625438,658630.069070018 2088281.80530627,658568.810029811 2088258.14619574,658551.482853956 2088248.23469204,658550.563015286 2088247.79412259,658515.701943253 2088234.12167457,658513.977808301 2088233.68798135,658503.880160292 2088232.47966135) + + + + +LINESTRING (658502.216738388 2088246.38048966,658511.424557054 2088247.48232956,658544.975313579 2088260.64087425,658562.318364824 2088270.561459,658563.27210359 2088271.01522248,658625.250727647 2088294.95224651,658625.707299155 2088295.11069675,658714.865955238 2088322.64298477) + + + +SAFE test 16596 line 42 + +LINESTRING (658714.715393537 2088303.70655556,658736.432369557 2088309.47269957) + + + +LINESTRING (658738.22872135 2088302.70711606,658716.51174533 2088296.94097205) + + + + +LINESTRING (658712.919041745 2088310.47213907,658734.636017765 2088316.23828308) + + + +SAFE test 16596 line 43 + +LINESTRING (658901.023985711 2088255.47717952,658892.734721703 2088308.75180357) + + + +LINESTRING (658899.651495565 2088309.82801885,658907.940759573 2088256.5533948) + + + + +LINESTRING (658894.107211848 2088254.40096424,658885.81794784 2088307.67558829) + + + +SAFE test 16596 line 44 + +LINESTRING (658559.169793392 2088306.66079557,658495.403265333 2088307.16255557) + + + +LINESTRING (658495.458344563 2088314.16233887,658559.224872622 2088313.66057887) + + + + +LINESTRING (658559.114714162 2088299.66101226,658495.348186103 2088300.16277227) + + + +SAFE test 16596 line 45 + +LINESTRING (658708.059377531 2088268.07237953,658714.715393537 2088303.70655556) + + + +LINESTRING (658721.596385345 2088302.42127282,658714.940369339 2088266.78709679) + + + + +LINESTRING (658701.178385723 2088269.35766228,658707.834401729 2088304.99183831) + + + +SAFE test 16596 line 46 + +LINESTRING (658503.17643334 2088226.09247549,658610.85824144 2088268.25157953,658682.145025507 2088294.50079556,658714.715393537 2088303.70655556) + + + +LINESTRING (658716.61930148 2088296.97044878,658684.309603231 2088287.83836505,658613.343880804 2088261.70737033,658505.728422689 2088219.57424334) + + + + +LINESTRING (658500.624443991 2088232.61070764,658608.306252091 2088274.76981168,658608.439467102 2088274.82040977,658679.726251169 2088301.06962579,658680.241117564 2088301.23690233,658712.811485594 2088310.44266234) + + + +SAFE test 16596 line 47 + +LINESTRING (658768.717057587 2088267.54297153,658767.608065586 2088301.99135556) + + + +LINESTRING (658774.604441073 2088302.2165889,658775.713433074 2088267.76820487) + + + + +LINESTRING (658761.720682101 2088267.31773819,658760.6116901 2088301.76612223) + + + +SAFE test 16596 line 48 + +LINESTRING (658768.717057587 2088267.54297153,658708.059377531 2088268.07237953) + + + +LINESTRING (658708.120469793 2088275.07211294,658768.778149849 2088274.54270493) + + + + +LINESTRING (658768.655965326 2088260.54323813,658707.998285269 2088261.07264613) + + + +SAFE test 16596 line 49 + +LINESTRING (658687.663345512 2088205.62885947,658692.179185516 2088221.23359549,658708.059377531 2088268.07237953) + + + +LINESTRING (658714.688725152 2088265.82476966,658698.859319083 2088219.13577927,658694.38744731 2088203.68297792) + + + + +LINESTRING (658680.939243713 2088207.57474102,658685.455083718 2088223.17947704,658685.549837895 2088223.48120535,658701.430029909 2088270.3199894) + + + +SAFE test 16596 line 50 + +LINESTRING (658869.880049682 2088259.62335552,658768.717057587 2088267.54297153) + + + +LINESTRING (658769.263385941 2088274.52161935,658870.426378036 2088266.60200334) + + + + +LINESTRING (658869.333721328 2088252.64470771,658768.170729233 2088260.56432371) + + + +SAFE test 16596 line 51 + +LINESTRING (658901.023985711 2088255.47717952,658869.880049682 2088259.62335552) + + + +LINESTRING (658870.803805916 2088266.56213599,658901.947741945 2088262.41595999) + + + + +LINESTRING (658900.100229476 2088248.53839905,658868.956293447 2088252.68457505) + + + +SAFE test 16596 line 52 + +LINESTRING (658865.007873677 2088119.51967539,658857.91360167 2088129.4555474,658842.298609656 2088135.97433141,658836.802801651 2088141.47935541,658838.282481652 2088149.27404342,658842.904817656 2088153.76530742,658863.844609676 2088159.52428343,658867.65796968 2088167.34252344,658868.32868968 2088178.46418745,658864.269553676 2088196.21010746,658869.880049682 2088259.62335552) + + + +LINESTRING (658876.852812011 2088259.0064394,658871.339695188 2088196.69383026,658875.152454764 2088180.02503019,658875.315994808 2088178.04280039,658874.645274807 2088166.92113638,658873.949480581 2088164.27382818,658870.136120577 2088156.45558817,658868.314890249 2088154.13757835,658865.700864836 2088152.77488962,658846.49392341 2088147.49249165,658844.747096179 2088145.79519785,658844.369767638 2088143.80749899,658846.273742746 2088141.90033108,658860.61032801 2088135.91524299,658863.610489615 2088133.52315945,658870.704761621 2088123.58728744) + + + + +LINESTRING (658859.310985733 2088115.45206335,658853.375936379 2088123.76438781,658839.601883316 2088129.51463582,658837.344717251 2088131.02873235,658831.848909246 2088136.53375636,658830.112310405 2088139.42087858,658829.925618512 2088142.78486377,658831.405298514 2088150.57955178,658832.118348005 2088152.59118924,658833.404426032 2088154.29445908,658838.026762036 2088158.78572308,658841.048562496 2088160.51470123,658858.939361231 2088165.43512645,658860.754673655 2088169.1569225,658861.280905098 2088177.88272359,658857.445788592 2088194.64926472,658857.296791347 2088196.82702359,658862.907287353 2088260.24027165) + + + +SAFE test 16596 line 53 + +LINESTRING (658911.14212972 2088254.46239552,658901.023985711 2088255.47717952) + + + +LINESTRING (658901.722535667 2088262.44223716,658911.840679677 2088261.42745316) + + + + +LINESTRING (658910.443579763 2088247.49733788,658900.325435754 2088248.51212188) + + + +SAFE test 16596 line 54 + +LINESTRING (658925.925633734 2088253.49369152,658911.14212972 2088254.46239552) + + + +LINESTRING (658911.599830223 2088261.44741594,658926.383334237 2088260.47871194) + + + + +LINESTRING (658925.467933231 2088246.5086711,658910.684429217 2088247.4773751) + + + +SAFE test 16596 line 55 + +LINESTRING (658908.646657718 2088109.93503538,658911.14212972 2088254.46239552) + + + +LINESTRING (658918.141086499 2088254.3415485,658915.645614497 2088109.81418836) + + + + +LINESTRING (658901.647700938 2088110.0558824,658904.143172941 2088254.58324254) + + + +SAFE test 16596 line 56 + +LINESTRING (658995.296497798 2088236.3775315,658947.728625754 2088250.36946751,658925.925633734 2088253.49369152) + + + +LINESTRING (658926.918545335 2088260.42291417,658948.721537356 2088257.29869017,658949.703970038 2088257.08497308,658997.271842082 2088243.09303706) + + + + +LINESTRING (658993.321153515 2088229.66202594,658946.236803901 2088243.51173539,658924.932722132 2088246.56446887) + + + +SAFE test 16596 line 57 + +LINESTRING (659056.979185856 2088210.29522748,658995.296497798 2088236.3775315) + + + +LINESTRING (658998.022717199 2088242.82483542,659059.705405256 2088216.74253139) + + + + +LINESTRING (659054.252966455 2088203.84792356,658992.570278398 2088229.93022759) + + + +SAFE test 16596 line 58 + +LINESTRING (658983.381233787 2088181.79525945,658995.296497798 2088236.3775315) + + + +LINESTRING (659002.135440955 2088234.88459597,658990.220176944 2088180.30232392) + + + + +LINESTRING (658976.54229063 2088183.28819498,658988.457554642 2088237.87046703) + + + +SAFE test 16596 line 59 + +LINESTRING (659056.979185856 2088210.29522748,659076.181233874 2088234.9347155) + + + +LINESTRING (659081.702570046 2088230.6318273,659062.500522028 2088205.99233928) + + + + +LINESTRING (659051.457849684 2088214.59811568,659070.659897701 2088239.2376037) + + + +SAFE test 16596 line 60 + +LINESTRING (658687.663345512 2088205.62885947,658626.089217455 2088220.59973949,658613.648625443 2088220.48095549,658606.704881437 2088214.85714748) + + + +LINESTRING (658602.299224729 2088220.29683396,658609.242968735 2088225.92064196,658611.280252971 2088227.06812573,658613.581791799 2088227.48063643,658626.02238381 2088227.59942043,658627.742989048 2088227.40158038,658689.317117105 2088212.43070036) + + + + +LINESTRING (658686.009573919 2088198.82701858,658625.283416339 2088213.59172654,658616.156931879 2088213.50458597,658611.110538144 2088209.417461) + + + +SAFE test 16596 line 61 + +LINESTRING (658777.965825596 2088114.23583539,658787.879153605 2088215.48383548,658787.090673605 2088216.58770748) + + + +LINESTRING (658792.786807903 2088220.65637484,658793.575287904 2088219.55250284,658794.641493787 2088217.29235843,658794.84583973 2088214.80171786,658784.93251172 2088113.55371777) + + + + +LINESTRING (658770.999139472 2088114.91795301,658780.912467481 2088216.1659531) + + + +SAFE test 16596 line 62 + +LINESTRING (658673.348849499 2088157.69439543,658621.22212945 2088160.52882743,658608.771329438 2088161.52108343,658600.953073431 2088165.89253944,658597.757169428 2088174.75423544,658597.650673428 2088185.86873145,658602.135793432 2088204.80863547,658606.704881437 2088214.85714748) + + + +LINESTRING (658613.077068671 2088211.95969518,658608.790259684 2088202.53198191,658604.65851091 2088185.0843049,658604.745454588 2088176.01039453,658606.65104579 2088170.72651556,658610.852328431 2088168.37743384,658621.690286332 2088167.51371193,658673.728918619 2088164.68406977) + + + + +LINESTRING (658672.968780378 2088150.70472108,658620.842060329 2088153.53915308,658620.666033488 2088153.55095116,658608.215233477 2088154.54320716,658605.355132591 2088155.41128809,658597.536876584 2088159.7827441,658595.615201201 2088161.36406066,658594.3682109 2088163.5177583,658591.172306897 2088172.37945431,658590.757490739 2088174.68716648,658590.650994739 2088185.80166249,658590.839059257 2088187.4817759,658595.324179261 2088206.42167992,658595.763606197 2088207.70608777,658600.332694202 2088217.75459978) + + + +SAFE test 16596 line 63 + +LINESTRING (659134.212337928 2088184.36345145,659093.70496189 2088191.75263546,659056.979185856 2088210.29522748) + + + +LINESTRING (659060.134117743 2088216.54393973,659095.956606612 2088198.45741119,659135.468519278 2088191.2498154) + + + + +LINESTRING (659132.956156577 2088177.47708751,659092.448780539 2088184.86627151,659090.550030003 2088185.50392321,659053.824253969 2088204.04651523) + + + +SAFE test 16596 line 64 + +LINESTRING (659028.681969829 2088161.11250743,659056.979185856 2088210.29522748) + + + +LINESTRING (659063.046615405 2088206.80433953,659034.749399379 2088157.62161948) + + + + +LINESTRING (659022.61454028 2088164.60339538,659050.911756307 2088213.78611543) + + + +SAFE test 16596 line 65 + +LINESTRING (658673.348849499 2088157.69439543,658687.663345512 2088205.62885947) + + + +LINESTRING (658694.370659931 2088203.62587837,658680.056163917 2088155.69141433) + + + + +LINESTRING (658666.64153508 2088159.69737653,658680.956031093 2088207.63184057) + + + +SAFE test 16596 line 66 + +LINESTRING (659037.391089838 2088064.49093934,659028.681969829 2088161.11250743) + + + +LINESTRING (659035.653705942 2088161.7409146,659044.36282595 2088065.11934651) + + + + +LINESTRING (659030.419353725 2088063.86253217,659021.710233717 2088160.48410026) + + + +SAFE test 16596 line 67 + +LINESTRING (658808.666369625 2087994.48210728,658873.841905685 2088009.55948329,658910.279921719 2088021.0252113,658941.242609748 2088035.77388331,658962.799857768 2088058.21381934,658988.116209792 2088094.02719537,659028.681969829 2088161.11250743) + + + +LINESTRING (659034.671992973 2088157.49040545,658994.106232936 2088090.40509339,658993.83225228 2088089.98654464,658968.515900256 2088054.17316861,658967.847893114 2088053.36435141,658946.290645094 2088030.92441539,658944.252899291 2088029.45421901,658913.290211262 2088014.705547,658912.381005961 2088014.34797797,658875.942989927 2088002.88224995,658875.419584741 2088002.73959115,658810.24404868 2087987.66221514) + + + + +LINESTRING (658807.088690569 2088001.30199942,658871.999757953 2088016.3181946,658907.711727856 2088027.5554621,658937.079332744 2088041.5443371,658957.387431424 2088062.68397582,658982.255694399 2088097.86346979,659022.691946686 2088164.73460941) + + + +SAFE test 16596 line 68 + +LINESTRING (658661.387505487 2088107.55935538,658673.348849499 2088157.69439543) + + + +LINESTRING (658680.157744699 2088156.06991208,658668.196400687 2088105.93487203) + + + + +LINESTRING (658654.578610287 2088109.18383873,658666.539954299 2088159.31887878) + + + +SAFE test 16596 line 69 + +LINESTRING (658908.646657718 2088109.93503538,658792.036593609 2088106.59065138,658777.965825596 2088114.23583539) + + + +LINESTRING (658781.307753182 2088120.38656868,658793.72124556 2088113.64184562,658908.445979792 2088116.93215825) + + + + +LINESTRING (658908.847335643 2088102.93791252,658792.237271535 2088099.59352852,658788.694666023 2088100.43991809,658774.62389801 2088108.0851021) + + + +SAFE test 16596 line 70 + +LINESTRING (658746.875121567 2088112.82578739,658777.965825596 2088114.23583539) + + + +LINESTRING (658778.282968644 2088107.24302334,658747.192264615 2088105.83297534) + + + + +LINESTRING (658746.557978519 2088119.81859943,658777.648682548 2088121.22864743) + + + +SAFE test 16596 line 71 + +LINESTRING (658754.801905574 2088016.1960273,658746.919153567 2088027.23577131,658746.875121567 2088112.82578739) + + + +LINESTRING (658753.875120641 2088112.82938855,658753.917999945 2088029.47999885,658760.498718161 2088020.26374488) + + + + +LINESTRING (658749.105092988 2088012.12830971,658741.222340981 2088023.16805372,658740.253456518 2088025.09837035,658739.919154493 2088027.23217014,658739.875122493 2088112.82218622) + + + +SAFE test 16596 line 72 + +LINESTRING (658661.387505487 2088107.55935538,658746.875121567 2088112.82578739) + + + +LINESTRING (658747.30553793 2088105.83903265,658661.81792185 2088100.57260064) + + + + +LINESTRING (658660.957089125 2088114.54611012,658746.444705204 2088119.81254212) + + + +SAFE test 16596 line 73 + +LINESTRING (658656.947441483 2088003.02943528,658655.881473482 2088033.03161131,658661.387505487 2088107.55935538) + + + +LINESTRING (658668.368479983 2088107.04360827,658662.890651237 2088032.89761374,658663.943027406 2088003.27798628) + + + + +LINESTRING (658649.951855561 2088002.78088429,658648.88588756 2088032.78306032,658648.900498986 2088033.54735843,658654.406530991 2088108.0751025) + + + +SAFE test 16596 line 74 + +LINESTRING (659037.391089838 2088064.49093934,659082.44606588 2088069.37234735) + + + +LINESTRING (659083.200057108 2088062.41307316,659038.145081066 2088057.53166515) + + + + +LINESTRING (659036.637098609 2088071.45021353,659081.692074651 2088076.33162153) + + + +SAFE test 16596 line 75 + +LINESTRING (659031.873777832 2087911.0414672,659040.785665841 2087954.47852324,659037.391089838 2088064.49093934) + + + +LINESTRING (659044.387759826 2088064.70683068,659047.782335829 2087954.69441458,659047.642831209 2087953.07165327,659038.7309432 2087909.63459723) + + + + +LINESTRING (659025.016612465 2087912.44833717,659033.76370754 2087955.08218295,659030.394419849 2088064.275048) + + + +SAFE test 16596 line 76 + +LINESTRING (658656.947441483 2088003.02943528,658612.615425442 2088003.71551528,658579.149057411 2088006.73017129,658576.763121409 2088012.26489129,658578.925825411 2088030.07020331) + + + +LINESTRING (658585.874752606 2088029.22615898,658583.943532267 2088013.32662734,658612.984103381 2088010.71064786,658657.055760153 2088010.02859717) + + + + +LINESTRING (658656.839122814 2087996.0302734,658612.507106773 2087996.7163534,658611.987407136 2087996.74374413,658578.521039105 2087999.75840013,658576.118050621 2088000.42041711,658574.099357928 2088001.88243624,658572.720907371 2088003.9590908,658570.334971369 2088009.49381081,658569.814194213 2088013.10893562,658571.976898215 2088030.91424764) + + + +SAFE test 16596 line 77 + +LINESTRING (658658.992369485 2087951.91647524,658656.947441483 2088003.02943528) + + + +LINESTRING (658663.941845956 2088003.30926751,658665.986773958 2087952.19630747) + + + + +LINESTRING (658651.997965013 2087951.63664301,658649.953037011 2088002.74960305) + + + +SAFE test 16596 line 78 + +LINESTRING (658810.705153627 2087863.33637915,658808.666369625 2087994.48210728) + + + +LINESTRING (658815.665523911 2087994.59091573,658817.704307913 2087863.44518761) + + + + +LINESTRING (658803.70599934 2087863.2275707,658801.667215338 2087994.37329882) + + + +SAFE test 16596 line 79 + +LINESTRING (658752.821505573 2087979.49484326,658808.666369625 2087994.48210728) + + + +LINESTRING (658810.48077729 2087987.72134365,658754.635913238 2087972.73407963) + + + + +LINESTRING (658751.007097907 2087986.25560689,658806.851961959 2088001.2428709) + + + +SAFE test 16596 line 80 + +LINESTRING (659031.873777832 2087911.0414672,659000.696065803 2087918.52178721,658992.088305795 2087923.99609121,658988.892401792 2087932.85778722,658991.150321795 2087940.66066723,659005.699313808 2087964.14405925,659007.157505809 2087974.16185126,659000.861937804 2087981.88281126,658992.276737796 2087985.13401127,658980.645121785 2087981.68722726,658972.135681777 2087977.15909926,658965.989617771 2087969.31935525,658960.686337766 2087954.81746724,658958.610673764 2087928.11973921) + + + +LINESTRING (658951.631734335 2087928.6623297,658953.707398337 2087955.36005773,658954.112143073 2087957.22162284,658959.415423078 2087971.72351085,658960.480703964 2087973.63813618,658966.626767969 2087981.47788018,658968.847355075 2087983.33865487,658977.356795083 2087987.86678287,658978.656302304 2087988.39875444,658990.287918315 2087991.84553845,658992.535411416 2087992.1292302,658994.755813966 2087991.68032178,659003.341013974 2087988.42912178,659006.287063112 2087986.30638622,659012.582631118 2087978.58542621,659013.904361337 2087976.02731112,659014.08450658 2087973.15355551,659012.626314579 2087963.1357635,659011.649847832 2087960.45744226,658997.607208981 2087937.79135014,658996.248197502 2087933.09490231,658997.862106366 2087928.61980865,659003.466043627 2087925.05585518,659033.506907325 2087917.84829378) + + + + +LINESTRING (659030.24064834 2087904.23464062,658999.062936311 2087911.71496063,658996.93957929 2087912.61511225,658988.331819282 2087918.08941625,658986.624383806 2087919.62052765,658985.503443265 2087921.62131007,658982.307539262 2087930.48300608,658981.896035825 2087932.63225839,658982.1682659 2087934.80355095,658984.426185902 2087942.60643096,658985.19978777 2087944.34728422,658998.982022424 2087966.59306035,658999.787105083 2087972.12398537,658996.624798388 2087976.00227618,658992.003770415 2087977.75225127,658983.31050802 2087975.17618637,658976.731095698 2087971.67508393,658972.182862711 2087965.87348761,658967.590750705 2087953.31629772,658965.589613194 2087927.57714872) + + + +SAFE test 16596 line 81 + +LINESTRING (658696.19840152 2087964.50143525,658752.821505573 2087979.49484326) + + + +LINESTRING (658754.613305111 2087972.72805271,658697.990201059 2087957.73464469) + + + + +LINESTRING (658694.406601981 2087971.2682258,658751.029706034 2087986.26163382) + + + +SAFE test 16596 line 82 + +LINESTRING (658699.010289522 2087914.5077072,658696.19840152 2087964.50143525) + + + +LINESTRING (658703.187355543 2087964.89452768,658705.999243546 2087914.90079963) + + + + +LINESTRING (658692.021335499 2087914.11461477,658689.209447496 2087964.10834282) + + + +SAFE test 16596 line 83 + +LINESTRING (658658.992369485 2087951.91647524,658696.19840152 2087964.50143525) + + + +LINESTRING (658698.44131932 2087957.87049868,658661.235287285 2087945.28553867) + + + + +LINESTRING (658656.749451685 2087958.5474118,658693.95548372 2087971.13237181) + + + +SAFE test 16596 line 84 + +LINESTRING (658601.708785432 2087924.69036321,658658.992369485 2087951.91647524) + + + +LINESTRING (658661.997244788 2087945.59423478,658604.713660735 2087918.36812275) + + + + +LINESTRING (658598.703910129 2087931.01260367,658655.987494182 2087958.23871569) + + + +SAFE test 16596 line 85 + +LINESTRING (659030.066433831 2087856.55749915,659108.139249903 2087905.10841119,659176.210673967 2087942.44857123) + + + +LINESTRING (659179.577241767 2087936.31128997,659111.673464515 2087899.06309156,659033.763024924 2087850.6131561) + + + + +LINESTRING (659026.369842737 2087862.5018422,659104.44265881 2087911.05275424,659104.772682103 2087911.24569245,659172.844106167 2087948.58585249) + + + +SAFE test 16596 line 86 + +LINESTRING (658561.986801395 2087687.54629899,658585.645313417 2087815.60261911,658601.708785432 2087924.69036321) + + + +LINESTRING (658608.634105919 2087923.67059062,658592.570633904 2087814.58284651,658592.528822164 2087814.33088512,658568.870310142 2087686.274565) + + + + +LINESTRING (658555.103292648 2087688.81803298,658578.738600106 2087816.74875386,658594.783464944 2087925.71013581) + + + +SAFE test 16596 line 87 + +LINESTRING (658481.77073732 2087862.40658715,658601.708785432 2087924.69036321) + + + +LINESTRING (658604.934828941 2087918.47806547,658484.996780829 2087856.19428941) + + + + +LINESTRING (658478.544693811 2087868.6188849,658598.482741923 2087930.90266096) + + + +SAFE test 16596 line 88 + +LINESTRING (658765.126897584 2087831.77465112,658763.847921583 2087884.00581917,658758.159617578 2087909.5177552,658699.010289522 2087914.5077072) + + + +LINESTRING (658699.598732851 2087921.4829301,658758.748060906 2087916.49297809,658761.555952341 2087915.63861381,658763.766768635 2087913.7082035,658764.991848616 2087911.04111301,658770.680152621 2087885.52917699,658770.845823908 2087884.17717565,658772.12479991 2087831.9460076) + + + + +LINESTRING (658758.128995259 2087831.60329464,658756.866770664 2087883.15036421,658752.4465761 2087902.97485334,658698.421846194 2087907.53248431) + + + +SAFE test 16596 line 89 + +LINESTRING (658691.683585516 2087786.60703508,658706.96881753 2087814.54277911,658699.010289522 2087914.5077072) + + + +LINESTRING (658705.988210507 2087915.06324183,658713.946738515 2087815.09831374,658713.109686896 2087811.18276074,658697.824454882 2087783.24701672) + + + + +LINESTRING (658685.542716149 2087789.96705345,658699.825086646 2087816.06993798,658692.032368538 2087913.95217257) + + + +SAFE test 16596 line 90 + +LINESTRING (659031.267569832 2087893.25049118,659031.873777832 2087911.0414672) + + + +LINESTRING (659038.869717759 2087910.80308822,659038.263509759 2087893.0121122) + + + + +LINESTRING (659024.271629905 2087893.48887016,659024.877837906 2087911.27984618) + + + +SAFE test 16596 line 91 + +LINESTRING (659030.066433831 2087856.55749915,659031.267569832 2087893.25049118) + + + +LINESTRING (659038.263822369 2087893.02147059,659037.062686368 2087856.32847855) + + + + +LINESTRING (659023.070181293 2087856.78651974,659024.271317294 2087893.47951177) + + + +SAFE test 16596 line 92 + +LINESTRING (658955.842801762 2087892.52345118,659031.267569832 2087893.25049118) + + + +LINESTRING (659031.335041615 2087886.25081636,658955.910273545 2087885.52377636) + + + + +LINESTRING (658955.775329979 2087899.523126,659031.200098049 2087900.250166) + + + +SAFE test 16596 line 93 + +LINESTRING (658719.071489541 2088335.98303559,658720.306433542 2088369.34188363,658719.815921542 2088420.46917967,658710.132977533 2088457.05772371) + + + +LINESTRING (658716.900017461 2088458.84858121,658726.58296147 2088422.26003718,658726.815599411 2088420.53633413,658727.306111412 2088369.40903809,658727.30164179 2088369.08292113,658726.066697789 2088335.7240731) + + + + +LINESTRING (658712.076281294 2088336.24199809,658713.3051908 2088369.43783972,658712.824651947 2088419.52560962,658703.365937604 2088455.2668662) + + + +SAFE test 16596 line 94 + +LINESTRING (658884.018433695 2088406.48645966,658883.653889694 2088444.27615569,658882.024689693 2088452.0411477,658879.670529691 2088454.2417237) + + + +LINESTRING (658884.450656758 2088459.35546844,658886.80481676 2088457.15489244,658888.123761929 2088455.47645233,658888.875521066 2088453.47854448,658890.504721068 2088445.71355247,658890.653564015 2088444.34367911,658891.018108015 2088406.55398307) + + + + +LINESTRING (658877.018759375 2088406.41893625,658876.660893724 2088443.516335,658875.628194971 2088448.43831976,658874.890402624 2088449.12797897) + + + +SAFE test 16596 line 95 + +LINESTRING (658719.071489541 2088335.98303559,658613.265665443 2088341.6375636,658491.068657329 2088353.80677961) + + + +LINESTRING (658491.762334033 2088360.77232429,658613.799566772 2088348.6190198,658719.445053969 2088342.9730606) + + + + +LINESTRING (658718.697925113 2088328.99301059,658612.892101014 2088334.64753859,658612.571988739 2088334.67201892,658490.374980625 2088346.84123493) + + + +SAFE test 16596 line 96 + +LINESTRING (658752.821505573 2087979.49484326,658754.801905574 2088016.1960273) + + + +LINESTRING (658761.791736847 2088015.81885522,658759.811336845 2087979.11767118) + + + + +LINESTRING (658745.8316743 2087979.87201534,658747.812074302 2088016.57319937) + + + +SAFE test 16596 line 97 + +LINESTRING (659022.622977824 2087822.02719512,659030.066433831 2087856.55749915) + + + +LINESTRING (659036.909254942 2087855.08244008,659029.465798935 2087820.55213605) + + + + +LINESTRING (659015.780156713 2087823.50225418,659023.223612719 2087858.03255821) + + + +SAFE test 16596 line 98 + +LINESTRING (658981.346545785 2087828.29817112,659030.066433831 2087856.55749915) + + + +LINESTRING (659033.578627202 2087850.50237754,658984.858739157 2087822.24304951) + + + + +LINESTRING (658977.834352414 2087834.35329273,659026.554240459 2087862.61262076) + + + +SAFE test 16596 line 99 + +LINESTRING (658940.349681747 2087805.6718671,658939.325697746 2087831.22783512,658940.752113748 2087844.57977114,658945.332465752 2087853.51724314,658953.086193759 2087855.81509915,658964.77105777 2087853.70463514,658983.518449787 2087844.99244314) + + + +LINESTRING (658980.568429602 2087838.64442133,658962.639130405 2087846.97643343,658953.47964302 2087848.63077604,658950.195073637 2087847.6573775,658947.574443173 2087842.54383789,658946.340647232 2087830.99491777,658947.344069366 2087805.95212027) + + + + +LINESTRING (658933.355294129 2087805.39161393,658932.331310128 2087830.94758196,658932.365304913 2087831.97142884,658933.791720915 2087845.32336485,658934.522552024 2087847.77235015,658939.102904028 2087856.70982215,658940.862367992 2087858.90409993,658943.343485305 2087860.22872262,658951.097213312 2087862.52657862,658954.330369335 2087862.70364233,658966.015233346 2087860.59317832,658967.721077956 2087860.05265696,658986.468469973 2087851.34046495) + + + +SAFE test 16596 line 100 + +LINESTRING (659022.622977824 2087822.02719512,658981.346545785 2087828.29817112) + + + +LINESTRING (658982.397964957 2087835.21875764,659023.674396996 2087828.94778163) + + + + +LINESTRING (659021.571558652 2087815.1066086,658980.295126614 2087821.37758461) + + + +SAFE test 16596 line 101 + +LINESTRING (658940.349681747 2087805.6718671,658981.346545785 2087828.29817112) + + + +LINESTRING (658984.728928867 2087822.16959178,658943.732064828 2087799.54328776) + + + + +LINESTRING (658936.967298666 2087811.80044644,658977.964162704 2087834.42675046) + + + +SAFE test 16596 line 102 + +LINESTRING (659119.289585914 2087797.39385109,659081.879809879 2087805.9247951,659060.809985859 2087813.50239511,659029.62099383 2087822.09477912,659022.622977824 2087822.02719512) + + + +LINESTRING (659022.555377816 2087829.0268687,659029.553393822 2087829.0944527,659031.480189196 2087828.8433636,659062.669181225 2087820.2509796,659063.178936196 2087820.08935756,659083.849655145 2087812.65529262,659120.845915752 2087804.21864687) + + + + +LINESTRING (659117.733256076 2087790.56905531,659080.323480041 2087799.09999932,659079.510859543 2087799.33783265,659058.692823986 2087806.82487888,659028.707601294 2087815.08563151,659022.690577832 2087815.02752153) + + + +SAFE test 16596 line 103 + +LINESTRING (658990.832897794 2087731.68274703,659003.751665806 2087762.93215506,659022.622977824 2087822.02719512) + + + +LINESTRING (659029.291226382 2087819.89776769,659010.419914364 2087760.80272763,659010.220662504 2087760.25781744,658997.301894492 2087729.00840941) + + + + +LINESTRING (658984.363901097 2087734.35708465,658997.171742213 2087765.3381699,659015.954729266 2087824.15662254) + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/singlesidedbuffer.xml geos-3.2.2/tests/xmltester/tests/singlesidedbuffer.xml --- geos-3.1.0/tests/xmltester/tests/singlesidedbuffer.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/singlesidedbuffer.xml 2009-10-01 10:10:08.000000000 +0100 @@ -0,0 +1,86 @@ + + + + +Single-sided buffer on vertical line (down-up) + +LINESTRING (0 10, 0 20) + + + +LINESTRING (2 10, 2 20) + + + + +LINESTRING (-2 10, -2 20) + + + + +Single-sided buffer on vertical line (up-down) + +LINESTRING (0 20, 0 10) + + + +LINESTRING (-3 10, -3 20) + + + + +LINESTRING (3 10, 3 20) + + + + +Single-sided buffer on horizontal line (left-right) + +LINESTRING (0 0, 5 0) + + + +LINESTRING (0 -2, 5 -2) + + + + +LINESTRING (0 2, 5 2) + + + + +Single-sided buffer on horizontal line (right-left) + +LINESTRING (5 0, 0 0) + + + +LINESTRING (0 2, 5 2) + + + + +LINESTRING (0 -2, 5 -2) + + + + + +Single-sided buffers on sharpe edged line + +LINESTRING (5 5,1 1,1.5 3) + + + +LINESTRING (0.889806640162438 3.15254833995939,3.86862915010152 6.13137084989848) + + + + +LINESTRING (6.13137084989848 3.86862915010152,2.13137084989848 -0.131370849898476,1.64334932914975 -0.464957897238882,1.06750928729122 -0.598575145599803,0.482454087349093 -0.513983562756987,-0.0319550194114402 -0.222730075655103,-0.405500120335007 0.235428609129087,-0.58719153245376 0.797952878498393,-0.552228000232531 1.38805700005813,-0.052228000232531 3.38805700005813) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/split.xml geos-3.2.2/tests/xmltester/tests/split.xml --- geos-3.1.0/tests/xmltester/tests/split.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/split.xml 2009-05-02 09:37:08.000000000 +0100 @@ -0,0 +1,52 @@ + + + + + + Line/line difference/split + LINESTRING(2 0,10 0,10 10,0 10,0 2) + LINESTRING(-5 5, 15 5) + + + MULTILINESTRING((2 0,10 0,10 5),(10 5,10 10,0 10,0 5),(0 5,0 2)) + + + + + + Line/line difference/split with boundary intersection + LINESTRING(2 0,10 0,10 10,0 10,0 2) + LINESTRING(0 5, 10 5) + + + MULTILINESTRING((2 0,10 0,10 5),(10 5,10 10,0 10,0 5),(0 5,0 2)) + + + + + + Multiline/line difference/split + MULTILINESTRING((0 0, 0 10), (5 0, 5 10), (10 0, 10 10)) + LINESTRING(-5 5, 15 5) + + + MULTILINESTRING((0 0,0 5),(0 5,0 10),(5 0,5 5),(5 5,5 10),(10 0,10 5),(10 5,10 10)) + + + + + + Multiline/line difference/split with boundary intersection + MULTILINESTRING((0 0, 0 10), (5 0, 5 10), (10 0, 10 10)) + LINESTRING(0 5, 10 5) + + + MULTILINESTRING((0 0,0 5),(0 5,0 10),(5 0,5 5),(5 5,5 10),(10 0,10 5),(10 5,10 10)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml geos-3.2.2/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml --- geos-3.1.0/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/stmlf/stmlf-cases-20061020.xml 2009-05-02 09:44:52.000000000 +0100 @@ -0,0 +1,335 @@ + + + + + 966094 - 2025063 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 + +010600000001000000010300000001000000080000009CF43774FF0951412374234411E95441BF77617BFF095141190A467611E9544188E1D28E040A51410F26D5D00FE95441B63AEC27040A5141850B95540EE954417AE0F580030A51410B25BEB20CE95441F07D6BC4010A5141D66A6B2F05E9544100000010010A5141A4703D5A01E954419CF43774FF0951412374234411E95441 + + + +0106000000010000000103000000010000001300000000000010010A5141A4703D5A01E9544152B81ED5010A5141A4703D8A05E95441EC51B86E020A5141295C8F8208E95441D7A370FD020A51419A9999690BE95441A4703DEA040A5141AE47E13A10E95441C3F528AC040A5141F6285C9F0FE95441295C8FE2080A514114AE477110E954419A999969080A5141666666260AE95441AE47E19A070A5141D7A3708D05E954419A9999E9060A514152B81E5501E95441E17A148E060A51413D0AD733FEE85441A4703D0A060A51413D0AD703FAE85441D7A3708D050A514152B81E85F6E854417B14AE17050A51417B14AE07F4E85441A4703DDA020A5141F6285C6FFBE8544100000000020A5141CDCCCC6CFDE8544185EB5188010A51413D0AD733FEE85441A4703DDA000A514133333373FEE8544100000010010A5141A4703D5A01E95441 + +5 + + + + 99455 - 3082006 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -9 + +0106000000010000000103000000010000000F000000AAC4C227788350416D0791EFF11B54417780D7447783504110D8543CF11B54411DEDE0BE73835041BC6CD80CF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B54417B14AEC7718350419A999939F91B54410AD7A3F07183504133333343FA1B54413333334372835041CDCCCC5CFF1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C54410AD7A3D07783504166666656031C5441A4703D5A7883504133333303FF1B5441A4703D7A78835041333333A3F91B5441AAC4C227788350416D0791EFF11B5441 + + + +010600000001000000010300000001000000140000007B14AE6777835041B81E853B061C544189F2BB14788350413D27166A011C5441C811B85A7883504136229AEEFE1B5441B1C92C6D78835041133EFFD4FB1B54411305C67478835041EBE17921F91B5441578C1E457883504175099BB6F41B54411BEC9428788350410EEA6211F21B5441D1FE145C778350411E22B04EF11B5441215B5F1877835041997FFD39F11B54410BB901D976835041C078A736F11B5441CE4C93C775835041AD3C4228F11B54417BB0BCC873835041594B5D0DF11B5441CDBD952172835041014004ACF01B54410AD7A360718350419A9999C9F01B5441C1AEF59071835041B04E83BEF41B5441DEE3EEB0718350411AA0C35CF71B54414896782172835041A56E6947FD1B5441A4703D2A7383504152B81EA5041C5441E17A141E75835041000000E0051C54417B14AE6777835041B81E853B061C5441 + +5 + + + + 275046 - 3361837 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -7 + +0106000000010000000103000000010000000D000000B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54417B14AE97B92D51418FC2F5F87B3C5441713D0A17BA2D5141AE47E16A963C5441D7A3704DBA2D5141EC51B84EA23C5441AE47E1DABA2D514148E17A54BD3C5441E17A14DEBA2D51419A9999E9BD3C54418FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441 + + + +0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 + +5 + + + + 984559 - 984543 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +0106000000010000000103000000020000004100000012DA570FC0A55041D2589D1DB8065541F71C3BAEC4A55041AFFA4E68B80655414692F7AFC7A55041A7EDE998B80655416F002CF8CEA550413532A10EB906554124282305D0A55041FB0C7E0AAF065541AC4D8A52D2A550410796841799065541D4F53E49D4A55041DD0AE1DA87065541F23CDF21D4A5504120F16BD687065541E9FB5D2BD4A55041C1D4E67B87065541341AD0ECC3A550411D50D33F85065541B8231ACAC3A55041C5E70C3B850655416A1791F2C3A55041296FF07D830655411EAC79F6C3A550418B0BF252830655417971A807BFA55041114AC6BD820655411578213AB9A55041AAC14B0E82065541AA83191AB8A550410BB6532E8306554197883DA0B7A550417F9D9F8F850655419F4586A9B7A55041D11DA9AD85065541ACD69341BAA550414D1315128E0655417915A591C8A55041E010AC5D8F065541E656C3E3C9A55041FFFA78848F0655411B560F21CDA5504138A7ACAD8F06554168947DA7C9A5504177CD06F1AF065541E1849B42CDA55041E7CD7CE78F06554185EC5B65CDA550410CB479EB8F06554128F43A6CC9A55041B31E8409B2065541BEA3C40FA1A550419D76610AAE065541E223DE3BA1A550419C41D30AAC065541A8ABFFB1A4A55041740C03188A06554152EADBB8A4A5504112DAEE118A065541C6D01C2AA4A550410139FC0B8A0655411A3C862AA4A55041ED5B35078A065541DB6C0960AAA55041F034990F85065541044C9B65AAA550416A8FC70F85065541C79BE1C3B5A55041D69E636E85065541955A96C2B5A550419B7F4764850655412102AF3DB5A55041B717E45581065541F8DC4F578BA5504119C4682C760655410F37753389A55041B532A59977065541F3712F4F88A550419AE21A4EB50655410F37753389A55041F5A5D2FFB60655415A80D7DBACA55041E30B07E8B80655414EDFA328AEA5504100EF3261BA065541AA3CB11DAEA5504154153F57BA065541F79AE02CB1A550416679D4D4BD065541DC600B79A9A550414230DC400E075541BF6A7E10AEA550410BDA1C74110755413756C137B4A55041FC92284907075541E4EFA437B4A5504106BA974507075541BDC6AEEDB3A5504155B441FCFD065541AD85B2EBB3A550419FF670BCFD0655419F3CCD23B3A550418F5D39A3E4065541E247A97DB3A55041DAD2D922CD065541FB24D4EAB8A55041615C8329CC0655416D81503FB7A55041589E91C0E70655410AE44A8BBDA55041AE2015D1E30655410CD2E5A5BDA550417622F7DFC60655414DA59D7BBEA55041FE2EA8DDC1065541F4F4BA38B8A550415592ABC9C40655418CAE7DF1B7A55041D885FACBC90655414A8EE6C4B3A550413FCC3713CA065541EBC84FFDB3A5504112E22710B806554167F8C7FFB3A55041BB3FA65AB70655415B5FE60AB4A550416DFC595BB706554112DA570FC0A55041D2589D1DB80655410400000059BA0671B1A5504148F8A219BE065541E9E4F983B1A550414EF51C2FBE06554143FAF580AFA550413A35404AD006554159BA0671B1A5504148F8A219BE065541 + + + +01060000001200000001030000000100000033000000E7608D2561A55041ADC66F500F075541354F24CA5FA55041307794240D07554124EDC81A3EA55041168FC3750A0755410A05F86B3BA550415B8B817F04075541B62069B33EA5504119ACD748E7065541B62069B33EA550414C02EFA5CD0655416F52E8503CA55041F48DC796B7065541B62069B33EA55041575A27FEB606554175BB497D40A55041CBF3643CDF0655416F52E8503CA55041F63D919A03075541E487A9E43FA550412A0E33F80807554173A53B2746A550412A0E33F8080755414F37F57862A550417BDCB35A0B075541185145C562A55041F990E4700D075541E63773E88BA550416EC6A504110755417CFBABD7A5A55041BF94266713075541737C3C55A7A550410AFA459D11075541B60343AAAFA550419FCF5BAEBE065541B35CD980ACA55041842EFC4EBB065541B0B56F57A9A55041FD5D4C9FB906554182233B258AA55041CB6F6AFDB80655411F4777E188A55041FD5D4C9FB9065541FA528B7588A5504178340619BB0655417F7CD1FB86A55041842EFC4EBB065541299A03EE85A55041D8696033B906554140E7853083A55041D8696033B906554158E17B6683A55041389FBA4DB706554104A6178285A550411EABCEE1B60655418C76C73187A550418CDA1E32B5065541C964A9D387A55041849E8DA5770655418C76C73187A55041B3E5051E75065541D1C50FFD5FA55041241A0F286A065541FC2DCBFC41A55041C6C1254964065541DBF7ACEC3EA55041C826B9417C0655413D1392533DA550417352D275B00655414D29D2CB3AA5504106BA1565AF0655417DF207FE3DA550418359369C6B065541DF8AC40E3FA5504176CC6F26660655418B02F7C940A55041B72E0E2764065541EFFBF91B3CA5504103E6C805630655417B14AE173CA550418FC2F5F8640655419A9999A939A55041E17A14EE6A065541B81E853B39A550410AD7A37075065541AE47E1AA36A55041CDCCCC0CB406554152B81E9536A55041CDCCCC2CB6065541E17A141E33A55041EC51B82E0A0755410000005034A5504148E17A840B0755416666666644A550410AD7A3A00C0755418FC2F5385AA550411F85EB210E075541713D0A375DA5504148E17A340F075541E7608D2561A55041ADC66F500F0755410103000000010000000400000008C55C1D3CA550417844C5646206554183150A483CA55041E5AA66CF61065541EC51B81E3CA55041713D0AC76106554108C55C1D3CA550417844C56462065541010300000001000000040000005D8D8B6A85A55041BED241F372065541E47D41AC6AA55041DE43FAAE6B0655417EDE984D71A55041C74E34966D0655415D8D8B6A85A55041BED241F37206554101030000000100000005000000EAFF24B4A9A5504124CF7BA07C0655410B3AAB5FB4A55041A2DEE3787F0655418FAA4712B6A55041AB55FF007F06554100000090B4A550410AD7A3407F065541EAFF24B4A9A5504124CF7BA07C0655410103000000010000000500000001DF2966B8A55041789F9D5C7E0655410B412FB2B8A5504130F7A4477E065541CC7EBC1FB9A55041E4B857F480065541713D0AD7B8A55041CDCCCC2C7E06554101DF2966B8A55041789F9D5C7E06554101030000000100000005000000CFD9570FC0A55041CB589D1DB806554109100BF6C5A550419C44AFB4B8065541F863EE9CCAA55041D51735C8B8065541FA1C3BAEC4A55041ADFA4E68B8065541CFD9570FC0A55041CB589D1DB806554101030000000100000005000000BCC6AEEDB3A5504156B441FCFD065541DFEFA437B4A5504105BA974507075541E17A147EB4A550411F85EBD106075541E897B6E7B3A55041F089613CFD065541BCC6AEEDB3A5504156B441FCFD065541010300000001000000040000005980D7DBACA55041E50B07E8B8065541FECA9E84ACA5504183DC5CE3B806554152DFA328AEA55041FFEE3261BA0655415980D7DBACA55041E50B07E8B806554101030000000100000006000000B84DF564B4A55041D525FB62850655410E6C91F0B5A550417DA1368285065541AEC766EAB5A5504167A26F6585065541935A96C2B5A550419C7F476485065541C59BE1C3B5A55041DB9E636E85065541B84DF564B4A55041D525FB6285065541010300000001000000070000009A4586A9B7A55041D31DA9AD850655418D3618A7B7A55041CB1D6EBB8506554164E2BD2FBAA55041057226148E06554170930B7BCBA5504199BA35B38F0655417715A591C8A55041DD10AC5D8F065541B0D69341BAA550414A1315128E0655419A4586A9B7A55041D31DA9AD8506554101030000000100000004000000BFA3C40FA1A550419B76610AAE0655419BB2CE27A1A55041D8D8C20CAE065541E723DE3BA1A550419D41D30AAC065541BFA3C40FA1A550419B76610AAE0655410103000000010000000400000065F8C7FFB3A55041B63FA65AB7065541E8C84FFDB3A5504115E22710B80655415F5FE60AB4A5504169FC595BB706554165F8C7FFB3A55041B63FA65AB7065541010300000001000000060000001BAC79F6C3A550418B0BF252830655416A1791F2C3A550412E6FF07D830655418DEB2500C4A55041BC721A7F83065541ECD70406C4A55041F471C832830655417871A807BFA550410D4AC6BD820655411BAC79F6C3A550418B0BF25283065541010300000001000000040000005BBA0671B1A550414DF8A219BE0655413FFAF580AFA550413935404AD0065541E7E4F983B1A5504152F51C2FBE0655415BBA0671B1A550414DF8A219BE065541010300000001000000050000002CF43A6CC9A55041B21E8409B206554180EC5B65CDA5504107B479EB8F065541DF849B42CDA55041E8CD7CE78F065541BA6B1E6BC9A55041EEF16709B20655412CF43A6CC9A55041B21E8409B20655410103000000010000000B000000E6FB5D2BD4A55041BFD4E67B87065541F43CDF21D4A550411CF16BD687065541D4F53E49D4A55041DE0AE1DA87065541AA4D8A52D2A5504109968417990655412EB6A1FDCEA55041555C94DAB8065541E5B48A0DCFA550418F21D7DAB8065541FCDEE639D3A550414C050BCE9106554179C6256BD4A550410C9C245F87065541A3302AF0C3A55041919C022585065541321AD0ECC3A550411D50D33F85065541E6FB5D2BD4A55041BFD4E67B8706554101030000000100000006000000699DAFEAA7A55041C178B99214075541A8DF075984A55041C20F520812075541865B5BADABA550414AC4253E1507554195DE56C4ABA5504112C02019150755415C593BE4A7A5504135DDCFCC14075541699DAFEAA7A55041C178B9921407554101030000000100000006000000C8D01C2AA4A550410339FC0B8A065541B94ABDB7A9A550411F3E38478A06554129D4688AAAA55041D8D7F91085065541DA6C0960AAA55041F034990F850655411E3C862AA4A55041ED5B35078A065541C8D01C2AA4A550410339FC0B8A065541 + +1 + + + + 982104 - 1320680 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 + +0106000000010000000103000000010000001000000028E1365521FD5041343426C820D2544159C8D3351CFD50415976C67A29D254410B8DFD8011FD5041C4DB59EE3FD254412E3CADFB0CFD50412506A86346D25441FDD9532F05FD5041EB3E4A994BD25441F697714AF8FC50417FF05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041343426C820D25441 + + + +0106000000010000000103000000010000001000000028E1365521FD5041323426C820D2544154C8D3351CFD50415C76C67A29D25441098DFD8011FD5041C9DB59EE3FD254412E3CADFB0CFD50412406A86346D25441FDD9532F05FD5041E83E4A994BD25441F397714AF8FC504181F05F4053D254415C8FC2C5F7FC5041EC51B83E56D25441A4703D2AF9FC5041B81E858B55D25441B81E851B09FD5041E17A14FE4BD25441AE47E1FA0EFD5041295C8FC247D254413D0AD75313FD50411F85EB0142D254417B14AE7716FD5041D7A3706D3BD254419A9999091CFD5041E17A14EE30D25441EC51B83E1FFD5041B81E859B29D25441C3F5280C20FD5041B81E853B28D2544128E1365521FD5041323426C820D25441 + +1 + + + + 720830 - 32827 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +0106000000010000000103000000010000000900000085EB512855C550419A9999A9703955410000004055C550419A9999196A395541B81E853B43C55041AE47E1AA6D395541000000403DC55041B81E85BB6E395541295C8F022AC55041F6285CAF75395541295C8F722DC55041333333A3843955417B14AEB738C550418FC2F55882395541C3F5284C4DC55041333333137239554185EB512855C550419A9999A970395541 + + + +0106000000010000000103000000010000000A0000009B74AFA82AC550419DA4F981783955411FF4C0C12AC5504165E17AE178395541DCDE5F772DC55041C7C238A2843955410E087AE22EC55041D3007158843955416AD06EF02DC55041C01F2D6E803955416D85C44F2EC55041C16D7D6B7B39554121826EA22DC55041206F787176395541656754762DC550412108017074395541E0698F022AC55041A0645CAF753955419B74AFA82AC550419DA4F98178395541 + +1 + + + + 11503 - 422581 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +0106000000010000000103000000010000000600000085EB511885D95041295C8F62F58B54417B14AE8733D9504152B81E85E68B54413333336334D95041D7A3706DEE8B5441CDCCCCEC87D950419A9999A9FD8B54410AD7A32088D9504148E17AF4FB8B544185EB511885D95041295C8F62F58B5441 + + + +010600000001000000010300000001000000080000000EBCBD6683D95041B3AF66D6FC8B54410CCCE3C083D950419081D7E6FC8B5441B067BACF83D9504133458CE9FC8B54410DDFC4E287D950415DEEFE9CFD8B5441C1AC0C1888D95041315BB61AFC8B54410193290685D9504126B26A64F58B5441FBD8957381D95041F05692B8F48B54410EBCBD6683D95041B3AF66D6FC8B5441 + +1 + + + + 35309 - 21138 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +0106000000010000000103000000010000002D00000048E17AC43C32514148E17AB4782C5541E17A145E42325141D7A3703D7B2C5541295C8FF2443251418FC2F5D87A2C5541A4703D7A49325141666666D67B2C55413D0AD773533251418FC2F528822C55415C8FC255613251410AD7A3C0872C5541000000A06A3251410AD7A3808D2C55413D0AD7336C3251418FC2F578902C55415C8FC2556E325141C3F528BC8F2C5541000000706E3251415C8FC235982C5541D7A370DD70325141EC51B84E9C2C55413D0AD7237732514166666686A52C5541C3F5289C6C325141F6285CDFB62C5541F6285CCF6E325141A4703D8AB62C5541EC51B8FE72325141D7A370BDB72C55417B14AEB77632514114AE4721B82C554148E17AD47A325141E17A14BEB92C5541333333137F325141F6285CAFB42C554148E17A44813251415C8FC255AF2C55410000005082325141666666A6AC2C5541666666B683325141295C8F32AA2C5541666666468532514152B81EF5A72C55410000008089325141295C8F72A42C5541D7A370BD8B32514133333323A22C55413D0AD7038932514148E17A849C2C5541295C8F5282325141295C8F829D2C55417B14AED77F32514185EB51689E2C55418FC2F5D87C325141E17A147E9F2C5541E17A146E7A325141D7A370ED9F2C55419A9999C978325141295C8FA29F2C5541D7A370AD773251410AD7A3709F2C55415C8FC2B57632514148E17A449F2C5541D7A370ED723251415C8FC2959A2C554148E17A247132514185EB51B8962C5541A4703D0A6F3251419A999969882C5541E17A141E6F3251411F85EBE1832C5541EC51B8EE703251415C8FC275812C55417B14AEB770325141295C8FD27E2C55418FC2F56871325141EC51B8BE7C2C554100000030723251413D0AD7937B2C5541CDCCCC1C5F325141EC51B8EE682C5541CDCCCC8C593251410AD7A3F06A2C5541B81E85FB50325141F6285C4F6E2C55417B14AE9744325141AE47E1EA732C554148E17AC43C32514148E17AB4782C5541 + + + +01060000000100000001030000000100000011000000106B8EEE6832514161B65C748C2C5541778EF64C67325141CF0AFC58862C5541E8DCA88B61325141FEAB7FDF872C55415D2A447862325141068B7274882C55416A3C20E4623251411CE634B7882C5541557D4D9563325141808CDE24892C5541F02C873964325141610B848A892C554120FA216564325141AD3481A5892C5541971F8D1B65325141E76969168A2C5541D656643165325141BF11EE238A2C5541C6266B4E66325141398558D48A2C554115AEA39B66325141812724048B2C5541D0CE633867325141344329658B2C5541B7CC6354673251411FDB7D768B2C5541D06DEA786832514180918C2B8C2C5541B586798C683251419AE6092C8C2C5541106B8EEE6832514161B65C748C2C5541 + +1 + + + + 189022 - 7822 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +01060000000100000001030000000100000051000000333333F36FE650417B14AE27992C5541B81E85FB6AE65041D7A3704D9C2C55410000008061E65041713D0AD7A02C554114AE47D15BE650415C8FC235A32C554148E17AF457E650411F85EB11A52C55416666667656E650418FC2F5C8A52C5541B81E856B54E65041D7A3700DA72C55415C8FC2A557E6504100000020AD2C55413D0AD7535AE65041C3F5286CB12C554114AE47D15CE65041B81E851BB12C55410000008061E650419A999919AE2C55413333335369E650419A999959A92C5541CDCCCCDC6CE65041E17A14EEA72C5541D7A3700D70E6504166666646A62C5541B81E859B70E65041666666E6A52C5541713D0A3771E6504152B81E25A82C55418FC2F57871E6504100000060A92C5541F6285C6F71E65041A4703DAAAA2C554185EB519874E65041713D0AC7A72C55417B14AE6779E650415C8FC2C5A42C5541AE47E1DA7DE6504185EB51D8A12C55419A9999A980E6504114AE4771A02C5541EC51B8FE85E65041666666669F2C5541D7A3703D88E65041C3F5285C9F2C5541C3F5289C8DE650410AD7A3509D2C554148E17A4495E65041F6285C4F9B2C5541AE47E18A96E6504185EB51489B2C5541D7A370CD9AE65041295C8FC2972C55410000009093E65041C3F5288C992C5541E17A141E91E65041295C8F42982C5541CDCCCCAC91E65041295C8F62952C554185EB51E893E65041295C8FE2932C55419A99993999E65041CDCCCC1C932C5541AE47E15A99E6504152B81EB58D2C5541EC51B8AE9AE65041EC51B84E8B2C5541E17A14DE9CE6504148E17A94892C55418FC2F5F89EE6504114AE47A1842C5541333333A39CE65041B81E852B822C55417B14AEF798E6504152B81E957E2C55411F85EB4195E65041F6285C1F7B2C5541333333C392E6504185EB5198782C55416666661690E65041CDCCCC3C762C5541AE47E10A8EE65041E17A149E742C55411F85EB9191E6504185EB51686F2C55415C8FC20593E65041295C8F426D2C5541D7A3706D8EE65041F6285CFF692C55410AD7A32087E65041EC51B86E642C5541295C8F9284E6504185EB5178622C55410000004083E65041AE47E19A612C5541EC51B8BE81E6504114AE47B1602C55418FC2F54880E65041D7A3700D602C5541B81E850B7DE6504185EB51185F2C5541C3F5288C79E6504148E17AA45E2C5541A4703D5A78E6504185EB5198652C5541B81E85FB77E650419A999949672C5541295C8FB27CE65041D7A370AD692C55419A99997981E65041E17A145E6C2C5541A4703D9A85E6504148E17AE46E2C55415C8FC2E584E650413D0AD7E3702C55419A99992984E6504152B81E65742C55418FC2F50884E6504148E17A64772C55419A99992984E650411F85EB517C2C5541A4703DEA84E65041333333E3892C5541A4703D5A86E65041D7A370AD892C554114AE47718CE650413D0AD763882C55417B14AEE790E65041D7A3707D872C5541F6285CBF92E65041CDCCCC2C882C55417B14AE6792E6504152B81E55892C554148E17A8490E65041A4703DFA892C554185EB51A88CE65041333333C3892C55417B14AEA789E650410AD7A3E08A2C55419A99998985E65041B81E859B8B2C55415C8FC2F584E65041333333B38A2C5541666666D67FE65041B81E85FB8B2C55410AD7A3907FE65041AE47E10A8C2C55415C8FC23577E65041713D0AD78D2C5541D7A3700D76E650419A999989912C5541CDCCCCEC72E65041A4703D8A962C55413333339372E65041D7A3704D962C5541713D0A3771E65041A4703D8A982C5541333333F36FE650417B14AE27992C5541 + + + +0106000000010000000103000000010000001C0000004F9D43E684E650415AE8839B892C5541CB4447E684E65041FFCAC59B892C5541852155E684E65041DFB9BF9C892C554192BB5FE684E65041E5DF7E9D892C5541133B4FE784E65041EF303AA6892C5541C0050AEA84E65041781F10BC892C5541B17ABDEA84E65041E5B012C3892C5541DA8D61EB84E6504159707BC9892C5541DA8D61EB84E65041958A3ACC892C5541C5238E0685E6504189ACDAC98A2C55415E58D90D85E65041D2A4FBD68A2C55413A54801085E6504191D0C1DB8A2C5541307DDC1F85E65041010ECCF28A2C5541CC78813E85E65041D99CBA238B2C554191A5E4B185E650412AEAA7888B2C5541690E5CC386E65041ABCDA25F8B2C5541F981CC498AE65041B5FCE1AD8A2C55412870C0958CE6504167B06FC5892C5541F4E202AB8EE65041400F1CD3892C55411998ECA490E65041A28ACD098A2C5541497C15ED91E650410F35BE8E892C55414886E0F092E65041AEAF4154882C554122D1F6F690E650416063CF6B872C55416AC6FD818EE650415634901D882C55411193AA8C86E650418E51C3B7892C55417E3D9B1186E65041B6F216AA892C5541A6D4230085E65041400F1CD3892C55414F9D43E684E650415AE8839B892C5541 + +1 + + + + 191097 - 2916437 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +01060000000100000001030000000100000065000000D7A370CDE662514133333383275B5441AE47E14AE7625141AE47E1BA255B54411F85EBB1E7625141D7A370CD255B544148E17A64EA6251418FC2F5281A5B544114AE47F1EB625141F6285C1F125B5441B81E85CBEF62514152B81EA5FF5A54411F85EBC1F162514100000080F75A5441E17A148EF262514152B81E25F45A5441E17A14FEF36251417B14AE77F05A544185EB51B8F7625141713D0AF7E95A5441AE47E19AFA62514114AE4761E55A54413D0AD763FC62514166666666E25A5441333333B3FF6251413D0AD773DD5A5441D7A3700D00635141666666E6DB5A5441CDCCCC4C0063514114AE4781D95A544166666666FF625141D7A370DDD75A54417B14AEE7FD625141CDCCCC2CD65A5441295C8F52FC62514133333363D45A5441AE47E10AFA6251419A999919D35A54417B14AE17F7625141713D0A27D15A54419A999969F46251417B14AE27CF5A54410AD7A330F262514166666666CD5A5441713D0A87ED6251418FC2F5A8C75A5441E17A14FEEA625141AE47E18AC35A5441D7A3708DE7625141D7A3700DBD5A544100000040E5625141713D0A17B95A5441D7A370CDE3625141F6285CDFB55A5441295C8FA2E3625141E17A140EB35A5441F6285C3FDF625141D7A370FDB15A544185EB51D8DD6251410AD7A390B25A5441000000B0DC625141D7A3709DB15A54410AD7A310DA625141295C8F62B15A54415C8FC225D162514185EB5128B15A54410AD7A320C8625141C3F5281CB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A5441666666E68562514152B81EC5B95A5441CDCCCC9C8562514114AE4731BA5A54415C8FC2158562514185EB51F8BA5A54411F85EB718462514166666676BC5A54418FC2F5D88362514152B81E55BE5A544185EB512883625141EC51B8DEC15A5441713D0AF78162514166666626C95A54415C8FC2758062514185EB5188D15A5441C3F5287C7D62514166666616E15A5441333333037D625141AE47E1DAE25A54410AD7A3207D6251410AD7A3C0E35A54417B14AE477D625141F6285CEFE45A54419A99998982625141713D0AC7EB5A544148E17A5487625141333333A3F15A5441A4703D6A8C625141713D0A97F75A544148E17A849162514114AE4721FD5A5441333333E39462514148E17A74005B544166666686986251415C8FC2A5035B5441713D0A079C6251415C8FC255065B5441666666B6A0625141EC51B89E095B5441B81E85BBA5625141B81E85BB0C5B5441333333A3A962514152B81ED50E5B5441CDCCCCECAD625141713D0AE7105B54411F85EB91B2625141295C8FE2125B54411F85EBE1B762514100000020155B54418FC2F5B8B9625141A4703D5A145B5441C3F5289CBB6251419A9999790B5B544148E17AB4BB625141D7A3702D0A5B544152B81E55BB62514133333353095B5441F6285C2FBA625141E17A14FE085B5441A4703D7AB96251411F85EB710A5B5441B81E852BB762514148E17A54095B544166666646B562514114AE47E1095B54411F85EB01B362514148E17AD4085B54419A999949B4625141AE47E1FA055B54410AD7A340B162514185EB51D8025B544133333303B2625141CDCCCC3C015B5441EC51B8BEAE6251419A999969FE5A544152B81EB5B2625141EC51B80EF75A5441F6285CFFB662514100000000F95A54410AD7A330B962514152B81EB5F45A544185EB51A8BB625141CDCCCCECF55A5441D7A3709DBB6251415C8FC245F75A5441E17A140EC46251413D0AD703FB5A5441D7A3703DC5625141A4703DDAFB5A5441295C8FD2C362514133333303005B5441C3F5282CC162514133333343055B54419A999949BD62514185EB5108095B5441D7A3703DBC6251417B14AEC70B5B544152B81E85BA62514152B81EC5145B5441E17A14AEBB6251413D0AD743175B5441B81E855BC1625141EC51B80E1B5B54415C8FC215CA62514185EB5108215B5441B81E859BCD6251415C8FC235235B5441EC51B82ED162514148E17A04255B5441295C8F52D4625141E17A145E265B5441D7A370CDE662514133333383275B5441 + + + +0106000000010000000103000000010000001200000068C7D3FA856251410925E3B0B95A5441B10394108B6251412A36E4E6B85A5441D66D2E429362514176D5ECB3B75A544110B2FA739A6251418AAF1EB4B65A54417105C6BEA46251410D14FE4DB55A544186B9883CB06251412CDB48CEB35A5441AE1D0350C5625141A4FAF81DB15A5441B81E852BC16251410AD7A320B15A5441A4703D7ABC6251411F85EB51B15A544114AE47D1B6625141AE47E1CAB15A54410AD7A3C0A96251415C8FC255B35A54411F85EBF1A8625141E17A146EB35A544152B81E95A2625141D7A3703DB45A5441C3F528EC99625141E17A147EB55A5441666666C691625141B81E85CBB65A5441EC51B8AE876251411F85EB81B85A5441000000B086625141D7A370FDB85A544168C7D3FA856251410925E3B0B95A5441 + +1 + + + + 256271 - 367713 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 5 + +0106000000010000000103000000010000001E0000003333331371C050410AD7A340502A54415C8FC2756CC05041CDCCCC8C502A5441713D0A2757C05041CDCCCCEC512A54413D0AD7333EC050418FC2F588532A54410AD7A34025C0504152B81E25552A54418FC2F5D813C05041713D0A27562A54416666667612C050419A999999522A544148E17A640EC050411F85EB31482A5441C3F528FC0CC0504133333303492A544148E17AC40BC050417B14AEB7492A5441000000D007C05041EC51B84E4B2A54415C8FC22501C05041F6285C2F4E2A5441295C8F32FABF5041E17A149E512A544148E17A44F9BF5041713D0A17522A5441B81E855BF9BF50413D0AD783522A54410AD7A350FCBF5041B81E858B602A5441E17A14CEFDBF5041D7A3709D672A5441CDCCCC5CFEBF50413D0AD7436A2A54410AD7A3A000C0504133333303752A5441295C8FD202C05041CDCCCC6C7F2A54419A9999990BC0504185EB51C8812A54419A99997911C05041E17A144E852A5441000000901AC05041A4703D7A702A5441666666E645C05041713D0A676B2A544152B81ED566C0504185EB5148712A54416666662665C050413D0AD7A3672A5441B81E850B67C05041AE47E16A602A544148E17A0473C050418FC2F588622A5441000000D071C05041B81E850B562A54413333331371C050410AD7A340502A5441 + + + +01060000000100000001030000000100000009000000713D0A2757C05041CDCCCCEC512A5441677A56726CC05041AD55058D502A5441146EC3B16BC05041F16159044E2A5441306B52721CC05041453D8A60532A5441088679DB16C05041486A9979542A5441F502C4F513C0504166605F25562A54410AD7A34025C0504152B81E25552A54413D0AD7333EC050418FC2F588532A5441713D0A2757C05041CDCCCCEC512A5441 + +1 + + + + 275129 - 384120 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +01060000000200000001030000000100000009000000E17A146E8A2B5141B81E85FB8A3754418FC2F5788F2B51415C8FC2C58A375441AE47E1DA9A2B5141000000808A375441AE47E10A9C2B5141295C8F728A3754413D0AD7D3A12B5141AE47E1FA86375441A4703D3AA02B5141295C8F028737544114AE4721962B5141A4703D4A87375441713D0A778A2B51419A99998987375441E17A146E8A2B5141B81E85FB8A37544101030000000100000009000000C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA8637544133333323A62B51417B14AEE78637544166666676A32B51413D0AD7F38637544133333333A32B514152B81EF586375441F6285C7F9D2B5141713D0A578A3754413D0AD7439E2B51413D0AD7538A3754418FC2F558A62B51410AD7A3308A375441C3F5283CB92B51419A9999D989375441 + + + +01060000000100000001030000000100000007000000ABEA7DD0B02B5141547E90CE86375441D17118A9B02B514194AF78D586375441899E0EA3B02B5141FBCB70FE893754416B2DEBC4B02B514182FB9C008A375441C3F5283CB92B51419A9999D989375441EC51B82EB92B5141AE47E1BA86375441ABEA7DD0B02B5141547E90CE86375441 + +1 + + + + 275562 - 3361837 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +0106000000010000000103000000010000000E000000AE47E1DABA2D514148E17A54BD3C5441D7A3704DBA2D5141EC51B84EA23C5441713D0A17BA2D5141AE47E16A963C5441E17A149EB82D5141B81E85EB943C5441CDCCCC8CAB2D51413D0AD7A3873C544166666686A42D514100000080803C5441A4703D8A9B2D5141333333338A3C5441EC51B81E952D51419A9999B9903C5441E17A147E912D51419A999919943C54410AD7A3D0A52D5141F6285C5FAB3C5441EC51B83EB92D5141AE47E1AABC3C54418FC2F5D8BA2D51411F85EB81BE3C5441E17A14DEBA2D51419A9999E9BD3C5441AE47E1DABA2D514148E17A54BD3C5441 + + + +0106000000010000000103000000010000000D0000008FC2F5D8BA2D51411F85EB81BE3C54410AD7A3C0BE2D5141EC51B8FEC23C5441000000C0BF2D5141000000F0C13C5441B81E850BBF2D514152B81E858F3C5441E17A145EBE2D51419A9999295F3C5441CDCCCC4CBA2D5141E17A148E5B3C54410AD7A300B92D5141000000105C3C54415287AC97B92D514144D9A1F87B3C544136AB1718BA2D5141DA9CC4A5963C54414BDDE007B92D5141DFAC7E33953C5441028739EAB92D514174B3776DBD3C5441D8EE8E24BA2D5141CE1FC8B2BD3C54418FC2F5D8BA2D51411F85EB81BE3C5441 + +1 + + + + 466188 - 3072591 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +0106000000010000000103000000010000000A000000F6285C8F26A5504114AE47111D1F55419A9999C926A55041295C8FC21B1F5541C3F528AC0BA55041AE47E13AF81E554152B81EF5F6A45041000000C0D61E5541F6285C0FF5A45041EC51B88ED51E5541295C8FE2E7A45041C3F5285CD41E55418FC2F568E6A450417B14AE77D41E55411F85EB2101A5504152B81E55001F5541A4703D1A1CA550415C8FC2A5231F5541F6285C8F26A5504114AE47111D1F5541 + + + +0106000000010000000103000000010000000800000081649D95F3A4504145CEA078D81E5541D85D39BAF4A45041D8E5536BD81E5541D0D78DD0F6A450412D5F379ED81E5541C5A26F08F7A450418E1238DFD61E5541A77AF94EF5A450419AF7B2B6D51E5541F270E2E5F4A450418941F38AD51E5541FA48048EF3A450417808B26BD51E554181649D95F3A4504145CEA078D81E5541 + +1 + + + + 415163 - 3180189 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -5 + +010600000001000000010300000001000000110000007B14AE5706C250419A9999A9F63E54413D0AD7C3DBC150418FC2F568F53E544148E17AE4DBC15041000000C0283F54419A99993913C2504185EB51A82A3F5441C3F5288C11C25041D7A3705D123F5441EC51B82E11C25041713D0A47063F5441E17A14DE10C25041000000C0F83E5441713D0A370FC25041E17A142EF73E5441B81E855B0EC25041AE47E16AF83E5441EC51B83E0EC25041C3F5286CFB3E54419A9999A90FC25041D7A3707DFB3E5441EC51B89E0FC25041F6285CDFFC3E54419A9999D906C25041713D0A77FC3E54413D0AD7E306C25041B81E850BFB3E54417B14AE3708C25041AE47E10AFB3E5441713D0A4708C2504114AE47F1F63E54417B14AE5706C250419A9999A9F63E5441 + + + +0106000000010000000103000000010000000600000020B8CE7FE1C15041DA0A7BF1283F5441BD752992DCC150417E633D060C3F5441FCF373D3DBC15041BA5A41B4FA3E5441AE91B8C6DBC15041122208F1F93E544148E17AE4DBC15041000000C0283F544120B8CE7FE1C15041DA0A7BF1283F5441 + +1 + + + + 401167 - 3148390 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +0106000000010000000103000000010000000C0000003D0AD733E561504152B81EF5B0295541AE47E10AE76150419A9999F9B32955410AD7A360E8615041F6285C3FB42955419A99999908625041EC51B80E9D295541A4703DBA02625041000000E09C29554152B81E3500625041713D0AE79C29554133333393F561504148E17A049D295541C3F5281CF1615041666666B69D29554166666636EC61504148E17AE49E2955419A9999A9E8615041C3F5281CA02955415C8FC255E6615041295C8F72AB2955413D0AD733E561504152B81EF5B0295541 + + + +0106000000010000000103000000010000000500000013C6A342F86150410B730BFD9C2955411D116A24FA615041396A8855A0295541446AAD4D006250419CA2C5E69C29554152B81E3500625041713D0AE79C29554113C6A342F86150410B730BFD9C295541 + +1 + + + + 164313 - 164648 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +0106000000030000000103000000010000001700000052B81E05C937514185EB51681209554148E17A84C937514152B81E751209554166666676CC375141295C8FC212095541AC33776FCC3751415F8BDF4713095541EB20A09ECC3751413CD783B5120955415349DAA5CD3751414C9E9A421109554185EB5138CF37514148E17A740F095541CDCCCCCCD337514152B81EE5FF0855413D0AD793D5375141000000F0F808554185EB5188D5375141AE47E14AF508554185EB5108D237514166666606EC08554152B81EE5CF3751410AD7A340E40855415C8FC215CF3751410AD7A3D0DA0855417B14AEA7CD37514100000010D9085541C3F5286CC7375141B81E850BD70855411F85EBA1C6375141F6285CBFD9085541666666F6C4375141713D0A67E1085541C3F5283CC8375141D7A370CDE5085541D7A3704DCB375141EC51B8EEEC08554185EB5108CC3751410AD7A320F0085541713D0AE7C9375141295C8F32FF0855418FC2F5C8C83751417B14AEB70809554152B81E05C937514185EB51681209554101030000000100000004000000848FADD6CA375141FEEC63FE1D09554158B82ABEC837514173AA76E11C09554178888ABDC83751417869D2F11C095541848FADD6CA375141FEEC63FE1D09554101030000000100000006000000B24E5E0EC9375141636A080F1509554133333313C93751419A9999A91409554152B81E05C937514185EB516812095541CAD86B0DC93751419DEC86C9140955419DCB0FFCC837514175205B8F16095541B24E5E0EC9375141636A080F15095541 + + + +0106000000010000000103000000010000000E000000EC51B82ECD3751410AD7A3001C09554166666666CC3751411F85EBD119095541EC51B8EECB375141AE47E11A18095541C3F528DCCB3751416666667616095541CDCCCC5CCC375141EC51B8AE1409554166666676CC375141295C8FC21209554148E17A84C937514152B81E751209554152B81E05C937514185EB51681209554133333313C93751419A9999A914095541F6285CAFC83751419A9999D91C095541D7A3708DCD375141F6285C6F1F095541B81E855BCE37514152B81EC51F0955411F85EBD1CD3751417B14AEB71D095541EC51B82ECD3751410AD7A3001C095541 + +1 + + + + 464026 - 6704 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -3 + +0106000000010000000103000000010000000E000000A4703DEAC9F35041000000607AA35441A4703DAAE5F35041EC51B83E76A35441AE47E16AEAF350418FC2F58875A3544100000070E7F35041666666A661A35441C3F5289CE4F35041A4703DCA4EA35441666666A6E0F35041E17A145E34A35441EC51B88EDFF350415C8FC2152DA354415C8FC235CCF350410AD7A3D02FA354415C8FC245CDF35041F6285C7F37A354417B14AE97AEF350413D0AD7733CA3544166666646AEF35041B81E858B3CA3544148E17A04AFF35041295C8F8241A3544114AE47F1B7F35041CDCCCC0C7DA35441A4703DEAC9F35041000000607AA35441 + + + +010600000001000000010300000001000000050000002957BC1AADF35041CAD27BBD34A3544126CEE97FAEF35041FF981A0C3EA35441DE66C3D9AFF35041923ED48B3DA3544120E0FAE1AEF3504180A4C27B34A354412957BC1AADF35041CAD27BBD34A35441 + +1 + + + + 469351 - 5219716 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 + +0106000000010000000103000000010000000A000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541A4703D2AD1AA5041666666D6F42D554114AE4711DAAA50415C8FC2E5FB2D55413D0AD7C3E7AA5041C3F528BC072E554152B81E75F6AA50419A9999B90A2E55416666660603AB5041CDCCCCBC0E2E5541E17A14EE09AB504148E17A04112E5541AE47E19A1BAB5041C3F528FC102E5541295C8FD220AB5041666666D6F52D5541 + + + +01060000000100000001030000000100000006000000295C8FD220AB5041666666D6F52D5541B81E85CB20AB50417B14AE87F52D5541437244AFFDAA504143908339F52D5541313017541FAB50414293A393FA2D554139DEBAD41FAB504162741EFFFA2D5541295C8FD220AB5041666666D6F52D5541 + +1 + + + + 975328 - 1755529 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +01060000000100000001030000000100000011000000BF4C611B19EA5041C220B911FA80544125B95E2719EA50412EA0EBF0FA805441CCC5F0CF1CEA504173EE2094F98054412B1C1C981EEA5041560AE4E8F88054411CD0625429EA5041FF041818F5805441AF6A20242AEA5041CB1F42CEF48054419E13D1F62CEA5041560F3329F480544192481A222DEA50419BE2151EF48054410C53E54D2DEA5041E09E4F15F48054416004EA6835EA50419217633BF28054410CC7166031EA50410A0AECBCDC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA805441B0A9541919EA5041D11DE9B5ED8054419E095AE818EA5041B1DF2CEFED805441E96A4CC218EA5041A782F034EE805441BF4C611B19EA5041C220B911FA805441 + + + +0106000000010000000103000000020000003A00000088EE881719EA5041DA0E337AED805441B0A9541919EA5041D11DE9B5ED805441A1095AE818EA5041B2DF2CEFED805441E86A4CC218EA5041AA82F034EE805441C14C611B19EA5041BE20B911FA80544129B95E2719EA50412CA0EBF0FA8054418124492219EA5041CCF09BF5FA8054418F2B01C419EA50410A453C8A02815441B6383AF31AEA50418B90B654098154415C4297D11BEA504101B861E20C815441595FAE6C1EEA5041FEB0A9400C8154412E008D0528EA504138FCC7840981544152B81E5528EA504148E17A44098154417B14AE6737EA504114AE477104815441295C8FD243EA50413D0AD78302815441EC51B83E4DEA5041295C8FF200815441A4703DBA4DEA504133333393F980544185EB51384EEA5041AE47E10AF2805441B81E854B4EEA5041A4703DBAF0805441CDCCCC9C49EA5041E17A144ED58054410000004050EA5041EC51B8FED18054417B14AE4750EA5041F6285C1FD08054411F85EBC150EA5041333333F3B08054418FC2F51858EA504100000010AA805441F6285CEF72EA5041F6285CDF9080544152B81E5585EA5041AE47E19A7F8054415C8FC22590EA504148E17A74758054418FC2F52891EA5041EC51B80E65805441D6329F0891EA5041BD16B8146480544163482D787FEA50410EB25572698054413ADE4B5B7FEA5041D206DA8D69805441EDBCEA147AEA50414567FA4F6B805441FC64D8B970EA504151544DE96D80544139413ECC6EEA504160E705B26E805441BFF9C5D96CEA5041FA03CCC86F8054410B318F716AEA5041678D6E1F72805441B8A7908A65EA5041EAD8DA7E778054411230DBDA5FEA5041FFAC3BBE7D8054418A0BBA615BEA5041D11557A78280544136CF6CCC58EA50417DC3CC77858054419AF2FE3A57EA5041895144C58780544121FCF00752EA5041E3DE8027918054415CCCEE3F4FEA5041B7DEA5B395805441A4DE97EE4BEA5041466BD80E9B8054416A24D75049EA5041EAFDED4E9F8054410709F2BC48EA5041D6A2AC3DA0805441148F930847EA50414055BD65A2805441219AF3EE44EA5041FB00474FA4805441A26086AE35EA5041ED521B97AA805441D3128A7536EA5041AC950555B4805441BF70595733EA504189A8D5B1B4805441B9B9C0A32FEA5041E53E20D4B6805441A0F4CBF52CEA5041F8953378B88054413DBADB262DEA5041525890BFB880544119CFB05F31EA50413F326AC4DC80544193352CAE28EA5041D9FC6C6AE38054412CBA123F1EEA5041D2FEC582EA80544188EE881719EA5041DA0E337AED805441040000009913D1F62CEA5041570F3329F480544196481A222DEA5041A0E2151EF48054418052E54D2DEA5041FA9E4F15F48054419913D1F62CEA5041570F3329F4805441 + +1 + + + + 525923 - 45230 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +010600000001000000010300000001000000310000006666667675C950413D0AD723FC2E5441C3F528FC73C9504148E17A04FE2E5441C3F5281C73C9504133333393FF2E5441CDCCCC9C76C95041295C8F02082F54415C8FC24577C950419A999999092F54410000005078C9504152B81E95092F5441AE47E1AA7BC95041F6285C5F092F54410000008086C9504148E17A64082F5441A4703D2A87C95041E17A14BE082F5441CDCCCCAC86C950410AD7A320092F5441AE47E1AA7BC95041000000000A2F54411F85EB1178C95041295C8F620A2F54417B14AEE777C95041EC51B81E0B2F54415C8FC22578C9504148E17AB40B2F54411F85EBA181C95041CDCCCC8C222F54413333338382C95041333333E3222F544148E17AA48BC95041EC51B87E252F544185EB51E88FC95041713D0A97262F544185EB51E895C95041C3F5283C282F54410AD7A330A0C95041B81E859B302F544114AE4731A3C9504114AE4781332F5441C3F5280CA5C95041000000C0302F5441AE47E1FAA3C950418FC2F5882E2F5441B81E850BA2C95041D7A370ED2B2F54410AD7A3309DC95041333333A3252F544152B81EA58CC950413D0AD7930D2F5441713D0A2787C95041C3F5282C052F54416666669687C95041F6285C9F042F54411F85EBE18CC9504185EB51480C2F5441A4703DBA8DC950417B14AE070C2F54417B14AE2785C9504133333393FD2E5441000000A082C950410AD7A3E0F82E54410AD7A3907FC95041E17A142EF52E54413D0AD7F37DC950413D0AD7B3F42E54419A9999797EC950418FC2F528F62E54413D0AD78383C950418FC2F518FE2E54411F85EB2187C950411F85EB11042F54410000009086C9504152B81E45042F5441A4703DAA82C95041F6285C4FFE2E544114AE47517FC950413D0AD733F92E5441666666067EC95041295C8F62F62E5441EC51B80E7DC950417B14AEE7F52E544185EB51987CC9504114AE47B1F32E54415C8FC23570C950419A999979EA2E5441D7A3709D6BC950415C8FC265E02E5441B81E85CB66C95041A4703DEAE12E54417B14AEF76EC950418FC2F598F52E54419A9999F973C9504100000040F82E54416666667675C950413D0AD723FC2E5441 + + + +010600000001000000010300000001000000060000002EADC44C73C950417962AD3CFF2E544148A8F87175C95041EF284218FC2E5441934291FB73C9504179222545F82E54418DC0104D6FC95041E26A30C6F52E5441B3C1B42471C95041AA411ECCFA2E54412EADC44C73C950417962AD3CFF2E5441 + +1 + + + + 532351 - 3180577 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -2 + +0106000000050000000103000000010000000F0000007B14AE47B91E51417B14AE27B47A5441E17A145EB71E5141C3F528ECB47A544114AE4751B61E514152B81EF5B57A5441D7A370ADB31E514152B81E05B67A5441F6285C1FAD1E5141B81E85ABB77A5441333333B3B61E5141CDCCCCFCB87A54411F85EB11B91E514114AE4791B87A544166666676BA1E51418FC2F5C8B77A54417B14AE67BB1E5141CDCCCCACB67A5441F6285C0FBC1E5141AE47E1CAB57A5441AE47E1BABB1E514152B81E95B57A544114AE47F1BB1E5141D7A3700DB47A5441AE47E1BABB1E5141D7A3709DB37A54418FC2F5B8BA1E51410AD7A3A0B37A54417B14AE47B91E51417B14AE27B47A54410103000000010000000A000000E17A142EA51E51411F85EBE1B17A544100000090A11E514148E17AA4B17A544152B81E15A11E5141E17A141EB67A5441B81E857BAA1E5141EC51B84EB77A544152B81ED5B31E514166666616B57A5441D7A370BDB31E5141713D0AA7B47A544152B81EB5AE1E514185EB5108B47A544148E17AA4AE1E5141713D0A37B37A54413D0AD763AA1E5141CDCCCC7CB27A5441E17A142EA51E51411F85EBE1B17A5441010300000002000000160000001F85EB71EC1E5141C3F5281CB17A544185EB5128EB1E51418FC2F588AF7A54418FC2F5A8E91E5141713D0AA7B17A5441CDCCCC4CDF1E51411F85EBE1AF7A544166666676DF1E5141EC51B82EAF7A5441F6285CBFE81E514114AE4721AF7A54411F85EB51E91E5141295C8F42AE7A54419A999939D21E5141F6285C5FAB7A54417B14AEA7C61E5141D7A370CDA97A5441B81E851BC51E514114AE4731AA7A54418FC2F5C8C41E51413D0AD743AB7A5441C3F528CCC41E514133333353AD7A54417B14AED7C71E5141A4703DDAAD7A54417B14AE17C91E514152B81EA5AE7A54419A999989C91E51419A999989AF7A544152B81EE5C91E51415C8FC295AF7A54418FC2F5D8C91E51410AD7A3C0AF7A5441A4703D7AD11E5141AE47E1AAB07A544100000090EB1E51419A999959B57A5441666666C6EB1E51410AD7A320B47A544148E17A04EC1E5141F6285CDFB17A54411F85EB71EC1E5141C3F5281CB17A544105000000713D0A97D91E514100000040AD7A5441000000F0D81E5141E17A142EAD7A5441AE47E1FAD81E51418FC2F5C8AC7A5441295C8FA2D91E5141B81E85DBAC7A5441713D0A97D91E514100000040AD7A54410103000000010000000E00000052B81ED5111F5141F6285CDFB97A5441295C8FC20D1F514152B81E15B77A54413D0AD7E3071F5141A4703D0AB57A544148E17A94FD1E5141666666F6B17A5441EC51B8AEF51E5141A4703D0AB17A5441E17A140EF11E5141C3F5282CAF7A5441A4703DCAEF1E5141D7A3702DB07A5441C3F528ECED1E5141F6285CBFB47A54415C8FC285FB1E514166666686B77A54411F85EB51071F5141AE47E1CABA7A5441D7A3702D101F514166666626BE7A54419A999929121F5141F6285C4FBF7A54410AD7A360151F51418FC2F538BC7A544152B81ED5111F5141F6285CDFB97A54410103000000010000000F000000EC51B89EA21E514114AE47D1A77A544100000080A21E5141000000F0A87A544100000030A21E514185EB51D8AB7A544152B81E45AF1E51413D0AD773AB7A544185EB51A8B01E51415C8FC2B5A97A544133333383B91E514114AE4731AA7A544152B81EF5C11E5141666666F6A87A5441D7A370DDC01E514133333323A87A5441D7A3706DBF1E51418FC2F5E8A77A5441D7A3700DBC1E5141E17A146EA77A54411F85EBE1B81E5141295C8F62A77A54410AD7A310B81E514152B81E45A77A544166666606B51E5141000000B0A77A544185EB5198AF1E5141E17A143EA77A5441EC51B89EA21E514114AE47D1A77A5441 + + + +0106000000010000000103000000010000000D000000665A6437A21E514171778B93AB7A544159DB026DA21E51410F537DD6AB7A5441AB6A7D34AF1E514169C45674AB7A5441F2CD22B5B01E5141035575B6A97A54415139B88CB91E514148BBE42FAA7A5441E6B49FA5C11E514107F7D6E7A87A5441330EEEBAC01E5141ED07BD1DA87A54418E7E8C1FBC1E51417676D7E4A77A5441DA182420B81E51411EF24C47A77A54410B5B86FCB41E514148D230AFA77A54415F0943B7AF1E5141DDA19D40A77A5441C163F0C0A21E51410478C3CFA77A5441665A6437A21E514171778B93AB7A5441 + +1 + + + + 587497 - 409926 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 2 + +0106000000010000000103000000010000000A00000052B81E457B3C51410AD7A3F04967544148E17A047A3C51416666665626675441A4703D8A773C5141A4703D1A2567544152B81E95733C51413D0AD79321675441000000F0743C5141E17A14DE46675441AE47E19A753C5141B81E851B5967544152B81E35783C5141AE47E1DA58675441713D0AC7783C51419A9999A96B67544152B81E857C3C5141AE47E18A6D67544152B81E457B3C51410AD7A3F049675441 + + + +01060000000100000001030000000100000014000000C2DD97B2733C514113B1F3BE24675441FECDBCF2703C514192B37A8E21675441491ADF3F6F3C5141B86C9815206754418F63E1226F3C51411F6C98152067544157AEF33A6E3C514198DCB3B91E675441537C342F6D3C514120D49C221E675441458C0A196D3C5141D594C10B1E67544153A4A14F683C5141E51737911D67544168F79A09693C51411FD40A1741675441A1F938B6693C5141D133374A6367544110AD838A6F3C514179EC79676367544101E6B76D6F3C51419D8376C7636754410199958B6F3C51412B60D8ED6667544152B81EE56F3C5141B81E851B676754413AD5EC0B763C51415493273E6A675441088E89EE753C51419D2EDE3B686754414FA0B527763C514133F1EE5468675441AE47E19A753C5141B81E851B59675441000000F0743C5141E17A14DE46675441C2DD97B2733C514113B1F3BE24675441 + +1 + + + + 589978 - 39794 +abs( area(A) - difference(A,B) - intersection(A,B) ) = 3 + +01060000000100000001030000000200000016000000AE47E1EAED9C50411F85EBF1E37B5441B81E85FBF79C5041B81E85DBE17B5441713D0AB7059D50417B14AE47E07B54411F85EB110C9D504148E17A24E07B54418FC2F598209D5041713D0AA7E17B544148E17A44239D50418FC2F5A8DB7B5441C3F528EC259D504185EB5198D77B54413D0AD7C32B9D5041B81E855BD17B544185EB51D8309D5041CDCCCC0CCC7B5441A4703D0A309D50410AD7A320CC7B5441EC51B85E209D5041AE47E1FACE7B5441333333431A9D5041713D0A17D07B54418FC2F538089D5041D7A3705DD27B54415C8FC255FF9C5041A4703D2AD47B54410AD7A380F59C5041C3F5282CD77B544100000090F49C504133333383D77B544133333303E79C5041C3F5281CDC7B5441EC51B83EDD9C5041713D0A67E07B544114AE47C1D69C504185EB51D8E37B544185EB5118DC9C5041713D0AC7EA7B5441D7A3707DE89C5041CDCCCCCCE57B5441AE47E1EAED9C50411F85EBF1E37B54410F000000A4703DAA219D50418FC2F5F8D17B544148E17A542B9D5041AE47E1FACF7B5441666666E62A9D5041EC51B81ED17B544185EB51C80B9D5041295C8FF2D67B5441B81E85FBFD9C50413D0AD713D97B5441295C8FA2F49C504185EB5158DB7B544166666616E99C50419A999939DF7B5441F6285C2FE09C5041A4703D4AE37B5441295C8FF2DF9C5041C3F528DCE27B5441295C8F22EB9C5041713D0A97DD7B544148E17AD4F49C50419A9999A9DA7B544152B81E85FD9C504114AE4741D87B54410AD7A3700C9D504152B81E85D57B5441D7A3709D1A9D5041713D0A97D37B5441A4703DAA219D50418FC2F5F8D17B5441 + + + +0106000000010000000103000000010000001C0000001DDB3460E49C5041C2798DDDE87B5441DD941617ED9C50411F0292D8E57B54411E67F240ED9C50412E1782C8E57B54413E1C4A86F19C5041F950DAC2E47B544100583A97F49C50415EFBD202E47B544102D115CEF49C5041BF1FE0F9E37B544110ABFC5DF59C5041CCF66FD7E37B54412CDD39A8FD9C50413993F085E27B5441DACEA3E1FD9C504166C9D77EE27B544174047CECFD9C504110EA127DE27B54413E3B4637059D5041016CC096E17B54410A1E724E069D504143653E74E17B5441FCACB282099D5041AAABD870E17B5441691C90890C9D50414B8B2156E17B5441B8EC4BA0129D50418F5575C5E17B544166E0412C1B9D5041B76DAE5FE27B544127D9923E209D50410A065D9DE27B54412C6B05A5209D5041C10D1C87E17B54415053B832189D5041E95FDE08E17B5441CD997811109D5041C1B3C56FE07B54416C152827099D50417D29A334E07B5441AA5B23C2029D504150C1A09EE07B5441976A1120FC9C5041F9EFB061E17B5441090C4920F49C5041A13A46A8E27B54419AD1AA7FED9C5041BC1D9016E47B54410908B011E89C50413C0A12F8E57B54410D80C929E39C5041C10E68F0E77B54411DDB3460E49C5041C2798DDDE87B5441 + +1 + + + + 671968 - 1396084 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -4 + +01060000000100000001030000000200000043000000773AEE5C36C35041952DEA16AA15554101B3DB5336C350412E0E5D19AA15554118980D6736C35041ED2F7355AA15554106864A7936C35041698089A0AA155541C6BE947C36C3504196DEE3AFAA1555414785F57A36C350416A659EB0AA155541105DEE8936C35041364D56EDAA1555411A34929A36C35041D9BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF155541D3E34FA749C350410E53C443AB15554152B81EF549C35041CDCCCCACA9155541F8C21D094AC3504193300D44A9155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A999959831555419A9999994FC35041A4703D7A811555415C8FC2254CC35041E17A14BE8C155541A4703DDA44C3504152B81E358C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541F2003A4236C35041CC08C2A6A9155541773AEE5C36C35041952DEA16AA1555410C00000032D16BC845C35041CA0C3C31A915554132D16BC845C3504103BEB5DEAB155541DF224B4345C35041CDE06426AC155541BE3E5F4D3AC35041510FE03AAC1555411627EA8437C35041BD9A2BA5AA1555410327AD6E37C35041FDD0149CAA1555412546D87537C35041C2C1969CAA15554150B40C6C37C35041D3D50297AA155541D05542C83AC3504143ED9A30AA155541BBB119953DC3504131D6B7B5A915554132D16BC845C35041DD279730A915554132D16BC845C35041CA0C3C31A9155541 + + + +01060000000100000001030000000200000041000000F8994F264CC35041534848BC8C1555417B14AEE740C35041666666D68B155541AE47E19A38C35041D7A3701D8B1555410AD7A3D038C350410000005086155541713D0AB737C35041CDCCCCFC85155541000000E037C35041713D0A977D1555417B14AEA732C3504114AE47417E155541D7A3709D33C35041666666E67A155541713D0A772FC350413D0AD703791555415C8FC20527C35041AE47E16A77155541CDCCCCAC23C35041D7A3700D8A15554114AE478127C35041E17A142E91155541333333732BC3504114AE47A1971555413333338331C3504185EB51E89A1555415C8FC23533C350413D0AD7A39B15554152B81E5533C3504185EB51E89C155541295C8F8233C35041F6285CFF9D1555413D0AD7B333C35041EC51B8FE9E155541AE47E10A34C35041EC51B81EA0155541E17A14AE35C3504152B81E35A7155541ED003A4236C35041CF08C2A6A91555417B3AEE5C36C35041912DEA16AA15554104B3DB5336C350412E0E5D19AA15554119980D6736C35041EE2F7355AA1555410B864A7936C35041678089A0AA155541C9BE947C36C3504197DEE3AFAA1555414885F57A36C3504166659EB0AA155541155DEE8936C35041344D56EDAA1555411534929A36C35041D8BD9337AB1555418FC2F5A836C3504148E17A74AB155541D7A370BD34C35041713D0A57AF155541295C8F722EC3504152B81E15BC155541A4703D5A23C35041EC51B89ECA1555413D0AD7D31AC35041713D0A97D8155541C3F528DC26C35041F6285C4FE415554148E17AE427C350415C8FC205E71555413333335328C3504185EB5178E5155541EC51B88E28C350419A9999A9E41555413D0AD76329C3504166666676E11555410AD7A3102AC3504185EB5138DF1555418FC2F5E82BC35041EC51B8EED715554148E17A342EC35041F6285C4FCF155541B81E854B31C350415C8FC2A5C4155541A4703D1A39C35041B81E855BC9155541E17A148E35C350419A999919D715554152B81E8530C3504185EB5178EC155541E17A14AE29C3504185EB51B8EB1555410AD7A3E02AC3504114AE4771EF155541AE47E1CA2AC3504114AE4721FF155541F6285C7F2BC3504152B81E850C1655413D0AD72335C35041C3F528BC0E165541713D0A9738C3504114AE477110165541AE47E15A3CC35041E17A144E121655415C8FC2553CC350410AD7A37011165541D7A370ED3EC350418FC2F5D8FD1555415C8FC27540C35041A4703D4AE4155541D7A3709D45C3504148E17A54CD1555410AD7A3E045C35041F6285C7FCB1555417B14AEE748C35041E17A142EAF15554152B81EF549C35041CDCCCCACA9155541A0AC12BB4AC35041F9D9AB01A6155541713D0AA74CC35041EC51B88E9B155541713D0AE752C350419A99995983155541CF9999994FC35041A4703D7A81155541F8994F264CC35041534848BC8C1555410C00000005DEFFC145C35041FA67FF30A915554105DEFFC145C350414278783FA9155541CAF2DA9945C35041EAABC8F7AB155541DE224B4345C35041CBE06426AC155541BF3E5F4D3AC35041550FE03AAC155541E526EA8437C35041A39A2BA5AA1555410027AD6E37C35041FDD0149CAA1555412846D87537C35041C3C1969CAA1555414EB40C6C37C35041D3D50297AA155541D05542C83AC3504141ED9A30AA155541B8B119953DC3504130D6B7B5A915554105DEFFC145C35041FA67FF30A9155541 + +1 + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml geos-3.2.2/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml --- geos-3.1.0/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/stmlf/stmlf-cases-20070119.xml 2009-05-02 09:44:52.000000000 +0100 @@ -0,0 +1,22 @@ + + + + + 3440675 - 39440 +abs( area(A) - difference(A,B) - intersection(A,B) ) = -12 + +01060000000100000001030000000100000010000000ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F3389854419A99995994045141333333F33A985441EC51B81E94045141000000003F985441713D0A6799045141666666763F985441CDCCCCEC9D045141F6285C1F3F9854419A9999C9A3045141EC51B8DE3D985441666666E6AE0451411F85EBB13A985441E17A142EB8045141AE47E1CA36985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F9720736985441 + + + +01060000000100000001030000000100000011000000D7A3701D940451413D0AD7F33898544178DBFF36940451412E6318CD399854413579ED179A045141A0FF7BA5389854414304D81EA004514159B9FE6C3798544169437462A504514119BA06A235985441C01AAF28AB04514110CF31A333985441089AA624AF045141250D45D63298544191CD99DAB1045141B3DFA81232985441A5696F63B60451416745560832985441333333A3B50451419A999909309854411948A539AD045141A264514632985441BAB6FD20A904514187AD325D33985441B88E923AA6045141C428A32234985441ABE5901B9F04514172F97207369854418AE1115E9B0451413A1E1606379854412FC8508A96045141574FB94E38985441D7A3701D940451413D0AD7F338985441 + +5 + + + diff -Nru geos-3.1.0/tests/xmltester/tests/TestBufferExternal2.xml geos-3.2.2/tests/xmltester/tests/TestBufferExternal2.xml --- geos-3.1.0/tests/xmltester/tests/TestBufferExternal2.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/TestBufferExternal2.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,508 @@ + + + Basic buffer test cases. + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + #1 Polygon - gid: 2501 + + POLYGON((152663.569985 545814.381985,152650.846985 545793.256985,152627.901985 545778.769985,152678.109985 545771.821985,152727.534985 545773.861985,152781.614985 545740.377985,152811.447985 545734.737985,152805.889985 545712.243985,152779.265985 545710.106985,152757.181985 545678.531985,152728.757985 545672.422985,152667.835985 545695.186985,152611.069985 545717.462985,152570.710985 545744.322985,152523.739985 545745.457985,152517.151985 545743.782985,152484.214985 545735.408985,152436.306985 545736.893985,152438.217985 545750.268985,152430.574985 545761.733985,152394.269985 545761.733985,152371.340985 545769.376985,152363.697985 545788.483985,152367.457985 545791.825985,152370.144985 545794.213985,152380.894985 545803.770985,152403.823985 545794.216985,152436.384985 545810.298985,152453.895985 545794.486985,152489.732985 545814.599985,152492.430985 545838.063985,152521.966985 545844.735985,152539.616985 545818.847985,152582.766985 545797.723985,152629.325985 545840.687985,152634.972885 545846.287385,152649.676985 545837.847985,152663.569985 545814.381985)) + POLYGON( EMPTY) + + #2 Polygon - gid: 2502 + + POLYGON((142903.674985 525488.153985,142887.424985 525486.421985,142876.299985 525510.439985,142859.487985 525524.993985,142857.580985 525565.813985,142858.104985 525616.072985,142881.339985 525658.486985,142907.528985 525716.283985,142929.703985 525786.082985,142957.279985 525858.237985,142960.930985 525890.791985,142975.490985 525922.709985,142984.234985 525947.127985,142986.419985 525953.232985,142993.173985 525984.254985,143000.571985 526013.485985,143007.015985 526020.469985,143016.093985 526003.985985,143035.005985 525986.830985,143053.948985 525965.933985,143071.269985 525941.972985,143091.351985 525917.505985,143099.479985 525910.991985,143095.500985 525903.225985,143092.658985 525881.416985,143085.816985 525850.459985,143076.886985 525815.718985,143061.518985 525786.881985,143044.455985 525757.313985,143032.301985 525728.902985,143013.483985 525713.680985,143000.030985 525684.275985,143000.320985 525648.294985,143005.159985 525613.976985,143003.725985 525572.864985,143004.494985 525550.515985,143001.962985 525548.017985,142985.622985 525535.307985,142974.204985 525515.602985,142968.977985 525509.074985,142939.044985 525498.260985,142903.674985 525488.153985)) + POLYGON( EMPTY) + + #3 Polygon - gid: 2503 + + POLYGON((146220.994985 549967.552985,146213.166985 549966.121985,146208.007985 549968.568985,146206.036985 549974.608985,146205.864985 549983.214985,146206.109985 549988.066985,146208.381985 549999.999985,146322.285985 549999.999985,146316.339985 549994.911985,146312.438985 549992.675985,146308.350985 549990.750985,146302.286985 549988.489985,146293.636985 549985.962985,146269.463985 549981.745985,146257.525985 549979.090985,146240.391985 549974.375985,146234.981985 549972.660985,146220.994985 549967.552985)) + POLYGON( EMPTY) + + #4 Polygon - gid: 2504 + + POLYGON((144896.566985 524882.672985,144899.299985 524881.825985,144903.913985 524879.874985,144908.281985 524877.329985,144911.797985 524874.348985,144913.851985 524871.090985,144914.168985 524869.389985,144913.622985 524865.233985,144911.859985 524860.681985,144909.399985 524856.197985,144906.748985 524852.222985,144903.927985 524848.842985,144900.666985 524845.737985,144897.109985 524842.856985,144889.669985 524837.573985,144883.779985 524833.850985,144879.800985 524831.683985,144875.716985 524829.743985,144871.552985 524828.061985,144867.693985 524826.762985,144863.373985 524825.537985,144816.049985 524814.269985,144768.463985 524802.145985,144743.475985 524796.359985,144724.202985 524791.404985,144714.293985 524789.489985,144705.353985 524788.164985,144700.870985 524787.764985,144696.389985 524787.619985,144689.024985 524787.828985,144680.046985 524788.515985,144662.118985 524790.538985,144653.609985 524791.745985,144640.283985 524793.947985,144634.330985 524794.724985,144629.764985 524794.975985,144620.521985 524795.100985,144615.989985 524795.370985,144611.611985 524796.041985,144606.579985 524797.679985,144602.565985 524799.585985,144598.598985 524801.833985,144594.733985 524804.380985,144591.026985 524807.186985,144587.534985 524810.208985,144584.313985 524813.405985,144581.419985 524816.734985,144581.806985 524818.560985,144583.642985 524822.862985,144586.460985 524826.772985,144589.858985 524829.672985,144591.561985 524830.552985,144595.734985 524831.793985,144604.956985 524833.056985,144609.445985 524833.994985,144619.190985 524837.204985,144627.621985 524840.384985,144636.348985 524843.925985,144652.801985 524851.249985,144701.221985 524871.437985,144720.997985 524878.409985,144729.636985 524881.012985,144733.994985 524882.035985,144740.905985 524883.100985,144745.358985 524883.385985,144749.845985 524883.427985,144772.449985 524882.398985,144799.041985 524881.859985,144816.235985 524881.915985,144834.523985 524882.327985,144857.002985 524883.450985,144883.361985 524884.143985,144887.877985 524883.994985,144892.292985 524883.537985,144896.566985 524882.672985)) + POLYGON( EMPTY) + + #5 Polygon - gid: 2505 + + POLYGON((144446.439985 524841.154985,144441.934985 524841.141985,144435.845985 524841.674985,144425.648985 524843.342985,144420.748985 524844.729985,144417.119985 524846.780985,144415.753985 524848.861985,144415.428985 524852.340985,144416.080985 524856.335985,144417.458985 524860.698985,144419.313985 524865.282985,144423.459985 524874.528985,144425.249985 524878.896985,144427.325985 524883.109985,144429.289985 524885.370985,144439.587985 524894.381985,144443.173985 524897.220985,144446.878985 524899.799985,144450.724985 524902.010985,144453.174985 524903.142985,144457.321985 524904.547985,144461.659985 524905.496985,144466.133985 524906.119985,144479.827985 524907.342985,144483.155985 524907.782985,144517.007985 524913.042985,144521.480985 524913.453985,144530.608985 524913.781985,144550.777985 524913.633985,144559.793985 524913.451985,144568.795985 524913.012985,144574.880985 524912.364985,144579.291985 524911.566985,144594.257985 524907.594985,144607.560985 524904.598985,144611.775985 524903.277985,144615.327985 524899.282985,144614.465985 524894.617985,144613.841985 524893.603985,144607.933985 524886.826985,144601.507985 524880.434985,144594.663985 524874.523985,144591.115985 524871.777985,144586.969985 524868.873985,144583.162985 524866.495985,144575.256985 524862.134985,144558.682985 524853.946985,144554.551985 524852.069985,144550.343985 524850.422985,144546.048985 524849.133985,144540.520985 524848.023985,144536.086985 524847.329985,144522.628985 524845.891985,144507.564985 524844.759985,144480.579985 524843.741985,144461.960985 524842.043985,144446.439985 524841.154985)) + POLYGON( EMPTY) + + #6 Polygon - gid: 2506 + + POLYGON((144455.196985 524980.805985,144461.047985 524980.714985,144465.526985 524981.158985,144474.517985 524982.448985,144479.009985 524982.843985,144490.646985 524982.725985,144495.270985 524982.522985,144499.829985 524982.093985,144504.251985 524981.331985,144508.466985 524980.130985,144509.918985 524979.570985,144513.913985 524977.623985,144517.852985 524975.167985,144521.610985 524972.300985,144525.060985 524969.118985,144528.074985 524965.720985,144530.334985 524962.519985,144532.084985 524958.448985,144532.948985 524953.701985,144532.919985 524948.863985,144531.990985 524944.516985,144529.776985 524940.368985,144526.744985 524936.825985,144523.097985 524933.699985,144519.179985 524931.193985,144517.924985 524930.555985,144513.860985 524929.018985,144509.523985 524927.994985,144493.342985 524925.809985,144437.476985 524916.661985,144433.088985 524915.698985,144428.782985 524914.494985,144423.543985 524912.609985,144419.404985 524910.860985,144411.280985 524906.906985,144400.576985 524901.079985,144396.728985 524898.765985,144393.000985 524896.236985,144385.751985 524890.870985,144381.960985 524887.848985,144375.108985 524881.988985,144371.554985 524879.239985,144363.304985 524873.572985,144355.718985 524868.636985,144347.909985 524864.180985,144344.379985 524862.452985,144340.237985 524860.702985,144335.937985 524859.212985,144331.535985 524858.026985,144327.084985 524857.185985,144323.250985 524856.770985,144318.804985 524856.633985,144309.840985 524857.119985,144296.319985 524858.530985,144291.864985 524858.855985,144278.326985 524858.971985,144273.869985 524859.393985,144269.275985 524860.279985,144251.862985 524864.968985,144247.472985 524865.953985,144238.178985 524867.630985,144229.241985 524868.924985,144219.237985 524869.738985,144214.767985 524869.549985,144205.816985 524868.188985,144200.865985 524867.789985,144191.538985 524867.752985,144186.945985 524868.099985,144182.709985 524869.007985,144181.284985 524869.531985,144177.852985 524872.620985,144176.025985 524877.123985,144175.996985 524878.261985,144176.451985 524882.564985,144177.369985 524887.022985,144178.706985 524891.527985,144180.417985 524895.971985,144182.460985 524900.245985,144184.791985 524904.243985,144188.570985 524909.302985,144191.772985 524912.018985,144195.672985 524914.042985,144208.945985 524918.742985,144213.022985 524920.777985,144217.149985 524923.817985,144220.469985 524926.853985,144226.873985 524933.289985,144230.199985 524936.340985,144232.588985 524938.226985,144239.984985 524943.454985,144247.712985 524948.238985,144251.712985 524950.295985,144255.808985 524952.038985,144260.553985 524953.530985,144264.923985 524954.479985,144269.384985 524955.181985,144282.909985 524956.875985,144311.048985 524961.124985,144317.314985 524962.407985,144321.673985 524963.513985,144325.997985 524964.818985,144330.259985 524966.323985,144337.091985 524969.241985,144349.052985 524975.446985,144371.128985 524988.101985,144374.990985 524990.509985,144382.600985 524995.675985,144386.503985 524997.875985,144390.576985 524999.444985,144395.149985 525000.415985,144399.750985 525000.903985,144404.419985 525000.929985,144408.992985 525000.459985,144413.301985 524999.458985,144417.441985 524997.544985,144421.099985 524994.911985,144428.244985 524988.981985,144432.035985 524986.535985,144437.425985 524984.344985,144441.760985 524983.043985,144446.208985 524982.029985,144450.707985 524981.288985,144455.196985 524980.805985)) + POLYGON( EMPTY) + + #7 Polygon - gid: 2507 + + POLYGON((144180.284985 525120.032985,144183.832985 525116.794985,144186.310985 525113.187985,144186.773985 525112.080985,144187.835985 525108.131985,144188.392985 525103.916985,144188.543985 525099.491985,144188.385985 525094.909985,144188.017985 525090.227985,144186.627985 525076.124985,144185.841985 525059.007985,144185.204985 525050.018985,144184.199985 525041.093985,144182.718985 525031.683985,144181.494985 525027.301985,144179.611985 525023.346985,144176.818985 525019.465985,144173.767985 525015.993985,144170.357985 525012.802985,144166.672985 525010.048985,144162.791985 525007.884985,144158.428985 525006.304985,144154.095985 525005.337985,144140.459985 525003.668985,144135.956985 525002.943985,144132.489985 525002.111985,144128.279985 525000.587985,144116.048985 524994.706985,144112.117985 524993.299985,144098.939985 524989.717985,144094.477985 524988.770985,144090.015985 524988.064985,144085.573985 524987.673985,144082.099985 524987.632985,144077.708985 524988.016985,144073.317985 524988.862985,144068.938985 524990.056985,144060.269985 524993.031985,144056.006985 524994.585985,144051.298985 524996.571985,144039.237985 525003.001985,144035.090985 525004.553985,144033.429985 525004.964985,144029.061985 525005.651985,144024.594985 525005.978985,144020.064985 525006.023985,144015.503985 525005.866985,144005.304985 525005.175985,144000.845985 525004.540985,143991.981985 525002.425985,143987.562985 525001.659985,143984.325985 525001.504985,143979.862985 525001.775985,143975.358985 525002.379985,143970.879985 525003.298985,143966.493985 525004.512985,143962.267985 525006.001985,143957.854985 525007.995985,143953.888985 525010.251985,143950.109985 525012.839985,143946.599985 525015.694985,143944.902985 525017.266985,143941.891985 525020.593985,143939.241985 525024.341985,143937.049985 525028.360985,143935.728985 525031.561985,143947.089985 525038.847985,143958.611985 525045.903985,143978.120985 525057.118985,143986.179985 525061.258985,144002.539985 525068.796985,144015.419985 525074.941985,144023.406985 525079.086985,144032.735985 525085.069985,144047.490985 525095.410985,144052.695985 525098.806985,144056.554985 525101.113985,144071.198985 525108.843985,144087.471985 525116.537985,144095.654985 525120.979985,144099.734985 525122.957985,144103.931985 525124.188985,144108.802985 525124.422985,144113.258985 525123.960985,144122.292985 525122.295985,144135.544985 525120.385985,144140.040985 525119.859985,144144.496985 525119.751985,144146.224985 525119.877985,144150.651985 525120.958985,144159.475985 525124.711985,144163.736985 525125.992985,144167.459985 525126.023985,144171.674985 525124.798985,144176.090985 525122.751985,144180.284985 525120.032985)) + POLYGON( EMPTY) + + #8 Polygon - gid: 2508 + + POLYGON((145511.322985 525055.058985,145421.842985 525011.893985,145360.382985 525010.401985,145268.686985 525018.327985,145146.589985 524998.812985,145037.826985 525008.605985,144973.835985 525025.487985,145025.537985 525040.060985,145053.665985 525046.467985,145095.857985 525056.078985,145116.953985 525060.883985,145237.680985 525091.930985,145337.492985 525112.002985,145422.613985 525124.136985,145582.586985 525143.477985,145594.862985 525133.291985,145599.488985 525122.480985,145601.426985 525108.224985,145582.118985 525096.831985,145543.502985 525074.046985,145511.322985 525055.058985)) + POLYGON( EMPTY) + + #9 Polygon - gid: 2509 + + POLYGON((144327.439985 525055.359985,144323.575985 525054.083985,144319.137985 525053.820985,144309.540985 525054.540985,144304.876985 525054.629985,144288.008985 525053.381985,144279.029985 525053.080985,144271.827985 525053.508985,144258.386985 525054.981985,144243.660985 525055.827985,144230.778985 525056.779985,144226.202985 525057.165985,144221.779985 525057.904985,144216.743985 525059.629985,144212.867985 525061.883985,144209.230985 525064.754985,144205.958985 525068.049985,144203.179985 525071.576985,144199.872985 525077.084985,144197.994985 525081.332985,144196.679985 525085.738985,144196.099985 525090.172985,144195.983985 525096.039985,144196.147985 525105.052985,144196.712985 525114.141985,144198.291985 525127.709985,144199.820985 525136.570985,144200.724985 525140.909985,144204.646985 525148.438985,144214.701985 525150.449985,144224.757985 525146.427985,144239.841985 525143.410985,144256.935985 525142.405985,144273.025985 525137.377985,144284.086985 525131.343985,144293.136985 525124.304985,144300.175985 525117.265985,144311.054985 525104.626985,144312.513985 525103.587985,144316.441985 525102.209985,144321.398985 525100.876985,144326.356985 525099.200985,144330.789985 525096.313985,144333.887985 525092.901985,144336.779985 525088.924985,144339.157985 525084.646985,144340.713985 525080.335985,144341.139985 525076.255985,144340.875985 525074.291985,144339.526985 525070.035985,144337.293985 525065.704985,144334.418985 525061.624985,144331.142985 525058.119985,144327.439985 525055.359985)) + POLYGON( EMPTY) + + #10 Polygon - gid: 2510 + + POLYGON((144510.896985 525506.174985,144491.815985 525502.887985,144452.960985 525504.373985,144356.543985 525498.078985,144342.420985 525498.616985,144329.347985 525503.644985,144327.336985 525503.644985,144316.275985 525508.672985,144310.241985 525515.711985,144314.264985 525527.778985,144324.779985 525538.713985,144356.897985 525552.292985,144379.210985 525556.506985,144460.334985 525561.721985,144473.144985 525559.956985,144485.211985 525553.922985,144497.278985 525540.850985,144512.361985 525525.766985,144520.406985 525516.716985,144517.389985 525510.683985,144510.896985 525506.174985)) + POLYGON( EMPTY) + + #11 Polygon - gid: 2511 + + POLYGON((145442.154985 525572.074985,145501.507985 525553.758985,145522.070985 525554.647985,145516.394985 525541.746985,145505.936985 525519.454985,145532.899985 525496.685985,145547.030985 525513.347985,145591.958985 525554.366985,145632.751985 525552.852985,145668.799985 525544.771985,145702.316985 525529.254985,145724.534985 525515.925985,145745.168985 525499.920985,145723.440985 525498.117985,145705.446985 525491.319985,145691.799985 525487.926985,145650.858985 525477.747985,145578.241985 525453.820985,145543.290985 525453.401985,145502.225985 525452.909985,145398.531985 525436.386985,145380.777985 525443.215985,145344.364985 525481.970985,145328.089985 525529.882985,145370.877985 525553.686985,145442.154985 525572.074985)) + POLYGON( EMPTY) + + #12 Polygon - gid: 2512 + + POLYGON((144625.991985 525513.700985,144598.841985 525508.672985,144583.757985 525509.677985,144566.662985 525514.705985,144552.584985 525519.733985,144542.529985 525530.794985,144526.439985 525542.861985,144519.400985 525555.934985,144519.400985 525571.017985,144522.417985 525577.051985,144538.506985 525584.090985,144554.595985 525589.117985,144566.662985 525595.151985,144585.768985 525597.162985,144602.863985 525597.162985,144612.919985 525594.145985,144623.980985 525590.123985,144647.108985 525580.067985,144660.180985 525574.034985,144674.259985 525562.973985,144689.342985 525551.911985,144692.359985 525544.872985,144691.353985 525537.833985,144678.281985 525530.794985,144658.169985 525524.761985,144625.991985 525513.700985)) + POLYGON( EMPTY) + + #13 Polygon - gid: 2513 + + POLYGON((146081.670985 525417.759985,146034.312985 525383.398985,146018.183985 525405.148985,145997.047985 525436.541985,145975.994985 525451.787985,145927.068985 525472.385985,145872.869985 525488.849985,145830.388985 525510.994985,145793.352985 525537.222985,145768.063985 525549.233985,145754.442985 525585.944985,145741.111985 525601.945985,145729.163985 525609.328985,145747.791985 525621.222985,145785.820985 525616.608985,145835.405985 525606.033985,145888.006985 525585.051985,145922.153985 525572.522985,145965.920985 525551.110985,145987.088985 525544.372985,146029.350985 525531.069985,146071.462985 525518.113985,146123.223985 525504.811985,146160.742985 525500.837985,146164.508985 525498.816985,146132.472985 525456.997985,146081.670985 525417.759985)) + POLYGON( EMPTY) + + #14 Polygon - gid: 2514 + + POLYGON((147625.665985 525733.355985,147685.615985 525723.612985,147746.451985 525726.828985,147807.643985 525705.752985,147778.828985 525680.379985,147736.635985 525673.137985,147681.802985 525656.781985,147634.046985 525660.702985,147593.909985 525649.092985,147543.925985 525630.287985,147525.748985 525647.754985,147521.204985 525652.120985,147486.998985 525649.400985,147473.315985 525648.312985,147433.858985 525642.752985,147433.938985 525662.319985,147457.769985 525676.556985,147464.271985 525685.355985,147463.991985 525695.137985,147478.318985 525707.779985,147479.694885 525707.945085,147513.227985 525711.970985,147572.805985 525729.496985,147625.665985 525733.355985)) + POLYGON( EMPTY) + + #15 Polygon - gid: 2515 + + POLYGON((149067.995985 525965.488985,149025.297985 525963.470985,148994.143985 525964.208985,148997.616985 525989.339985,149029.151985 526015.805985,149120.123985 526059.526985,149131.062985 526066.577985,149148.502985 526077.820985,149183.975985 526087.501985,149232.395985 526086.935985,149294.555985 526084.930985,149312.038985 526079.485985,149314.993985 526078.565985,149316.243985 526056.762985,149244.224985 526035.142985,149176.959985 526005.418985,149113.972985 525980.563985,149067.995985 525965.488985)) + POLYGON( EMPTY) + + #16 Polygon - gid: 2516 + + POLYGON((150716.409985 526216.711985,150707.088985 526192.800985,150622.180985 526127.431985,150583.008985 526115.338985,150539.865985 526092.923985,150506.113985 526087.030985,150457.230985 526063.119985,150414.652985 526045.317985,150412.516485 526044.107285,150403.373985 526054.606985,150398.109985 526096.678985,150386.500985 526126.603985,150356.405985 526157.275985,150349.132985 526185.598985,150364.836985 526203.184985,150392.348985 526202.980985,150449.647985 526187.409985,150479.794985 526174.863985,150494.337985 526175.134985,150530.693985 526175.812985,150537.911985 526177.023985,150588.433985 526185.497985,150654.506985 526212.614985,150706.931985 526211.847985,150716.409985 526216.711985)) + POLYGON( EMPTY) + + #17 Polygon - gid: 2517 + + POLYGON((142576.939985 544993.306985,142591.447985 544982.626985,142598.216985 544976.869985,142601.519985 544973.710985,142604.578985 544970.396985,142606.691985 544967.715985,142607.297985 544962.618985,142603.363985 544961.993985,142598.959985 544961.672985,142594.273985 544961.623985,142589.490985 544961.812985,142582.524985 544962.474985,142578.110985 544963.214985,142573.719985 544964.260985,142569.373985 544965.557985,142561.217985 544968.551985,142557.131985 544970.386985,142553.145985 544972.465985,142545.288985 544976.918985,142529.062985 544985.730985,142525.008985 544987.637985,142521.706985 544988.893985,142517.221985 544989.644985,142511.940985 544988.902985,142507.623985 544990.118985,142503.346985 544991.624985,142499.158985 544993.401985,142495.106985 544995.428985,142491.643985 544997.434985,142488.002985 545000.007985,142484.572985 545002.922985,142477.897985 545009.067985,142474.427985 545011.944985,142468.738985 545015.692985,142464.809985 545017.875985,142452.730985 545023.989985,142433.515985 545034.313985,142415.405985 545044.738985,142396.233985 545056.516985,142390.894985 545059.567985,142382.948985 545063.811985,142374.326985 545067.766985,142365.958985 545071.089985,142353.644985 545075.660985,142323.390985 545086.250985,142304.370985 545093.446985,142300.236985 545095.217985,142296.256985 545097.143985,142292.326985 545099.358985,142288.519985 545101.843985,142284.895985 545104.541985,142282.462985 545106.558985,142280.138985 545111.115985,142283.834985 545112.105985,142288.493985 545112.673985,142293.452985 545112.769985,142297.356985 545112.450985,142301.654985 545111.424985,142305.872985 545109.806985,142313.771985 545106.396985,142329.263985 545100.265985,142342.005985 545095.779985,142350.590985 545093.089985,142360.163985 545090.637985,142374.837985 545087.416985,142388.124985 545084.842985,142392.515985 545083.872985,142396.843985 545082.667985,142401.034985 545081.083985,142413.291985 545075.346985,142419.186985 545073.209985,142427.794985 545070.561985,142434.889985 545068.590985,142452.450985 545064.549985,142456.788985 545063.385985,142462.902985 545061.340985,142471.265985 545058.003985,142481.625985 545053.473985,142500.169985 545044.593985,142516.816985 545037.701985,142520.898985 545035.827985,142526.185985 545033.097985,142534.018985 545028.599985,142537.797985 545026.147985,142541.355985 545023.602985,142544.809985 545020.751985,142554.510985 545011.319985,142561.212985 545005.502985,142576.939985 544993.306985)) + POLYGON( EMPTY) + + #18 Polygon - gid: 2518 + + POLYGON((142142.650985 544835.425985,142145.030985 544834.924985,142149.928985 544836.666985,142147.868985 544839.863985,142145.054985 544843.328985,142141.764985 544846.863985,142135.589985 544852.711985,142131.385985 544855.469985,142121.934985 544860.323985,142119.418985 544862.762985,142120.643985 544866.423985,142123.832985 544869.166985,142142.007985 544880.482985,142146.185985 544882.686985,142150.034985 544885.110985,142152.992985 544888.177985,142154.918985 544892.177985,142156.098985 544896.476985,142157.758985 544905.619985,142158.869985 544910.072985,142159.515985 544911.889985,142161.471985 544915.923985,142166.292985 544923.628985,142168.551985 544927.529985,142170.143985 544931.144985,142171.234985 544935.498985,142172.207985 544944.679985,142172.887985 544949.148985,142174.226985 544953.296985,142176.709985 544957.283985,142179.723985 544960.618985,142201.533985 544980.806985,142208.081985 544987.628985,142214.086985 544994.480985,142216.762985 544998.084985,142218.813985 545001.396985,142220.731985 545005.664985,142221.760985 545010.296985,142221.410985 545013.929985,142219.731985 545017.878985,142217.358985 545021.757985,142214.506985 545025.474985,142211.394985 545028.938985,142209.403985 545030.945985,142205.982985 545033.801985,142202.150985 545036.254985,142198.084985 545038.353985,142194.906985 545039.761985,142190.673985 545041.191985,142181.848985 545043.208985,142175.903985 545044.966985,142167.646985 545048.537985,142159.620985 545052.668985,142151.626985 545057.376985,142144.153985 545062.424985,142140.530985 545065.106985,142133.753985 545070.520985,142130.329985 545073.481985,142127.047985 545076.586985,142123.979985 545079.866985,142120.258985 545084.585985,142117.704985 545088.320985,142115.321985 545092.177985,142111.638985 545098.836985,142110.590985 545104.805985,142114.324985 545106.169985,142118.865985 545107.103985,142123.727985 545107.542985,142128.424985 545107.422985,142133.319985 545106.555985,142137.609985 545105.268985,142146.150985 545102.097985,142152.816985 545099.968985,142161.600985 545098.020985,142170.475985 545096.461985,142179.596985 545095.135985,142193.021985 545093.676985,142203.872985 545092.852985,142217.391985 545092.380985,142223.658985 545091.743985,142228.073985 545090.957985,142236.822985 545088.833985,142260.302985 545082.618985,142275.993985 545078.035985,142284.552985 545075.245985,142292.377985 545072.316985,142304.771985 545066.945985,142315.772985 545061.600985,142326.339985 545055.888985,142334.073985 545051.287985,142344.223985 545044.758985,142358.879985 545034.305985,142372.971985 545025.050985,142382.274985 545019.649985,142386.325985 545017.721985,142394.717985 545014.429985,142415.323985 545006.078985,142427.651985 545000.555985,142435.089985 544996.886985,142439.032985 544994.722985,142446.714985 544990.017985,142457.124985 544983.221985,142464.485985 544977.997985,142467.866985 544975.111985,142470.779985 544971.360985,142476.685985 544960.284985,142479.910985 544956.180985,142483.304985 544953.234985,142493.778985 544944.676985,142496.933985 544941.723985,142499.886985 544938.302985,142505.255985 544930.884985,142508.155985 544927.477985,142510.754985 544925.197985,142514.462985 544922.808985,142518.456985 544920.774985,142522.642985 544918.997985,142537.322985 544913.615985,142545.912985 544910.920985,142554.584985 544908.470985,142570.055985 544904.514985,142609.687985 544895.396985,142618.402985 544893.149985,142625.191985 544891.116985,142633.745985 544888.300985,142642.213985 544885.246985,142647.284985 544883.222985,142659.650985 544877.784985,142663.825985 544876.113985,142672.611985 544873.031985,142681.231985 544870.419985,142688.566985 544868.542985,142701.784985 544865.776985,142712.430985 544863.748985,142735.115985 544859.827985,142748.404985 544857.440985,142759.820985 544854.793985,142772.902985 544851.448985,142791.990985 544847.041985,142836.872985 544838.059985,142856.026985 544833.591985,142866.014985 544830.834985,142870.276985 544829.394985,142882.911985 544824.582985,142891.044985 544822.276985,142899.893985 544820.435985,142907.005985 544819.604985,142911.480985 544819.457985,142915.973985 544819.549985,142931.392985 544820.445985,142949.396985 544820.976985,142953.877985 544821.305985,142963.412985 544822.566985,142997.291985 544828.686985,143001.762985 544829.190985,143015.237985 544830.244985,143021.078985 544830.979985,143029.925985 544832.658985,143034.317985 544833.689985,143042.431985 544835.985985,143046.664985 544837.487985,143059.123985 544842.750985,143063.328985 544844.341985,143069.061985 544846.084985,143073.419985 544847.201985,143091.561985 544851.204985,143104.799985 544853.865985,143117.818985 544855.976985,143131.660985 544857.736985,143149.611985 544859.148985,143158.523985 544860.304985,143171.796985 544862.806985,143187.420985 544865.182985,143195.694985 544866.198985,143218.129985 544867.941985,143229.421985 544869.235985,143238.331985 544870.546985,143242.752985 544871.361985,143248.974985 544872.787985,143245.893985 544864.243985,143243.278985 544855.627985,143239.596985 544845.254985,143238.703985 544840.809985,143239.565985 544838.343985,143242.559985 544836.757985,143246.782985 544835.973985,143251.747985 544835.772985,143256.966985 544835.932985,143263.459985 544836.324985,143267.887985 544836.914985,143281.079985 544840.308985,143285.493985 544841.010985,143291.165985 544841.147985,143295.708985 544840.906985,143300.240985 544840.360985,143304.693985 544839.501985,143308.795985 544838.387985,143312.930985 544836.782985,143316.929985 544834.744985,143328.699985 544827.895985,143340.615985 544821.459985,143349.622985 544816.936985,143353.765985 544815.199985,143379.048985 544806.047985,143383.197985 544804.295985,143387.085985 544802.178985,143391.866985 544798.607985,143395.237985 544795.519985,143398.377985 544792.144985,143401.217985 544788.550985,143403.683985 544784.802985,143406.240985 544779.636985,143407.710985 544775.344985,143408.807985 544770.880985,143409.578985 544766.357985,143410.053985 544762.114985,143410.135985 544757.674985,143409.747985 544753.192985,143409.089985 544748.693985,143407.345985 544737.228985,143405.081985 544723.917985,143403.266985 544711.498985,143400.336985 544688.230985,143398.896985 544674.807985,143397.734985 544659.841985,143397.090985 544646.826985,143396.850985 544637.820985,143396.972985 544632.012985,143396.751985 544622.050985,143396.978985 544617.243985,143398.170985 544613.367985,143399.194985 544612.065985,143402.692985 544610.512985,143407.447985 544610.199985,143412.699985 544610.353985,143417.686985 544610.201985,143421.647985 544608.970985,143424.221985 544605.463985,143425.185985 544600.971985,143426.503985 544586.295985,143426.695985 544576.790985,143427.602985 544572.592985,143428.607985 544570.612985,143431.663985 544567.852985,143435.852985 544565.881985,143440.409985 544564.122985,143444.574985 544561.998985,143446.602985 544560.270985,143449.266985 544556.772985,143451.512985 544552.774985,143453.316985 544548.468985,143454.651985 544544.046985,143455.302985 544540.930985,143455.737985 544536.554985,143455.685985 544532.081985,143455.310985 544527.548985,143454.248985 544518.460985,143453.293985 544507.420985,143452.183985 544498.480985,143451.387985 544494.277985,143450.256985 544489.941985,143444.947985 544474.661985,143441.252985 544461.587985,143439.691985 544457.395985,143436.586985 544451.416985,143434.254985 544447.469985,143431.718985 544443.640985,143428.959985 544440.027985,143425.961985 544436.729985,143424.373985 544435.233985,143420.802985 544432.682985,143416.748985 544430.681985,143412.436985 544429.034985,143402.691985 544425.747985,143398.354985 544424.509985,143389.557985 544422.502985,143382.443985 544421.349985,143377.969985 544420.862985,143361.255985 544419.733985,143322.639985 544418.450985,143317.223985 544418.508985,143307.965985 544419.035985,143303.487985 544418.885985,143299.248985 544418.062985,143294.848985 544416.073985,143291.138985 544413.485985,143287.645985 544410.410985,143284.360985 544407.112985,143282.416985 544405.061985,143279.570985 544401.609985,143272.098985 544390.222985,143269.351985 544386.691985,143264.746985 544382.250985,143261.177985 544379.420985,143257.402985 544376.844985,143253.487985 544374.564985,143250.331985 544372.994985,143246.011985 544371.209985,143241.373985 544369.908985,143236.897985 544369.654985,143234.944985 544370.069985,143230.996985 544371.823985,143227.070985 544374.360985,143223.425985 544377.476985,143220.320985 544380.965985,143218.559985 544383.604985,143216.857985 544387.535985,143215.805985 544391.869985,143215.175985 544396.447985,143213.672985 544410.851985,143212.338985 544428.813985,143211.334985 544435.596985,143204.880985 544467.076985,143202.713985 544478.328985,143195.991985 544515.066985,143188.876985 544557.021985,143187.823985 544561.374985,143184.665985 544571.935985,143182.777985 544576.196985,143180.223985 544579.484985,143175.783985 544581.612985,143171.287985 544582.118985,143155.656985 544581.868985,143136.206985 544580.819985,143122.601985 544580.581985,143118.118985 544580.285985,143113.728985 544579.627985,143108.946985 544578.417985,143104.513985 544576.714985,143100.732985 544574.296985,143099.409985 544572.940985,143097.056985 544569.351985,143095.214985 544565.213985,143093.790985 544560.757985,143092.692985 544556.218985,143091.497985 544549.010985,143091.198985 544544.529985,143091.120985 544540.004985,143091.190985 544525.360985,143091.987985 544506.978985,143093.802985 544482.938985,143096.515985 544453.401985,143097.660985 544445.625985,143100.216985 544432.363985,143102.727985 544417.272985,143103.883985 544408.352985,143104.696985 544397.702985,143104.824985 544393.173985,143104.700985 544388.683985,143104.380985 544385.282985,143103.655985 544380.423985,143102.277985 544375.659985,143099.755985 544372.531985,143095.802985 544371.270985,143091.229985 544370.919985,143086.346985 544371.240985,143081.583985 544372.059985,143079.325985 544372.617985,143075.204985 544374.152985,143071.230985 544376.260985,143063.417985 544381.056985,143059.424985 544383.176985,143057.485985 544383.999985,143052.909985 544385.539985,143048.244985 544386.078985,143045.943985 544385.387985,143042.625985 544382.880985,143039.587985 544379.631985,143030.944985 544368.616985,143018.916985 544355.157985,143006.538985 544342.290985,143003.228985 544339.249985,143000.059985 544336.689985,142996.399985 544334.047985,142992.577985 544331.547985,142988.612985 544329.303985,142984.520985 544327.429985,142981.796985 544326.464985,142977.495985 544325.372985,142973.057985 544324.651985,142963.981985 544323.950985,142953.878985 544323.685985,142949.368985 544323.805985,142940.377985 544324.559985,142928.660985 544326.438985,142919.876985 544328.519985,142915.586985 544329.838985,142910.935985 544331.578985,142906.815985 544333.396985,142898.760985 544337.492985,142891.323985 544341.669985,142883.714985 544346.485985,142873.049985 544353.650985,142865.638985 544358.793985,142862.071985 544361.528985,142852.868985 544369.200985,142849.644985 544372.462985,142847.241985 544376.065985,142846.832985 544377.001985,142845.639985 544381.155985,142845.045985 544385.649985,142844.939985 544390.314985,142845.205985 544394.983985,142845.730985 544399.487985,142847.359985 544404.070985,142849.883985 544408.193985,142851.902985 544412.235985,142852.270985 544414.588985,142851.234985 544418.764985,142848.804985 544422.901985,142845.666985 544426.437985,142841.451985 544429.726985,142837.382985 544432.073985,142833.070985 544433.782985,142829.180985 544434.554985,142824.843985 544434.518985,142820.388985 544433.803985,142815.908985 544432.626985,142808.656985 544430.234985,142804.514985 544428.545985,142792.485985 544422.309985,142789.356985 544420.953985,142780.856985 544417.736985,142776.523985 544416.379985,142772.150985 544415.400985,142769.493985 544415.056985,142765.048985 544415.082985,142751.517985 544417.132985,142747.071985 544417.221985,142741.891985 544416.537985,142737.389985 544415.594985,142732.957985 544414.305985,142728.713985 544412.646985,142724.776985 544410.591985,142720.722985 544407.567985,142717.590985 544404.379985,142708.851985 544393.768985,142695.798985 544379.805985,142685.746985 544368.505985,142681.717985 544363.733985,142676.115985 544356.691985,142646.529985 544317.476985,142637.252985 544305.929985,142629.738985 544297.399985,142626.583985 544294.195985,142619.961985 544288.074985,142606.708985 544277.250985,142603.032985 544274.509985,142599.218985 544272.148985,142595.218985 544270.380985,142590.945985 544269.249985,142586.455985 544268.616985,142581.850985 544268.406985,142577.242985 544268.544985,142572.745985 544268.960985,142568.202985 544269.774985,142563.879985 544270.976985,142559.588985 544272.441985,142512.041985 544289.931985,142499.063985 544293.973985,142494.844985 544295.512985,142490.821985 544297.411985,142486.858985 544299.660985,142482.929985 544302.124985,142479.179985 544304.838985,142475.776985 544307.826985,142472.884985 544311.110985,142470.374985 544315.361985,142468.770985 544319.648985,142467.680985 544324.191985,142466.879985 544330.867985,142466.891985 544335.290985,142467.346985 544339.759985,142468.106985 544344.244985,142469.978985 544353.154985,142472.266985 544362.401985,142476.753985 544376.733985,142479.688985 544385.253985,142482.130985 544391.383985,142485.988985 544399.514985,142490.328985 544407.410985,142493.108985 544412.007985,142500.694985 544423.185985,142503.886985 544427.401985,142512.460985 544437.928985,142515.999985 544443.400985,142518.088985 544447.422985,142520.010985 544451.634985,142521.614985 544455.961985,142522.756985 544460.330985,142523.276985 544464.467985,142523.056985 544468.822985,142522.131985 544473.237985,142520.735985 544477.644985,142519.105985 544481.978985,142516.222985 544488.854985,142507.660985 544504.729985,142498.246985 544525.424985,142495.238985 544531.607985,142491.152985 544539.627985,142482.068985 544556.762985,142476.213985 544566.860985,142471.338985 544575.732985,142468.701985 544579.756985,142465.777985 544582.273985,142464.715985 544582.617985,142461.172985 544582.107985,142457.227985 544579.900985,142453.175985 544576.750985,142447.704985 544572.038985,142444.441985 544568.990985,142435.526985 544558.787985,142427.051985 544549.664985,142423.735985 544546.556985,142420.069985 544544.196985,142415.422985 544542.528985,142411.043985 544541.542985,142406.504985 544540.908985,142401.901985 544540.531985,142395.232985 544540.246985,142390.735985 544540.243985,142386.201985 544540.518985,142381.689985 544541.072985,142377.257985 544541.902985,142370.099985 544543.816985,142365.592985 544545.677985,142362.366985 544548.445985,142360.671985 544552.905985,142359.988985 544557.315985,142359.794985 544562.023985,142360.111985 544571.441985,142360.600985 544576.236985,142361.477985 544580.650985,142363.537985 544589.470985,142366.377985 544604.633985,142366.965985 544609.086985,142367.335985 544617.125985,142367.289985 544621.772985,142366.887985 544626.340985,142365.944985 544630.666985,142365.333985 544632.397985,142363.153985 544636.188985,142360.091985 544639.631985,142356.569985 544642.705985,142354.358985 544644.404985,142350.648985 544646.900985,142346.683985 544649.103985,142342.551985 544651.012985,142338.337985 544652.626985,142329.120985 544655.754985,142324.613985 544656.911985,142320.187985 544657.470985,142316.566985 544657.265985,142312.451985 544656.082985,142308.414985 544654.079985,142304.498985 544651.523985,142300.747985 544648.684985,142297.537985 544646.100985,142294.429985 544642.836985,142289.020985 544635.306985,142285.887985 544632.242985,142284.879985 544631.587985,142280.948985 544629.665985,142276.699985 544628.156985,142272.248985 544626.990985,142267.710985 544626.098985,142261.157985 544625.144985,142256.637985 544625.059985,142252.097985 544625.862985,142250.010985 544626.622985,142241.865985 544627.069985,142232.842985 544626.961985,142228.189985 544626.652985,142219.256985 544625.578985,142210.379985 544623.978985,142201.928985 544621.981985,142189.033985 544617.937985,142173.175985 544613.480985,142168.754985 544612.685985,142164.493985 544612.651985,142159.712985 544614.117985,142155.595985 544616.806985,142152.724985 544620.553985,142151.801985 544624.611985,142151.792985 544629.186985,142152.818985 544644.306985,142153.735985 544653.425985,142153.819985 544657.896985,142153.318985 544662.241985,142152.623985 544664.931985,142151.012985 544669.139985,142148.905985 544673.227985,142146.451985 544677.131985,142143.800985 544680.784985,142141.760985 544683.177985,142138.544985 544686.291985,142127.599985 544695.435985,142117.560985 544704.466985,142109.963985 544710.975985,142099.369985 544719.346985,142082.249985 544732.007985,142078.514985 544734.516985,142074.669985 544736.825985,142070.918985 544738.762985,142040.406985 544751.752985,142036.369985 544753.717985,142032.516985 544755.964985,142027.531985 544759.240985,142023.678985 544761.987985,142020.080985 544764.951985,142016.968985 544768.159985,142014.575985 544771.637985,142013.343985 544775.609985,142013.207985 544780.181985,142013.704985 544784.959985,142014.681985 544791.876985,142015.536985 544796.277985,142019.864985 544813.795985,142022.666985 544828.695985,142025.800985 544848.146985,142027.072985 544858.744985,142027.856985 544867.714985,142028.179985 544873.963985,142028.369985 544882.972985,142028.035985 544892.629985,142027.589985 544897.101985,142025.218985 544914.955985,142024.641985 544922.434985,142023.963985 544936.376985,142023.670985 544943.302985,142023.091985 544947.790985,142020.706985 544959.048985,142019.522985 544963.574985,142017.933985 544967.794985,142015.721985 544971.446985,142013.338985 544973.773985,142009.459985 544976.166985,142005.088985 544977.998985,142000.003985 544979.579985,141995.653985 544980.532985,141991.200985 544981.173985,141977.392985 544982.301985,141968.411985 544982.825985,141939.455985 544983.523985,141916.541985 544984.122985,141907.570985 544984.733985,141899.202985 544985.735985,141890.317985 544987.263985,141885.942985 544988.266985,141877.874985 544990.674985,141873.665985 544992.331985,141869.642985 544994.298985,141866.567985 544996.096985,141862.799985 544998.647985,141859.259985 545001.498985,141855.939985 545004.762985,141853.094985 545008.215985,141850.524985 545011.948985,141848.222985 545015.872985,141843.299985 545026.123985,141841.513985 545030.329985,141839.937985 545034.597985,141838.672985 545038.912985,141837.817985 545043.263985,141837.564985 545045.479985,141837.372985 545049.948985,141837.531985 545054.478985,141837.971985 545059.024985,141839.581985 545068.905985,141840.655985 545073.249985,141842.000985 545077.543985,141849.605985 545098.429985,141852.868985 545106.820985,141856.108985 545114.396985,141863.822985 545130.663985,141870.756985 545147.135985,141873.752985 545155.384985,141879.091985 545172.579985,141883.341985 545185.112985,141884.625985 545189.420985,141885.627985 545193.781985,141886.145985 545197.442985,141886.449985 545201.927985,141886.736985 545210.964985,141887.107985 545215.451985,141888.688985 545225.889985,141890.837985 545235.495985,141892.625985 545240.137985,141895.222985 545246.128985,141896.344985 545249.128985,141899.344985 545249.585985,141901.987985 545249.987985,141910.946985 545254.647985,141922.303985 545260.209985,141934.615985 545265.751985,141949.278985 545271.886985,141952.650985 545273.232985,141953.085985 545270.082985,141953.697985 545260.435985,141955.736985 545245.635985,141956.724985 545241.274985,141957.339985 545239.311985,141959.039985 545235.186985,141961.133985 545231.187985,141963.487985 545227.299985,141969.128985 545218.902985,141971.839985 545215.291985,141974.698985 545211.797985,141977.702985 545208.448985,141981.598985 545204.640985,142003.749985 545186.021985,142007.106985 545183.020985,142010.279985 545179.861985,142011.503985 545178.509985,142014.209985 545174.939985,142021.256985 545163.293985,142023.970985 545159.756985,142027.727985 545156.132985,142031.253985 545153.355985,142042.379985 545145.535985,142054.026985 545136.633985,142060.975985 545130.928985,142064.714985 545127.423985,142070.881985 545120.853985,142082.306985 545108.149985,142087.613985 545102.034985,142096.113985 545091.529985,142099.094985 545088.167985,142102.615985 545084.656985,142116.917985 545071.592985,142126.193985 545061.774985,142132.719985 545055.619985,142139.502985 545049.705985,142152.899985 545038.492985,142163.689985 545030.315985,142167.166985 545027.473985,142169.362985 545025.434985,142175.735985 545018.911985,142178.744985 545015.461985,142181.470985 545011.872985,142183.788985 545008.130985,142185.713985 545003.380985,142186.467985 544998.647985,142185.842985 544994.279985,142183.834985 544990.319985,142181.236985 544986.676985,142178.209985 544983.168985,142171.763985 544976.505985,142168.169985 544973.241985,142160.932985 544967.826985,142150.992985 544959.115985,142147.610985 544955.911985,142144.697985 544952.514985,142142.553985 544948.835985,142141.448985 544944.453985,142141.366985 544939.973985,142142.555985 544927.576985,142143.282985 544922.932985,142144.283985 544918.248985,142144.317985 544913.913985,142143.855985 544912.514985,142141.673985 544908.912985,142138.777985 544905.543985,142135.430985 544902.337985,142124.215985 544892.360985,142113.700985 544883.804985,142110.516985 544880.674985,142107.108985 544876.724985,142104.234985 544873.018985,142101.700985 544869.152985,142099.737985 544865.197985,142099.013985 544863.104985,142098.927985 544858.542985,142100.632985 544853.979985,142102.038985 544852.214985,142105.407985 544849.594985,142109.303985 544847.361985,142113.516985 544845.413985,142125.369985 544840.695985,142129.650985 544839.159985,142138.320985 544836.494985,142142.650985 544835.425985)) + MULTIPOLYGON(((141915.20707389 545059.387655348,141919.801422452 545072.005349505,141922.317819047 545078.476414118,141924.497039105 545083.5720225,141931.58949003 545098.528322628,141932.948007704 545101.565338362,141939.882007704 545118.037338362,141941.251466939 545121.532703646,141944.247466939 545129.781703646,141945.379704287 545133.145086525,141946.3559021 545136.289068806,141953.641588396 545130.165092772,141957.089854983 545124.466424874,141961.755195593 545117.637254309,141964.469195593 545114.100254309,141971.902043368 545105.777124706,141975.659043368 545102.153124706,141981.323503868 545097.212495093,141984.849503868 545094.435495093,141988.126685407 545091.996095579,141998.026564897 545085.037884397,142007.445824641 545077.838584126,142011.481024278 545074.525760133,142011.672439934 545074.346323954,142015.650983665 545070.107791068,142026.098161322 545058.491078161,142030.123193498 545053.85322782,142036.276326015 545046.248679928,142034.080027084 545047.169206041,142027.356134783 545049.617237147,142022.271134783 545051.198237147,142016.054354808 545052.84242851,142011.704354808 545053.79542851,142006.339933412 545054.767818512,142001.886933412 545055.408818512,141997.307525709 545055.92497269,141983.499525709 545057.05297269,141981.761460455 545057.174653059,141972.780460455 545057.698653059,141970.219375418 545057.804204103,141941.339643255 545058.500365626,141920.0716525 545059.05633693,141915.20707389 545059.387655348)),((142293.528899252 544988.140168692,142294.601996184 544987.501777305,142302.137667721 544982.654447309,142315.330088769 544973.24530585,142317.708599738 544971.616934636,142331.800599738 544962.361934636,142335.315689827 544960.189567857,142344.618689827 544954.788567857,142350.044243235 544951.928649475,142354.095243235 544950.000649475,142358.937068202 544947.901878751,142366.937744911 544944.76338641,142385.89759784 544937.079520943,142395.719750516 544932.679151927,142400.441873082 544930.349833872,142401.383459124 544929.833071966,142406.6210572 544926.62519655,142411.537774632 544923.415397158,142417.71510139 544913.944561111,142420.94010139 544909.840561111,142430.748006338 544899.541762468,142434.142006338 544896.595762468,142435.850811608 544895.156577415,142442.412433986 544889.795267093,142444.49999699 544886.911016326,142448.144051661 544882.271951045,142451.044051661 544878.864951045,142458.695997856 544871.097938249,142461.294997856 544868.817938249,142470.134593455 544862.150512483,142473.842593455 544859.761512483,142480.427575735 544855.976426197,142484.421575735 544853.942426197,142489.150076298 544851.738001417,142493.336076298 544849.961001417,142496.826705207 544848.581227778,142511.506705207 544843.199227778,142514.871735859 544842.055231706,142523.461735859 544839.360231706,142525.522241398 544838.746075403,142534.194241398 544836.296075403,142536.004975022 544835.808868122,142551.475975022 544831.852868122,142553.240283912 544831.424409705,142591.914597139 544822.526741457,142598.275411491 544820.886724263,142602.704241198 544819.56048906,142609.292780478 544817.391524059,142615.583028111 544815.122934514,142618.279611019 544814.046641119,142629.45972981 544809.13013732,142631.782307416 544808.154985648,142635.957307416 544806.483985648,142639.000194615 544805.341955696,142647.786194615 544802.259955696,142650.862354779 544801.254874545,142659.482354779 544798.642874545,142662.638869661 544797.761220477,142669.973869661 544795.884220477,142673.205218145 544795.133066603,142686.423218145 544792.367066603,142687.75030488 544792.101834821,142698.39630488 544790.073834821,142699.656984019 544789.844824773,142722.099112074 544785.965804094,142733.29544748 544783.954693204,142742.05873277 544781.922771676,142754.323614283 544778.786704663,142756.030972713 544778.371387876,142775.118972713 544773.964387876,142777.273451963 544773.500199454,142820.991420451 544764.751150994,142837.522686446 544760.894948819,142844.015926493 544759.102611734,142844.917722818 544758.79792222,142856.218794477 544754.493944632,142862.453241526 544752.427321221,142870.586241526 544750.121321221,142875.768629606 544748.849245243,142884.617629605 544747.008245243,142891.189843383 544745.942777802,142898.301843383 544745.111777802,142904.543626015 544744.64541731,142909.018626015 544744.49841731,142913.016385389 544744.473703009,142917.509385389 544744.565703009,142920.324904418 544744.676294693,142934.674637347 544745.510159451,142951.608031998 544746.00958361,142954.88878603 544746.178321099,142959.36978603 544746.507321098,142963.711087962 544746.953378548,142973.246087962 544748.214378548,142976.745416005 544748.761522577,143008.170847153 544754.438302843,143008.88998273 544754.51936845,143021.086540262 544755.473370056,143024.601737995 544755.83181325,143030.442737995 544756.56681325,143035.06301864 544757.295205003,143043.91001864 544758.974205003,143047.065941417 544759.643768134,143051.457941418 544760.674768134,143054.738751825 544761.523564261,143062.852751825 544763.819564261,143067.512244981 544765.303734333,143071.745244981 544766.805734333,143075.849809935 544768.399302906,143086.996807532 544773.108079562,143087.534249256 544773.311425527,143089.290648579 544773.84542239,143090.815558434 544774.236272392,143107.033443497 544777.814719857,143118.197003623 544780.058732056,143128.554297917 544781.738142783,143139.336028988 544783.109031866,143155.49321177 544784.379932768,143159.259616953 544784.772085376,143168.171616953 544785.928085376,143172.417029432 544786.602995092,143183.484514979 544788.689249054,143192.757948937 544779.743577493,143204.458134003 544772.068508402,143207.452134003 544770.482508402,143217.877333406 544765.935907155,143228.870152028 544763.017979079,143233.093152028 544762.233979079,143243.749216234 544761.035368472,143248.714216234 544760.834368472,143254.046196302 544760.808205104,143259.265196302 544760.968205104,143261.486708783 544761.06929489,143267.979708783 544761.46129489,143273.365665557 544761.982012954,143277.793665557 544762.572012954,143286.575211331 544764.280368101,143288.189141126 544764.695595339,143290.978852032 544763.072253793,143293.057985348 544761.906229274,143304.973985348 544755.470229274,143306.958931092 544754.43608835,143315.965931092 544749.91308835,143320.623980386 544747.770101801,143324.766980386 544746.033101801,143328.238303539 544744.678091384,143332.286621343 544743.212671752,143331.143833831 544736.493747471,143330.870339244 544734.763796825,143329.055339244 544722.344796825,143328.854637586 544720.869286613,143325.924637586 544697.601286613,143325.764871004 544696.23097339,143324.324871004 544682.80797339,143324.122032336 544680.613710979,143322.960032336 544665.647710979,143322.826631958 544663.548552757,143322.182631958 544650.533552757,143322.117601971 544648.824943242,143321.877601971 544639.818943242,143321.867525705 544636.245919223,143321.955512321 544632.05717934,143321.77043356 544623.714398257,143321.835470129 544618.513217395,143322.062470129 544613.706217395,143325.292360964 544595.19794376,143326.484360964 544591.32194376,143331.729639817 544578.575059709,143339.219112454 544567.003378636,143340.243112454 544565.701378636,143353.146702893 544552.866696871,143356.357813689 544550.944227443,143360.724831274 544538.647255457,143361.729831274 544536.667255457,143369.036727648 544525.046930776,143378.339104196 544514.952948864,143378.62159647 544514.697818407,143378.155226847 544510.94165225,143374.102410185 544499.277113056,143373.007822462 544495.79929448,143372.379651765 544495.697483851,143371.381974607 544495.588885555,143357.48234826 544494.649991326,143321.795908582 544493.464324709,143319.758089386 544493.486147736,143312.228365485 544493.914767793,143305.455111006 544493.993943295,143300.977111006 544493.843943295,143289.193680868 544492.511203977,143284.954680868 544491.688203977,143277.00659789 544489.158340983,143276.426513723 544492.170388535,143269.854826429 544528.086878837,143262.821219905 544569.56192616,143261.774448627 544574.656037193,143260.721448627 544579.009037193,143259.680215806 544582.861773835,143256.522215806 544593.422773835,143253.23631489 544602.318708031,143251.34831489 544606.579708031,143242.008489251 544622.205107828,143239.454489251 544625.493107828,143227.30524964 544637.866099411,143212.639192566 544647.118218831,143208.199192566 544649.246218831,143196.474866603 544653.702425409,143184.171866906 544656.142465323,143179.675866906 544656.648465323,143170.088599017 544657.109394209,143154.457599017 544656.859394209,143151.617868051 544656.760142918,143133.53063217 544655.784641096,143121.290168068 544655.570511698,143117.660703231 544655.419032874,143113.177703231 544655.123032874,143107.001712981 544654.457450287,143102.611712981 544653.799450287,143095.331388678 544652.336502036,143090.549388678 544651.126502036,143082.051072215 544648.429483166,143077.618072215 544646.726483166,143064.106773636 544639.899296896,143060.325773636 544637.481296896,143047.050786815 544626.672758007,143045.727786815 544625.316758007,143036.688110558 544614.062347654,143034.335110558 544610.473347654,143028.538883685 544599.852309461,143026.696883685 544595.714309461,143023.774244043 544588.04423974,143022.350244043 544583.58823974,143020.893544138 544578.392131302,143019.795544138 544573.853131302,143018.702925331 544568.485649998,143017.507925331 544561.277649998,143016.664393871 544554.004344462,143016.365393871 544549.523344462,143016.210125035 544545.822610653,143016.132125035 544541.297610653,143016.121841841 544539.646480492,143016.191841841 544525.002480492,143016.261381424 544522.112214787,143017.058381424 544503.730214787,143017.200830162 544501.332617029,143019.015830162 544477.292617029,143019.117369181 544476.079044054,143020.974562841 544455.859387166,143012.017779016 544452.276044828,143000.730737927 544445.227455997,142997.412737927 544442.720455997,142987.84396231 544434.105295537,142984.80596231 544430.856295537,142980.583823832 544425.930029936,142973.422760994 544416.803672518,142963.91211261 544406.161519492,142956.819698158 544398.788915133,142953.893144036 544398.712152108,142953.503590826 544398.72251716,142949.462514144 544399.061408476,142943.263353163 544400.055538669,142939.663325572 544400.908414059,142939.238212841 544401.067454297,142938.976680873 544401.182858452,142934.137324015 544403.643690941,142929.769658667 544406.096795439,142926.652207278 544408.069938545,142927.198338169 544417.889249693,142925.064366118 544432.647879358,142924.028366118 544436.823879358,142915.90414904 544456.750498323,142913.47414904 544460.887498323,142904.900927942 544472.683961512,142901.762927942 544476.219961512,142891.805707433 544485.566812929,142887.590707433 544488.855812929,142878.925179228 544494.69435923,142874.856179228 544497.04135923,142865.016904724 544501.797485204,142860.704904724 544503.506485204,142847.670574801 544507.348275577,142843.780574801 544508.120275577,142828.558456297 544509.552401342,142824.221456297 544509.516401342,142812.959042535 544508.571318809,142808.504042535 544507.856318809,142801.33147797 544506.342329521,142796.85147797 544505.165329521,142792.415950273 544503.852523393,142785.163950273 544501.460523393,142780.337883578 544499.683012291,142776.195883578 544497.994012292,142769.99669122 544495.130423081,142762.606498738 544491.299245068,142753.019033808 544492.117962512,142748.573033808 544492.206962512,142737.253736829 544491.576554482,142732.073736829 544490.892554482,142726.515986909 544489.944923928,142722.013986909 544489.001923928,142716.444900051 544487.610979171,142712.012900051 544486.321979171,142705.652238558 544484.158660047,142701.408238558 544482.499660047,142694.009414955 544479.134523818,142690.072414955 544477.079523818,142679.933733744 544470.709227259,142675.879733744 544467.685227259,142667.222163891 544460.129017531,142664.090163891 544456.941017531,142659.697634783 544452.059750107,142652.455628131 544443.266417622,142641.010698615 544431.023595985,142639.761894936 544429.654199985,142629.709894936 544418.354199985,142628.440663554 544416.889717001,142624.411663554 544412.117717001,142623.024567126 544410.425340713,142617.422567126 544403.383340713,142616.24429217 544401.862555039,142587.346543277 544363.559802966,142579.850312854 544354.229311137,142574.837307005 544348.538475379,142574.380798773 544348.074877161,142573.482496771 544347.244537906,142549.020471652 544356.242809497,142550.021077146 544359.147463265,142550.918398887 544361.399953959,142552.790926445 544365.346434407,142555.308399385 544369.926610982,142556.270059459 544371.516809313,142561.662565615 544379.462687748,142562.879228922 544381.069659085,142570.613225941 544390.565318825,142575.437699753 544397.198978876,142578.976699753 544402.670978876,142582.557765089 544408.83131752,142584.646765089 544412.85331752,142586.320905962 544416.287716222,142588.242905962 544420.499716222,142590.33468939 544425.566294951,142591.93868939 544429.893294952,142594.177100548 544436.995188031,142595.319100548 544441.364188031,142597.171443512 544450.977463505,142597.691443512 544455.114463505,142598.181470333 544468.251908484,142597.961470333 544472.606908484,142596.463179074 544484.202538685,142595.538179074 544488.617538685,142593.630550396 544495.886498114,142592.234550396 544500.293498114,142590.935346415 544504.046682994,142589.305346415 544508.380682994,142588.272299374 544510.979346306,142585.389299374 544517.855346306,142582.234135189 544524.457345184,142574.877841918 544538.096816766,142566.515543165 544556.479839147,142565.689384712 544558.235390683,142562.681384712 544564.418390683,142562.065802624 544565.6546654,142557.979802624 544573.6746654,142557.417031773 544574.757404369,142548.333031773 544591.892404369,142546.951454584 544594.382994845,142541.529148564 544603.734736294,142537.069563867 544611.85072305,142534.069380318 544616.841347935,142531.432380318 544620.865347935,142517.631297233 544636.598188404,142514.707297233 544639.115188404,142502.521690675 544647.656705143,142488.889548013 544653.624217341,142487.827548013 544653.968217341,142471.094086772 544657.34629167,142454.030188709 544656.852840409,142450.487188709 544656.342840409,142437.358589199 544653.203168585,142436.668505703 544655.630630956,142436.057505703 544657.361630956,142430.350660746 544669.785574852,142428.170660746 544673.576574852,142419.197109221 544686.030415834,142416.135109221 544689.473415834,142409.409371599 544696.136811157,142405.887371599 544699.210811157,142402.268389353 544702.175774301,142400.057389353 544703.874774301,142396.224336385 544706.632730849,142392.514336385 544709.128730849,142387.07501259 544712.461220768,142383.11001259 544714.664220768,142378.13946881 544717.188877144,142374.00746881 544719.097877144,142369.377380348 544721.051532704,142365.163380348 544722.665532704,142362.440763496 544723.64850335,142353.223763496 544726.77650335,142347.769688407 544728.399502076,142343.262688407 544729.556502076,142334.011762954 544731.32086733,142329.585762954 544731.87986733,142315.948708737 544732.351079396,142312.327708737 544732.146079396,142295.844939335 544729.346473507,142291.729939335 544728.163473507,142279.117488381 544723.267889072,142275.080488381 544721.264889072,142267.421421377 544716.88546041,142263.505421377 544714.32946041,142259.236675046 544711.326353663,142255.485675046 544708.487353663,142253.718508244 544707.107825706,142250.508508244 544704.523825706,142247.621056086 544701.867004341,142245.975822652 544701.957295237,142240.968343436 544702.064613072,142231.945343436 544701.956613072,142227.873273827 544701.797150336,142223.220273827 544701.488150336,142219.237330033 544701.116734362,142218.770797848 544701.060643959,142217.679033889 544703.500397184,142215.572033889 544707.588397184,142212.403307436 544713.141517084,142209.949307436 544717.045517084,142207.152428394 544721.18259421,142204.501428394 544724.835594209,142200.876344685 544729.440953974,142198.836344685 544731.833953974,142193.932660441 544737.058559252,142190.716660441 544740.172559252,142186.630675434 544743.848621242,142176.739173701 544752.112476139,142167.720757309 544760.225367705,142166.358606458 544761.421283697,142164.679487397 544762.859928684,142170.162971622 544764.26110987,142175.060971622 544766.00310987,142188.609375456 544772.411032792,142200.613171778 544781.384861211,142210.593018116 544792.566247069,142218.150393529 544805.50868886,142222.983512571 544819.695361583,142224.899376364 544834.559754896,142223.821479538 544849.508295329,142221.544108779 544857.668809516,142222.493621098 544859.640797719,142227.243951322 544872.326051932,142228.423951322 544876.625051932,142229.892583503 544883.079044115,142230.100737768 544884.225522696,142231.196159123 544886.044706521,142233.455159123 544889.945706521,142237.190809781 544897.302319979,142238.782809781 544900.917319979,142242.894833084 544912.915500558,142243.985833084 544917.269500558,142244.120402998 544918.028161309,142252.480830463 544925.766827503,142255.642471805 544928.871720914,142262.190471805 544935.693720914,142264.486464574 544938.196863015,142270.491464574 544945.048863015,142274.302826793 544949.770221228,142276.978826793 544953.374221228,142280.526715791 544958.598447604,142282.577715791 544961.910447604,142287.223684419 544970.654294399,142289.141684419 544974.922294399,142293.528899252 544988.140168692))) + + #19 Polygon - gid: 2519 + + POLYGON((142639.054985 546593.084985,142638.983985 546578.467985,142637.899985 546522.015985,142637.938985 546492.896985,142637.097985 546450.097985,142637.323985 546438.583985,142638.161985 546425.106985,142640.378985 546405.030985,142641.014985 546394.820985,142641.331985 546384.084985,142641.148985 546370.582985,142641.244985 546363.069985,142641.584985 546354.071985,142642.254985 546344.252985,142643.286985 546335.313985,142644.522985 546326.394985,142648.737985 546299.023985,142650.292985 546287.844985,142651.629985 546274.394985,142652.493985 546269.090985,142653.436985 546264.685985,142655.832985 546255.985985,142657.324985 546251.745985,142659.948985 546245.601985,142667.821985 546229.388985,142674.155985 546214.865985,142677.911985 546205.201985,142679.361985 546200.940985,142681.914985 546192.299985,142684.417985 546181.838985,142686.974985 546168.576985,142689.654985 546153.350985,142694.878985 546120.270985,142697.142985 546106.960985,142699.359985 546095.284985,142703.219985 546077.702985,142704.624985 546066.572985,142705.358985 546062.133985,142706.612985 546057.889985,142708.252985 546054.334985,142710.527985 546050.471985,142713.073985 546046.712985,142719.613985 546037.284985,142728.418985 546025.982985,142730.690985 546022.264985,142732.054985 546018.591985,142731.686985 546016.665985,142724.660985 546009.840985,142717.691985 546000.791985,142714.941985 545996.960985,142712.738985 545993.180985,142711.360985 545988.681985,142714.052985 545984.850985,142718.418985 545982.397985,142721.651985 545982.033985,142726.312985 545982.683985,142730.716985 545984.217985,142731.895985 545984.775985,142735.810985 545986.892985,142743.367985 545991.857985,142750.724985 545997.160985,142754.125985 545999.891985,142761.223985 546006.385985,142764.713985 546009.110985,142768.178985 546010.905985,142772.098985 546007.143985,142774.143985 546005.180985,142774.113985 545999.566985,142773.537985 545995.098985,142768.381985 545968.404985,142767.068985 545958.959985,142766.199985 545949.980985,142765.940985 545945.485985,142765.750985 545931.805985,142766.233985 545927.222985,142767.634985 545923.521985,142769.098985 545922.223985,142773.757985 545921.006985,142778.814985 545921.309985,142783.002985 545922.544985,142787.137985 545924.271985,142795.346985 545928.342985,142811.462985 545935.870985,142815.626985 545937.556985,142820.576985 545938.996985,142825.031985 545939.950985,142829.609985 545940.709985,142834.206985 545941.141985,142838.717985 545941.118985,142843.041985 545940.509985,142847.204985 545939.284985,142851.513985 545937.443985,142855.628985 545935.100985,142859.326985 545932.341985,142862.380985 545929.253985,142863.263985 545928.078985,142865.435985 545924.062985,142866.966985 545919.494985,142867.782985 545914.817985,142867.736985 545909.942985,142866.022985 545905.989985,142862.937985 545902.315985,142859.441985 545899.133985,142854.047985 545895.067985,142850.262985 545892.621985,142837.767985 545885.201985,142825.932985 545878.689985,142819.751985 545874.844985,142805.176985 545864.270985,142794.436985 545857.191985,142790.895985 545854.458985,142787.923985 545851.332985,142786.743985 545846.536985,142788.245985 545842.303985,142791.773985 545840.313985,142796.261985 545838.819985,142801.083985 545837.998985,142802.463985 545837.997985,142805.463985 545837.994985,142805.357985 545834.997985,142805.262985 545828.997985,142805.520985 545820.191985,142805.877985 545815.707985,142807.383985 545802.278985,142807.642985 545798.275985,142807.624985 545793.783985,142807.104985 545784.785985,142806.722985 545767.919985,142806.979985 545763.439985,142807.737985 545759.086985,142809.044985 545754.836985,142810.745985 545750.671985,142812.747985 545746.584985,142814.955985 545742.585985,142818.189985 545737.179985,142820.793985 545733.508985,142829.696985 545723.146985,142832.161985 545719.462985,142832.897985 545718.055985,142834.513985 545713.945985,142835.658985 545709.600985,142836.487985 545705.114985,142837.768985 545696.409985,142838.248985 545691.931985,142838.646985 545682.880985,142839.065985 545678.409985,142839.638985 545675.304985,142841.047985 545671.041985,142844.967985 545662.753985,142846.660985 545658.581985,142847.581985 545654.707985,142847.927985 545650.295985,142847.867985 545645.793985,142847.478985 545641.250985,142846.840985 545636.716985,142845.620985 545630.188985,142844.442985 545625.866985,142839.491985 545613.185985,142838.170985 545608.906985,142836.982985 545602.039985,142836.453985 545597.426985,142836.195985 545592.787985,142836.317985 545588.225985,142836.932985 545583.845985,142837.506985 545581.601985,142839.204985 545577.594985,142841.653985 545573.762985,142844.599985 545570.136985,142850.556985 545564.008985,142855.814985 545562.041985,142856.880985 545561.642985,142856.292985 545557.919985,142855.390985 545553.820985,142854.135985 545549.506985,142852.244985 545544.563985,142850.361985 545540.478985,142844.125985 545527.977985,142834.606985 545507.539985,142826.544985 545491.433985,142821.485985 545479.737985,142819.843985 545475.499985,142818.480985 545471.212985,142817.540985 545466.871985,142817.213985 545464.155985,142817.030985 545459.662985,142817.207985 545455.117985,142817.660985 545450.581985,142818.485985 545445.117985,142819.662985 545440.740985,142822.757985 545432.078985,142823.990985 545427.764985,142824.559985 545422.879985,142823.987985 545418.543985,142822.645985 545414.208985,142819.284985 545405.255985,142813.283985 545388.284985,142808.968985 545375.562985,142806.315985 545366.954985,142804.586985 545358.943985,142803.925985 545354.485985,142803.102985 545345.493985,142802.904985 545340.751985,142802.834985 545331.720985,142803.009985 545327.199985,142803.393985 545322.710985,142804.037985 545318.278985,142805.452985 545311.744985,142806.650985 545307.380985,142809.573985 545298.818985,142811.266985 545294.665985,142813.004985 545291.210985,142815.400985 545287.398985,142820.519985 545279.931985,142826.842985 545268.466985,142829.338985 545264.782985,142832.164985 545262.098985,142833.230985 545261.695985,142835.992985 545262.345985,142846.160985 545258.387985,142854.318985 545254.575985,142858.403985 545252.356985,142869.987985 545245.401985,142875.644985 545242.347985,142912.309985 545224.049985,142926.307985 545216.705985,142951.656985 545202.846985,142972.226985 545191.088985,142985.020985 545184.003985,142989.016985 545181.876985,142993.087985 545179.977985,142997.011985 545178.519985,143001.320985 545177.379985,143005.734985 545176.563985,143019.196985 545174.781985,143029.936985 545172.947985,143038.782985 545171.290985,143053.861985 545168.157985,143058.239985 545167.099985,143064.886985 545165.078985,143073.421985 545161.808985,143077.597985 545159.899985,143081.563985 545157.748985,143085.208985 545155.311985,143088.708985 545151.406985,143090.492985 545147.010985,143090.813985 545144.727985,143089.978985 545140.305985,143088.118985 545135.725985,143086.667985 545131.314985,143086.751985 545128.175985,143088.720985 545124.505985,143091.965985 545121.090985,143095.880985 545118.148985,143099.492985 545116.076985,143103.605985 545114.680985,143108.081985 545114.016985,143112.694985 545113.606985,143117.223985 545112.973985,143130.923985 545110.673985,143135.304985 545109.618985,143139.420985 545108.092985,143140.758985 545107.421985,143144.429985 545105.021985,143147.844985 545102.071985,143151.027985 545098.743985,143154.002985 545095.206985,143156.794985 545091.631985,143159.329985 545087.702985,143165.032985 545075.706985,143169.544985 545068.380985,143174.812985 545061.053985,143177.619985 545057.534985,143179.712985 545055.221985,143186.158985 545048.939985,143193.007985 545043.061985,143196.559985 545040.305985,143204.126985 545034.852985,143207.925985 545032.379985,143211.823985 545030.116985,143215.833985 545028.136985,143220.506985 545026.334985,143224.814985 545025.059985,143229.211985 545023.991985,143247.739985 545020.064985,143271.248985 545015.903985,143300.088985 545011.067985,143319.233985 545008.037985,143322.181985 545007.660985,143320.621985 545004.756985,143318.426985 545000.669985,143317.771985 544996.915985,143316.818985 544987.902985,143316.483985 544978.913985,143318.127985 544975.428985,143320.969985 544971.163985,143325.529985 544961.287985,143327.718985 544957.410985,143330.469985 544955.005985,143333.411985 544952.432985,143330.469985 544950.953985,143324.550985 544948.182985,143312.064985 544943.041985,143303.953985 544939.926985,143290.772985 544935.169985,143255.834985 544921.723985,143240.383985 544916.255985,143231.802985 544913.548985,143223.892985 544911.297985,143215.153985 544909.116985,143210.750985 544908.213985,143206.364985 544907.516985,143192.930985 544906.053985,143187.453985 544905.270985,143183.055985 544904.302985,143178.713985 544903.106985,143172.673985 544900.844985,143164.258985 544899.268985,143136.152985 544894.663985,143127.654985 544893.030985,143118.870985 544891.059985,143108.925985 544888.514985,143090.565985 544883.345985,143073.319985 544878.131985,143068.474985 544876.994985,143064.055985 544876.187985,143059.601985 544875.538985,143050.639985 544874.541985,143041.819985 544873.776985,143028.327985 544873.125985,143023.847985 544872.745985,143018.942985 544872.112985,143000.433985 544869.180985,142987.018985 544867.640985,142978.053985 544866.860985,142970.405985 544866.438985,142944.598985 544865.635985,142935.601985 544865.579985,142927.194985 544865.844985,142918.206985 544866.397985,142911.314985 544867.017985,142902.373985 544868.047985,142889.004985 544869.952985,142864.821985 544874.363985,142848.911985 544876.576985,142844.480985 544877.334985,142838.073985 544878.661985,142829.326985 544880.811985,142819.324985 544883.870985,142800.796985 544890.606985,142773.388985 544901.131985,142760.875985 544906.196985,142750.977985 544910.668985,142742.913985 544914.664985,142737.069985 544917.874985,142724.981985 544924.919985,142713.020985 544931.285985,142709.136985 544933.547985,142705.137985 544936.250985,142701.645985 544939.051985,142695.074985 544945.218985,142680.742985 544959.330985,142671.103985 544969.088985,142662.768985 544973.041985,142652.842985 544978.358985,142641.271985 544985.338985,142634.830985 544989.779985,142627.829985 544995.416985,142602.075985 545017.695985,142591.628985 545026.268985,142584.723985 545031.405985,142577.151985 545036.249985,142563.479985 545044.293985,142523.221985 545068.752985,142513.631985 545074.114985,142504.669985 545078.768985,142449.282985 545105.186985,142429.396985 545115.264985,142420.658985 545120.011985,142411.075985 545125.488985,142395.834985 545135.064985,142387.294985 545140.246985,142363.037985 545154.362985,142356.402985 545157.748985,142344.050985 545163.201985,142339.898985 545164.937985,142325.684985 545170.528985,142317.212985 545173.561985,142303.543985 545177.834985,142294.845985 545180.144985,142285.745985 545182.081985,142259.033985 545187.070985,142250.228985 545188.919985,142245.783985 545190.007985,142229.466985 545194.445985,142212.023985 545198.894985,142204.533985 545201.039985,142191.663985 545205.131985,142180.193985 545209.385985,142171.855985 545212.806985,142165.722985 545215.687985,142161.756985 545217.791985,142154.012985 545222.384985,142140.577985 545231.018985,142133.147985 545236.100985,142115.719985 545248.557985,142102.333985 545258.662985,142094.400985 545265.020985,142087.591985 545270.906985,142078.153985 545279.664985,142065.304985 545292.272985,142061.463985 545295.538985,142058.168985 545298.695985,142057.175985 545300.454985,142056.463985 545305.537985,142057.721985 545310.009985,142062.115985 545310.976985,142066.520985 545310.561985,142076.187985 545308.856985,142080.192985 545308.520985,142089.203985 545308.646985,142098.195985 545309.362985,142102.054985 545309.894985,142106.458985 545310.741985,142110.825985 545311.824985,142130.830985 545317.813985,142152.372985 545324.883985,142164.840985 545328.945985,142177.742985 545332.933985,142189.838985 545336.203985,142198.607985 545338.303985,142203.018985 545339.200985,142207.448985 545339.939985,142216.683985 545340.889985,142225.692985 545341.292985,142234.270985 545341.415985,142251.656985 545340.922985,142291.579985 545340.124985,142300.184985 545339.602985,142309.174985 545338.801985,142313.628985 545338.177985,142321.257985 545336.558985,142325.609985 545335.368985,142334.166985 545332.488985,142341.767985 545329.286985,142345.811985 545327.301985,142349.793985 545325.177985,142357.421985 545320.738985,142361.221985 545318.337985,142368.622985 545313.204985,142382.291985 545302.859985,142389.289985 545297.184985,142392.681985 545294.234985,142397.402985 545289.625985,142406.329985 545279.577985,142412.737985 545273.259985,142419.291985 545267.086985,142429.992985 545257.467985,142440.308985 545248.759985,142441.612985 545247.714985,142446.109985 545245.262985,142446.338985 545248.994985,142446.199985 545253.571985,142445.640985 545258.488985,142444.609985 545263.241985,142443.857985 545265.512985,142442.012985 545269.516985,142439.699985 545273.376985,142437.056985 545277.103985,142431.323985 545284.203985,142427.990985 545287.884985,142424.744985 545290.998985,142418.000985 545297.012985,142412.625985 545302.081985,142402.843985 545311.388985,142393.281985 545319.861985,142386.339985 545325.596985,142383.071985 545328.078985,142375.719985 545333.293985,142368.108985 545338.125985,142364.187985 545340.316985,142359.849985 545342.473985,142355.742985 545344.307985,142347.378985 545347.681985,142328.337985 545354.886985,142316.107985 545358.925985,142307.469985 545361.469985,142299.454985 545363.561985,142286.275985 545366.538985,142276.143985 545368.318985,142267.208985 545369.345985,142248.532985 545370.511985,142219.161985 545371.185985,142203.715985 545371.164985,142199.205985 545371.018985,142194.733985 545370.628985,142188.003985 545369.399985,142183.639985 545368.295985,142179.306985 545367.017985,142170.748985 545364.137985,142165.665985 545362.193985,142149.185985 545354.923985,142140.126985 545351.437985,142131.579985 545348.557985,142127.240985 545347.464985,142122.210985 545346.513985,142117.678985 545345.875985,142113.128985 545345.532985,142108.629985 545345.592985,142105.518985 545345.933985,142101.168985 545346.844985,142096.841985 545348.164985,142092.578985 545349.812985,142088.422985 545351.707985,142084.414985 545353.767985,142080.190985 545356.407985,142076.653985 545359.241985,142073.333985 545362.356985,142067.997985 545368.049985,142062.268985 545375.019985,142056.981985 545382.321985,142054.076985 545386.833985,142049.685985 545394.701985,142044.122985 545405.734985,142038.521985 545418.021985,142023.289985 545452.443985,142017.545985 545464.659985,142014.837985 545469.791985,142005.253985 545486.555985,141988.171985 545519.134985,141977.076985 545541.374985,141973.492985 545549.619985,141971.566985 545555.125985,141970.306985 545559.444985,141965.979985 545576.568985,141962.918985 545589.719985,141960.635985 545598.142985,141955.825985 545613.701985,141951.434985 545626.601985,141950.141985 545630.915985,141948.934985 545636.962985,141948.704985 545641.499985,141949.123985 545646.141985,141950.244985 545650.549985,141951.056985 545652.499985,141953.342985 545656.425985,141956.355985 545660.122985,141959.910985 545663.037985,141962.039985 545664.112985,141966.156985 545665.317985,141970.561985 545665.989985,141975.146985 545666.276985,141979.804985 545666.327985,141986.719985 545666.292985,141991.278985 545665.940985,142000.535985 545664.247985,142005.024985 545663.753985,142009.282985 545664.058985,142010.548985 545664.383985,142014.485985 545666.064985,142018.279985 545668.475985,142021.898985 545671.414985,142025.310985 545674.677985,142028.480985 545678.062985,142030.032985 545679.813985,142032.714985 545683.400985,142034.950985 545687.417985,142036.704985 545691.669985,142037.858985 545695.616985,142038.718985 545700.121985,142039.089985 545704.851985,142038.672985 545709.406985,142037.721985 545712.350985,142035.592985 545716.121985,142032.841985 545719.745985,142029.638985 545723.145985,142026.149985 545726.245985,142022.543985 545728.968985,142018.629985 545731.298985,142014.527985 545733.136985,142010.234985 545734.681985,142001.549985 545737.362985,141997.219985 545738.546985,141983.982985 545741.310985,141979.609985 545742.365985,141969.681985 545745.217985,141965.394985 545746.710985,141961.337985 545748.534985,141959.777985 545749.404985,141955.834985 545752.283985,141952.703985 545755.965985,141951.963985 545758.506985,141952.751985 545762.553985,141954.762985 545766.861985,141957.561985 545770.888985,141959.982985 545773.460985,141963.411985 545776.158985,141967.224985 545778.496985,141971.289985 545780.580985,141985.212985 545786.896985,142000.150985 545792.668985,142008.343985 545796.429985,142016.334985 545800.578985,142022.250985 545804.295985,142046.437985 545822.371985,142052.748985 545826.682985,142056.617985 545828.963985,142064.603985 545833.129985,142070.922985 545836.248985,142083.286985 545841.758985,142087.295985 545843.769985,142092.594985 545847.153985,142096.154985 545849.929985,142099.578985 545852.884985,142104.802985 545857.704985,142111.182985 545864.060985,142117.370985 545870.603985,142120.682985 545874.288985,142142.202985 545899.659985,142165.737985 545927.016985,142172.879985 545934.881985,142182.253985 545944.598985,142186.214985 545948.917985,142202.883985 545967.751985,142211.384985 545977.403985,142225.593985 545992.922985,142238.418985 546008.296985,142250.230985 546021.879985,142259.725985 546033.693985,142269.350985 546046.564985,142278.361985 546059.624985,142298.361985 546090.836985,142309.584985 546107.625985,142341.472985 546156.462985,142356.456985 546178.710985,142366.251985 546193.812985,142376.758985 546209.595985,142385.270985 546221.615985,142387.634985 546225.427985,142392.256985 546234.208985,142394.167985 546238.328985,142395.821985 546242.520985,142397.123985 546246.785985,142398.005985 546251.510985,142398.388985 546255.983985,142399.224985 546283.243985,142399.697985 546292.227985,142400.941985 546305.891985,142401.545985 546310.351985,142403.237985 546319.045985,142405.506985 546327.777985,142408.303985 546336.338985,142410.310985 546341.331985,142418.668985 546358.807985,142424.819985 546375.738985,142426.239985 546379.047985,142430.073985 546387.302985,142432.170985 546391.346985,142434.510985 546395.185985,142437.187985 546398.706985,142440.399985 546401.785985,142444.036985 546404.428985,142451.744985 546409.342985,142464.608985 546418.886985,142474.778985 546427.251985,142481.544985 546433.292985,142484.647985 546436.537985,142486.778985 546439.146985,142489.315985 546442.826985,142491.601985 546446.723985,142493.656985 546450.776985,142496.820985 546458.222985,142498.276985 546462.456985,142499.496985 546466.785985,142503.472985 546484.744985,142506.642985 546502.467985,142509.386985 546520.985985,142510.336985 546525.363985,142510.840985 546527.218985,142512.350985 546531.439985,142518.183985 546543.729985,142519.807985 546547.903985,142520.462985 546550.160985,142521.369985 546554.533985,142521.977985 546559.000985,142522.344985 546563.520985,142522.608985 546574.349985,142522.280985 546578.872985,142521.351985 546583.333985,142520.542985 546585.903985,142517.219985 546589.425985,142514.512985 546586.565985,142511.824985 546583.070985,142509.171985 546579.181985,142498.742985 546562.904985,142494.176985 546555.142985,142490.162985 546547.838985,142484.052985 546535.786985,142480.174985 546526.738985,142475.650985 546514.011985,142472.138985 546503.403985,142468.153985 546490.503985,142463.423985 546476.206985,142461.831985 546471.994985,142459.996985 546467.916985,142456.960985 546462.582985,142454.434985 546458.849985,142451.705985 546455.233985,142445.862985 546448.329985,142442.104985 546444.394985,142428.626985 546432.421985,142418.075985 546422.798985,142411.737985 546416.428985,142408.499985 546412.663985,142405.701985 546409.137985,142400.377985 546401.856985,142392.425985 546390.103985,142387.707985 546382.429985,142380.885985 546369.973985,142378.896985 546365.914985,142377.106985 546361.786985,142375.751985 546358.075985,142374.507985 546353.777985,142373.513985 546349.392985,142370.442985 546330.776985,142368.191985 546312.914985,142365.265985 546293.674985,142363.190985 546283.190985,142361.213985 546274.351985,142359.975985 546270.025985,142358.455985 546265.821985,142356.394985 546261.322985,142354.263985 546257.363985,142351.945985 546253.483985,142345.725985 546243.935985,142343.151985 546240.252985,142316.274985 546206.202985,142310.966985 546198.936985,142307.937985 546194.352985,142294.814985 546172.627985,142290.329985 546164.823985,142287.005985 546158.186985,142275.101985 546130.634985,142271.989985 546124.071985,142267.678985 546116.171985,142261.093985 546105.453985,142258.578985 546101.726985,142253.279985 546094.447985,142243.571985 546081.658985,142236.439985 546072.727985,142230.606985 546065.874985,142222.765985 546057.102985,142213.581985 546047.200985,142208.292985 546041.857985,142201.735985 546035.693985,142192.537985 546027.675985,142181.948985 546019.303985,142169.155985 546009.780985,142160.153985 546003.473985,142152.572985 545998.626985,142143.089985 545992.867985,142131.365985 545986.142985,142125.570985 545982.482985,142118.447985 545976.998985,142096.890985 545958.860985,142084.848985 545949.882985,142068.162985 545938.270985,142059.174985 545932.384985,142042.151985 545921.873985,142030.906985 545914.386985,142023.584985 545909.156985,142018.526985 545905.193985,142015.089985 545902.283985,142007.356985 545895.188985,141997.952985 545885.504985,141978.411985 545863.813985,141970.581985 545855.994985,141963.934985 545849.915985,141957.167985 545844.315985,141949.939985 545838.921985,141943.509985 545834.697985,141935.696985 545830.192985,141927.585985 545826.245985,141920.060985 545823.365985,141915.730985 545822.001985,141911.337985 545820.882985,141906.909985 545820.080985,141900.193985 545819.531985,141895.681985 545819.481985,141891.151985 545819.648985,141882.152985 545820.550985,141875.954985 545821.657985,141871.598985 545822.759985,141835.260985 545833.483985,141828.631985 545835.167985,141819.750985 545837.019985,141815.382985 545838.106985,141811.145985 545839.501985,141805.788985 545841.924985,141801.806985 545844.098985,141797.952985 545846.526985,141794.270985 545849.180985,141790.809985 545852.035985,141787.313985 545855.407985,141784.315985 545858.759985,141778.763985 545865.928985,141772.511985 545874.919985,141762.709985 545891.608985,141755.482985 545903.062985,141753.252985 545906.957985,141749.978985 545913.877985,141748.666985 545918.387985,141748.768985 545921.000985,141751.304985 545924.740985,141755.513985 545927.302985,141756.711985 545927.533985,141760.888985 545927.181985,141765.244985 545925.936985,141769.700985 545924.397985,141774.175985 545923.166985,141780.031985 545922.354985,141784.630985 545921.853985,141789.209985 545921.625985,141793.664985 545921.852985,141796.571985 545922.361985,141800.821985 545923.878985,141804.901985 545926.294985,141808.334985 545929.381985,141809.624985 545931.053985,141811.674985 545934.859985,141813.219985 545939.084985,141814.397985 545943.557985,141815.347985 545948.104985,141816.698985 545956.095985,141817.630985 545969.607985,141818.087985 545974.081985,141819.103985 545980.957985,141820.067985 545985.702985,141821.975985 545989.546985,141822.773985 545990.339985,141826.310985 545992.454985,141830.547985 545993.897985,141842.968985 545996.468985,141847.509985 545997.140985,141856.800985 545997.868985,141861.005985 545998.965985,141862.625985 545999.768985,141866.109985 546002.355985,141869.292985 546005.647985,141872.113985 546009.408985,141874.515985 546013.402985,141875.853985 546016.074985,141877.440985 546020.184985,141878.605985 546024.508985,141879.480985 546028.971985,141881.195985 546039.871985,141881.790985 546044.335985,141882.519985 546053.351985,141883.053985 546057.813985,141883.746985 546061.327985,141884.939985 546065.652985,141886.382985 546069.934985,141888.045985 546074.147985,141889.902985 546078.266985,141893.383985 546084.869985,141898.220985 546092.482985,141903.490985 546099.802985,141906.468985 546103.551985,141909.433985 546106.937985,141929.822985 546129.167985,141938.792985 546139.272985,141943.052985 546143.689985,141949.747985 546149.692985,141964.954985 546162.315985,141973.916985 546169.572985,141988.206985 546180.523985,141994.103985 546185.427985,142000.869985 546191.374985,142006.985985 546197.194985,142010.101985 546200.434985,142022.076985 546213.883985,142031.699985 546223.931985,142040.717985 546233.530985,142049.725985 546243.589985,142058.221985 546253.642985,142066.572985 546264.239985,142071.784985 546271.572985,142087.501985 546294.715985,142092.258985 546301.453985,142100.397985 546312.229985,142108.079985 546321.503985,142125.060985 546340.016985,142133.543985 546348.938985,142143.242985 546358.327985,142163.998985 546377.305985,142173.789985 546386.599985,142191.111985 546403.493985,142204.870985 546417.738985,142212.229985 546425.909985,142226.183985 546442.081985,142233.915985 546451.275985,142245.281985 546465.234985,142249.865985 546470.532985,142260.724985 546482.422985,142276.240985 546498.862985,142283.837985 546507.332985,142289.597985 546514.245985,142305.035985 546533.383985,142311.432985 546541.561985,142319.545985 546552.352985,142325.631985 546560.748985,142331.597985 546569.324985,142352.206985 546601.281985,142358.484985 546610.374985,142363.806985 546617.636985,142370.309985 546626.052985,142375.995985 546633.031985,142381.874985 546639.851985,142388.050985 546646.513985,142394.445985 546652.851985,142406.112985 546663.869985,142412.850985 546669.837985,142418.240985 546674.127985,142443.384985 546692.509985,142450.371985 546698.165985,142457.310985 546704.523985,142460.526985 546707.694985,142466.605985 546714.329985,142470.300985 546719.095985,142475.145985 546726.700985,142483.032985 546740.420985,142501.498985 546775.196985,142510.156985 546792.354985,142514.053985 546800.467985,142518.478985 546810.391985,142522.272985 546820.003985,142525.007985 546828.570985,142528.781985 546841.541985,142532.004985 546851.396985,142534.853985 546859.935985,142539.055985 546873.966985,142541.391985 546882.669985,142542.843985 546889.440985,142543.557985 546893.873985,142544.550985 546902.823985,142545.871985 546922.835985,142546.360985 546938.371985,142546.544985 546956.386985,142546.739985 546960.876985,142547.362985 546967.620985,142548.653985 546976.536985,142550.299985 546985.393985,142551.436985 546990.406985,142554.966985 547003.451985,142555.834985 547007.422985,142557.197985 547016.310985,142558.683985 547029.428985,142559.219985 547035.983985,142568.219985 547036.121985,142572.728985 547036.024985,142581.714985 547035.501985,142591.573985 547035.199985,142595.869985 547034.180985,142597.816985 547032.770985,142600.066985 547029.423985,142601.774985 547025.338985,142603.042985 547020.781985,142603.973985 547016.020985,142604.933985 547009.293985,142605.238985 547004.860985,142605.137985 547000.377985,142603.950985 546984.754985,142603.663985 546971.251985,142603.742985 546962.255985,142604.252985 546952.983985,142607.153985 546916.365985,142607.517985 546898.350985,142607.740985 546893.863985,142608.381985 546887.057985,142608.975985 546882.544985,142609.858985 546878.111985,142611.177985 546873.849985,142613.093985 546869.621985,142615.298985 546865.709985,142622.403985 546854.127985,142624.843985 546849.369985,142627.944985 546842.588985,142629.542985 546838.792985,142626.214985 546838.483985,142622.666985 546837.753985,142618.842985 546836.097985,142616.469985 546834.131985,142613.916985 546830.574985,142611.830985 546826.313985,142607.626985 546815.755985,142606.081985 546811.513985,142604.771985 546807.169985,142603.734985 546802.764985,142603.006985 546798.336985,142602.576985 546792.392985,142602.860985 546774.337985,142602.460985 546761.163985,142602.555985 546756.672985,142603.363985 546746.339985,142604.441985 546737.393985,142606.371985 546725.978985,142608.360985 546717.192985,142611.192985 546706.280985,142617.884985 546683.219985,142621.661985 546670.257985,142624.159985 546661.045985,142628.692985 546643.625985,142629.847985 546640.178985,142633.051985 546631.746985,142634.346985 546627.450985,142636.677985 546616.584985,142638.067985 546607.674985,142638.672985 546602.065985,142639.054985 546593.084985)) + MULTIPOLYGON(((141877.641440651 545899.174621292,141877.705860312 545899.294221892,141882.11313423 545909.102129247,141883.65813423 545913.327129247,141885.747003497 545919.984419878,141886.925003497 545924.457419878,141887.812773449 545928.219509296,141888.066269442 545929.432821165,141894.314514948 545931.768203543,141895.934514948 545932.571203543,141907.337873997 545939.553978711,141910.821873997 545942.140978711,141920.028110834 545950.223119104,141923.211110834 545953.515119104,141929.291070623 545960.64543261,141932.112070623 545964.40643261,141936.386163135 545970.755561895,141938.788163135 545974.749561895,141941.577933878 545979.821814492,141942.915933878 545982.493814492,141945.819306375 545989.059178425,141947.406306375 545993.169178425,141949.858608213 546000.673761355,141951.023608213 546004.997761355,141952.204821483 546010.079457345,141953.079821483 546014.542457345,141953.569534375 546017.314933424,141955.284534375 546028.214933424,141955.538513823 546029.962978582,141956.133513823 546034.426978582,141956.547015579 546038.291492288,141957.068194351 546044.737236885,141957.152341479 546044.950412983,141957.325820875 546045.335206539,141958.314278321 546047.210180545,141960.358181963 546050.427099798,141963.321167297 546054.54266956,141964.077791321 546055.495182476,141965.289877034 546056.879372097,141985.095300574 546078.473102308,141985.912357827 546079.378606053,141993.853063383 546088.324072012,141995.14764048 546089.666360049,141998.751538347 546092.897756449,142012.507137526 546104.315980189,142020.334324491 546110.654062739,142033.82710591 546120.994122174,142036.162117405 546122.858525009,142042.059117405 546127.762525009,142043.617847653 546129.095246693,142050.383847653 546135.042246693,142052.571936283 546137.04351867,142058.687936283 546142.86351867,142061.043334899 546145.20649664,142064.159334899 546148.44649664,142066.115612895 546150.560407407,142077.185044474 546162.992372778,142085.866152691 546172.056882324,142086.361437562 546172.579033734,142095.379437562 546182.178033734,142096.589433311 546183.497183789,142105.597433311 546193.556183789,142107.009124291 546195.178809091,142115.505124291 546205.23180909,142117.128865006 546207.221228377,142125.479865006 546217.818228377,142127.704781975 546220.789974659,142132.916781975 546228.122974659,142133.82969278 546229.436845684,142149.16407951 546252.016454521,142152.833135573 546257.213448373,142159.230621321 546265.683691205,142164.630419358 546272.202530961,142179.877347538 546288.825013818,142186.825973671 546296.133235243,142194.640460695 546303.69795518,142214.608251982 546321.955265984,142215.633435038 546322.910364135,142225.424435038 546332.204364135,142226.155519359 546332.907799244,142243.477519359 546349.801799244,142245.057240492 546351.389192419,142258.816240492 546365.634192419,142260.60074664 546367.547415314,142267.95974664 546375.718415314,142269.0138111 546376.914096464,142282.9678111 546393.086096464,142283.584044577 546393.80949635,142291.316044577 546403.00349635,142292.07492763 546403.920548225,142302.732765765 546417.009828757,142305.924370984 546420.698555731,142315.690325376 546431.391731689,142330.784633982 546447.384927968,142332.07318498 546448.785390755,142339.67018498 546457.255390755,142341.457996817 546459.323254338,142347.217996817 546466.236254338,142347.972808202 546467.156920281,142363.410808202 546486.294920281,142364.109985813 546487.175085122,142370.506985813 546495.353085122,142371.380279621 546496.491796764,142379.493279621 546507.282796764,142380.270548754 546508.335632093,142386.356548754 546516.731632093,142387.199582483 546517.918727702,142393.165582483 546526.494727702,142394.627797238 546528.67719577,142409.419852589 546551.614248168,142404.98285813 546539.132013755,142404.451559945 546537.584042013,142400.939559945 546526.976042013,142400.480225918 546525.54043112,142396.715362473 546513.353043807,142392.913672221 546501.861972869,142390.068674641 546498.500366966,142389.992878233 546498.421000584,142378.817000124 546488.493059598,142378.086926955 546487.835905028,142367.535926955 546478.212905028,142364.909602613 546475.69828352,142358.571602613 546469.32828352,142354.874841929 546465.33279835,142351.636841929 546461.56779835,142349.749969065 546459.284105417,142346.951969065 546455.758105417,142345.160602985 546453.406947759,142339.836602985 546446.125947759,142338.260264246 546443.885413098,142330.308264246 546432.132413098,142328.535037117 546429.384346234,142323.817037117 546421.710346234,142321.927671973 546418.457063955,142315.105671973 546406.001063955,142313.537302447 546402.97633277,142311.548302447 546398.91733277,142310.087612695 546395.75238239,142308.297612695 546391.62438239,142306.656350972 546387.510673792,142305.301350972 546383.799673792,142303.708958315 546378.927898727,142302.464958315 546374.629898727,142301.363692554 546370.358469992,142300.369692554 546365.973469992,142299.514129585 546361.6004171,142296.443129585 546342.9844171,142296.031539165 546340.154443547,142293.900397619 546323.243537151,142291.369310869 546306.600300969,142289.797647252 546298.659423202,142288.737110427 546293.917852643,142288.308553476 546293.200509688,142283.551347786 546285.897969508,142282.92865993 546285.0069985,142257.404927525 546252.671429486,142255.713626811 546250.444615783,142250.405626811 546243.178615783,142248.3936298 546240.283994795,142245.3646298 546235.699994795,142243.741022598 546233.13120077,142230.618022598 546211.40620077,142229.788732319 546209.998915712,142225.303732319 546202.194915712,142223.270189057 546198.409454597,142219.946189057 546191.772454597,142218.157262755 546187.933471266,142206.773016008 546161.584448555,142205.134661009 546158.129267366,142202.766978579 546153.79043851,142198.029228403 546146.079093577,142197.157513648 546144.787292029,142193.087439501 546139.196412672,142184.390821916 546127.739774611,142178.566384699 546120.446161489,142174.083672624 546115.179570395,142167.308082543 546107.599481607,142159.422241281 546099.097129671,142155.940166917 546095.579503782,142151.391959633 546091.303897605,142144.611559904 546085.39334694,142136.289796977 546078.813896639,142125.237365832 546070.586561238,142118.417472551 546065.808393395,142112.902198665 546062.282139269,142104.960071982 546057.458907426,142094.048646282 546051.200007919,142091.316510646 546049.554652727,142085.521510646 546045.894652727,142079.817683837 546041.910549586,142072.694683837 546036.426549586,142070.161582194 546034.387340126,142050.293055847 546017.670017174,142041.002535456 546010.743402652,142026.189911721 546000.435109064,142018.921797166 545995.675415887,142002.7487187 545985.68920736,142000.586631141 545984.302515005,141989.341631141 545976.815515005,141987.314120471 545975.41699534,141979.992120471 545970.186995341,141977.328827015 545968.19398906,141972.270827015 545964.23098906,141970.064148329 545962.43342474,141966.627148329 545959.52342474,141964.385724723 545957.547698138,141956.652724723 545950.452698138,141953.551828905 545947.438436458,141944.147828905 545937.754436458,141942.230328359 545935.704442536,141924.014894557 545915.484854254,141918.751360697 545910.228714887,141914.688959696 545906.513454516,141910.802596742 545903.297312571,141906.884006543 545900.37300771,141904.155584242 545898.580650665,141900.513236871 545896.480461889,141897.716337661 545895.119426113,141896.158027917 545894.523023181,141892.501650467 545894.889514175,141891.765476277 545895.020999304,141891.418106088 545895.108878539,141877.641440651 545899.174621292)),((142522.12691348 546663.927344692,142525.878983767 546668.376621498,142529.573983767 546673.142621498,142533.555039396 546678.79803713,142538.400039396 546686.40303713,142538.732285602 546686.951715847,142539.164401741 546685.379234028,142545.856401741 546662.318234028,142545.879636654 546662.23833088,142547.048457102 546658.227144582,142546.952449096 546658.28076391,142532.429577358 546662.867582888,142522.12691348 546663.927344692)),((142563.173159694 546422.597768887,142563.306554182 546420.452473534,142563.615151908 546416.874751041,142565.635474263 546398.579761601,142566.083844628 546391.381866262,142566.316980211 546383.486145069,142566.155872751 546371.599407718,142566.155107006 546369.624724347,142566.251107006 546362.111724347,142566.298470045 546360.238042892,142566.638470045 546351.240042892,142566.758978497 546348.966228369,142567.428978497 546339.147228369,142567.749862505 546335.651431536,142568.781862505 546326.712431536,142568.996946745 546325.018830018,142570.232946745 546316.099830018,142570.396767822 546314.979910454,142574.528541313 546288.149359514,142575.805994456 546278.965662607,142576.99781354 546266.976158737,142577.605675477 546262.336726435,142578.469675477 546257.032726435,142579.155638085 546253.391084627,142580.098638085 546248.986084627,142581.12902275 546244.772205971,142583.52502275 546236.072205971,142585.085329672 546231.090819493,142586.577329672 546226.850819493,142588.352000116 546222.288772705,142590.976000116 546216.144772706,142592.48278958 546212.840536993,142599.687446415 546198.003867201,142604.801459699 546186.278130712,142607.426212139 546179.524774062,142607.868379264 546178.225412599,142609.43144457 546172.934990623,142611.089485303 546166.005400484,142613.216029802 546154.975978058,142615.676026847 546140.99989037,142620.79705315 546108.57195199,142620.94099002 546107.694304261,142623.20499002 546094.384304261,142623.459485201 546092.970207417,142625.676485201 546081.294207417,142626.104627492 546079.202304987,142629.236043552 546064.93894821,142630.215513188 546057.179875575,142630.629732904 546054.337680869,142631.363732904 546049.898680869,142633.433075569 546040.881607426,142634.687075569 546036.637607426,142638.510425367 546026.472770429,142640.150425367 546022.917770429,142642.480430748 546018.466523724,142641.027357955 546015.14555981,142639.649357955 546010.64655981,142636.858689639 545997.307991374,142636.527659805 545983.684641682,142638.667197159 545970.226275604,142643.206666449 545957.377211197,142649.996200436 545945.561650871,142652.688200436 545941.730650871,142663.754572282 545929.217634588,142677.316104529 545919.464429706,142681.682104529 545917.011429706,142693.426179898 545911.879893636,142696.091415905 545900.670772273,142697.492415905 545896.969772273,142705.889871009 545880.948038762,142715.414212808 545870.187671046,142715.095917569 545869.251483659,142713.915917569 545864.45548366,142711.827420359 545850.073698504,142712.551757998 545835.559123076,142716.061734334 545821.456725019,142717.563734334 545817.223725019,142723.160850488 545805.035697335,142730.839253034 545794.039431495,142732.423638146 545792.465251846,142732.229913007 545789.113061844,142732.124214445 545786.484233213,142731.742214445 545769.618233213,142731.846088725 545763.62459162,142732.103088725 545759.14459162,142733.091845837 545750.573637772,142733.849845837 545746.220637772,142736.051277823 545737.041214111,142737.358277823 545732.791214111,142739.612245794 545726.480420921,142741.313245794 545722.315420921,142743.392610534 545717.679213852,142745.394610534 545713.592213852,142747.091156317 545710.33335266,142749.299156317 545706.33435266,142750.593646243 545704.082876687,142753.827646243 545698.676876687,142757.017309888 545693.78754534,142759.621309888 545690.11654534,142763.473053418 545685.188206237,142763.719391077 545679.586190791,142763.97417557 545675.88301874,142764.39317557 545671.41201874,142765.311343032 545664.799224985,142765.884343032 545661.694224985,142768.427830273 545651.768387062,142769.836830273 545647.505387062,142771.122607947 545644.29092145,142769.627987702 545640.4627495,142767.829230953 545635.309494721,142766.508230953 545631.030494721,142764.268758247 545621.692167086,142763.080758247 545614.825167086,142762.471320045 545610.584678423,142761.942320045 545605.971678423,142761.569706987 545601.591706649,142761.311706987 545596.952706649,142761.222789487 545590.783002569,142761.344789487 545586.221002568,142762.046551039 545577.797461739,142762.661551039 545573.417461739,142764.272420575 545565.259904795,142764.846420575 545563.015904795,142768.451340483 545552.339073997,142770.149340483 545548.332073997,142770.531903099 545547.60567335,142767.066219406 545540.164593055,142759.477943146 545525.004982854,142757.708431209 545521.208619544,142752.649431209 545509.512619544,142751.551624273 545506.833836891,142749.909624273 545502.595836891,142748.369517131 545498.224430932,142747.006517131 545493.937430932,142745.17982804 545487.085615164,142744.23982804 545482.744615164,142743.078730528 545475.837064976,142742.751730528 545473.121064976,142742.276117764 545467.208206167,142742.093117764 545462.715206167,142742.087793899 545456.744405281,142742.264793899 545452.199405281,142742.579218995 545447.664979929,142743.032218995 545443.128979929,142743.501544877 545439.384778174,142744.326544877 545433.920778174,142746.058895095 545425.641931808,142746.440700134 545424.222084185,142742.574413931 545413.288115987,142742.258216828 545412.375237292,142737.943216828 545399.653237293,142737.295828758 545397.652771653,142734.642828758 545389.044771653,142733.004052335 545382.777770118,142731.275052335 545374.766770118,142730.39806615 545369.944181358,142729.73706615 545365.486181358,142729.2381615 545361.321847849,142728.4151615 545352.329847849,142728.168278677 545348.622848739,142727.970278677 545343.880848739,142727.90723787 545341.333298509,142727.83723787 545332.302298509,142727.891109263 545328.820038693,142728.066109263 545324.299038693,142728.282894716 545320.807647582,142728.666894716 545316.318647582,142729.173441485 545311.926230933,142729.817441485 545307.494230933,142730.73712472 545302.404984802,142732.15212472 545295.870984802,142733.128689816 545291.890606991,142734.326689816 545287.526606991,142735.673200147 545283.149723014,142738.596200148 545274.587723014,142740.12311926 545270.506845414,142741.81611926 545266.353845414,142744.266591111 545260.962168915,142746.004591111 545257.507168915,142749.506386092 545251.299483692,142751.902386092 545247.487483692,142753.541574429 545244.99128141,142756.602947282 545240.525707843,142761.168560631 545232.247239227,142764.752112802 545226.398902209,142767.248112802 545222.714902209,142777.68985613 545210.401301622,142780.51585613 545207.717301622,142792.291920722 545198.576243048,142805.643305572 545191.944865233,142806.709305572 545191.541865233,142819.295518248 545188.157532351,142820.513152317 545187.588566786,142821.183881269 545187.224222223,142831.382030154 545181.101283212,142834.358861949 545179.405276062,142840.015861949 545176.351276062,142842.154490622 545175.240706808,142878.139161168 545157.282231378,142890.894082364 545150.59040817,142915.054824443 545137.381061669,142935.007701726 545125.975814653,142935.893060169 545125.477660471,142948.687060169 545118.392660471,142949.781054504 545117.798643081,142953.777054504 545115.671643081,142957.311543596 545113.908131947,142961.382543596 545112.009131947,142966.965898379 545109.67409755,142970.889898379 545108.21609755,142977.829755463 545106.014522654,142982.138755463 545104.874522654,142987.687026808 545103.629627821,142992.101026808 545102.813627821,142995.892894258 545102.212567732,143007.959724981 545100.615249922,143016.719596759 545099.11938355,143018.248987647 545098.832903706,143020.662952108 545092.718408498,143022.631952108 545089.048408498,143034.351990238 545072.843499495,143037.596990238 545069.428499495,143046.909646142 545061.133280502,143050.824646142 545058.191280502,143058.561995631 545053.092908939,143062.173995631 545051.020908939,143075.387740364 545045.056303639,143079.500740364 545043.660303638,143092.60041902 545040.492862518,143097.07641902 545039.828862518,143099.449103684 545039.54767643,143101.172981562 545036.376335872,143105.684981562 545029.050335872,143108.650602588 545024.598863184,143113.918602588 545017.271863184,143116.181237624 545014.285211233,143118.988237624 545010.766211233,143122.008219297 545007.212708468,143124.101219297 545004.899708468,143127.367650635 545001.510105772,143133.813650635 544995.228105772,143137.31405608 544992.026252749,143144.16305608 544986.148252749,143147.031765936 544983.806712825,143150.583765936 544981.050712825,143152.71192648 544979.459064256,143158.471531126 544975.308525848,143152.488954432 544973.36863557,143151.290852891 544973.14424959,143124.026374215 544968.677127825,143121.99971731 544968.316446016,143113.50171731 544966.683446016,143111.234393337 544966.211338712,143102.450393337 544964.240338712,143100.277112445 544963.71855575,143090.332112445 544961.17355575,143088.600937133 544960.708422577,143070.240937133 544955.539422577,143068.861417602 544955.136734781,143053.880810284 544950.60763316,143053.161057972 544950.438725341,143051.908121465 544950.209913447,143050.045946936 544949.938572794,143043.252308486 544949.182797573,143036.770444719 544948.620595103,143024.713379063 544948.038831855,143021.989139953 544947.857631867,143017.509139953 544947.477631867,143014.248691155 544947.129138722,143009.343691155 544946.496138722,143007.208594828 544946.189324592,142990.285346989 544943.508522675,142979.490357485 544942.269291678,142972.736217625 544941.681647607,142967.173223031 544941.374693669,142943.1990916 544940.628724454,142936.550379826 544940.587340897,142930.68011804 544940.772379481,142923.870913325 544941.191325877,142918.967690534 544941.632416726,142911.957397573 544942.439999966,142901.028620542 544943.997283252,142878.280006558 544948.146650008,142875.154627162 544948.64881862,142860.404282733 544950.700516434,142858.413860331 544951.041012977,142854.636083924 544951.823455507,142849.26098959 544953.144645952,142843.121410858 544955.022367542,142827.055332059 544960.863316742,142800.904758162 544970.905450071,142790.397929902 544975.15839382,142783.07867129 544978.465296681,142777.633670208 544981.163489181,142774.012250742 544983.152667224,142762.746978398 544989.718173814,142760.219205152 544991.126769516,142749.907137747 544996.615158539,142747.05567702 544999.291304986,142733.734838985 545012.407664625,142724.461345351 545021.795645835,142714.509975712 545030.252045505,142703.242610105 545036.854084988,142696.565524036 545040.020794194,142689.943985687 545043.567713336,142681.965999583 545048.380291592,142679.697345719 545049.944503952,142675.897007748 545053.004424698,142651.14402007 545074.417479465,142649.653387682 545075.673487137,142639.206387682 545084.246487137,142636.395792489 545086.443173381,142629.490792489 545091.580173381,142625.140699585 545094.584218452,142617.568699585 545099.428218452,142615.184279799 545100.891647667,142601.969416944 545108.666688393,142562.164704472 545132.850290716,142559.823579005 545134.215365924,142550.233579005 545139.577365924,142548.196955126 545140.675204652,142539.234955126 545145.329204653,142536.958074485 545146.462997124,142482.383727063 545172.493385305,142474.761779489 545176.356102174,142482.406079363 545179.630725143,142494.771377493 545188.192249236,142505.179836294 545199.048780818,142513.212896402 545211.763742002,142518.547521275 545225.825821154,142520.969187589 545240.669534466,142521.198187589 545244.401534466,142521.304423008 545251.27162819,142521.165423008 545255.84862819,142520.719953948 545262.043952184,142520.160953948 545266.960952184,142518.93644197 545274.387915388,142517.90544197 545279.140915388,142515.808118995 545286.817941304,142515.056118995 545289.088941304,142511.974344504 545296.900268538,142510.129344504 545300.904268538,142506.347002978 545308.067395254,142504.034002978 545311.927395254,142500.87826191 545316.761526421,142498.23526191 545320.488526421,142495.409062494 545324.221232926,142489.676062494 545331.321232926,142486.919842444 545334.543836362,142483.586842444 545338.224836361,142479.912126979 545342.007023169,142476.666126979 545345.121023169,142474.661850396 545346.974931165,142468.697811973 545352.293396033,142464.203470399 545356.531873697,142454.541347208 545365.724817935,142452.584128009 545367.522024945,142443.022128009 545375.995024945,142441.04960024 545377.682871661,142434.107600241 545383.417871661,142431.701765061 545385.323937958,142428.433765061 545387.805937958,142426.46390746 545389.252026981,142419.11190746 545394.467026981,142415.918336539 545396.61138019,142408.307336539 545401.44338019,142404.693715607 545403.597791806,142400.772715607 545405.788791806,142397.580305623 545407.473168062,142393.242305623 545409.630168062,142390.430997905 545410.956111498,142386.323997905 545412.790111498,142383.800762344 545413.862000919,142375.436762344 545417.236000919,142373.921850366 545417.828091793,142354.880850366 545425.033091793,142351.857572356 545426.103759784,142339.627572356 545430.142759784,142337.296611591 545430.870700603,142328.658611591 545433.414700603,142326.411210068 545434.038779898,142318.396210068 545436.130779898,142315.980343142 545436.718751866,142302.801343142 545439.695751866,142299.253317627 545440.407712063,142289.121317627 545442.187712063,142284.708190846 545442.828409761,142275.773190846 545443.855409761,142271.882365889 545444.20024013,142253.206365889 545445.36624013,142250.25361744 545445.492245229,142220.88261744 545446.166245229,142219.060016947 545446.185915684,142203.614016947 545446.164915683,142201.2893183 545446.125716645,142196.7793183 545445.979716645,142192.690018858 545445.735396753,142188.218018858 545445.345396753,142181.260662092 545444.40885739,142174.530662092 545443.17985739,142169.610029942 545442.109423296,142165.246029942 545441.005423296,142162.422688099 545440.232250626,142158.089688099 545438.954250626,142155.385672467 545438.100829672,142146.827672467 545435.220829672,142143.957663255 545434.189573698,142138.874663255 545432.245573698,142135.395019772 545430.81372461,142120.566269665 545424.27215827,142119.500301508 545423.861962333,142118.932465517 545424.64621397,142118.416616784 545425.447422053,142115.945297515 545429.875647972,142111.755470398 545438.185258358,142106.938614375 545448.752069634,142091.875059809 545482.79340861,142091.161457398 545484.35735578,142085.417457398 545496.57335578,142083.87780535 545499.661265107,142081.16980535 545504.793265107,142079.948570884 545507.01578929,142071.042744047 545522.593552343,142054.94650702 545553.292493106,142045.071599927 545573.0868089,142043.375666967 545576.98830646,142043.012707197 545578.025926654,142042.687487035 545579.140709098,142038.867375782 545594.258708892,142038.702371777 545594.967616983,142039.999868991 545595.408297746,142043.936868991 545597.089297746,142054.71169485 545602.764967093,142058.50569485 545605.175967093,142065.560500836 545610.256118784,142069.179500836 545613.195118784,142073.735272826 545617.211670854,142077.147272826 545620.474670854,142080.054005554 545623.411995294,142083.224005554 545626.796995294,142084.607367054 545628.315329402,142086.159367054 545630.066329402,142090.099232188 545634.902450304,142092.781232188 545638.489450304,142098.246747572 545646.923757937,142100.482747572 545650.940757937,142104.283592674 545658.817469041,142106.037592674 545663.069469041,142108.691283741 545670.623066138,142109.845283741 545674.570066138,142111.528646058 545681.553520292,142112.388646058 545686.058520292,142113.489339174 545694.257333541,142113.860339174 545698.987333541,142113.777659688 545711.68947355,142113.360659688 545716.24447355,142110.041757597 545732.461231854,142109.090757597 545735.405231854,142103.032253541 545749.223316403,142100.903253541 545752.994316403,142095.330868988 545761.46936879,142093.646225074 545763.688616171,142098.550316565 545766.24689881,142102.797775984 545768.343405524,142113.816242033 545773.253770126,142116.914930893 545774.720479237,142120.923930893 545776.731479237,142127.662708786 545780.559799026,142132.961708786 545783.943799026,142138.714106076 545788.009867193,142142.274106076 545790.785867193,142145.156612386 545793.151111169,142148.580612386 545796.106111169,142150.437720568 545797.763401057,142155.661720568 545802.583401057,142157.735963031 545804.572134176,142164.115963031 545810.928134176,142165.673621997 545812.526816921,142171.861621997 545819.069816921,142173.151904 545820.469275711,142176.463904 545824.154275711,142177.878853344 545825.774733029,142199.229459399 545850.946026069,142221.937738805 545877.342049,142227.64281376 545883.624660946,142236.231104288 545892.527201918,142237.528325489 545893.90631015,142241.489325489 545898.22531015,142242.377659016 545899.211304892,142259.046659016 545918.045304892,142259.16655617 545918.181104611,142267.189603148 545927.29043874,142280.910275395 545942.276089567,142283.18600906 545944.879684065,142295.517998649 545959.662686634,142306.82496395 545972.664930935,142308.690271817 545974.895819744,142318.185271817 545986.709819744,142319.789204154 545988.778400791,142329.414204154 546001.649400791,142331.082877465 546003.971869915,142340.093877465 546017.031869915,142341.509990276 546019.161057488,142361.117748757 546049.760925374,142371.936714522 546065.945512046,142372.383540469 546066.621821419,142403.978907861 546115.010649734,142418.663908489 546136.81470032,142419.380778098 546137.899267784,142428.93169517 546152.624939006,142438.590926089 546167.134469946,142446.478024591 546178.272031506,142449.009493112 546182.088746497,142451.373493112 546185.900746497,142454.002540033 546190.494510525,142458.624540033 546199.275510525,142460.294366874 546202.650869281,142462.205366874 546206.770869281,142463.933813868 546210.802105003,142465.587813868 546214.994105003,142467.553964639 546220.622969176,142468.855964639 546224.887969176,142470.850503657 546233.023701517,142471.732503657 546237.748701517,142472.732551988 546245.112533143,142473.115551988 546249.585533143,142473.353740942 546253.684992485,142474.164517048 546280.122500448,142474.518945557 546286.854394166,142475.484082272 546297.455381361,142475.577554892 546298.145593092,142476.412377262 546302.435159099,142477.515627436 546306.680897539,142478.821771293 546310.678715758,142479.005469818 546311.135719612,142486.329182661 546326.449096693,142489.161147018 546333.19831702,142494.444598775 546347.741337944,142496.432724976 546349.110054672,142509.296724976 546358.654054672,142512.252083793 546360.963456642,142522.422083793 546369.328456642,142524.729839064 546371.306366957,142531.495839064 546377.347366957,142535.750742092 546381.459251793,142538.853742092 546384.704251793,142542.734440379 546389.093662879,142544.865440379 546391.702662879,142548.527244314 546396.577600794,142551.064244314 546400.257600794,142554.007091707 546404.878853121,142556.293091707 546408.775853121,142558.494817299 546412.807189941,142560.549817299 546416.860189941,142562.683639161 546421.445755647,142563.173159694 546422.597768887)),((142330.52667867 545247.979227065,142325.921467736 545249.418839789,142322.795018404 545250.322209481,142314.097018404 545252.632209481,142310.460457631 545253.50156783,142301.360457631 545255.43856783,142299.515629523 545255.807129216,142273.62732534 545260.642287556,142266.855884877 545262.064251601,142264.544640488 545262.629973512,142252.558719513 545265.889979474,142288.558655642 545265.17039555,142294.585171074 545264.804812626,142300.630922759 545264.266142203,142303.567647948 545263.642920539,142303.739033976 545263.596057171,142307.610458301 545262.293065229,142310.660293699 545261.008290469,142311.629833117 545260.532391423,142313.271351219 545259.656805173,142318.51700937 545256.60417322,142319.800897554 545255.792958607,142324.602377781 545252.462868348,142330.52667867 545247.979227065))) + + #20 Polygon - gid: 2520 + + POLYGON((158481.432985 510583.562985,158489.304985 510568.137985,158489.742985 510554.602985,158495.366985 510539.211985,158506.487985 510532.681985,158525.237985 510536.074985,158524.509985 510524.803985,158520.526985 510499.704985,158521.742985 510487.947985,158532.814985 510476.516985,158555.418985 510459.975985,158566.707985 510455.588985,158567.920985 510448.494985,158577.510985 510431.915985,158588.800985 510429.989985,158644.968985 510413.253985,158646.535985 510388.879985,158639.226985 510363.317985,158625.047985 510378.536985,158614.302985 510385.658985,158587.607985 510397.181985,158536.683985 510422.499985,158517.905985 510433.457985,158502.462985 510442.913985,158484.671985 510442.967985,158476.273985 510428.753985,158462.699985 510418.836985,158461.863985 510434.462985,158450.400985 510443.041985,158440.544985 510461.406985,158426.745985 510479.269985,158426.784985 510498.045985,158425.669985 510520.088985,158428.047985 510546.655985,158419.106985 510571.356985,158413.970985 510573.103985,158389.245985 510566.742985,158363.334985 510557.918985,158334.185985 510548.758985,158315.090985 510548.140985,158310.171985 510556.985985,158307.972985 510575.658985,158306.700985 510582.332985,158301.611985 510609.026985,158300.440985 510636.711985,158311.307985 510641.956985,158342.899985 510660.167985,158356.271985 510670.241985,158374.033985 510686.769985,158399.760985 510698.276985,158425.077985 510713.270985,158449.656985 510724.790985,158472.445985 510734.800985,158484.168985 510734.772985,158490.402985 510728.308985,158497.468985 510716.696985,158500.802985 510700.146985,158495.940985 510683.642985,158479.917985 510651.629985,158470.433985 510635.228985,158468.860985 510617.597985,158470.049985 510610.615985,158481.432985 510583.562985)) + POLYGON( EMPTY) + + #21 Polygon - gid: 2521 + + POLYGON((157869.315985 520433.637985,157856.178985 520399.216985,157834.269985 520383.765985,157837.129985 520350.383985,157849.976985 520324.750985,157884.267985 520315.565985,157928.572985 520281.754985,157969.435985 520288.428985,157995.223985 520278.692985,158043.757985 520253.692985,158088.001985 520238.144985,158131.710985 520233.176985,158161.789985 520246.081985,158177.706985 520240.052985,158184.062985 520208.456985,158173.722985 520194.194985,158141.933985 520199.529985,158117.247985 520208.894985,158058.927985 520207.808985,158035.018985 520213.752985,158019.448985 520203.796985,158016.808985 520180.093985,158007.024985 520150.917985,157971.159985 520128.594985,157943.413985 520100.672985,157936.868985 520070.503985,157895.009985 520063.382985,157866.038985 520063.004985,157831.988985 520058.373985,157815.198985 520060.788985,157814.667985 520062.114985,157805.376985 520079.736985,157805.131985 520111.664985,157793.919985 520111.222985,157780.766985 520105.771985,157761.185985 520162.929985,157768.122985 520191.771985,157788.795985 520203.076985,157809.040985 520190.281985,157822.093985 520173.832985,157849.686985 520173.862985,157865.312985 520195.645985,157879.132985 520236.462985,157885.168985 520252.260985,157867.794985 520266.033985,157813.882985 520286.000985,157795.021985 520258.542985,157778.258985 520254.263985,157744.848985 520244.603985,157712.168985 520249.566985,157684.754985 520260.299985,157665.400985 520256.359985,157651.387985 520249.849985,157648.472985 520254.899985,157628.126985 520277.906985,157632.442985 520323.400985,157637.148985 520356.136985,157613.676985 520373.009985,157611.837985 520410.654985,157615.005985 520437.710985,157641.030985 520432.938985,157674.459985 520440.319985,157700.786985 520441.225985,157736.859985 520437.355985,157780.029985 520431.763985,157800.420985 520439.994985,157800.694985 520446.629985,157801.243985 520459.900985,157790.056985 520479.632985,157799.422985 520483.141985,157816.313985 520487.074985,157838.367985 520462.690985,157869.315985 520433.637985)) + POLYGON((157709.297185021 520330.935932945,157711.385825117 520345.464985685,157712.092131453 520359.056710976,157711.360558615 520364.661253674,157728.04149239 520362.871682146,157761.152813139 520358.582627117,157762.403736042 520343.98182,157762.978712539 520340.826547721,157761.146281582 520339.328652421,157752.062634395 520328.465608525,157748.887917416 520323.843829254,157739.832907843 520321.225709156,157731.711564547 520322.459069829,157712.097710963 520330.138193288,157709.297185021 520330.935932945)) + + #22 Polygon - gid: 2522 + + POLYGON((153150.576985 520940.908985,153155.070985 520940.770985,153160.755985 520940.781985,153164.005985 520941.150985,153168.185985 520942.767985,153171.314985 520944.415985,153176.455985 520947.720985,153181.606985 520950.538985,153187.215985 520951.893985,153191.791985 520952.155985,153194.139985 520957.187985,153198.008985 520954.124985,153208.046985 520950.059985,153211.950985 520947.552985,153213.758985 520945.586985,153214.902985 520941.306985,153215.775985 520929.532985,153215.470985 520922.256985,153214.866985 520917.795985,153213.474985 520912.584985,153211.409985 520906.797985,153210.203985 520901.480985,153209.430985 520896.154985,153208.215985 520891.322985,153205.244985 520887.996985,153199.275985 520882.262985,153186.430985 520871.760985,153179.902985 520862.984985,153170.213985 520851.001985,153166.668985 520848.128985,153161.060985 520844.857985,153155.362985 520842.770985,153143.662985 520841.207985,153139.192985 520839.449985,153135.769985 520836.517985,153129.812985 520836.242985,153123.860985 520836.882985,153110.129985 520839.130985,153102.570985 520841.192985,153093.632985 520838.265985,153088.575985 520835.220985,153089.898985 520839.123985,153088.596985 520843.497985,153087.569985 520848.617985,153085.579985 520853.123985,153082.305985 520856.232985,153076.601985 520860.218985,153069.971985 520867.620985,153066.452985 520870.596985,153062.482985 520874.551985,153057.274985 520878.033985,153053.286985 520880.057985,153052.184985 520880.379985,153040.541985 520881.305985,153032.802985 520886.739985,153029.682985 520891.650985,153029.254985 520893.428985,153029.218985 520898.552985,153030.785985 520902.794985,153034.873985 520909.239985,153042.145985 520918.628985,153045.594985 520922.358985,153049.039985 520925.290985,153052.880985 520927.634985,153059.322985 520930.915985,153063.631985 520932.293985,153066.569985 520934.161985,153070.047985 520937.030985,153074.235985 520943.145985,153077.665985 520949.675985,153079.284985 520953.852985,153079.434985 520955.143985,153079.208985 520960.521985,153080.289985 520975.063985,153079.732985 520983.766985,153078.599985 520992.696985,153083.367985 520992.610985,153087.736985 520990.589985,153091.101985 520987.618985,153094.791985 520983.665985,153100.121985 520976.287985,153104.957985 520972.316985,153117.724985 520959.010985,153121.262985 520956.153985,153125.222985 520953.503985,153129.591985 520951.482985,153136.603985 520946.987985,153144.695985 520943.045985,153149.109985 520941.277985,153150.576985 520940.908985)) + POLYGON( EMPTY) + + #23 Polygon - gid: 2523 + + POLYGON((157261.821985 521212.042985,157255.517985 521158.904985,157227.447985 521110.819985,157193.480985 521080.159985,157154.275985 521056.383985,157110.994985 521055.200985,157075.666985 521042.824985,157053.089985 521016.601985,157057.673985 520992.362985,157039.358985 520960.816985,157034.486985 520926.714985,157029.615985 520902.356985,156995.512985 520877.997985,156966.282985 520873.125985,156937.052985 520873.125985,156907.821985 520863.382985,156873.719985 520843.895985,156855.757985 520822.219985,156849.459985 520818.621985,156836.865985 520811.424985,156793.392985 520777.048985,156766.039985 520737.460985,156728.760985 520722.977985,156710.216985 520732.313985,156697.880985 520740.090985,156693.336985 520756.434985,156668.342985 520768.289985,156629.440985 520764.303985,156604.591985 520776.688985,156602.502985 520800.105985,156616.097985 520861.121985,156609.482985 520899.994985,156586.751985 520928.161985,156566.844985 520935.459985,156563.162985 520961.757985,156557.828985 520985.666985,156555.414985 521022.078985,156562.430985 521063.373985,156560.713985 521082.827985,156553.817985 521111.533985,156555.075985 521118.090985,156559.312985 521117.477985,156590.563985 521112.953985,156645.119985 521099.542985,156681.977985 521069.587985,156745.810985 521043.788985,156797.577985 521042.609985,156839.811985 521059.742985,156900.802985 521071.653985,156963.644985 521085.826985,156980.767985 521096.550985,157015.014985 521117.998985,157045.450985 521159.433985,157060.450985 521187.893985,157099.503985 521191.189985,157138.274985 521174.733985,157191.026985 521169.054985,157232.239985 521201.560985,157257.694985 521216.582985,157261.821985 521212.042985)) + POLYGON((156631.095656882 521014.295354275,156634.676048003 521011.38552151,156643.851709985 521005.00170818,156653.874255463 521000.052523643,156717.707255463 520974.253523643,156730.658675837 520970.335547184,156744.103293312 520968.808428927,156795.870293312 520967.629428927,156811.101565777 520968.83930815,156825.771566439 520973.110906117,156861.294856822 520987.521583157,156915.178256666 520998.044532044,156917.303575206 520998.491627719,156978.458943209 521012.284235063,156979.041998034 521006.300667263,156974.497999612 520998.474023844,156968.502649166 520985.401119564,156965.112860065 520971.424196327,156961.82603665 520948.41778169,156960.075376293 520948.125985,156937.052985 520948.125985,156925.040076572 520947.157667617,156913.337363025 520944.277719163,156884.106363025 520934.534719163,156870.611358984 520928.501103151,156836.509358984 520909.014103151,156825.461831265 520901.308096946,156815.970836196 520891.750303639,156806.709938491 520880.574531528,156799.653894166 520876.542266084,156790.346650885 520870.254837571,156746.873650885 520835.878837571,156738.67880068 520828.345749364,156732.07152263 520820.156651212,156725.478303553 520824.198807514,156700.484303553 520836.053807514,156688.345254244 520840.513209791,156689.302884797 520844.811171234,156691.07391221 520859.221895786,156690.035101518 520873.703829102,156683.420101518 520912.576829102,156680.22196136 520924.914800881,156674.980833687 520936.533072215,156667.848085666 520947.096099894,156645.117085666 520975.263099894,156635.733933358 520984.95783639,156634.659225174 520985.727668446,156632.28366467 520996.375826696,156631.095656882 521014.295354275)) + + #24 Polygon - gid: 2524 + + POLYGON((157198.781985 521343.128985,157167.375985 521333.418985,157161.598985 521339.797985,157164.714985 521379.602985,157160.482985 521417.461985,157147.909985 521451.287985,157146.214985 521493.149985,157153.755985 521521.467985,157172.019985 521558.894985,157193.474985 521583.667985,157202.389985 521607.497985,157215.882985 521640.795985,157219.352985 521646.857985,157226.292985 521658.980985,157246.124985 521668.670985,157251.301985 521666.452985,157261.655985 521662.017985,157262.134985 521635.987985,157274.849985 521612.355985,157297.013985 521594.829985,157301.610985 521571.282985,157288.486985 521545.637985,157285.205985 521539.225985,157270.572985 521505.724985,157269.548985 521478.705985,157307.010985 521424.848985,157283.533985 521402.041985,157242.954985 521367.245985,157198.781985 521343.128985)) + POLYGON( EMPTY) + + #25 Polygon - gid: 2525 + + POLYGON((153125.509985 521860.224985,153129.708985 521849.726985,153136.136985 521836.144985,153138.731985 521832.043985,153142.336985 521823.841985,153148.967985 521810.226985,153150.370985 521805.542985,153153.006985 521792.564985,153154.402985 521777.197985,153153.618985 521769.895985,153152.742985 521765.487985,153148.961985 521758.774985,153144.279985 521752.074985,153143.056985 521750.968985,153139.230985 521748.538985,153134.217985 521746.356985,153114.663985 521739.427985,153109.650985 521737.245985,153103.330985 521736.862985,153086.671985 521737.137985,153084.952985 521736.685985,153066.181985 521728.868985,153061.034985 521727.319985,153055.740985 521726.155985,153040.417985 521725.642985,153034.931985 521727.163985,153030.266985 521728.048985,153025.756985 521727.483985,153021.504985 521725.925985,153021.401985 521740.811985,153025.620985 521762.422985,153028.396985 521782.239985,153029.073985 521790.804985,153029.015985 521795.534985,153024.560985 521796.077985,153020.647985 521795.895985,153016.211985 521796.659985,153013.478985 521797.356985,153008.572985 521799.235985,152992.029985 521803.995985,152987.552985 521804.245985,152977.157985 521803.766985,152967.736985 521805.261985,152960.981985 521805.362985,152944.483985 521808.310985,152939.425985 521807.940985,152933.133985 521808.486985,152926.828985 521808.580985,152920.548985 521809.576985,152911.549985 521809.710985,152907.098985 521810.416985,152899.442985 521812.148985,152887.438985 521818.195985,152882.959985 521819.165985,152878.228985 521818.958985,152873.052985 521819.313985,152871.421985 521823.741985,152865.942985 521823.030985,152861.490985 521823.806985,152857.111985 521826.478985,152855.683985 521831.547985,152854.440985 521846.644985,152854.133985 521857.957985,152854.309985 521860.213985,152855.839985 521866.961985,152865.036985 521874.045985,152874.713985 521882.075985,152878.858985 521884.969985,152882.944985 521886.866985,152892.209985 521888.583985,152896.537985 521889.822985,152903.363985 521892.428985,152907.024985 521893.185985,152911.504985 521893.661985,152917.130985 521892.998985,152921.564985 521892.074985,152925.843985 521890.738985,152929.677985 521888.711985,152935.486985 521884.287985,152943.654985 521875.835985,152946.532985 521872.376985,152949.115985 521867.824985,152953.949985 521863.238985,152957.006985 521859.582985,152964.207985 521853.973985,152968.477985 521851.612985,152980.671985 521851.556985,152998.660985 521850.384985,153009.055985 521850.742985,153026.285985 521852.273985,153035.705985 521854.344985,153040.268985 521856.533985,153046.370985 521860.369985,153050.401985 521863.561985,153053.601985 521866.714985,153054.745985 521870.862985,153054.699985 521875.367985,153050.734985 521877.589985,153036.784985 521883.448985,153031.563985 521884.752985,153019.770985 521884.870985,153013.815985 521886.226985,153007.358985 521888.514985,153003.322985 521890.484985,152999.693985 521893.183985,152996.722985 521896.450985,152996.967985 521901.236985,153000.089985 521904.523985,153001.564985 521905.515985,153009.179985 521909.352985,153018.336985 521912.795985,153031.944985 521916.685985,153035.712985 521918.129985,153039.695985 521920.180985,153040.907985 521921.185985,153047.115985 521928.193985,153060.087985 521944.758985,153063.400985 521947.809985,153066.383985 521949.961985,153070.274985 521952.220985,153072.724985 521953.203985,153077.118985 521954.381985,153081.603985 521954.758985,153084.286985 521954.026985,153088.286985 521951.951985,153089.550985 521950.525985,153093.585985 521943.221985,153095.608985 521939.204985,153100.205985 521925.595985,153104.279985 521909.286985,153106.388985 521903.838985,153108.425985 521895.684985,153111.363985 521887.516985,153114.763985 521879.792985,153125.509985 521860.224985)) + POLYGON( EMPTY) + + #26 Polygon - gid: 2526 + + POLYGON((157932.417985 522155.088985,157944.275985 522122.344985,157937.133985 522096.277985,157945.879985 522082.105985,157967.232985 522064.316985,157982.322985 522039.440985,158000.496985 522030.869985,158009.669985 522049.652985,158032.912985 522049.223985,158031.812985 522022.937985,158031.808985 521996.628985,158045.642985 521975.762985,158053.730985 521989.459985,158063.586985 522015.397985,158083.101985 522030.407985,158106.174985 522054.201985,158119.395985 522059.194985,158140.518985 522030.272985,158150.745985 522010.370985,158145.639985 521985.458985,158099.206985 521948.659985,158056.817985 521923.022985,158031.872985 521941.121985,157999.283985 521920.250985,157975.074985 521885.098985,157938.659985 521874.332985,157900.267985 521882.868985,157865.445985 521868.290985,157831.202985 521856.440985,157809.952985 521830.208985,157790.517985 521806.917985,157761.250985 521788.022985,157741.055985 521775.447985,157745.715985 521787.101985,157755.892985 521825.646985,157771.649985 521862.272985,157803.680985 521930.634985,157790.216985 521978.321985,157761.706985 521986.509985,157746.491985 522006.246985,157772.072985 522027.363985,157800.108985 522054.487985,157816.264985 522079.960985,157836.791985 522101.384985,157844.809985 522124.051985,157862.795985 522126.713985,157889.746985 522125.611985,157916.287985 522156.041985,157921.886985 522165.446985,157932.417985 522155.088985)) + POLYGON ((157858.57914185867 522008.3453885631, 157863.44444038192 522014.31809463963, 157875.59429040362 522033.47463893297, 157883.09502664296 522041.3031464203, 157889.22642461277 522032.95952942636, 157897.8743840681 522024.48253249004, 157909.60455873946 522014.7102252157, 157918.19873357913 522000.54265110625, 157926.94878182272 521988.85741432256, 157937.7967307582 521979.0885808789, 157946.77683321957 521973.72816572373, 157937.51531493766 521962.7907475608, 157930.72356280676 521952.92897421593, 157916.54584579886 521956.0812192769, 157901.29505984765 521957.86195211863, 157886.00122668233 521956.4995466379, 157875.2308944553 521953.23936733446, 157862.3952427896 521998.70087364636, 157858.57914185867 522008.3453885631)) + + #27 Polygon - gid: 2527 + + POLYGON((149946.529985 522862.341985,149966.481985 522827.471985,149971.102985 522795.593985,149955.120985 522773.194985,149939.535985 522777.700985,149919.295985 522795.320985,149896.669985 522804.718985,149890.945985 522795.728985,149898.974985 522765.579985,149920.144985 522727.754985,149913.346985 522702.453985,149883.812985 522706.570985,149875.847985 522712.141985,149848.867985 522733.237985,149847.635985 522734.278985,149844.408985 522737.640985,149838.341985 522744.662985,149834.815985 522747.431985,149824.076985 522739.434985,149816.408985 522734.720985,149812.125985 522731.061985,149802.392985 522719.891985,149798.360985 522714.476985,149788.169985 522702.133985,149784.674985 522696.954985,149783.454985 522694.846985,149781.555985 522690.771985,149780.739985 522687.972985,149780.149985 522683.502985,149780.341985 522679.629985,149782.374985 522664.239985,149783.390985 522660.945985,149785.909985 522654.333985,149795.392985 522633.032985,149790.732985 522630.377985,149788.450985 522629.815985,149783.947985 522629.324985,149779.954985 522629.236985,149763.488985 522630.011985,149759.275985 522628.393985,149754.474985 522624.634985,149751.188985 522621.536985,149746.287985 522615.463985,149744.142985 522613.104985,149740.146985 522609.133985,149736.579985 522606.158985,149729.751985 522601.390985,149726.308985 522598.550985,149724.513985 522596.066985,149722.709985 522591.906985,149718.527985 522593.569985,149708.661985 522598.397985,149706.262985 522599.786985,149703.001985 522602.886985,149699.606985 522606.922985,149697.587985 522611.774985,149695.862985 522616.877985,149695.505985 522618.594985,149695.224985 522623.072985,149695.263985 522627.591985,149695.661985 522632.426985,149694.473985 522637.230985,149693.005985 522640.325985,149689.515985 522643.252985,149684.312985 522644.206985,149680.293985 522644.052985,149676.063985 522642.545985,149670.784985 522639.861985,149661.685985 522633.920985,149656.545985 522630.804985,149652.902985 522628.165985,149645.682985 522622.646985,149640.918985 522618.527985,149634.442985 522612.273985,149630.501985 522609.470985,149628.581985 522608.498985,149624.066985 522606.761985,149622.208985 522606.930985,149618.814985 522609.527985,149615.790985 522613.190985,149614.293985 522615.264985,149612.288985 522619.274985,149611.210985 522622.320985,149608.321985 522633.178985,149608.059985 522634.774985,149607.991985 522646.548985,149608.575985 522654.849985,149610.186985 522665.048985,149611.456985 522683.114985,149612.528985 522687.482985,149614.559985 522694.254985,149615.501985 522696.106985,149618.647985 522699.565985,149620.744985 522700.686985,149625.134985 522700.457985,149632.636985 522698.591985,149637.449985 522697.223985,149639.247985 522696.603985,149643.376985 522694.800985,149645.312985 522693.777985,149650.006985 522690.545985,149656.345985 522685.250985,149661.382985 522680.526985,149666.521985 522677.267985,149670.359985 522674.578985,149674.725985 522673.240985,149679.179985 522672.528985,149684.103985 522674.538985,149686.519985 522678.573985,149687.938985 522682.812985,149688.390985 522687.254985,149688.214985 522693.094985,149687.852985 522697.577985,149687.255985 522702.043985,149686.243985 522707.382985,149684.070985 522716.888985,149682.707985 522721.337985,149682.734985 522723.346985,149684.410985 522727.516985,149689.127985 522735.746985,149690.970985 522739.883985,149691.645985 522744.652985,149686.699985 522813.572985,149681.925985 522845.160985,149688.863985 522854.293985,149701.543985 522856.177985,149715.246985 522845.580985,149731.486985 522843.349985,149755.832985 522836.089985,149821.720985 522854.503985,149835.820985 522867.489985,149866.684985 522900.071985,149876.926985 522910.894985,149904.293985 522940.758985,149925.071985 522967.911985,149942.329985 522987.487985,149953.714985 522987.343985,149958.169985 522985.691985,149957.918985 522959.085985,149944.105985 522944.060985,149933.546985 522923.664985,149934.447985 522897.200985,149946.529985 522862.341985)) + POLYGON( EMPTY) + + #28 Polygon - gid: 2528 + + POLYGON((149018.973985 523298.843985,149027.116985 523297.053985,149050.059985 523306.128985,149076.982985 523309.933985,149115.614985 523303.010985,149138.271985 523304.959985,149139.167985 523304.141985,149158.847985 523286.186985,149166.967985 523275.518985,149179.148985 523259.517985,149173.818985 523231.813985,149167.615985 523190.279985,149174.951985 523171.330985,149185.861985 523154.667985,149195.141985 523139.933985,149191.733985 523114.168985,149179.721985 523100.162985,149165.431985 523093.446985,149150.425985 523084.926985,149129.423985 523071.851985,149098.282985 523060.898985,149029.121985 523053.160985,148976.031985 523045.466985,148942.291985 523052.693985,148917.595985 523075.582985,148901.824985 523080.306985,148893.055985 523076.432985,148886.454985 523062.972985,148880.164985 523039.382985,148859.571985 523028.839985,148828.760985 523030.525985,148815.572985 523023.883985,148808.978985 523020.562985,148786.739985 522996.944985,148759.561985 522965.858985,148738.872985 522945.856985,148717.476985 522944.896985,148697.866985 522970.021985,148695.903985 522969.977985,148704.000985 522984.059985,148700.995985 523005.520985,148692.918985 523043.111985,148700.707985 523095.498985,148713.148985 523150.650985,148718.970985 523185.296985,148758.818985 523237.659985,148789.883985 523278.936985,148800.434985 523312.142985,148803.769985 523339.866985,148811.075985 523356.087985,148827.548985 523364.911985,148845.611985 523373.323985,148865.454985 523377.353985,148887.737985 523385.980985,148924.789985 523406.226985,148965.668985 523381.699985,148987.450985 523364.512985,148997.741985 523354.362985,149008.032985 523344.212985,149012.970985 523325.510985,149013.840985 523319.029985,149015.580985 523306.067985,149018.973985 523298.843985)) + POLYGON((148775.869980556 523087.862959271,148786.310671602 523134.147421339,148787.111961451 523138.222062501,148789.865944358 523154.610673249,148818.502518906 523192.24109267,148818.744164544 523192.560396791,148849.809164544 523233.837396791,148856.532562419 523244.542695822,148861.362459323 523256.225144291,148871.913459323 523289.431144291,148874.797171531 523302.720185688,148880.382311599 523303.854495746,148892.533152951 523307.412775256,148914.816152951 523316.039775256,148922.993522609 523319.837088612,148937.737582778 523308.203346892,148939.909113975 523306.06156848,148941.247736763 523296.089598028,148943.633232915 523284.889671328,148947.695961634 523274.183449523,148951.088961634 523266.959449523,148958.027601821 523255.134279242,148967.002982154 523244.769824229,148977.715158376 523236.212449607,148989.806145024 523229.748130485,149002.871878778 523225.592895075,149011.014878778 523223.802895075,149025.71461237 523222.06709714,149040.468968727 523223.252057311,149054.703261967 523227.311621095,149069.369014283 523233.112593168,149075.580815666 523233.990500691,149097.719711958 523230.023127037,149093.438673537 523201.358182694,149092.638110024 523188.458374701,149094.064168772 523175.612663174,149097.674500032 523163.202527946,149104.777682602 523144.854898924,149096.773874623 523139.87205018,149081.455489755 523134.484224822,149020.782728186 523127.695921746,149018.365082411 523127.38557019,148978.587395614 523121.620840068,148978.156201803 523121.713200402,148968.57836411 523130.590230162,148954.812334417 523140.697832278,148939.116564598 523147.429102875,148923.345564598 523152.153102875,148910.37689581 523154.81782194,148897.141731088 523155.160623073,148884.05250663 523153.170823854,148871.517110822 523148.910430707,148862.748110822 523145.036430707,148851.284582351 523138.723834414,148841.092845365 523130.514702052,148832.483202211 523120.658972668,148825.717786074 523109.456718366,148823.588688058 523105.115306566,148819.851506172 523104.994912661,148807.1123677 523102.333626439,148795.025066567 523097.510220515,148781.837066567 523090.868220515,148775.869980556 523087.862959271)) + + #29 Polygon - gid: 2529 + + POLYGON((166489.986985 524726.636985,166376.609985 524695.830985,166378.076985 524731.146985,166372.372985 524775.920985,166374.920985 524808.597985,166378.349985 524862.041985,166381.024985 524891.550985,166405.372985 524894.150985,166442.538985 524856.230985,166488.936985 524799.975985,166481.518985 524768.759985,166489.986985 524726.636985)) + POLYGON( EMPTY) + + #30 Polygon - gid: 2530 + + POLYGON((165889.593985 526270.470985,165805.380985 526135.686985,165716.140985 526213.946985,165715.046985 526215.272985,165666.137985 526274.538985,165628.837985 526322.818985,165601.443985 526328.382985,165602.962985 526339.012985,165604.480985 526357.234985,165631.029985 526379.970985,165679.641985 526437.375985,165710.443985 526485.694985,165719.290985 526538.574985,165726.370985 526574.918985,165757.470985 526592.793985,165821.282985 526618.710985,165829.798985 526578.755985,165848.131985 526528.820985,165848.301985 526502.670985,165846.277985 526476.475985,165868.778985 526437.395985,165879.115985 526419.443985,165895.576985 526384.512985,165905.738985 526349.287985,165898.707985 526305.446985,165893.362985 526284.934985,165889.593985 526270.470985)) + POLYGON((165703.241357534 526349.188222767,165736.877004846 526388.907928476,165742.884833191 526397.060452601,165773.686833191 526445.379452601,165776.198479916 526450.359932548,165781.281584047 526439.053159569,165803.782584047 526399.973159569,165803.783866343 526399.970932552,165812.584332105 526384.687391741,165825.177332734 526357.964464521,165829.030216992 526344.609037639,165825.224121391 526320.876561857,165820.786544579 526303.846893836,165820.786523568 526303.846813204,165819.910071494 526300.483320819,165788.513879131 526250.233307264,165770.138988224 526266.347370043,165724.751493689 526321.346148409,165703.241357534 526349.188222767)) + + #31 Polygon - gid: 2531 + + POLYGON((167187.935985 527215.129985,167246.663985 527205.580985,167280.107985 527210.602985,167314.083985 527213.149985,167354.196985 527218.563985,167363.609985 527204.834985,167358.459985 527177.204985,167344.405985 527172.240985,167323.325985 527164.793985,167304.557985 527167.748985,167285.789985 527170.703985,167260.854985 527176.007985,167211.198985 527149.591985,167165.408985 527140.439985,167141.660985 527146.308985,167119.062985 527137.503985,167119.967985 527139.010985,167078.296985 527188.560985,167105.238985 527267.140985,167090.957985 527316.213985,167094.770985 527321.819985,167082.593985 527377.599985,167065.952985 527417.668985,167056.312985 527449.383985,167043.546985 527485.510985,167019.927985 527525.916985,166982.769985 527539.710985,166961.717985 527606.388985,166933.263985 527657.009985,166899.206985 527710.191985,166916.325985 527722.287985,166973.067985 527744.810985,166978.160985 527695.099985,167043.308985 527684.770985,167080.550985 527644.941985,167101.716985 527610.077985,167109.672985 527576.692985,167099.068985 527561.394985,167097.537985 527527.027985,167105.044985 527510.384985,167137.888985 527502.771985,167160.386985 527500.228985,167174.041985 527468.108985,167205.365985 527466.936985,167200.090985 527446.692985,167182.286985 527416.893985,167214.905985 527399.163985,167245.980985 527379.346985,167258.755985 527325.736985,167261.469985 527296.920985,167237.119985 527273.314985,167201.524985 527264.407985,167192.491985 527252.494985,167172.090985 527216.630985,167187.935985 527215.129985)) + POLYGON((167167.684716539 527339.467819639,167176.568351121 527334.639135708,167168.740671452 527331.710602359,167168.045301243 527337.816065116,167167.684716539 527339.467819639)) + + #32 Polygon - gid: 2532 + + POLYGON((142944.641985 528279.290985,142921.268985 528196.701985,142908.679985 528170.159985,142909.618985 528164.288985,142912.434985 528146.676985,142911.663985 528129.837985,142892.611985 528111.135985,142875.445985 528095.294985,142871.223985 528075.213985,142854.274985 528025.284985,142841.880985 528009.836985,142829.662985 527984.586985,142829.518985 527971.020985,142821.625985 527942.611985,142810.393985 527922.096985,142789.127985 527903.516985,142784.945985 527870.354985,142783.608985 527857.660985,142778.632985 527857.959985,142770.042985 527846.295985,142767.281985 527824.398985,142767.032985 527762.941985,142754.713985 527740.629985,142749.027985 527714.461985,142756.918985 527695.423985,142775.315985 527696.868985,142782.056985 527690.556985,142783.976985 527671.253985,142777.663985 527661.951985,142758.085985 527654.506985,142741.418985 527651.378985,142749.028985 527626.803985,142752.867985 527606.969985,142752.399985 527587.588985,142752.387985 527556.136985,142751.802985 527550.469985,142750.634985 527539.133985,142751.546185 527536.749185,142733.070985 527540.946985,142718.408985 527549.965985,142690.566985 527548.196985,142650.139985 527549.089985,142626.239985 527552.656985,142624.198985 527552.960985,142624.067985 527566.105985,142630.327985 527597.955985,142624.594985 527613.792985,142600.863985 527617.535985,142581.009985 527622.064985,142574.816985 527639.138985,142579.145985 527659.088985,142596.746985 527682.702985,142605.791985 527694.419985,142613.689985 527704.650985,142638.048985 527728.309985,142660.964985 527755.984985,142669.209985 527774.633985,142695.332985 527818.005985,142686.660985 527842.858985,142682.940985 527858.629985,142701.685985 527880.643985,142711.497985 527934.757985,142716.267985 527963.420985,142735.213985 528000.631985,142745.226985 528012.751985,142773.134985 528057.404985,142816.514985 528078.155985,142825.383985 528108.455985,142801.994985 528142.618985,142779.507985 528173.811985,142780.961985 528203.725985,142794.349985 528212.859985,142840.494985 528200.237985,142842.379985 528210.587985,142861.982985 528212.674985,142888.962985 528201.345985,142905.705985 528247.638985,142932.216985 528293.509985,142941.837985 528289.539985,142944.641985 528279.290985)) + POLYGON( EMPTY) + + #33 Polygon - gid: 2533 + + POLYGON((157248.267985 510397.734985,157245.305985 510363.097985,157245.806985 510339.634985,157249.376985 510312.049985,157264.999985 510313.014985,157298.816985 510310.020985,157313.463985 510303.902985,157331.569985 510277.161985,157335.597985 510263.931985,157342.919985 510246.050985,157356.304985 510238.818985,157373.099985 510233.719985,157379.080985 510235.892985,157395.913985 510233.044985,157408.176985 510225.851985,157412.515985 510212.622985,157409.981985 510194.654985,157398.325985 510184.101985,157382.360985 510173.357985,157354.165985 510179.672985,157341.808985 510184.636985,157327.343985 510198.734985,157317.441985 510214.933985,157308.672985 510231.087985,157299.867985 510244.974985,157293.245985 510254.256985,157288.312985 510254.760985,157282.069985 510246.244985,157282.741985 510240.644985,157284.759985 510223.843985,157287.182985 510197.241985,157275.293985 510195.644985,157261.763985 510193.043985,157245.218985 510187.050985,157227.608985 510177.984985,157227.523985 510173.393985,157241.396985 510142.853985,157246.112985 510129.441985,157230.683985 510109.990985,157224.665985 510099.018985,157249.180985 510051.905985,157212.257985 510031.046985,157194.338985 510064.208985,157211.972985 510077.542985,157204.306985 510095.641985,157222.207985 510119.716985,157199.619985 510159.627985,157215.047985 510174.354985,157196.172985 510227.723985,157155.328985 510207.689985,157139.189985 510197.898985,157127.587985 510195.991985,157123.056985 510200.777985,157088.217985 510252.205985,157106.896985 510285.860985,157126.853985 510245.967985,157133.861985 510250.332985,157165.215985 510274.869985,157156.396985 510293.534985,157144.581985 510312.557985,157138.589985 510331.438985,157137.075985 510351.638985,157138.046985 510372.580985,157139.419985 510383.981985,157146.858985 510390.097985,157156.021985 510361.922985,157163.523985 510331.258985,157181.372985 510302.572985,157207.566985 510320.651985,157199.540985 510385.307985,157193.303985 510383.664985,157180.758985 510375.835985,157168.702985 510402.140985,157158.766985 510420.761985,157135.709985 510449.280985,157153.437985 510466.189985,157170.048985 510460.713985,157195.357985 510432.173985,157213.684985 510416.564985,157235.371985 510403.145985,157248.267985 510397.734985)) + POLYGON( EMPTY) + + #34 Polygon - gid: 2534 + + POLYGON((148568.584985 517215.314985,148572.193985 517207.069985,148579.062985 517190.138985,148582.935985 517182.009985,148585.298985 517176.571985,148590.114985 517163.127985,148593.549985 517154.807985,148597.590985 517143.996985,148600.469985 517135.577985,148608.361985 517111.099985,148609.844985 517106.851985,148612.196985 517100.884985,148622.119985 517079.608985,148627.202985 517066.037985,148629.036985 517061.925985,148631.715985 517056.590985,148633.922985 517052.667985,148636.222985 517048.798985,148640.302985 517042.471985,148642.585985 517038.589985,148645.384985 517033.290985,148649.309985 517023.332985,148650.753985 517019.073985,148653.515985 517009.328985,148656.822985 516996.237985,148657.633985 516992.786985,148659.628985 516988.121985,148661.362985 516983.557985,148665.486985 516963.310985,148660.494985 516962.211985,148654.487985 516960.588985,148645.936985 516957.776985,148635.343985 516953.477985,148633.216985 516952.851985,148628.798985 516951.955985,148618.420985 516950.600985,148610.940985 516948.509985,148606.474985 516948.012985,148596.479985 516947.539985,148583.884985 516947.227985,148578.576985 516948.520985,148573.335985 516949.453985,148568.101985 516949.901985,148563.600985 516949.922985,148557.829985 516950.415985,148551.628985 516950.385985,148538.365985 516949.276985,148531.699985 516950.682985,148527.384985 516949.334985,148523.285985 516949.346985,148518.771985 516949.590985,148497.282985 516949.746985,148489.616985 516950.081985,148471.013985 516949.990985,148458.481985 516951.381985,148447.844985 516952.931985,148445.775985 516960.073985,148444.006985 516964.211985,148439.749985 516975.102985,148439.138985 516980.117985,148438.535985 516987.396985,148438.974985 516992.234985,148440.426985 516998.642985,148438.052985 516999.297985,148434.382985 517002.110985,148433.464985 517004.416985,148433.080985 517009.095985,148433.160985 517012.537985,148433.810985 517017.196985,148435.364985 517021.423985,148438.897985 517029.838985,148440.124985 517034.169985,148440.387985 517035.613985,148440.767985 517040.101985,148439.957985 517047.071985,148439.243985 517059.119985,148437.869985 517063.408985,148436.038985 517067.531985,148435.453985 517068.518985,148432.633985 517072.210985,148428.173985 517080.220985,148425.223985 517084.065985,148420.701985 517084.881985,148419.037985 517084.605985,148414.693985 517083.070985,148410.519985 517081.244985,148406.277985 517079.881985,148401.927985 517079.498985,148397.300985 517079.560985,148392.976985 517080.302985,148391.493985 517081.154985,148388.218985 517085.555985,148385.939985 517089.438985,148383.889985 517093.599985,148382.148985 517097.753985,148380.707985 517102.019985,148384.575985 517104.329985,148387.963985 517107.541985,148388.744985 517108.571985,148388.577985 517113.061985,148386.761985 517129.667985,148386.096985 517138.880985,148383.851985 517150.211985,148381.844985 517157.153985,148381.255985 517161.619985,148379.568985 517166.273985,148378.896985 517171.011985,148375.602985 517182.746985,148375.188985 517183.854985,148372.920985 517187.744985,148371.004985 517192.626985,148369.776985 517197.309985,148368.879985 517199.356985,148366.322985 517203.048985,148363.430985 517206.559985,148360.265985 517209.805985,148362.396985 517211.296985,148366.277985 517213.583985,148368.574985 517214.675985,148372.756985 517216.354985,148379.858985 517218.946985,148383.740985 517221.386985,148387.723985 517223.321985,148391.527985 517223.539985,148398.523985 517222.910985,148402.982985 517222.342985,148413.732985 517218.530985,148420.566985 517215.834985,148422.017985 517215.401985,148426.452985 517214.656985,148427.536985 517214.761985,148431.947985 517215.979985,148436.367985 517216.822985,148437.734985 517217.291985,148441.849985 517219.129985,148444.098985 517220.426985,148447.861985 517222.907985,148462.423985 517233.358985,148486.641985 517247.438985,148491.717985 517250.701985,148501.712985 517257.844985,148508.651985 517262.200985,148516.517985 517266.864985,148528.978985 517274.823985,148533.037985 517276.758985,148535.665985 517277.495985,148540.045985 517278.576985,148548.901985 517280.224985,148550.178985 517272.247985,148551.544985 517265.555985,148552.858985 517261.250985,148555.563985 517251.244985,148562.513985 517233.664985,148568.584985 517215.314985)) + POLYGON ((148465.04603866642 517147.5219424748, 148468.32193007902 517148.81250785006, 148472.43693007904 517150.65050785005, 148479.31833130663 517154.15981472895, 148481.5673313066 517155.45681472897, 148485.38224162365 517157.8115498219, 148489.14524162366 517160.2925498219, 148491.5920858998 517161.976234038, 148503.2307818219 517170.32920829166, 148505.60300960566 517171.7083877117, 148509.5648041141 517161.94319003774, 148511.35506775207 517157.8800646531, 148514.66822819778 517150.926106155, 148515.52675331026 517148.95037210436, 148519.50861371885 517137.8348963292, 148520.79090495792 517134.5068053192, 148523.74161982184 517127.35980454256, 148526.96791581967 517118.7284048809, 148529.29095782075 517111.9351813287, 148536.9803214243 517088.0856828127, 148537.55288063685 517086.3801399501, 148539.03588063686 517082.1321399501, 148540.0697946662 517079.348843109, 148542.42179466618 517073.381843109, 148544.22615053327 517069.18379161716, 148552.9117266564 517050.5609640856, 148556.9678805225 517039.7315200335, 148558.7070182858 517035.4879842818, 148560.5410182858 517031.37598428177, 148562.0128355156 517028.2694345842, 148563.56937478343 517025.16971939424, 148557.4671445434 517025.4151073069, 148551.2661445434 517025.3851073069, 148545.3795881285 517025.1251650781, 148541.3465654276 517024.7879395503, 148534.52321633883 517025.62982859474, 148521.78631390657 517025.0248919264, 148519.75491128486 517024.57557388005, 148519.31643526338 517024.58900880005, 148514.50006083903 517024.6239734057, 148515.12058260432 517029.2863586431, 148515.50058260432 517033.7743586431, 148515.26660871692 517048.7596442845, 148514.70125120823 517053.6245107481, 148514.11262726612 517063.5569214688, 148510.66844475336 517082.0011245901, 148509.29444475335 517086.2901245901, 148506.41476057115 517093.8493158441, 148504.58376057114 517097.97231584415, 148500.5576643297 517105.7725396188, 148499.97266432972 517106.75953961874, 148495.78269539468 517112.9680895764, 148493.70102171606 517116.7067008243, 148487.67826782848 517125.8744659743, 148484.72826782847 517129.71946597425, 148475.34539209885 517139.8588568604, 148465.04603866642 517147.5219424748)) + + #35 Polygon - gid: 2535 + + POLYGON((163066.126985 517974.868985,163091.240985 517970.440985,163098.588985 517969.145985,163130.376985 517949.819985,163160.357985 517938.404985,163155.338985 517935.096985,163137.491985 517928.756985,163088.458985 517930.116985,163058.237985 517933.448985,163033.542985 517933.704985,162996.678985 517946.546985,162965.765985 517963.550985,162954.719985 517971.409985,162940.542985 517971.623985,162929.808985 517967.346985,162916.631985 517960.832985,162906.856985 517973.017985,162901.910985 517996.119985,162896.149985 518019.757985,162889.466985 518026.940985,162862.081985 518041.778985,162841.243985 518051.554985,162822.497985 518056.625985,162814.259985 518061.351985,162810.905985 518070.579985,162808.826985 518099.445985,162806.167985 518118.106985,162793.741985 518127.807985,162755.145985 518154.644985,162735.806985 518166.902985,162720.621985 518167.404985,162718.765985 518184.458985,162717.545985 518210.367985,162713.617985 518236.309985,162706.542985 518271.841985,162701.859985 518290.587985,162705.218985 518294.761985,162726.625985 518278.475985,162753.229985 518258.870985,162782.068985 518236.877985,162816.208985 518212.657985,162824.470985 518182.138985,162845.014985 518153.858985,162882.445985 518140.582985,162920.703985 518125.470985,162943.696985 518115.392985,162965.820985 518065.592985,162984.425985 518034.931985,163005.550985 518008.892985,163025.235985 517978.313985,163066.126985 517974.868985)) + POLYGON( EMPTY) + + #36 Polygon - gid: 2536 + + POLYGON((151640.372985 520078.439985,151631.962985 520059.790985,151629.274985 520055.812985,151626.569985 520052.200985,151615.221985 520034.782985,151606.240985 520019.252985,151596.253985 520003.198985,151594.521985 519999.999985,151585.007985 519979.511985,151579.071985 519969.479985,151573.199985 519957.304985,151572.035985 519955.222985,151567.491985 519949.971985,151564.650985 519946.439985,151563.903985 519945.128985,151561.474985 519937.032985,151559.718985 519932.885985,151558.187985 519929.892985,151554.220985 519932.057985,151549.028985 519934.369985,151543.618985 519935.855985,151538.622985 519936.867985,151534.164985 519937.482985,151528.132985 519939.763985,151523.603985 519940.766985,151518.324985 519941.678985,151514.201985 519943.500985,151511.453985 519945.404985,151507.599985 519948.857985,151505.118985 519952.626985,151501.093985 519964.334985,151499.289985 519968.439985,151498.111985 519970.475985,151495.027985 519973.673985,151492.288985 519974.096985,151486.380985 519973.413985,151480.685985 519972.343985,151476.198985 519971.871985,151471.575985 519971.639985,151467.126985 519972.326985,151465.579985 519972.930985,151461.230985 519976.087985,151459.824985 519980.451985,151459.120985 519986.854985,151457.196985 519995.647985,151457.505985 519999.999985,151457.755985 520002.163985,151458.895985 520006.518985,151459.809985 520012.864985,151461.700985 520019.709985,151462.600985 520024.748985,151466.236985 520038.107985,151470.320985 520048.063985,151476.146985 520063.414985,151477.708985 520067.993985,151480.097985 520076.675985,151484.051985 520078.930985,151488.522985 520079.897985,151492.694985 520078.104985,151494.938985 520076.848985,151506.520985 520073.368985,151510.381985 520072.425985,151515.922985 520072.149985,151520.376985 520071.501985,151525.461985 520071.155985,151533.320985 520071.044985,151541.199985 520071.316985,151545.772985 520072.216985,151550.689985 520074.159985,151556.344985 520076.869985,151559.924985 520080.906985,151561.475985 520085.626985,151562.598985 520089.906985,151564.866985 520095.728985,151566.733985 520099.823985,151570.978985 520111.588985,151575.985985 520119.712985,151580.454985 520125.992985,151585.750985 520135.315985,151588.951985 520138.478985,151591.959985 520142.387985,151595.794985 520145.608985,151596.717985 520146.180985,151600.930985 520147.761985,151610.593985 520152.335985,151615.876985 520148.420985,151619.366985 520145.538985,151620.268985 520145.005985,151624.502985 520143.522985,151627.066985 520142.840985,151640.810985 520139.486985,151645.648985 520138.596985,151646.664985 520138.210985,151650.623985 520136.078985,151654.429985 520133.610985,151656.825985 520131.812985,151657.034985 520127.310985,151655.434985 520118.142985,151654.368985 520103.131985,151653.199985 520098.779985,151649.007985 520092.899985,151646.566985 520089.118985,151642.541985 520082.381985,151640.372985 520078.439985)) + POLYGON( EMPTY) + + #37 Polygon - gid: 2537 + + POLYGON((149074.863985 521147.685985,149079.195985 521146.453985,149084.481985 521146.550985,149083.352985 521142.190985,149082.307985 521139.131985,149078.212985 521129.952985,149074.534985 521119.799985,149072.006985 521114.769985,149062.256985 521087.740985,149058.326985 521077.315985,149057.272985 521073.684985,149056.706985 521069.234985,149056.032985 521058.372985,149055.989985 521055.324985,149056.653985 521049.602985,149056.828985 521045.104985,149057.483985 521039.922985,149057.955985 521027.280985,149059.078985 521021.526985,149059.679985 521014.389985,149061.083985 521010.116985,149063.420985 521004.372985,149065.076985 521001.246985,149068.057985 520997.888985,149069.914985 520996.183985,149073.453985 520993.403985,149077.695985 520990.619985,149083.699985 520985.301985,149087.481985 520982.855985,149091.155985 520979.558985,149091.687985 520978.602985,149092.102085 520973.780785,149091.433985 520972.943985,149085.922985 520963.780985,149080.736985 520952.972985,149079.151985 520948.023985,149078.605985 520943.551985,149078.175985 520937.077985,149077.300985 520934.467985,149076.557985 520932.161985,149075.476985 520927.756985,149074.024985 520923.526985,149072.892985 520921.352985,149070.466985 520917.501985,149067.489985 520913.906985,149063.902985 520911.245985,149060.015985 520908.880985,149057.583985 520907.012985,149053.836985 520904.575985,149046.407985 520903.194985,149043.748985 520900.710985,149040.669985 520896.363985,149030.471985 520876.382985,149027.005985 520870.944985,149023.474985 520864.091985,149020.424985 520857.679985,149016.414985 520850.386985,149015.312985 520847.716985,149011.691985 520837.466985,149011.094985 520836.292985,149008.704985 520832.469985,149005.259985 520827.502985,149004.610985 520825.876985,149003.577985 520821.217985,149003.854985 520816.719985,149002.972985 520816.201985,148998.602985 520814.693985,148988.265985 520815.477985,148983.673985 520817.423985,148979.484985 520821.816985,148976.129985 520824.776985,148973.845985 520825.367985,148966.379985 520826.025985,148961.056985 520826.999985,148956.409985 520829.091985,148951.949985 520829.751985,148946.441985 520830.130985,148931.710985 520830.198985,148924.824985 520830.672985,148921.727985 520830.400985,148917.057985 520829.109985,148913.971985 520825.698985,148910.100985 520821.942985,148901.275985 520808.640985,148896.799985 520799.352985,148894.695985 520795.375985,148891.228985 520789.937985,148887.698985 520783.085985,148884.606985 520775.729985,148881.994985 520768.813985,148880.715985 520766.573985,148878.047985 520762.936985,148875.219985 520759.448985,148871.608985 520756.679985,148867.217985 520756.296985,148862.582985 520756.904985,148861.392985 520757.168985,148857.137985 520758.698985,148853.364985 520759.509985,148848.917985 520760.210985,148844.572985 520761.389985,148836.362985 520765.784985,148831.786985 520766.128985,148822.120985 520765.033985,148817.121985 520763.908985,148812.548985 520762.503985,148807.295985 520761.442985,148803.827985 520760.947985,148794.718985 520760.628985,148790.131985 520761.085985,148779.499985 520762.621985,148777.012985 520764.595985,148773.926985 520768.885985,148773.466985 520774.629985,148773.332985 520779.128985,148772.635985 520787.462985,148772.583985 520792.333985,148774.114985 520796.576985,148778.330985 520798.178985,148785.801985 520800.503985,148791.415985 520802.481985,148797.424985 520804.176985,148801.266985 520806.534985,148808.780985 520809.801985,148816.731985 520814.761985,148820.614985 520817.028985,148822.486985 520817.871985,148828.485985 520820.053985,148840.253985 520823.719985,148844.481985 520824.577985,148848.642985 520825.980985,148849.614985 520826.820985,148851.668985 520831.391985,148850.423985 520836.473985,148851.647985 520862.196985,148851.608985 520865.784985,148852.006985 520870.213985,148852.588985 520871.618985,148855.610985 520875.318985,148859.688985 520877.253985,148865.606985 520879.625985,148869.560985 520881.777985,148874.694985 520884.932985,148878.973985 520886.333985,148879.781985 520887.091985,148882.398985 520890.827985,148893.628985 520903.399985,148896.470985 520906.888985,148900.771985 520910.377985,148903.113985 520912.783985,148907.271985 520917.520985,148910.265985 520921.543985,148913.153985 520928.363985,148914.659985 520932.599985,148915.336985 520935.164985,148915.886985 520939.775985,148914.248985 520943.980985,148917.390985 520947.207985,148919.572985 520949.764985,148923.999985 520956.081985,148928.384985 520961.456985,148931.471985 520964.733985,148935.306985 520967.792985,148938.422985 520971.552985,148942.810985 520975.127985,148945.672985 520978.715985,148945.467985 520983.562985,148943.924985 520989.715985,148941.045985 520998.242985,148938.175985 521005.247985,148932.651985 521015.561985,148930.709985 521019.641985,148929.317985 521023.359985,148928.157985 521027.888985,148928.257985 521030.527985,148930.431985 521034.393985,148933.165985 521037.285985,148936.637985 521040.110985,148942.203985 521043.759985,148949.976985 521048.302985,148956.663985 521051.603985,148960.826985 521053.323985,148970.378985 521056.011985,148974.655985 521057.444985,148977.871985 521058.807985,148985.582985 521063.452985,148996.173985 521068.099985,149000.446985 521070.923985,149004.131985 521074.654985,149005.361985 521076.309985,149007.752985 521080.130985,149009.883985 521084.114985,149010.875985 521086.337985,149012.155985 521090.634985,149013.087985 521095.060985,149013.828985 521099.645985,149014.305985 521101.238985,149016.320985 521105.262985,149018.796985 521108.970985,149021.783985 521112.417985,149024.099985 521114.282985,149028.473985 521115.337985,149036.160985 521116.290985,149040.418985 521117.807985,149041.315985 521118.300985,149044.645985 521121.332985,149046.237985 521125.627985,149045.253985 521130.390985,149045.181985 521135.783985,149045.437985 521138.357985,149046.177985 521142.841985,149046.609985 521143.953985,149049.230985 521147.622985,149050.514985 521148.887985,149054.171985 521151.491985,149060.050985 521155.216985,149064.906985 521154.540985,149066.395985 521153.944985,149070.858985 521150.799985,149074.863985 521147.685985)) + POLYGON( EMPTY) + + #38 Polygon - gid: 2538 + + POLYGON((150340.263985 521736.242985,150319.707985 521734.229985,150320.397985 521743.203985,150320.776985 521753.617985,150321.365985 521762.839985,150321.838985 521767.321985,150322.439985 521771.069985,150323.456985 521775.456985,150325.665985 521782.261985,150327.698985 521786.281985,150328.983985 521788.230985,150331.756985 521791.771985,150334.245985 521794.557985,150337.451985 521797.714985,150345.035985 521804.348985,150348.315985 521807.525985,150350.157985 521808.786985,150354.399985 521810.150985,150370.210985 521813.514985,150374.540985 521814.689985,150378.907985 521817.179985,150387.202985 521823.648985,150391.093985 521825.901985,150398.280985 521829.395985,150414.053985 521839.397985,150417.301985 521841.772985,150425.706985 521851.706985,150429.010985 521854.761985,150432.472985 521857.645985,150437.069985 521860.954985,150439.941985 521862.714985,150449.894985 521867.787985,150455.159985 521869.676985,150457.271985 521870.216985,150461.740985 521869.363985,150463.846985 521868.400985,150466.973985 521865.126985,150468.871985 521858.611985,150470.712985 521854.484985,150471.314985 521852.772985,150472.425985 521842.584985,150472.585985 521837.769985,150471.114985 521817.439985,150467.720985 521797.270985,150467.236985 521792.050985,150467.787985 521786.877985,150468.844985 521782.176985,150469.472985 521777.288985,150470.980985 521770.720985,150464.397985 521768.068985,150460.133985 521766.625985,150453.794985 521764.881985,150449.391985 521763.947985,150441.118985 521762.424985,150435.455985 521761.036985,150424.480985 521757.289985,150408.178985 521751.226985,150399.551985 521747.851985,150390.966985 521745.146985,150382.787985 521742.940985,150374.289985 521739.977985,150369.950985 521738.975985,150358.848985 521736.928985,150354.376985 521736.424985,150340.263985 521736.242985)) + POLYGON( EMPTY) + + #39 Polygon - gid: 2539 + + POLYGON((151414.655985 521903.498985,151419.118985 521902.909985,151421.110985 521903.031985,151425.514985 521903.903985,151432.945985 521906.160985,151435.281985 521907.106985,151439.154985 521909.607985,151440.214985 521905.223985,151439.494985 521900.455985,151436.942985 521890.300985,151435.309985 521886.095985,151435.222985 521881.294985,151435.805985 521873.232985,151435.489985 521868.742985,151435.595985 521863.657985,151437.865985 521855.470985,151438.586985 521850.956985,151447.004985 521843.098985,151449.266985 521833.184985,151450.435985 521826.542985,151446.671985 521824.075985,151441.776985 521820.429985,151435.135985 521814.354985,151430.862985 521811.043985,151429.653985 521809.812985,151427.434985 521805.925985,151424.123985 521798.914985,151422.976985 521796.117985,151421.981985 521791.729985,151420.446985 521786.732985,151420.164985 521785.502985,151419.969985 521781.007985,151419.525985 521775.880985,151419.146985 521773.395985,151417.498985 521767.866985,151415.384985 521762.360985,151413.246985 521758.395985,151410.199985 521754.143985,151407.420985 521751.067985,151403.914985 521748.258985,151398.761985 521744.954985,151394.600985 521743.247985,151389.313985 521741.332985,151386.449985 521740.426985,151382.047985 521739.436985,151380.811985 521739.305985,151374.773985 521739.607985,151370.237985 521739.382985,151365.883985 521738.649985,151359.674985 521735.218985,151349.485985 521730.180985,151343.877985 521725.720985,151340.551985 521722.689985,151334.626985 521716.831985,151329.218985 521710.554985,151325.247985 521705.141985,151319.417985 521699.821985,151315.446985 521694.409985,151305.560985 521681.809985,151300.596985 521675.043985,151296.688985 521671.030985,151293.246985 521668.105985,151289.929985 521665.757985,151285.914985 521663.658985,151282.327985 521662.396985,151277.836985 521662.113985,151271.818985 521662.894985,151268.877985 521663.536985,151263.367985 521665.215985,151261.932985 521669.477985,151258.678985 521677.877985,151256.217985 521682.629985,151251.459985 521683.882985,151247.452985 521683.781985,151241.286985 521681.283985,151234.212985 521679.299985,151230.126985 521677.337985,151227.560985 521676.358985,151223.087985 521675.729985,151219.620985 521675.820985,151215.249985 521676.783985,151210.898985 521678.040985,151205.964985 521678.817985,151196.349985 521681.136985,151192.448985 521682.323985,151188.367985 521684.271985,151187.444985 521684.912985,151184.336985 521688.179985,151181.542985 521692.671985,151179.378985 521696.641985,151177.884985 521699.887985,151173.838985 521718.013985,151172.909985 521723.517985,151173.083985 521728.013985,151173.884985 521734.691985,151175.904985 521738.784985,151180.466985 521741.060985,151183.536985 521742.158985,151187.621985 521744.146985,151191.251985 521748.103985,151194.752985 521753.288985,151196.865985 521758.794985,151198.738985 521762.886985,151200.502985 521767.587985,151203.883985 521779.954985,151208.659985 521792.808985,151211.765985 521799.668985,151213.414985 521805.197985,151215.020985 521809.793985,151218.548985 521815.695985,151221.215985 521819.333985,151222.013985 521820.198985,151227.821985 521825.052985,151230.947985 521828.290985,151234.125985 521832.083985,151238.592985 521842.773985,151240.775985 521849.351985,151242.232985 521855.194985,151242.763985 521866.859985,151242.540985 521871.354985,151242.852985 521879.013985,151243.124985 521888.008985,151243.896985 521899.613985,151243.956985 521904.112985,151243.781985 521911.524985,151243.249985 521917.736985,151244.213985 521932.376985,151246.639985 521941.861985,151247.152985 521948.509985,151248.543985 521959.890985,151248.626985 521963.699985,151248.136985 521968.176985,151246.966985 521973.552985,151251.430985 521972.917985,151254.743985 521972.063985,151260.584985 521969.324985,151264.784985 521967.712985,151273.249985 521964.701985,151285.945985 521960.539985,151294.351985 521957.321985,151299.279985 521955.774985,151324.985985 521948.448985,151340.816985 521942.669985,151349.401985 521939.968985,151363.226985 521935.306985,151367.526985 521933.980985,151372.861985 521932.688985,151382.530985 521930.905985,151385.598985 521927.434985,151395.219985 521921.249985,151396.763985 521920.086985,151401.989985 521915.074985,151408.377985 521907.711985,151412.054985 521904.855985,151414.655985 521903.498985)) + POLYGON((151279.645830086 521767.755326376,151280.089101957 521768.734349246,151281.60849228 521772.801761659,151281.779965797 521772.961370432,151284.905965797 521776.199370432,151288.436416127 521780.123773262,151291.614416127 521783.916773262,151298.197909309 521793.099519948,151303.3272236 521803.167059572,151307.7942236 521813.857059572,151309.775551863 521819.151068694,151311.958551863 521825.729068694,151313.547648501 521831.205773513,151315.004648501 521837.048773513,151317.155400222 521851.784457569,151317.686400222 521863.449457569,151317.671859293 521870.576215471,151317.633144616 521871.356585304,151318.308321815 521871.127269916,151326.162616192 521868.656163438,151339.261758571 521864.238933653,151341.126044189 521863.637267439,151345.426044189 521862.311267439,151349.429937 521861.210224374,151351.72695172 521858.562616456,151362.371481661 521848.480222824,151362.64012267 521848.271563938,151363.173322839 521844.636869635,151362.301287147 521843.109333478,151359.617270262 521837.953435221,151356.306270262 521830.942435221,151354.732095129 521827.371366009,151353.585095129 521824.574366009,151349.833842604 521812.703542585,151349.58867297 521811.62233218,151341.169193044 521809.460853224,151329.609871097 521804.294395733,151324.898612404 521801.69102505,151316.24354186 521797.411483839,151302.802545748 521788.880699647,151297.194545748 521784.420699647,151293.360366598 521781.1553627,151290.034366598 521778.1243627,151287.821382925 521776.02368546,151281.896382925 521770.16568546,151279.645830086 521767.755326376)) + + #40 Polygon - gid: 2540 + + POLYGON((148804.969985 522529.061985,148825.777985 522528.289985,148844.208985 522531.065985,148856.496985 522532.916985,148882.440985 522530.570985,148894.474985 522523.984985,148904.794985 522513.633985,148902.807985 522495.733985,148896.519985 522475.100985,148873.973985 522465.040985,148844.137985 522468.478985,148809.638985 522482.020985,148787.006985 522487.163985,148762.897985 522493.321985,148738.759985 522488.933985,148716.846985 522484.385985,148694.991985 522485.158985,148688.417985 522484.461985,148687.828985 522493.001985,148665.144985 522531.758985,148646.934985 522583.394985,148650.294985 522613.315985,148667.775985 522637.046985,148692.509985 522655.222985,148702.550985 522673.036985,148703.442985 522695.940985,148697.442985 522721.471985,148703.390985 522728.395985,148743.857985 522739.557985,148760.692985 522732.650985,148771.972985 522702.999985,148787.125985 522672.393985,148803.225985 522652.100985,148801.228985 522634.074985,148780.811985 522619.038985,148757.441985 522607.968985,148749.196985 522601.119985,148766.539985 522585.682985,148782.051985 522574.165985,148778.702985 522559.073985,148779.149985 522545.714985,148791.097985 522529.576985,148804.969985 522529.061985)) + POLYGON( EMPTY) + + #41 Polygon - gid: 2541 + + POLYGON((148410.699985 522834.902985,148442.757985 522825.725985,148460.309985 522827.514985,148487.864985 522844.888985,148500.821985 522849.224985,148522.555985 522842.060985,148549.245985 522836.360985,148568.572985 522826.852985,148584.252985 522812.743985,148609.816985 522787.145985,148614.009985 522767.881985,148612.795985 522752.758985,148612.563985 522743.189985,148618.720985 522735.053985,148625.781585 522726.296485,148618.662985 522724.739985,148612.278985 522723.775985,148605.112985 522714.525985,148611.687985 522677.987985,148611.797985 522647.963985,148594.739985 522625.727985,148584.565985 522622.805985,148562.730985 522628.324985,148543.283985 522615.292985,148536.597985 522557.684985,148536.223985 522555.223985,148534.274985 522546.378985,148533.665985 522541.970985,148533.794985 522540.094985,148535.172985 522535.741985,148538.094985 522529.403985,148538.611985 522526.777985,148539.936985 522513.990985,148540.169985 522509.496985,148540.192985 522500.589985,148540.851985 522495.877985,148540.474985 522491.607985,148539.391985 522489.734985,148536.121985 522486.259985,148532.239985 522483.953985,148529.487985 522487.690985,148527.557985 522489.161985,148523.269985 522490.157985,148512.547985 522491.130985,148508.089985 522491.855985,148503.708985 522492.860985,148499.171985 522494.926985,148493.577985 522498.401985,148488.746985 522500.495985,148483.626985 522501.803985,148480.736985 522503.655985,148464.117985 522534.086985,148427.843985 522552.590985,148408.790985 522571.476985,148398.223985 522596.340985,148407.833985 522615.400985,148416.753985 522662.875985,148420.236985 522689.856985,148421.081985 522713.013985,148415.508985 522722.819985,148391.177985 522725.213985,148358.228985 522724.834985,148355.953985 522741.826985,148341.696985 522767.846985,148328.778985 522795.425985,148312.269985 522806.114985,148322.213985 522836.436985,148339.137985 522884.626985,148351.181985 522896.189985,148376.682985 522893.652985,148389.158985 522851.634985,148410.699985 522834.902985)) + POLYGON((148482.813746868 522756.183508667,148484.759834217 522756.612200335,148500.311458172 522764.073026139,148507.47578582 522768.590283572,148524.485305735 522764.957677221,148526.135900505 522764.145660091,148532.598883594 522758.330211851,148537.783159503 522753.13904088,148537.640235854 522747.24405639,148537.573978828 522747.137066634,148532.272275747 522732.393023801,148530.149598324 522716.869200329,148531.298587695 522701.24311067,148532.147803475 522696.523924938,148520.979243698 522690.629014551,148501.532243698 522677.597014551,148493.394526839 522670.763509214,148494.619771809 522680.254848443,148495.187102679 522687.122051743,148496.032102679 522710.279051743,148495.262613882 522724.069947131,148491.977169924 522737.485861809,148486.287201914 522750.071773483,148482.813746868 522756.183508667)) + + #42 Polygon - gid: 2542 + + POLYGON((150213.068985 524020.273985,150226.206985 524020.218985,150245.019985 524022.421985,150248.570985 524017.633985,150243.628985 523991.402985,150233.942985 523969.968985,150203.852985 523929.546985,150189.509985 523905.746985,150179.578985 523905.795985,150163.996985 523891.573985,150150.529985 523872.591985,150158.960985 523848.710985,150150.727985 523827.265985,150129.075985 523796.394985,150110.126985 523782.119985,150064.853985 523787.149985,150051.774985 523791.993985,150035.273985 523796.784985,150034.124985 523803.948985,150047.317985 523842.088985,150048.538985 523846.850985,150048.758985 523856.362985,150044.002985 523858.774985,150033.285985 523861.216985,150022.584985 523866.044985,150013.239985 523875.626985,150010.897985 523882.801985,150007.322985 523904.295985,150015.725985 523913.798985,150028.883985 523920.894985,150036.292985 523937.604985,150033.171985 523964.012985,150028.264985 524013.973985,150020.417985 524042.804985,150014.532985 524064.428985,150004.476985 524083.491985,149987.717985 524115.262985,149981.881985 524139.242985,149991.382985 524146.196985,150012.547985 524165.288985,150017.553385 524169.126585,150024.575985 524166.982985,150037.645985 524157.385985,150054.301985 524147.777985,150067.231985 524142.754985,150080.313985 524135.548985,150096.808985 524132.911985,150108.662985 524120.938985,150113.586985 524111.551985,150113.285985 524097.054985,150114.403985 524085.116985,150121.501985 524075.543985,150134.308985 524061.036985,150143.802985 524053.844985,150159.042985 524051.270985,150177.151985 524046.558985,150188.764985 524039.234985,150195.842985 524027.285985,150213.068985 524020.273985)) + POLYGON((150106.011000335 523989.689500602,150114.057919676 523984.995648846,150131.312562914 523979.892369386,150139.180475973 523978.563497456,150141.030635187 523976.094127171,150143.466198894 523973.995184804,150140.693804819 523969.864680568,150140.146542734 523969.593183191,150129.018561804 523961.19132421,150113.436561804 523946.96932421,150110.842199358 523944.035224328,150110.774630149 523946.407515086,150107.74049457 523972.080521291,150106.011000335 523989.689500602)) + + #43 Polygon - gid: 2543 + + POLYGON((144922.318985 524491.962985,144916.174985 524471.916985,144914.549985 524467.677985,144912.593985 524463.720985,144910.192985 524460.155985,144908.311985 524458.069985,144904.928985 524455.185985,144901.087985 524452.661985,144896.952985 524450.467985,144892.685985 524448.577985,144888.450985 524446.961985,144885.347985 524445.991985,144881.001985 524445.002985,144876.555985 524444.286985,144863.031985 524442.562985,144857.685985 524441.514985,144849.003985 524439.122985,144839.775985 524435.911985,144819.128985 524426.964985,144802.963985 524420.784985,144798.693985 524419.372985,144786.193985 524415.740985,144781.645985 524414.507985,144777.135985 524413.576985,144772.740985 524413.149985,144768.538985 524413.428985,144766.698985 524413.878985,144762.631985 524415.739985,144758.763985 524418.497985,144755.294985 524421.804985,144752.424985 524425.313985,144750.466985 524428.343985,144748.348985 524432.485985,144746.691985 524436.901985,144745.642985 524441.399985,144745.357985 524445.949985,144746.099985 524450.217985,144747.674985 524454.490985,144751.644985 524463.042985,144753.198985 524467.313985,144753.903985 524471.578985,144753.795985 524474.709985,144752.079885 524484.578885,144754.670985 524482.704985,144758.730985 524480.197985,144763.800985 524478.457985,144768.027985 524478.293985,144772.474985 524478.930985,144781.635985 524481.187985,144786.155985 524482.100985,144808.055985 524485.287985,144816.937985 524486.725985,144833.164985 524489.675985,144841.977985 524491.504985,144850.254985 524493.511985,144867.643985 524498.751985,144876.325985 524501.135985,144885.821985 524503.463985,144894.632985 524505.384985,144899.063985 524506.183985,144907.993985 524507.149985,144917.005985 524507.531985,144926.006985 524507.397985,144924.626985 524500.677985,144922.318985 524491.962985)) + POLYGON( EMPTY) + + #44 Polygon - gid: 2544 + + POLYGON((152738.586985 525524.931985,152740.326985 525497.058985,152695.275985 525498.501985,152656.986985 525505.098985,152622.061985 525523.010985,152648.325985 525540.128985,152652.935985 525590.321985,152647.410985 525629.067985,152666.698985 525650.755985,152708.041985 525659.923985,152735.752985 525671.255985,152760.563985 525666.811985,152771.160985 525648.828985,152770.241985 525625.353985,152756.879985 525597.961985,152746.550985 525573.880985,152738.586985 525524.931985)) + POLYGON( EMPTY) + + #45 Polygon - gid: 2545 + + POLYGON((149453.122985 526139.892985,149396.797985 526127.534985,149353.639985 526128.716985,149378.053985 526143.048985,149404.918985 526161.498985,149438.396985 526192.728985,149474.027985 526233.837985,149507.380985 526288.575985,149516.204985 526264.755985,149536.833985 526225.717985,149553.115985 526196.776985,149518.161985 526170.998985,149453.122985 526139.892985)) + POLYGON( EMPTY) + + #46 Polygon - gid: 2546 + + POLYGON((143371.698985 526340.324985,143367.501985 526296.992985,143367.318985 526278.597985,143349.180985 526262.013985,143334.789985 526251.329985,143319.597985 526245.894985,143315.281985 526251.019985,143278.726985 526298.107985,143265.495985 526287.517985,143253.409985 526293.227985,143236.509985 526310.988985,143223.254985 526345.656985,143210.652985 526371.956985,143208.644985 526376.798985,143242.636985 526387.900985,143277.186985 526389.196985,143320.427985 526393.579985,143367.418985 526393.302985,143375.058985 526381.563985,143371.698985 526340.324985)) + POLYGON( EMPTY) + + #47 Polygon - gid: 2547 + + POLYGON((158778.588985 529695.437985,158715.314985 529674.844985,158709.040985 529734.142985,158680.951985 529777.857985,158654.349985 529824.912985,158644.110985 529853.468985,158638.251985 529907.850985,158646.861985 529965.652985,158652.583985 529994.969985,158651.137985 529999.999985,158636.793985 530049.891985,158653.691985 530103.927985,158665.644985 530140.105985,158674.780985 530159.977985,158719.076985 530181.397985,158712.966985 530164.850985,158699.313985 530129.290985,158686.188985 530067.699985,158690.286985 530025.745985,158687.319985 529999.999985,158684.767985 529977.857985,158708.706985 529901.824985,158719.982985 529824.505985,158735.250985 529780.284985,158743.835985 529751.756985,158759.095985 529710.610985,158778.588985 529695.437985)) + POLYGON( EMPTY) + + #48 Polygon - gid: 2548 + + POLYGON((161952.205985 531803.507985,161950.166985 531785.171985,161948.777985 531776.277985,161947.155985 531767.422985,161941.486985 531770.695985,161937.729985 531773.172985,161932.269985 531777.472985,161926.725985 531782.098985,161924.613985 531783.667985,161920.829985 531786.099985,161918.605985 531787.218985,161914.388985 531788.805985,161912.462985 531789.286985,161907.980985 531789.764985,161906.546985 531789.681985,161902.168985 531788.569985,161900.603985 531787.696985,161897.146985 531784.749985,161895.220985 531782.338985,161888.204985 531771.801985,161886.264985 531769.242985,161883.356985 531765.807985,161881.285985 531763.666985,161877.947985 531760.643985,161875.477985 531758.658985,161871.750985 531756.139985,161869.201985 531754.809985,161868.431985 531755.733985,161866.239985 531759.658985,161864.319985 531763.806985,161862.714985 531768.076985,161861.469985 531772.366985,161861.207985 531774.035985,161861.449985 531778.536985,161862.001985 531783.085985,161863.613985 531807.082985,161864.280985 531822.215985,161864.630985 531826.696985,161866.742985 531841.487985,161867.721985 531846.033985,161869.164985 531850.249985,161871.272985 531853.934985,161872.321985 531855.188985,161875.579985 531857.980985,161879.435985 531860.329985,161887.847985 531864.517985,161891.856985 531866.765985,161905.113985 531875.495985,161909.626985 531878.077985,161917.664985 531882.167985,161925.928985 531885.781985,161936.320985 531889.414985,161940.808985 531890.825985,161945.292985 531891.980985,161949.678985 531892.708985,161953.873985 531892.835985,161955.851985 531892.353985,161959.869985 531889.472985,161962.230985 531885.504985,161962.474985 531884.239985,161962.567985 531879.959985,161961.965985 531875.401985,161960.428985 531866.167985,161959.158985 531853.444985,161957.935985 531843.738985,161952.205985 531803.507985)) + POLYGON( EMPTY) + + #49 Polygon - gid: 2549 + + POLYGON((144515.492985 534697.249985,144520.510985 534691.952985,144527.310985 534683.949985,144535.496985 534673.356985,144546.006985 534658.516985,144553.414985 534648.475985,144571.337985 534625.843985,144588.734985 534602.871985,144591.563985 534598.255985,144593.687985 534594.272985,144595.170985 534590.539985,144595.782985 534587.574985,144596.004985 534583.199985,144595.414985 534578.711985,144594.709985 534576.051985,144592.684985 534571.167985,144584.642985 534570.602985,144578.354985 534570.640985,144565.341985 534571.789985,144550.736985 534573.859985,144535.843985 534577.740985,144530.135985 534579.076985,144502.804985 534584.561985,144492.056985 534586.945985,144456.640985 534596.072985,144421.529985 534606.221985,144416.729985 534607.810985,144413.648985 534609.062985,144409.481985 534611.224985,144405.573985 534613.952985,144401.917985 534617.122985,144394.939985 534623.644985,144392.859085 534625.096885,144391.528985 534626.710985,144388.152985 534629.686985,144383.914985 534633.745985,144381.967985 534636.004985,144380.598985 534637.904985,144379.020985 534640.527985,144378.413985 534641.899985,144377.712985 534644.700985,144377.358985 534647.693985,144377.278985 534650.747985,144377.449985 534653.772985,144377.702985 534655.737985,144378.069985 534657.174985,144379.935985 534661.330985,144381.203985 534663.625985,144382.840985 534666.139985,144386.549985 534671.102985,144395.619985 534681.742985,144397.803985 534684.814985,144400.044985 534688.738985,144401.674985 534692.606985,144402.653985 534692.013985,144409.805985 534694.346985,144417.124985 534696.033985,144420.474985 534696.361985,144428.018985 534696.322985,144429.277985 534696.473985,144430.696985 534696.874985,144451.529985 534707.358985,144457.662985 534710.086985,144461.881985 534711.659985,144465.832985 534712.829985,144468.756985 534713.530985,144473.000985 534714.248985,144475.995985 534714.553985,144480.201985 534714.653985,144484.693985 534714.285985,144488.789985 534713.532985,144493.108985 534712.257985,144496.962985 534710.702985,144499.635985 534709.353985,144504.686985 534706.313985,144509.614985 534702.550985,144515.492985 534697.249985)) + POLYGON( EMPTY) + + #50 Polygon - gid: 2550 + + POLYGON((139580.306985 536284.245985,139581.537985 536275.353985,139582.391985 536270.934985,139584.727985 536262.895985,139588.416985 536252.326985,139591.066985 536246.306985,139593.754985 536241.295985,139596.494985 536237.619985,139599.804985 536234.137985,139603.593985 536230.963985,139607.726985 536228.169985,139622.104985 536219.993985,139630.326985 536215.966985,139647.195985 536208.674985,139656.268985 536204.452985,139664.079985 536200.252985,139671.632985 536195.480985,139678.904985 536190.269985,139684.418985 536185.885985,139690.667985 536180.238985,139699.139985 536171.792985,139704.019985 536167.257985,139707.535985 536164.362985,139719.234985 536155.582985,139724.584985 536151.291985,139728.111985 536147.960985,139730.160985 536145.764985,139731.363985 536144.185985,139731.781985 536143.091985,139730.140985 536138.628985,139728.244985 536134.603985,139725.033985 536129.308985,139723.167985 536126.742985,139720.321985 536123.255985,139715.151985 536117.777985,139709.530985 536112.704985,139702.374985 536107.119985,139693.638985 536101.087985,139672.813985 536087.921985,139664.262985 536082.684985,139655.423985 536077.697985,139647.610985 536073.673985,139639.545985 536070.005985,139626.896985 536064.817985,139618.344985 536061.630985,139595.270985 536053.548985,139589.311985 536051.161985,139582.993985 536048.148985,139578.633985 536045.693985,139573.206985 536042.191985,139559.712985 536032.655985,139544.953985 536022.737985,139538.344985 536017.628985,139533.269985 536012.957985,139527.127985 536006.378985,139522.507985 536000.966985,139517.569985 535994.673985,139514.710985 535990.549985,139512.017985 535986.156985,139509.458985 535981.492985,139503.627985 535970.144985,139500.680985 535965.036985,139498.267985 535961.301985,139493.873985 535955.337985,139482.644985 535941.539985,139476.252985 535933.272985,139471.574985 535926.605985,139468.229985 535920.871985,139466.243985 535916.364985,139465.202985 535913.222985,139464.494985 535910.303985,139463.964985 535907.107985,139463.809985 535904.115985,139464.450985 535898.265985,139465.320985 535895.316985,139466.778985 535892.646985,139467.714985 535891.405985,139469.884985 535889.355985,139472.222985 535888.202985,139473.703985 535887.781985,139478.694985 535887.027985,139527.523985 535887.045985,139534.405985 535886.815985,139539.706985 535886.209985,139543.334985 535885.541985,139549.575985 535883.796985,139555.393985 535881.390985,139561.941985 535877.533985,139566.488985 535874.094985,139570.786985 535869.895985,139574.370985 535865.516985,139577.146985 535860.922985,139578.381985 535858.167985,139579.597985 535854.520985,139580.483985 535850.089985,139580.752985 535847.100985,139580.748985 535844.297985,139580.113985 535838.063985,139579.392985 535835.150985,139578.222985 535831.671985,139577.100985 535828.887985,139575.349985 535825.206985,139573.169985 535821.251985,139570.621985 535817.165985,139565.947985 535810.671985,139563.686985 535807.948985,139560.612985 535804.659985,139558.108985 535802.262985,139554.445985 535799.139985,139549.466985 535795.479985,139544.282985 535792.276985,139538.972985 535789.483985,139532.216985 535786.483985,139528.012985 535784.877985,139522.443985 535783.012985,139498.844985 535775.793985,139481.569985 535769.907985,139475.702985 535767.695985,139470.596985 535765.137985,139468.001985 535763.386985,139466.883985 535762.396985,139464.852985 535760.143985,139462.813985 535757.076985,139461.575985 535754.350985,139459.684985 535748.568985,139458.819985 535743.777985,139458.353985 535740.212985,139457.651985 535731.980985,139457.160985 535721.682985,139457.087985 535713.035985,139457.389985 535710.492985,139458.081985 535707.539985,139459.525985 535704.076985,139461.210985 535701.557985,139463.801985 535698.894985,139466.281985 535697.157985,139469.421985 535695.731985,139473.755985 535694.584985,139480.230985 535693.382985,139487.658985 535692.342985,139497.732985 535690.655985,139507.707985 535688.863985,139515.608985 535688.004985,139536.445985 535687.421985,139560.876985 535685.892985,139568.980985 535685.624985,139575.288985 535685.903985,139579.849985 535686.480985,139588.121985 535688.083985,139596.121985 535690.179985,139601.973985 535691.519985,139606.159985 535692.152985,139612.312985 535692.703985,139618.514985 535692.777985,139621.601985 535692.529985,139627.534985 535691.492985,139631.225985 535690.396985,139635.337985 535688.505985,139638.406985 535686.551985,139639.584985 535685.626985,139642.840985 535682.480985,139645.451985 535679.212985,139648.795985 535673.937985,139651.978985 535668.218985,139668.201985 535637.219985,139672.423985 535629.667985,139677.545985 535622.037985,139680.573985 535618.604985,139682.864985 535616.615985,139685.943985 535614.660985,139688.770985 535613.559985,139692.249985 535612.928985,139695.280985 535613.008985,139698.224985 535613.644985,139700.766985 535614.733985,139702.087985 535615.482985,139705.439985 535617.839985,139707.680985 535619.832985,139712.062985 535624.286985,139715.241985 535628.088985,139718.403985 535632.235985,139721.539985 535636.765985,139724.665985 535641.644985,139731.570985 535653.529985,139737.212985 535664.169985,139739.633985 535669.254985,139741.716985 535674.194985,139743.466985 535678.998985,139744.879985 535683.722985,139745.639985 535686.957985,139746.437985 535691.658985,139746.900985 535696.335985,139746.980985 535699.429985,139746.262985 535708.502985,139744.114985 535718.330985,139740.327985 535733.143985,139738.458985 535739.114985,139735.962985 535745.484985,139733.105985 535751.646985,139724.889985 535768.299985,139722.678985 535773.301985,139720.685985 535778.355985,139718.976985 535783.420985,139717.642985 535788.432985,139716.487985 535794.996985,139716.255985 535798.802985,139716.424985 535806.302985,139716.897985 535814.641985,139720.252985 535833.369985,139721.254985 535840.218985,139722.032985 535848.318985,139722.636985 535860.654985,139723.041985 535865.500985,139723.595985 535869.969985,139724.425985 535873.622985,139725.907985 535877.893985,139727.294985 535880.672985,139728.946985 535883.210985,139731.655985 535886.283985,139734.007985 535888.197985,139736.641985 535889.770985,139739.492985 535890.878985,139740.985985 535891.198985,139742.449985 535891.287985,139744.945985 535890.794985,139746.374985 535890.179985,139748.401985 535888.804985,139750.468985 535886.617985,139753.620985 535882.153985,139757.971985 535874.263985,139766.546985 535856.319985,139770.020985 535849.785985,139775.406985 535840.970985,139787.949985 535822.120985,139792.813985 535813.795985,139795.325985 535808.760985,139797.476985 535803.700985,139799.223985 535798.645985,139800.003985 535795.747985,139800.796985 535792.077985,139801.378985 535788.309985,139801.878985 535781.357985,139801.971985 535757.446985,139801.772985 535751.399985,139801.317985 535745.229985,139799.979985 535735.531985,139797.665985 535724.587985,139795.239985 535715.729985,139790.553985 535700.992985,139787.074985 535690.615985,139784.300985 535683.246985,139781.903985 535677.405985,139774.772985 535661.279985,139771.370985 535653.166985,139767.425985 535643.120985,139764.622985 535635.052985,139762.357985 535626.853985,139760.604985 535617.923985,139759.689985 535609.708985,139759.670985 535602.051985,139760.175985 535597.480985,139761.074985 535592.961985,139762.333985 535588.513985,139764.487985 535582.705985,139767.018985 535577.178985,139769.898985 535571.857985,139773.045985 535567.308985,139774.918985 535564.960985,139776.980985 535562.899985,139779.363985 535561.024985,139782.591985 535559.191985,139785.460985 535558.179985,139786.945985 535557.864985,139788.990985 535557.684985,139790.500985 535557.739985,139793.505985 535558.303985,139795.110985 535558.903985,139796.414985 535559.597985,139798.880985 535561.344985,139802.353985 535564.379985,139805.549985 535568.247985,139808.696985 535572.568985,139814.126985 535580.708985,139823.426985 535595.492985,139828.793985 535604.633985,139833.129985 535612.775985,139838.706985 535624.155985,139843.536985 535634.544985,139847.396985 535643.335985,139852.464985 535655.668985,139857.816985 535669.898985,139867.280985 535697.844985,139870.030985 535705.535985,139874.258985 535716.398985,139878.906985 535727.026985,139883.055985 535735.583985,139886.787985 535742.582985,139890.766985 535749.443985,139897.980985 535760.815985,139901.071985 535765.981985,139903.940985 535771.255985,139912.046985 535787.324985,139914.373985 535791.455985,139918.063985 535797.258985,139921.357985 535801.454985,139923.505985 535803.573985,139924.970985 535804.706985,139926.243985 535805.496985,139928.986985 535806.781985,139932.583985 535807.856985,139935.570985 535808.318985,139938.005985 535808.411985,139941.020985 535808.199985,139943.963985 535807.605985,139946.733985 535806.629985,139949.456985 535805.316985,139952.528985 535803.450985,139954.949985 535801.662985,139958.129985 535798.972985,139963.401985 535793.632985,139968.154985 535787.926985,139971.450985 535782.908985,139972.879985 535780.264985,139974.014985 535777.692985,139974.980985 535774.850985,139976.502985 535769.142985,139979.454985 535754.014985,139980.658985 535746.509985,139981.662985 535736.074985,139982.932985 535711.663985,139983.270985 535696.456985,139983.238985 535689.010985,139982.549985 535678.406985,139980.323985 535658.404985,139979.190985 535646.066985,139978.378985 535634.706985,139977.762985 535622.123985,139976.315985 535580.869985,139975.971985 535561.243985,139976.099985 535549.548985,139977.004985 535534.281985,139979.934985 535490.984985,139981.030985 535482.383985,139982.469985 535475.733985,139984.430985 535469.066985,139986.517985 535463.165985,139987.679985 535460.401985,139990.234985 535455.396985,139991.909985 535452.941985,139993.957985 535450.827985,139996.385985 535448.994985,139999.024985 535447.621985,140001.905985 535446.712985,140006.993985 535445.807985,140011.507985 535445.571985,140015.764985 535445.938985,140021.851985 535447.221985,140024.694985 535448.179985,140030.425985 535450.706985,140036.028985 535453.823985,140040.617985 535457.090985,140045.514985 535461.247985,140049.628985 535465.627985,140052.229985 535469.119985,140053.784985 535471.700985,140055.287985 535475.350985,140056.580985 535480.715985,140057.299985 535485.168985,140057.913985 535487.470985,140058.937985 535490.320985,140059.568985 535491.686985,140060.850985 535493.785985,140061.778985 535494.965985,140065.399985 535498.531985,140067.800985 535500.346985,140070.706985 535502.078985,140073.444985 535503.331985,140077.253985 535504.488985,140080.220985 535504.966985,140084.207985 535505.256985,140088.710985 535505.234985,140093.405985 535504.976985,140098.169985 535504.301985,140102.967985 535503.305985,140107.692985 535501.965985,140112.290985 535500.232985,140115.396985 535498.769985,140119.794985 535496.227985,140124.107985 535493.220985,140127.651985 535490.446985,140132.374985 535486.472985,140136.271985 535482.899985,140139.926985 535479.270985,140143.308985 535475.520985,140148.197985 535469.094985,140157.833985 535454.685985,140162.452985 535448.684985,140165.258985 535445.833985,140168.592985 535442.802985,140172.883985 535439.551985,140176.709985 535437.178985,140180.297985 535435.354985,140184.482985 535433.693985,140188.370985 535432.634985,140192.812985 535431.857985,140197.194985 535431.510985,140203.273985 535431.345985,140218.438985 535431.784985,140223.355985 535431.715985,140226.351985 535431.429985,140228.064985 535431.012985,140229.448985 535430.482985,140232.118985 535429.063985,140235.867985 535426.512985,140238.434985 535423.996985,140242.173985 535419.828985,140246.735985 535413.958985,140251.061985 535407.683985,140254.278985 535402.487985,140257.229985 535397.194985,140259.817985 535391.773985,140261.404985 535387.658985,140263.054985 535382.041985,140264.205985 535376.314985,140264.964985 535370.504985,140265.716985 535361.336985,140266.322985 535350.243985,140266.837985 535333.228985,140267.009985 535310.682985,140266.988985 535300.110985,140266.512985 535282.732985,140266.469985 535273.905985,140266.663985 535269.411985,140267.088985 535264.675985,140267.757985 535259.825985,140268.568985 535255.397985,140270.540985 535247.578985,140272.980985 535240.592985,140276.555985 535232.562985,140281.174985 535223.841985,140284.880985 535217.943985,140288.095985 535213.604985,140291.593985 535209.455985,140300.508985 535199.762985,140303.734985 535195.825985,140306.452985 535191.609985,140307.757985 535188.901985,140308.504985 535186.947985,140309.798985 535181.881985,140310.622985 535175.071985,140311.020985 535164.614985,140311.111985 535143.903985,140311.541985 535136.992985,140312.125985 535133.284985,140312.934985 535130.353985,140313.482985 535128.949985,140314.663985 535126.829985,140316.736985 535124.574985,140318.681985 535123.326985,140320.096985 535122.827985,140321.594985 535122.491985,140325.004985 535122.068985,140329.517985 535122.050985,140333.688985 535122.249985,140338.046985 535122.680985,140342.500985 535123.340985,140346.868985 535124.218985,140352.700985 535125.724985,140357.000985 535127.058985,140361.769985 535128.868985,140365.893985 535130.673985,140370.855985 535133.092985,140376.893985 535136.308985,140381.311985 535138.990985,140386.114985 535142.595985,140390.161985 535146.262985,140396.094985 535152.500985,140402.651985 535160.317985,140406.637985 535166.186985,140408.086985 535168.819985,140409.150985 535171.253985,140410.478985 535175.562985,140411.454985 535179.981985,140411.791985 535184.591985,140411.749985 535187.599985,140411.076985 535193.566985,140410.362985 535197.454985,140408.200985 535205.090985,140406.393985 535210.820985,140405.547985 535214.829985,140405.220985 535217.828985,140405.477985 535221.410985,140406.248985 535224.350985,140407.091985 535226.325985,140407.834985 535227.629985,140409.638985 535230.070985,140412.571985 535232.946985,140415.007985 535234.735985,140418.789985 535236.858985,140422.981985 535238.528985,140426.187985 535239.435985,140431.511985 535240.551985,140444.577985 535242.758985,140451.616985 535244.179985,140456.451985 535245.428985,140462.114985 535247.443985,140464.307985 535248.483985,140466.910985 535250.001985,140469.343985 535251.758985,140471.538985 535253.752985,140472.546985 535254.879985,140473.907985 535256.799985,140474.620985 535258.138985,140475.485985 535260.538985,140477.086985 535260.852985,140479.858985 535262.010985,140485.998985 535265.048985,140497.212985 535272.587985,140502.401985 535275.601985,140506.981985 535277.963985,140515.753985 535282.120985,140520.316985 535284.063985,140524.534985 535285.638985,140530.215985 535287.306985,140533.160985 535287.824985,140537.199985 535287.933985,140540.948985 535287.423985,140543.882985 535286.586985,140545.275985 535285.996985,140546.977985 535284.982985,140548.154985 535284.034985,140550.199985 535281.745985,140551.314985 535279.744985,140552.235985 535276.904985,140553.238985 535271.991985,140553.703985 535266.730985,140553.976985 535261.326985,140554.223985 535250.450985,140554.140985 535235.153985,140553.689985 535228.522985,140552.718985 535221.486985,140551.431985 535214.670985,140548.875985 535202.927985,140548.084985 535198.157985,140547.564985 535191.826985,140547.545985 535186.972985,140547.729985 535182.096985,140548.541985 535172.313985,140550.093985 535162.251985,140551.974985 535154.083985,140556.616985 535137.953985,140558.129985 535131.991985,140558.777985 535128.123985,140559.194985 535122.126985,140558.828985 535116.905985,140557.672985 535111.402985,140555.608985 535105.762985,140553.963985 535100.689985,140550.879985 535094.895985,140550.582985 535093.633985,140547.674985 535086.614985,140544.826985 535081.157985,140540.731985 535075.516985,140536.634985 535070.725985,140532.837985 535067.360985,140528.420985 535064.135985,140524.987985 535060.547985,140522.647985 535058.438985,140515.451985 535050.544985,140510.767985 535045.123985,140507.746985 535042.235985,140498.425985 535035.674985,140497.011985 535035.121985,140495.522985 535034.908985,140494.213985 535035.000985,140483.052985 535036.945985,140481.288985 535037.516985,140470.264985 535043.040985,140459.888985 535049.152985,140451.570985 535053.489985,140448.087985 535054.901985,140443.674985 535055.846985,140439.213985 535056.280985,140437.365985 535055.718985,140436.189985 535054.770985,140434.891985 535053.225985,140433.170985 535050.768985,140431.587985 535048.207985,140429.521985 535044.372985,140428.541985 535041.540985,140428.349985 535040.066985,140428.414985 535037.029985,140429.080985 535033.642985,140431.959985 535025.978985,140437.970985 535012.180985,140441.433985 535004.957985,140442.520985 535002.161985,140444.779985 534995.680985,140446.918985 534988.089985,140447.830985 534983.115985,140448.041985 534980.115985,140448.067985 534976.101985,140447.958985 534974.597985,140447.484985 534972.392985,140445.934985 534969.613985,140442.502985 534965.963985,140440.878985 534964.878985,140434.970985 534964.190985,140432.581985 534964.231985,140429.211985 534964.880985,140419.422985 534963.985985,140412.037985 534963.573985,140406.589985 534962.345985,140404.198985 534961.905985,140398.724985 534961.259985,140392.228985 534959.924985,140388.840985 534958.945985,140386.096985 534957.699985,140384.810985 534956.932985,140382.742985 534955.224985,140381.314985 534953.714985,140379.548985 534951.284985,140377.433985 534947.807985,140376.736985 534946.372985,140375.493985 534942.046985,140374.387985 534939.275985,140369.021985 534927.245985,140367.341985 534923.070985,140366.161985 534920.648985,140362.125985 534913.096985,140348.646985 534890.235985,140346.185985 534886.399985,140340.156985 534878.582985,140338.021985 534876.008985,140332.861985 534870.325985,140325.793985 534864.759985,140322.300985 534862.358985,140320.999985 534861.615985,140316.091985 534859.481985,140313.404985 534858.117985,140289.152985 534843.579985,140283.129985 534840.332985,140280.196985 534839.230985,140270.767985 534836.812985,140268.395985 534836.550985,140264.431985 534837.035985,140261.915985 534837.946985,140258.399985 534839.743985,140255.958985 534841.489985,140255.068985 534842.413985,140252.241985 534846.335985,140250.636985 534848.868985,140249.317985 534851.316985,140248.088985 534854.054985,140246.920985 534858.179985,140246.664985 534861.168985,140247.428985 534872.649985,140247.973985 534878.666985,140248.255985 534880.138985,140249.969985 534885.156985,140252.936985 534892.820985,140254.655985 534896.813985,140266.365985 534919.755985,140267.822985 534922.376985,140271.482985 534927.812985,140275.051985 534934.410985,140279.541985 534940.825985,140281.945985 534944.629985,140285.361985 534950.376985,140287.187985 534953.884985,140288.441985 534956.616985,140289.360985 534959.482985,140290.166985 534965.964985,140290.128985 534967.672985,140289.844985 534969.134985,140288.872985 534972.725985,140287.580985 534978.738985,140286.713985 534981.607985,140283.568985 534990.459985,140281.708985 534999.392985,140280.605985 535003.757985,140278.935985 535013.332985,140276.071985 535028.122985,140273.766985 535037.947985,140272.565985 535045.351985,140270.781985 535053.996985,140267.939985 535070.338985,140267.049985 535074.638985,140264.681985 535083.629985,140262.124985 535094.986985,140259.633985 535105.080985,140257.324985 535112.628985,140254.862985 535119.003985,140254.045985 535120.295985,140252.515985 535121.828985,140251.200985 535122.602985,140248.949985 535123.338985,140247.425985 535123.533985,140245.402985 535123.264985,140242.580985 535122.286985,140238.106985 535120.252985,140234.151985 535118.094985,140231.083985 535115.983985,140224.514985 535110.280985,140219.876985 535107.707985,140217.334985 535106.077985,140215.997985 535105.431985,140213.564985 535104.791985,140202.236985 535102.879985,140203.060985 535106.831985,140203.249985 535112.368985,140202.870985 535114.529985,140202.232985 535116.056985,140201.439985 535119.281985,140199.089985 535125.794985,140197.089985 535128.776985,140196.021985 535129.930985,140193.315985 535131.267985,140191.140985 535131.820985,140188.152985 535132.081985,140182.311985 535132.222985,140178.272985 535131.905985,140171.238985 535130.223985,140166.918985 535128.959985,140161.858985 535127.208985,140157.472985 535126.136985,140155.339985 535125.322985,140151.491985 535122.966985,140143.886985 535119.310985,140140.533985 535117.044985,140134.495985 535112.594985,140132.690985 535111.964985,140132.591985 535116.758985,140133.193985 535124.798985,140132.877985 535132.797985,140133.264985 535137.308985,140133.141985 535141.806985,140134.180985 535154.799985,140134.230985 535161.325985,140135.180985 535167.325985,140134.694985 535173.307985,140134.768985 535180.436985,140134.511985 535184.933985,140134.020985 535189.622985,140132.969985 535193.999985,140130.296985 535211.773985,140130.152985 535216.772985,140130.483985 535223.319985,140130.987985 535226.790985,140130.998985 535228.298985,140129.698985 535229.685985,140128.371985 535229.879985,140121.819985 535229.406985,140114.812985 535229.358985,140110.320985 535229.666985,140106.544985 535230.140985,140096.959985 535232.159985,140092.659985 535232.188985,140089.160985 535231.737985,140087.234985 535231.118985,140084.488985 535229.880985,140081.339985 535227.816985,140075.055985 535222.764985,140069.553985 535217.390985,140058.896985 535209.433985,140055.811985 535207.661985,140052.908985 535206.682985,140051.409985 535206.419985,140049.938985 535206.351985,140048.540985 535206.542985,140047.094985 535206.993985,140043.881985 535208.465985,140042.590985 535209.230985,140039.517985 535211.655985,140036.378985 535214.890985,140034.416985 535216.648985,140032.004985 535218.446985,140028.812985 535220.321985,140023.891985 535222.473985,140020.987985 535223.247985,140017.304985 535223.940985,140012.839985 535224.522985,140008.579985 535224.869985,140004.271985 535224.983985,140000.726985 535224.755985,139991.620985 535222.385985,139980.642985 535218.147985,139976.590985 535216.220985,139970.813985 535212.595985,139963.060985 535208.257985,139960.458985 535206.495985,139958.259985 535204.477985,139954.212985 535200.011985,139950.851985 535195.994985,139944.482985 535189.621985,139941.329985 535186.243985,139936.998985 535180.118985,139931.563985 535173.032985,139929.868985 535170.570985,139927.461985 535165.212985,139925.360985 535163.349985,139922.568985 535160.114985,139908.953985 535143.622985,139905.486985 535139.190985,139901.433985 535133.560985,139895.564985 535124.415985,139888.179985 535114.063985,139882.622985 535104.655985,139876.825985 535095.889985,139873.897985 535092.106985,139870.957985 535088.698985,139862.467985 535079.806985,139860.188985 535077.835985,139858.445985 535076.757985,139857.026985 535076.297985,139852.667985 535075.738985,139849.657985 535075.687985,139845.757985 535076.064985,139844.290985 535076.553985,139841.735985 535078.096985,139838.563985 535080.460985,139837.273985 535081.847985,139835.644985 535084.379985,139834.712985 535086.347985,139822.859985 535120.960985,139821.772985 535124.628985,139817.808985 535144.003985,139815.981985 535157.572985,139813.602985 535180.207985,139810.843985 535213.080985,139808.202985 535231.937985,139807.272985 535235.411985,139805.576985 535239.595985,139803.498985 535245.955985,139802.607985 535247.923985,139800.882985 535250.388985,139798.520985 535253.177985,139794.469985 535257.125985,139790.983985 535259.661985,139789.648985 535260.326985,139786.940985 535261.222985,139785.460985 535261.547985,139783.467985 535261.730985,139781.992985 535261.435985,139777.419985 535259.850985,139767.456985 535255.351985,139757.514985 535251.322985,139749.332985 535247.573985,139743.283985 535245.221985,139739.177985 535243.346985,139737.320985 535242.730985,139731.388985 535241.792985,139725.950985 535240.505985,139724.191985 535240.234985,139715.787985 535240.185985,139714.330985 535240.482985,139713.014985 535241.140985,139710.528985 535242.883985,139707.610985 535245.432985,139702.496985 535251.004985,139699.773985 535254.580985,139695.755985 535262.914985,139694.924985 535265.663985,139694.254985 535268.599985,139693.910985 535271.629985,139693.843985 535274.629985,139694.395985 535288.182985,139694.935985 535293.205985,139698.184985 535312.557985,139698.401985 535318.113985,139698.331985 535324.742985,139697.885985 535330.729985,139696.769985 535337.460985,139695.373985 535342.903985,139692.205985 535352.885985,139690.615985 535356.610985,139688.348985 535360.684985,139686.555985 535363.086985,139682.976985 535367.067985,139670.956985 535378.401985,139667.649985 535380.806985,139665.862985 535382.309985,139662.748985 535385.564985,139659.886985 535388.248985,139657.574985 535390.172985,139654.486985 535392.070985,139645.811985 535395.942985,139640.779985 535397.682985,139637.638985 535398.419985,139627.571985 535400.047985,139626.086985 535400.245985,139622.765985 535400.265985,139619.772985 535399.924985,139615.927985 535399.162985,139608.762985 535396.929985,139604.126985 535397.211985,139598.119985 535397.050985,139593.613985 535396.546985,139587.709985 535395.435985,139582.905985 535394.251985,139574.205985 535391.195985,139562.531985 535388.361985,139559.299985 535387.180985,139555.330985 535384.999985,139554.167985 535385.182985,139554.356985 535389.318985,139555.044985 535392.524985,139555.398985 535396.109985,139557.087985 535403.488985,139557.241985 535404.991985,139556.820985 535407.038985,139553.825985 535415.329985,139552.035985 535421.066985,139551.328985 535425.310985,139551.184985 535429.773985,139551.681985 535434.246985,139552.627985 535438.656985,139554.313985 535444.464985,139556.074985 535448.477985,139558.544985 535452.208985,139561.411985 535455.719985,139565.435985 535460.273985,139568.557985 535462.977985,139571.141985 535464.460985,139584.237985 535470.517985,139586.503985 535471.376985,139593.668985 535473.612985,139598.687985 535475.707985,139602.933985 535477.933985,139604.020985 535478.940985,139604.533985 535480.482985,139604.866985 535483.813985,139606.271985 535492.704985,139606.804985 535498.248985,139606.777985 535499.741985,139606.314985 535503.020985,139604.821985 535509.007985,139603.021985 535514.733985,139601.600985 535520.071985,139601.043985 535521.446985,139598.935985 535524.578985,139595.269985 535529.391985,139591.348985 535534.002985,139588.301985 535537.258985,139586.464985 535538.377985,139579.904985 535538.899985,139575.514985 535538.902985,139574.105985 535538.705985,139571.152985 535537.945985,139569.775985 535537.346985,139567.971985 535535.995985,139558.235985 535525.528985,139554.190985 535520.960985,139553.092985 535519.974985,139551.210985 535518.832985,139548.269985 535517.989985,139545.546985 535517.716985,139540.672985 535518.378985,139537.739985 535519.077985,139536.353985 535519.563985,139535.014985 535520.213985,139531.146985 535522.544985,139524.426985 535525.648985,139520.505985 535527.857985,139514.722985 535530.645985,139512.707985 535531.967985,139506.205985 535537.460985,139504.142985 535539.613985,139500.756985 535544.674985,139490.017985 535562.863985,139483.034985 535575.309985,139481.369985 535577.781985,139479.936985 535579.366985,139477.659985 535581.322985,139468.886985 535587.682985,139467.595985 535588.447985,139465.277985 535589.398985,139463.794985 535589.646985,139462.170985 535589.641985,139460.563985 535589.370985,139459.135985 535588.819985,139457.345985 535587.287985,139455.504985 535584.838985,139454.027985 535582.019985,139453.087985 535579.127985,139452.866985 535577.169985,139453.221985 535574.213985,139454.052985 535571.208985,139455.938985 535565.568985,139457.701985 535561.409985,139459.377985 535558.048985,139460.959985 535555.511985,139468.242985 535545.227985,139470.055985 535542.130985,139471.381985 535539.436985,139472.228985 535537.299985,139473.089985 535534.404985,139473.345985 535532.931985,139473.544985 535529.790985,139473.052985 535511.213985,139472.672985 535506.749985,139472.245985 535504.385985,139471.092985 535501.582985,139468.019985 535496.222985,139466.240985 535493.791985,139465.240985 535492.732985,139463.860985 535491.761985,139462.409985 535491.206985,139460.885985 535490.885985,139458.629985 535490.789985,139457.113985 535490.968985,139454.295985 535491.715985,139452.943985 535492.368985,139451.714985 535493.290985,139450.985985 535494.052985,139449.229985 535496.453985,139445.203985 535503.081985,139440.597985 535511.241985,139439.176985 535513.361985,139438.183985 535514.476985,139435.886985 535516.435985,139432.947985 535518.499985,139429.292985 535520.347985,139426.442985 535521.320985,139423.421985 535522.038985,139418.953985 535522.644985,139415.086985 535522.753985,139405.229985 535522.513985,139398.935985 535523.454985,139397.055985 535523.531985,139392.550985 535523.406985,139385.713985 535523.826985,139382.359985 535523.869985,139377.014985 535523.663985,139372.533985 535523.228985,139368.639985 535523.038985,139365.764985 535523.028985,139358.901985 535523.395985,139352.037985 535523.311985,139350.543985 535523.443985,139348.721985 535524.098985,139344.531985 535526.261985,139343.144985 535526.680985,139341.956985 535526.738985,139344.312985 535541.041985,139344.781985 535545.978985,139344.872985 535552.866985,139344.745985 535555.864985,139344.378985 535558.230985,139343.620985 535561.141985,139341.916985 535566.051985,139340.141985 535570.191985,139334.077985 535581.003985,139330.716985 535587.709985,139327.445985 535594.730985,139321.842985 535607.611985,139311.911985 535631.802985,139307.926985 535640.247985,139305.909985 535646.602985,139304.759985 535651.531985,139304.319985 535654.520985,139304.320985 535655.940985,139304.672985 535658.901985,139306.569985 535667.331985,139309.298985 535675.337985,139311.277985 535680.026985,139313.291985 535684.055985,139314.594985 535686.249985,139324.683985 535701.010985,139328.374985 535706.014985,139330.247985 535709.049985,139333.267985 535715.439985,139336.405985 535723.879985,139337.956985 535729.191985,139339.254985 535735.057985,139339.965985 535739.703985,139340.333985 535744.195985,139340.488985 535748.689985,139340.347985 535753.192985,139339.698985 535757.116985,139338.541985 535761.181985,139333.834985 535774.093985,139330.743985 535781.597985,139328.768985 535785.647985,139326.442985 535789.755985,139324.780985 535792.267985,139322.984985 535794.593985,139320.784985 535796.638985,139317.034985 535798.995985,139309.875985 535802.400985,139304.190985 535804.395985,139301.761985 535805.793985,139298.141985 535808.463985,139286.886985 535817.737985,139283.524985 535820.727985,139280.744985 535823.457985,139275.774985 535829.099985,139273.210985 535832.538985,139271.575985 535835.043985,139267.939985 535841.620985,139266.006985 535845.485985,139264.273985 535849.641985,139257.668985 535867.878985,139254.447985 535874.600985,139248.687985 535885.134985,139239.109985 535899.576985,139236.806985 535903.449985,139235.467985 535906.129985,139222.758985 535935.269985,139218.757985 535944.996985,139214.967985 535954.740985,139212.922985 535960.311985,139212.544985 535962.399985,139213.872985 535966.725985,139214.457985 535969.337985,139215.059985 535973.798985,139215.361985 535979.096985,139215.233985 535982.446985,139214.623985 535986.910985,139213.582985 535991.775985,139212.443985 535996.131985,139211.037985 536000.887985,139209.570985 536004.718985,139208.867985 536006.032985,139205.748985 536010.832985,139202.012985 536019.020985,139196.508985 536028.023985,139193.752985 536033.960985,139191.136985 536041.551985,139185.845985 536060.914985,139184.695985 536064.146985,139182.251985 536069.591985,139180.979985 536072.081985,139179.312985 536074.584985,139177.948985 536075.898985,139176.737985 536076.803985,139174.690985 536077.732985,139165.450985 536080.395985,139164.104985 536080.741985,139162.607985 536080.840985,139155.248985 536082.210985,139153.937985 536082.710985,139153.402985 536084.303985,139153.711985 536085.826985,139156.356985 536093.057985,139158.557985 536098.139985,139159.347985 536099.447985,139159.781985 536101.659985,139159.839985 536103.160985,139159.666985 536109.541985,139159.192985 536118.407985,139158.693985 536121.775985,139156.142985 536130.712985,139154.566985 536135.078985,139153.366985 536140.956985,139151.410985 536148.587985,139151.034985 536151.564985,139150.105985 536156.119985,139149.442985 536160.574985,139148.108985 536165.856985,139147.217985 536168.724985,139146.011985 536171.763985,139143.883985 536175.739985,139142.534985 536178.735985,139138.221985 536190.634985,139135.120985 536198.181985,139132.997985 536201.772985,139129.278985 536206.605985,139128.223985 536207.663985,139127.030985 536208.570985,139124.729985 536210.052985,139121.139985 536212.776985,139119.376985 536213.599985,139116.517985 536214.580985,139114.620985 536216.016985,139113.566985 536217.101985,139111.812985 536217.600985,139109.701985 536217.540985,139107.064985 536217.186985,139104.274985 536222.606985,139106.650985 536223.998985,139108.467985 536225.621985,139110.372985 536227.758985,139113.634985 536232.128985,139115.101985 536234.750985,139116.269985 536237.632985,139119.094985 536248.394985,139119.441985 536258.707985,139119.084985 536262.309985,139119.038985 536264.577985,139119.158985 536268.730985,139119.361985 536270.400985,139120.184985 536274.028985,139121.742985 536279.104985,139122.687985 536281.195985,139125.576985 536286.680985,139126.289985 536287.509985,139127.625985 536288.091985,139129.180985 536288.317985,139130.867985 536288.281985,139136.723985 536286.994985,139138.343985 536285.291985,139139.628985 536284.393985,139140.966985 536283.755985,139141.986985 536283.598985,139145.652985 536283.996985,139150.149985 536284.130985,139152.737985 536284.686985,139170.372985 536289.333985,139177.323985 536290.759985,139180.190985 536291.636985,139182.875985 536292.951985,139184.562985 536294.429985,139186.322985 536298.559985,139187.023985 536300.802985,139187.542985 536303.788985,139187.992985 536305.195985,139189.250985 536307.428985,139191.192985 536309.734985,139192.620985 536309.942985,139196.984985 536311.296985,139207.398985 536313.624985,139211.158985 536314.025985,139214.750985 536313.860985,139226.458985 536310.802985,139227.958985 536310.711985,139231.027985 536309.928985,139234.113985 536310.030985,139235.572985 536310.361985,139237.446985 536311.468985,139239.651985 536313.662985,139240.737985 536315.338985,139241.907985 536312.463985,139243.362985 536309.812985,139244.852985 536307.492985,139246.692985 536305.118985,139249.714985 536301.688985,139252.882985 536298.487985,139261.604985 536290.682985,139264.851985 536287.558985,139267.358985 536284.624985,139269.958985 536280.927985,139271.167985 536278.583985,139272.642985 536274.325985,139273.863985 536269.860985,139275.682985 536261.698985,139277.976985 536254.114985,139281.137985 536247.564985,139283.562985 536243.806985,139286.536985 536240.387985,139288.028985 536239.104985,139290.590985 536237.405985,139291.970985 536236.766985,139293.946985 536236.266985,139296.987985 536236.296985,139298.506985 536236.584985,139300.735985 536237.364985,139303.320985 536238.858985,139307.150985 536241.609985,139313.057985 536246.684985,139329.186985 536261.910985,139337.424985 536269.251985,139339.812985 536271.063985,139343.434985 536273.282985,139347.491985 536275.193985,139351.619985 536276.124985,139357.829985 536276.737985,139419.726985 536276.633985,139424.622985 536276.791985,139429.727985 536277.342985,139433.511985 536278.012985,139437.399985 536278.909985,139445.643985 536281.428985,139458.811985 536286.331985,139474.140985 536292.642985,139478.189985 536294.606985,139481.873985 536296.640985,139485.725985 536299.011985,139489.666985 536301.691985,139493.379985 536304.574985,139499.949985 536310.724985,139508.143985 536318.870985,139512.767985 536324.433985,139517.950985 536331.394985,139520.965985 536336.046985,139523.329985 536340.050985,139532.860985 536331.971985,139544.945985 536324.366985,139558.648985 536313.804985,139563.238985 536309.939985,139568.581985 536305.092985,139571.546985 536301.976985,139574.386985 536298.469985,139577.138985 536294.067985,139578.415985 536291.338985,139579.359985 536288.658985,139580.306985 536284.245985)) + MULTIPOLYGON(((139209.864361365 536222.972189994,139210.431297005 536221.517745343,139213.592297005 536214.967745343,139218.119433008 536206.899740567,139220.544433008 536203.141740567,139226.975410525 536194.584567191,139229.949410525 536191.165567191,139237.636669051 536183.52183426,139239.128669051 536182.23883426,139246.578605338 536176.600056987,139249.140605338 536174.901056987,139259.077204942 536169.348056245,139260.457204942 536168.709056245,139273.573099412 536164.058541158,139275.549099412 536163.558541158,139294.686837194 536161.270634297,139297.727837194 536161.300634297,139310.958972088 536162.609730201,139312.477972088 536162.897730201,139323.27902284 536165.79412301,139325.50802284 536166.57412301,139338.265174743 536172.42994117,139340.850174743 536173.92394117,139347.074678732 536177.944173297,139350.904678732 536180.695173297,139356.026133182 536184.722201688,139361.933133182 536189.797201688,139364.542337504 536192.147278345,139374.67174683 536201.709581426,139419.600969378 536201.634090866,139422.146068807 536201.673008262,139427.042068807 536201.831008262,139432.671246054 536202.225065431,139437.776246054 536202.776065431,139442.804190975 536203.491696336,139446.588190975 536204.161696336,139450.37232967 536204.932695061,139454.26032967 536205.829695061,139459.31637517 536207.183617171,139467.56037517 536209.702617171,139471.814386673 536211.143068372,139484.982386673 536216.046068372,139487.364579531 536216.979628547,139502.693579531 536223.290628547,139506.872946853 536225.162479124,139510.921946853 536227.126479124,139514.440572203 536228.949579268,139516.703269686 536230.198853611,139517.606430487 536227.611294244,139519.773402566 536222.110125623,139522.423402566 536216.090125623,139524.975408584 536210.854149756,139527.663408584 536205.843149756,139533.621765 536196.474161606,139536.361765 536192.798161606,139542.136400548 536185.946546017,139545.446400548 536182.464546017,139551.643555573 536176.644709606,139555.432555573 536173.470709606,139561.589895469 536168.829803886,139565.722895469 536166.035803886,139570.653377554 536162.973760946,139585.031377554 536154.797760946,139589.115600527 536152.638951691,139597.337600527 536148.611951691,139600.567941215 536147.123689662,139614.605788305 536141.055518402,139609.780279514 536138.860854268,139599.564476841 536134.670832585,139592.850953429 536132.168961781,139570.478033169 536124.332525032,139567.382442866 536123.171030486,139561.423442866 536120.784030486,139557.028291501 536118.858093707,139550.710291501 536115.845093707,139546.19592971 536113.501132072,139541.83592971 536111.046132072,139537.968651123 536108.712479275,139532.541651123 536105.210479275,139529.922961463 536103.441420152,139517.149119949 536094.414344958,139503.122045358 536084.988196452,139499.083924571 536082.075473624,139492.474924571 536076.966473624,139487.553968081 536072.812973623,139482.478968081 536068.141973623,139478.447490872 536064.13897891,139472.305490872 536057.55997891,139470.085647335 536055.073663495,139465.465647335 536049.661663495,139463.50451461 536047.265910279,139458.56651461 536040.972910279,139455.933024069 536037.404361165,139453.074024069 536033.280361165,139450.769238377 536029.747600218,139448.076238377 536025.354600218,139446.264916956 536022.233764829,139443.705916956 536017.569764829,139442.750176555 536015.770308056,139437.752885533 536006.04483069,139436.660390725 536004.151222451,139436.520633654 536003.934897271,139434.563198932 536001.278060521,139424.473850796 535988.88044492,139423.312028848 535987.415908034,139416.920028848 535979.148908034,139414.858650413 535976.351235667,139410.180650413 535969.684235667,139406.79238699 535964.397716835,139403.44738699 535958.663716836,139399.597759121 535951.114629906,139397.611759121 535946.607629906,139395.049803009 535939.952872795,139394.008803009 535936.810872795,139392.316306585 535930.901562704,139391.608306585 535927.982562704,139390.505453999 535922.573838389,139389.975453999 535919.377838389,139389.065423082 535910.988142787,139388.910423082 535907.996142787,139389.256202186 535895.946929482,139389.897202186 535890.096929482,139392.516075974 535877.044089153,139393.386075974 535874.095089153,139399.495783559 535859.37198736,139400.953783559 535856.70198736,139406.900793906 535847.485029425,139407.836793906 535846.244029425,139416.210843149 535836.886966555,139418.380843149 535834.836966555,139427.069812462 535827.77789636,139428.282449354 535827.062723795,139426.051808198 535825.55757826,139418.280774941 535819.536795955,139417.162774941 535818.546795955,139411.177513878 535812.614403045,139409.146513878 535810.361403045,139403.176776753 535802.672230565,139400.091205427 535810.16305141,139398.155617167 535814.471558711,139396.180617167 535818.521558711,139394.033365481 535822.60147794,139391.707365481 535826.70947794,139388.991944659 535831.139890635,139387.329944659 535833.651890635,139384.144194408 535838.104753743,139382.348194408 535840.430753743,139374.047542467 535849.526809658,139371.847542467 535851.571809658,139360.69611695 535860.137816064,139356.94611695 535862.494816064,139349.248784927 535866.725381087,139342.089784927 535870.130381087,139340.396090461 535870.828023817,139335.672157912 535874.720493871,139335.049995174 535875.273815283,139335.005800216 535875.323985896,139334.326249791 535876.553194682,139334.238154548 535876.729339594,139334.183755187 535876.859797612,139328.186511935 535893.418726482,139325.305023776 535900.288339493,139322.084023776 535907.010339493,139320.252874876 535910.583153757,139314.492874876 535921.117153757,139311.191451761 535926.587568066,139302.946140159 535939.020099926,139291.820459021 535964.529766174,139289.905363157 535969.185636576,139289.938432344 535969.530715635,139290.240432344 535974.828715635,139290.307297712 535981.960567098,139290.179297712 535985.310567098,139289.543408393 535992.601274487,139288.933408393 535997.065274487,139287.96379567 536002.604046235,139286.92279567 536007.469046235,139286.143478057 536010.74898812,139285.004478057 536015.10498812,139284.366950036 536017.394324958,139282.960950036 536022.150324958,139281.078410585 536027.708476865,139279.611410585 536031.539476865,139275.701425462 536040.099273923,139274.998425462 536041.413273923,139271.757242369 536046.897900362,139271.671203889 536047.030309693,139270.245880296 536050.154118467,139266.002269543 536058.140947471,139263.129272395 536062.840364862,139262.840581028 536063.678077464,139258.193605811 536080.684197504,139256.506257371 536086.057099241,139255.356257371 536089.289099241,139253.119457724 536094.859008386,139250.675457724 536100.304008386,139249.041831343 536103.711135421,139247.769831343 536106.201135421,139243.402934482 536113.655719233,139241.735934482 536116.158719233,139233.753605977 536125.716781793,139233.383126401 536129.39993291,139232.884126401 536132.76793291,139230.813455626 536142.361950041,139228.262455626 536151.298950041,139227.011345979 536155.174874632,139226.851289519 536155.958884527,139226.018301756 536159.579180725,139225.047552546 536163.366393004,139224.522159551 536166.552819283,139223.993843355 536169.143217853,139223.625986791 536171.615014223,139222.15973211 536178.94002488,139220.82573211 536184.22202488,139219.732210239 536188.108133427,139218.841210239 536190.976133427,139216.929413838 536196.389342743,139215.723413838 536199.428342743,139212.136823127 536207.154743435,139211.740680059 536207.894905485,139208.732925569 536216.192904714,139207.594144186 536219.139432547,139206.556147112 536221.665638259,139209.864361365 536222.972189994)),((139393.648507081 535668.974736443,139397.187012699 535662.377434254,139398.872012699 535659.858434254,139407.456267504 535649.256643269,139410.047267504 535646.593643269,139410.699960735 535646.038230011,139410.368589237 535645.800166734,139408.578589237 535644.268166734,139397.3959599 535632.354541231,139395.5549599 535629.905541231,139394.594734167 535628.386189625,139390.928598216 535636.814441846,139383.694768091 535654.435384807,139385.84169416 535657.576506395,139388.732034058 535661.495027351,139392.199486509 535666.626750626,139393.648507081 535668.974736443)),((139548.724566362 535611.506800266,139554.628778365 535611.137288574,139552.459746567 535610.579054857,139549.764858782 535609.652657427,139548.724566362 535611.506800266)),((139593.98450066 535612.829328195,139594.118510319 535612.850765761,139596.104127044 535613.235551013,139596.587685007 535612.311565728,139593.98450066 535612.829328195)),((139673.793292709 535540.214143275,139675.386311294 535539.763978944,139678.865311294 535539.132978944,139694.228840552 535537.95509534,139697.259840552 535538.03509534,139702.578710636 535538.674149893,139703.940626818 535536.15791517,139708.219930733 535529.188390852,139711.366930733 535524.639390852,139714.415105893 535520.539122747,139716.288105893 535518.191122747,139721.898840694 535511.915115248,139723.960840694 535509.854115248,139730.603961741 535503.95788024,139732.986961741 535502.08288024,139742.32994248 535495.806278369,139745.55794248 535493.973278369,139757.643371885 535488.463159874,139760.512371885 535487.451159874,139769.898169371 535484.812425618,139771.383169371 535484.497425618,139780.369942617 535483.153836792,139782.414942617 535482.973836792,139791.720962751 535482.734686659,139793.230962751 535482.789686659,139804.33595446 535484.027071477,139807.34095446 535484.591071477,139819.768277813 535488.052351736,139821.373277813 535488.652351737,139830.347113557 535492.696619516,139831.651113557 535493.390619516,139839.770416859 535498.399075464,139842.236416859 535500.146075465,139848.23313285 535504.870517295,139851.70613285 535507.905517294,139860.17101037 535516.607696199,139863.36701037 535520.475696199,139866.175448217 535524.094239862,139869.322448217 535528.415239862,139871.088962473 535530.948783811,139876.518962473 535539.088783811,139877.61079229 535540.773960122,139886.91079229 535555.557960122,139888.103132131 535557.519362678,139893.470132131 535566.660362678,139894.992049347 535569.380385515,139899.328049347 535577.522385515,139900.477386794 535579.771023682,139901.31516658 535581.480533089,139900.983503197 535562.558365808,139900.97647671 535560.423170544,139901.10447671 535548.728170544,139901.231410096 535545.110912013,139902.136410096 535529.843912013,139902.176129275 535529.218157315,139905.106129275 535485.921157315,139905.536580389 535481.504616269,139906.632580389 535472.903616269,139907.727569766 535466.521787328,139909.166569766 535459.871787328,139910.517916095 535454.570342114,139912.478916095 535447.903342114,139913.722873363 535444.05972708,139915.809873363 535438.15872708,139917.379333372 535434.099735655,139918.541333372 535431.335735655,139920.880565071 535426.301581819,139923.435565071 535421.296581819,139928.281284908 535413.127148888,139929.956284908 535410.672148888,139938.042764184 535400.756522259,139940.090764184 535398.642522259,139948.768873328 535390.970285527,139951.196873328 535389.137285526,139961.770241772 535382.461156606,139964.409241772 535381.088156606,139976.45795545 535376.097659227,139979.338955449 535375.188659227,139988.77191981 535372.871964344,139993.85991981 535371.966964344,140003.078198775 535370.910277303,140007.592198775 535370.674277303,140017.949911065 535370.849153224,140022.206911065 535371.216153224,140031.233391578 535372.551462914,140037.320391578 535373.834462914,140045.801435499 535376.14861572,140048.644435499 535377.10661572,140054.954143977 535379.555038384,140060.685143977 535382.082038384,140066.886939636 535385.166167283,140072.489939636 535388.283167283,140079.526078487 535392.725680129,140084.115078487 535395.992680129,140089.15466377 535399.91414691,140094.05166377 535404.07114691,140098.726512732 535408.516819305,140103.01981089 535402.9389708,140108.999803458 535396.075505027,140111.805803459 535393.224505026,140114.807696967 535390.339232673,140118.141696967 535387.308232673,140123.301512613 535383.022699546,140127.592512613 535379.771699546,140133.352921212 535375.815849286,140137.178921212 535373.442849286,140142.722507012 535370.322038166,140146.310507012 535368.498038166,140152.630459311 535365.644813416,140156.815459311 535363.983813416,140164.772803628 535361.330259624,140168.660803628 535360.271259624,140175.448108298 535358.756711754,140179.890108298 535357.979711754,140186.892449945 535357.092035099,140190.838930916 535356.779522799,140190.884425591 535356.224874951,140191.384904544 535347.063467311,140191.846641347 535331.808221288,140192.00941674 535310.471395717,140191.991024918 535301.212427353,140191.541104092 535284.786536347,140191.513874886 535283.098336958,140191.470874886 535274.271336958,140191.512545689 535272.093904653,140185.720426649 535279.58800745,140184.420426649 535280.97500745,140171.647989504 535291.857369263,140156.775783199 535299.627725036,140140.548240181 535303.897127438,140139.221240181 535304.091127438,140122.971661697 535304.685309063,140118.859796961 535304.388466569,140117.960082912 535304.382303265,140112.418874501 535305.549512423,140097.46578745 535307.158279406,140093.16578745 535307.187279406,140083.072252838 535306.573629867,140079.573252838 535306.122629867,140066.212696596 535303.140898521,140064.286696596 535302.521898521,140056.410017786 535299.491650564,140053.664017786 535298.253650564,140045.91041656 535293.998970293,140043.207364236 535294.944090043,140040.303364236 535295.718090043,140034.856746414 535296.954548187,140031.173746414 535297.647548187,140026.999015077 535298.311851479,140022.534015077 535298.893851479,140018.928973161 535299.275404514,140014.668973161 535299.622404514,140010.563970137 535299.843739094,140006.255970137 535299.957739094,139999.458235513 535299.829344348,139995.913235513 535299.601344348,139981.836229486 535297.337934244,139972.730229486 535294.967934244,139964.610449657 535292.353341535,139953.632449657 535288.115341535,139948.432359296 535285.878890735,139944.380359296 535283.951890735,139936.727452829 535279.749709235,139932.54725805 535277.126685853,139926.439384794 535273.709175962,139921.007929164 535270.359035674,139918.405929164 535268.597035674,139909.748922084 535261.754373676,139907.549922084 535259.736373676,139902.684028655 535254.839806614,139898.637028655 535250.373806614,139896.691574038 535248.139807316,139895.458387161 535246.665927017,139891.433330773 535242.638342725,139889.65545913 535240.797588631,139886.50245913 535237.419588631,139883.656864185 535233.923766068,139882.478064239 535242.340513731,139880.651880309 535251.332766992,139879.721880309 535254.806766992,139876.779680676 535263.586783247,139876.060577869 535265.360796302,139874.79020805 535269.248934921,139871.822763689 535276.889159193,139870.931763689 535278.857159193,139864.05623411 535290.925295228,139862.33123411 535293.390295228,139858.115934725 535298.859485986,139855.753934725 535301.648485986,139850.866768772 535306.889426252,139846.815768772 535310.837426252,139838.591137687 535317.775172015,139835.105137687 535320.311172015,139824.424394308 535326.794235263,139823.089394308 535327.459235263,139813.208246239 535331.530645088,139810.500246239 535332.426645088,139803.02729072 535334.477546416,139801.54729072 535334.802546416,139792.31873936 535336.233801626,139790.32573936 535336.416801626,139772.739552331 535335.485350733,139772.678742189 535336.301651896,139771.875901206 535342.997515306,139770.759901206 535349.728515306,139769.418622067 535356.093631949,139768.022622067 535361.536631949,139766.860140665 535365.591636888,139763.692140665 535375.573636888,139761.184890728 535382.329329996,139759.594890728 535386.054329996,139756.15272478 535393.079269016,139753.88572478 535397.153269016,139748.450918814 535405.548751581,139746.657918814 535407.950751581,139742.330206559 535413.229145,139738.751206559 535417.210145,139734.43001005 535421.6352482,139722.41001005 535432.9692482,139716.367341855 535437.98096576,139714.053470745 535440.271929189,139711.191470745 535442.955929189,139707.861562168 535445.898268999,139705.549562168 535447.822268999,139696.847652128 535454.068662605,139693.759652128 535455.966662605,139685.055743243 535460.55858256,139677.244733764 535464.044948981,139679.161996055 535473.022424303,139679.281976452 535474.222588568,139680.352720534 535480.998379059,139680.927760864 535485.527580863,139681.460760864 535491.071580863,139681.792723809 535499.605092802,139681.765723809 535501.098092802,139681.041311863 535510.228084524,139680.578311863 535513.507084524,139679.086384778 535521.168254061,139677.593384778 535527.155254061,139676.370083997 535531.49952852,139675.069518067 535535.63677325,139674.076936689 535539.365414627,139673.793292709 535540.214143275)),((140348.349868583 535048.405807409,140349.040549268 535048.491083095,140353.494549268 535049.151083095,140353.949912521 535049.230533165,140353.367156934 535038.462150023,140353.432156934 535035.425150023,140354.487097864 535025.675012826,140353.046982524 535024.921582566,140352.820628165 535026.219392737,140352.568155198 535027.591439053,140349.704155198 535042.381439053,140349.089465707 535045.253294723,140348.349868583 535048.405807409)),((140470.06810426 535126.311451101,140472.345219058 535130.026794286,140473.794219058 535132.659794286,140476.807853807 535138.779309401,140477.871853807 535141.213309401,140477.93607927 535141.386279119,140478.88796169 535137.252852428,140479.90027765 535133.341840454,140482.491412105 535124.338178506,140481.861863133 535122.666316784,140481.426968742 535122.285601366,140481.294236525 535122.340592859,140481.273605186 535122.290795276,140479.748404943 535122.995617904,140476.265404943 535124.407617904,140470.06810426 535126.311451101))) + + #51 Polygon - gid: 2551 + + POLYGON((167603.370985 536610.679985,167627.312985 536610.283985,167671.695985 536624.130985,167685.005985 536588.552985,167710.046985 536546.816985,167709.176985 536506.215985,167690.358985 536469.760985,167672.327985 536431.817985,167630.130985 536412.716985,167595.078985 536402.756985,167542.703985 536389.811985,167506.924985 536432.458985,167469.539985 536465.608985,167446.234985 536432.913985,167420.629985 536414.438985,167396.383985 536428.615985,167396.997985 536430.166985,167397.062985 536435.715985,167395.979985 536476.018985,167395.650985 536485.335985,167393.612985 536527.161985,167393.405985 536534.767985,167393.625985 536539.256985,167394.056985 536541.856985,167395.254985 536546.202985,167396.337985 536548.977985,167398.387985 536552.990985,167400.219985 536555.799985,167403.048985 536559.308985,167405.697985 536561.920985,167409.163985 536564.807985,167412.098985 536566.934985,167418.852985 536571.198985,167422.776985 536573.403985,167443.578985 536583.279985,167447.746985 536585.454985,167451.828985 536587.817985,167455.912985 536590.371985,167464.088985 536595.878985,167471.759985 536601.610985,167474.551985 536604.070985,167511.324985 536596.279985,167534.715985 536616.533985,167548.609985 536632.724985,167575.399985 536624.196985,167603.370985 536610.679985)) + POLYGON((167518.99487489 536521.948060763,167523.287951439 536522.240215727,167536.666844921 536525.691103894,167549.185676584 536531.537664739,167560.419577491 536539.581475424,167566.761745414 536545.073086262,167570.737869345 536543.151622347,167586.028245886 536537.712667658,167602.130656777 536535.690241795,167626.072656777 536535.294241795,167629.371484375 536535.503008799,167634.600578813 536526.787642581,167634.56625147 536525.185660445,167623.714310522 536504.162836168,167622.618760385 536501.952008114,167616.376875282 536488.817082348,167604.275130745 536483.339076272,167575.825658869 536475.255179779,167570.105583803 536473.841406572,167564.382352842 536480.663247059,167556.684223921 536488.575098034,167519.299223921 536521.725098034,167518.99487489 536521.948060763)) + + #52 Polygon - gid: 2552 + + POLYGON((139328.097985 537673.993985,139333.694985 537673.778985,139339.685985 537674.116985,139343.484985 537674.560985,139347.201985 537675.198985,139349.266985 537662.315985,139350.795985 537650.307985,139350.815985 537648.813985,139350.170985 537642.977985,139349.497985 537639.338985,139348.573985 537636.478985,139347.401985 537633.734985,139336.285985 537613.547985,139333.452985 537607.471985,139331.129985 537601.716985,139328.904985 537595.513985,139326.508985 537587.806985,139319.008985 537559.965985,139317.097985 537554.004985,139314.973985 537548.226985,139312.575985 537542.468985,139306.136985 537528.279985,139299.926985 537514.031985,139288.894985 537489.864985,139279.105985 537467.759985,139274.759985 537456.114985,139264.851985 537426.033985,139261.266985 537416.840985,139258.190985 537410.222985,139246.959985 537387.429985,139229.076985 537347.488985,139217.864985 537323.218985,139213.134985 537312.367985,139200.100985 537278.784985,139189.030985 537249.549985,139177.539985 537217.909985,139166.856985 537192.155985,139162.415985 537180.965985,139158.622985 537170.454985,139150.636985 537146.582985,139135.766985 537108.920985,139128.573985 537089.138985,139126.052985 537082.845985,139123.397985 537077.227985,139120.597985 537072.327985,139117.710985 537068.104985,139114.766985 537064.522985,139112.716985 537062.323985,139107.519985 537058.085985,139104.012985 537055.863985,139101.294985 537054.558985,139100.275085 537053.707685,139098.476985 537053.526985,139095.233985 537052.734985,139092.248985 537052.457985,139089.268985 537052.711985,139087.784985 537053.032985,139084.678985 537054.199985,139080.094985 537057.047985,139075.290985 537060.908985,139069.415985 537066.744985,139061.822985 537075.205985,139058.488985 537078.691985,139054.032985 537082.720985,139050.724985 537085.113985,139048.133985 537086.645985,139045.410985 537087.957985,139042.557985 537088.968985,139040.380985 537089.363985,139037.334985 537089.294985,139035.878985 537088.972985,139033.462985 537087.869985,139030.014985 537085.492985,139025.487985 537081.543985,139018.084985 537074.336985,139013.673985 537069.604985,139009.409985 537064.385985,139006.208985 537059.858985,139002.414985 537053.912985,138998.748985 537047.430985,138995.999985 537041.968985,138993.942985 537037.449985,138990.339985 537028.148985,138987.242985 537017.910985,138981.534985 536995.496985,138978.988985 536986.537985,138977.585985 536982.260985,138976.022985 536978.202985,138973.066985 536972.030985,138970.402985 536968.255985,138968.487985 536965.910985,138966.359985 536963.834985,138963.995985 536962.186985,138961.235985 536960.885985,138958.980985 536960.276985,138955.951985 536960.106985,138952.749985 536960.533985,138949.931985 536961.489985,138935.372985 536968.382985,138907.537985 536979.752985,138901.926985 536982.393985,138896.463985 536985.384985,138891.293985 536988.728985,138886.976985 536992.219985,138884.882985 536994.338985,138883.500985 536996.130985,138882.011985 536998.803985,138881.564985 537000.190985,138881.413985 537001.324985,138881.475985 537002.858985,138881.775985 537004.391985,138882.629985 537006.611985,138883.396985 537007.887985,138887.677985 537013.078985,138890.845985 537016.283985,138895.056985 537020.219985,138905.804985 537029.443985,138913.316985 537036.186985,138920.975985 537043.717985,138932.473985 537056.309985,138954.679985 537081.634985,138960.113985 537088.091985,138965.986985 537095.578985,138977.422985 537111.070985,138982.004985 537117.556985,138986.599985 537124.630985,138993.679985 537137.096985,139005.600985 537160.149985,139020.608985 537187.869985,139033.486985 537210.770985,139044.059985 537228.558985,139053.006985 537244.088985,139060.092985 537255.519985,139080.707985 537286.417985,139090.120985 537300.972985,139103.078985 537322.123985,139116.233985 537344.359985,139119.222985 537349.562985,139122.383985 537355.881985,139125.129985 537362.380985,139130.126985 537375.644985,139131.858985 537379.337985,139134.566985 537383.961985,139137.705985 537388.053985,139140.085985 537390.525985,139142.627985 537392.724985,139146.633985 537395.533985,139157.818985 537402.034985,139160.679985 537403.920985,139163.066985 537405.758985,139166.396985 537408.850985,139168.416985 537411.072985,139169.280985 537412.268985,139170.702985 537414.781985,139171.293985 537416.228985,139171.679985 537417.695985,139171.789985 537419.141985,139171.407985 537421.760985,139170.997985 537423.212985,139169.908985 537426.097985,139168.082985 537430.080985,139164.605985 537435.318985,139160.534985 537442.262985,139157.693985 537447.550985,139155.404985 537452.605985,139153.763985 537456.816985,139152.517985 537461.396985,139151.670985 537466.320985,139151.198985 537471.522985,139151.025985 537479.913985,139151.322985 537488.108985,139151.969985 537496.769985,139153.000985 537505.180985,139154.541985 537513.906985,139156.515985 537522.716985,139158.932985 537531.649985,139161.825985 537540.914985,139164.822985 537549.648985,139168.521985 537559.663985,139171.990985 537568.494985,139174.560985 537574.436985,139178.737985 537582.989985,139191.871985 537607.370985,139200.694985 537624.740985,139204.472985 537633.189985,139210.692985 537649.126985,139214.176985 537657.443985,139221.014985 537672.431985,139229.336985 537691.644985,139232.848985 537698.786985,139235.354985 537703.365985,139240.767985 537712.073985,139247.162985 537721.413985,139250.052985 537724.904985,139254.219985 537729.231985,139256.988985 537731.610985,139259.413985 537733.383985,139264.102985 537736.538985,139269.901985 537740.072985,139273.000985 537741.589985,139275.922985 537742.341985,139277.410985 537742.524985,139279.635985 537727.507985,139281.333985 537721.724985,139283.443985 537716.470985,139285.539985 537712.482985,139287.579985 537709.020985,139295.083985 537697.805985,139298.702985 537692.885985,139303.840985 537687.353985,139308.168985 537683.551985,139313.904985 537679.507985,139316.481985 537677.948985,139319.149985 537676.579985,139323.819985 537674.867985,139328.097985 537673.993985)) + POLYGON( EMPTY) + + #53 Polygon - gid: 2553 + + POLYGON((159078.115985 538635.625985,159073.785985 538635.186985,159069.280985 538635.348985,159064.698985 538635.981985,159060.140985 538636.953985,159053.718985 538638.713985,159049.352985 538640.261985,159045.098985 538642.416985,159041.557985 538645.223985,159040.211985 538646.934985,159038.272985 538650.769985,159036.869985 538655.096985,159035.937985 538659.695985,159035.410985 538664.343985,159035.238985 538667.833985,159035.436985 538672.256985,159036.130985 538676.707985,159037.159985 538681.153985,159040.569985 538692.905985,159043.786985 538701.322985,159048.117985 538711.817985,159054.692985 538726.630985,159055.753985 538730.994985,159058.420985 538739.629985,159061.765985 538747.994985,159063.932985 538752.384985,159068.550985 538760.122985,159075.501985 538770.881985,159083.125985 538782.032985,159087.563985 538789.479985,159095.628985 538805.198985,159112.434985 538839.730985,159114.544985 538843.709985,159116.844985 538847.550985,159120.775985 538852.888985,159123.785985 538856.247985,159126.988985 538859.454985,159136.194985 538868.100985,159140.257985 538871.235985,159142.189985 538871.273985,159143.808985 538868.428985,159144.961985 538864.099985,159145.681985 538858.985985,159146.004985 538853.787985,159146.011985 538850.486985,159145.553985 538846.088985,159144.577985 538841.705985,159142.124985 538832.929985,159141.174985 538828.511985,159140.509985 538823.611985,159139.715985 538814.637985,159139.301985 538806.178985,159139.157985 538797.168985,159139.285985 538792.663985,159139.602985 538788.179985,159140.747985 538778.977985,159143.071985 538765.663985,159144.541985 538759.111985,159147.121985 538750.372985,159148.229985 538746.003985,159148.933985 538741.616985,159149.054985 538739.850985,159148.987985 538735.412985,159148.521985 538730.945985,159146.822985 538722.006985,159144.223985 538711.122985,159142.868985 538706.798985,159141.212985 538702.601985,159140.035985 538700.141985,159137.864985 538696.224985,159135.480985 538692.403985,159132.936985 538688.667985,159128.117985 538682.115985,159125.304985 538678.613985,159114.153985 538665.988985,159111.392985 538662.402985,159106.122985 538654.963985,159103.346985 538651.417985,159099.169985 538647.188985,159095.641985 538644.364985,159091.850985 538641.679985,159087.859985 538639.280985,159083.733985 538637.315985,159079.537985 538635.934985,159078.115985 538635.625985)) + POLYGON( EMPTY) + + #54 Polygon - gid: 2554 + + POLYGON((159293.559985 538980.522985,159275.390985 538925.668985,159258.421985 538914.962985,159239.576985 538917.108985,159216.488985 538918.359985,159211.120985 538917.908985,159109.160985 538909.360985,159070.236985 538904.177985,158994.276985 538919.645985,158907.657985 538925.081985,158879.874985 538905.635985,158856.684985 538889.787985,158848.906985 538928.927985,158849.561985 538935.309985,158856.845985 538954.454985,158919.290985 538985.661985,158941.977985 538986.370985,158963.373985 538974.307985,159015.169985 538975.497985,159047.536985 538978.284985,159103.429985 539036.779985,159124.581985 539056.686985,159201.858985 539071.122985,159248.370985 539062.766985,159298.256985 538995.795985,159293.559985 538980.522985)) + POLYGON((159178.260710927 538990.41719613,159202.122936517 538994.874862559,159205.932369085 538994.190488235,159206.951084137 538992.82288278,159204.848542186 538992.646234788,159178.260710927 538990.41719613)) + + #55 Polygon - gid: 2555 + + POLYGON((157894.850985 539376.542985,157892.525985 539323.248985,157914.055985 539274.176985,157921.162985 539246.664985,157923.305985 539204.844985,157931.860985 539190.504985,157926.415985 539170.883985,157884.235985 539120.656985,157872.168985 539101.762985,157863.337985 539018.735985,157870.107985 538987.808985,157855.347985 538912.078985,157845.930985 538889.356985,157836.700985 538868.127985,157832.085985 538857.051985,157829.933985 538849.014985,157827.652985 538828.317985,157824.558985 538808.198985,157824.169985 538803.715985,157824.279985 538799.462985,157824.905985 538795.026985,157826.159985 538791.593985,157828.431985 538787.680985,157830.534985 538785.180985,157833.976985 538782.242985,157836.893985 538780.476985,157841.164985 538778.627985,157845.477985 538777.369985,157850.291985 538776.294985,157855.209985 538775.547985,157860.070985 538775.108985,157864.887985 538774.919985,157869.668985 538774.988985,157874.460985 538775.379985,157879.234985 538776.127985,157883.962985 538777.336985,157888.619985 538779.057985,157893.193985 538781.401985,157897.645985 538784.384985,157901.081985 538787.293985,157905.846985 538792.271985,157913.197985 538801.228985,157916.806985 538805.366985,157919.960985 538808.577985,157924.360985 538812.466985,157928.241985 538815.462985,157932.185985 538818.104985,157936.120985 538820.297985,157940.258985 538822.065985,157944.049985 538823.115985,157948.470985 538823.935985,157951.507985 538824.056985,157957.445985 538823.609985,157962.089985 538822.710985,157966.395985 538821.399985,157967.516985 538821.197985,157978.098985 538820.149985,157983.664985 538819.095985,157987.936985 538817.671985,157993.610985 538815.038985,158009.406985 538806.036985,158013.444985 538804.049985,158021.216985 538800.892985,158025.239985 538799.556985,158029.581985 538798.376985,158033.885985 538797.537985,158038.348985 538796.937985,158047.069985 538796.476985,158055.493985 538796.531985,158059.440985 538796.795985,158063.897985 538797.395985,158067.999985 538798.407985,158072.465985 538799.848985,158076.903985 538801.904985,158090.543985 538808.987985,158095.284985 538811.078985,158100.145985 538812.821985,158105.063985 538814.186985,158109.978985 538815.246985,158114.795985 538816.011985,158119.457985 538816.484985,158124.006985 538816.661985,158128.505985 538816.527985,158146.349985 538815.322985,158150.970985 538815.210985,158155.747985 538815.325985,158160.700985 538815.703985,158188.319985 538818.681985,158198.973985 538820.038985,158224.467985 538824.125985,158249.631985 538827.579985,158282.513985 538833.577985,158297.911985 538835.739985,158309.261985 538836.962985,158322.577985 538838.114985,158350.431985 538840.147985,158373.537985 538841.500985,158393.243985 538842.897985,158403.919985 538843.057985,158417.449985 538842.716985,158446.769985 538842.727985,158454.328985 538842.431985,158477.319985 538840.930985,158485.069985 538839.962985,158487.523985 538839.435985,158491.846985 538838.176985,158493.370985 538837.623985,158497.890985 538835.417985,158501.542985 538832.151985,158503.237985 538827.961985,158503.543985 538826.486985,158503.986985 538821.992985,158504.118985 538819.313985,158504.107985 538811.859985,158503.701985 538805.305985,158502.893985 538800.236985,158501.004985 538795.729985,158497.499985 538792.873985,158495.013985 538791.985985,158490.503985 538790.995985,158485.352985 538790.283985,158475.110985 538789.285985,158460.091985 538788.446985,158443.718985 538788.015985,158419.535985 538788.139985,158370.102985 538785.725985,158363.523985 538785.576985,158341.759985 538785.543985,158328.013985 538784.975985,158315.142985 538784.111985,158309.210985 538783.546985,158303.783985 538782.812985,158298.653985 538781.775985,158293.695985 538780.383985,158288.891985 538778.574985,158284.493985 538776.409985,158280.587985 538773.824985,158277.161985 538770.813985,158274.219985 538767.365985,158271.819985 538763.557985,158269.485985 538759.344985,158267.810985 538755.165985,158266.174985 538750.044985,158265.046985 538745.351985,158264.334985 538740.709985,158264.009985 538736.128985,158263.951985 538731.628985,158264.820985 538714.602985,158264.696985 538711.176985,158264.065985 538706.727985,158263.152985 538703.633985,158261.153985 538699.601985,158258.338985 538696.437985,158254.234985 538693.033985,158248.922985 538690.248985,158244.763985 538688.523985,158238.701985 538686.365985,158219.956985 538680.881985,158214.905985 538679.588985,158209.880985 538678.512985,158204.789985 538677.634985,158194.991985 538676.496985,158190.391985 538676.269985,158185.894985 538676.461985,158181.499985 538677.416985,158177.267985 538678.902985,158173.525985 538681.123985,158170.075985 538684.071985,158167.147985 538687.454985,158155.693985 538703.261985,158152.504985 538707.158985,158149.100985 538710.705985,158145.361985 538713.823985,158141.173985 538716.406985,158136.519985 538718.383985,158131.652985 538719.748985,158126.839985 538720.697985,158117.628985 538722.144985,158113.056985 538722.697985,158108.422985 538723.049985,158103.729985 538723.101985,158099.001985 538722.677985,158094.281985 538721.555985,158089.580985 538719.729985,158084.972985 538717.302985,158080.509985 538714.483985,158076.807985 538711.924985,158064.225985 538702.839985,158059.555985 538699.062985,158055.796985 538695.251985,158052.555985 538690.995985,158049.871985 538686.466985,158047.646985 538681.856985,158045.714985 538677.292985,158042.545985 538668.600985,158041.272985 538664.284985,158040.567985 538660.514985,158040.181985 538656.045985,158040.422985 538653.092985,158041.614985 538648.744985,158042.988985 538646.338985,158045.975985 538642.906985,158049.107985 538640.411985,158053.137985 538637.772985,158057.450985 538635.399985,158069.991985 538628.978985,158073.367985 538626.988985,158076.908985 538624.277985,158078.558985 538622.151985,158080.301985 538617.970985,158080.363985 538614.351985,158079.497985 538609.782985,158078.086985 538605.522985,158076.318985 538601.292985,158070.542985 538589.426985,158068.926985 538585.236985,158067.994985 538581.148985,158067.361985 538576.584985,158067.374985 538571.859985,158067.748985 538567.085985,158068.393985 538562.314985,158070.227985 538552.962985,158072.642985 538543.813985,158074.086985 538539.333985,158078.921985 538526.522985,158080.207985 538522.633985,158081.174985 538518.267985,158081.197985 538515.026985,158080.286985 538510.603985,158078.490985 538507.288985,158075.655985 538503.563985,158072.129985 538500.224985,158068.272985 538497.122985,158064.230985 538494.194985,158048.184985 538483.456985,158044.526985 538480.501985,158041.153985 538477.160985,158038.257985 538473.456985,158035.905985 538469.491985,158034.038985 538465.378985,158032.606985 538461.112985,158031.773985 538456.880985,158031.263985 538452.412985,158031.321985 538448.226985,158031.779985 538443.737985,158032.454985 538439.607985,158033.482985 538435.224985,158034.695985 538431.234985,158036.329985 538427.040985,158038.173985 538423.260985,158040.536985 538419.428985,158042.856985 538416.351985,158048.788985 538409.566985,158051.573985 538406.967985,158055.068985 538404.117985,158061.460985 538399.268985,158063.495985 538397.453985,158066.529985 538394.137985,158067.820985 538392.177985,158069.642985 538388.050985,158070.119985 538385.776985,158070.207985 538381.247985,158069.715985 538378.650985,158068.212985 538374.373985,158066.928985 538371.761985,158061.014985 538361.608985,158059.800985 538358.879985,158058.368985 538354.611985,158057.626985 538350.721985,158057.157985 538346.234985,158056.977985 538341.777985,158057.089985 538332.997985,158057.300985 538328.502985,158057.558985 538324.295985,158058.435985 538316.173985,158059.366985 538311.783985,158060.130985 538309.651985,158062.391985 538305.757985,158063.681985 538304.510985,158067.577985 538302.144985,158069.820985 538301.225985,158074.188985 538300.056985,158076.684985 538299.637985,158081.181985 538299.322985,158083.170985 538299.331985,158087.634985 538299.892985,158089.280985 538300.425985,158093.269985 538302.556985,158095.089985 538304.054985,158098.111985 538307.423985,158100.076985 538310.360985,158102.302985 538314.444985,158106.037985 538322.825985,158109.425985 538331.312985,158113.039985 538339.731985,158115.042985 538343.775985,158117.384985 538347.618985,158119.861985 538350.533985,158123.195985 538353.524985,158126.449985 538355.133985,158130.893985 538356.553985,158135.882985 538357.249985,158141.180985 538357.583985,158152.139985 538357.780985,158168.051985 538357.678985,158188.401985 538357.183985,158202.609985 538356.222985,158207.082985 538355.729985,158210.973985 538354.835985,158215.136985 538353.233985,158217.729985 538351.307985,158220.493985 538347.735985,158221.433985 538344.432985,158221.372985 538339.617985,158219.946985 538335.383985,158217.662985 538330.880985,158214.641985 538326.800985,158211.346985 538323.025985,158207.875985 538319.480985,158200.767985 538312.736985,158193.677985 538306.380985,158190.103985 538303.374985,158186.291985 538300.525985,158182.249985 538297.930985,158166.312985 538289.347985,158151.859985 538281.067985,158148.211985 538277.990985,158145.853985 538274.126985,158143.951985 538269.908985,158142.731985 538265.633985,158142.984985 538262.325985,158145.929985 538254.323985,158147.844985 538250.241985,158155.192985 538236.687985,158156.224985 538234.422985,158157.763985 538230.195985,158158.398985 538227.494985,158158.947985 538223.020985,158158.877985 538219.108985,158158.464985 538214.348985,158157.713985 538209.333985,158156.661985 538204.204985,158155.368985 538199.075985,158152.362985 538189.255985,158144.650985 538168.703985,158142.349985 538161.187985,158141.388985 538156.791985,158140.973985 538153.813985,158140.468985 538146.374985,158140.397985 538134.390985,158140.686985 538124.819985,158141.168985 538120.349985,158141.665985 538118.248985,158143.141985 538113.987985,158143.956985 538112.177985,158146.935985 538107.017985,158150.157985 538102.798985,158153.495985 538099.192985,158156.280985 538095.660985,158156.827985 538094.007985,158157.212985 538089.323985,158155.053985 538085.353985,158154.319985 538084.377985,158151.243985 538081.080985,158149.720985 538079.744985,158146.073985 538077.099985,158143.919985 538075.876985,158139.789985 538074.073985,158137.153985 538073.271985,158132.717985 538072.477985,158129.626985 538072.391985,158125.124985 538072.754985,158121.831985 538073.284985,158117.451985 538074.342985,158114.286985 538075.324985,158110.105985 538076.993985,158106.980985 538078.619985,158103.162985 538081.015985,158099.949985 538083.412985,158087.029985 538094.229985,158083.349985 538096.801985,158081.179985 538097.975985,158076.918985 538099.391985,158075.075985 538099.453985,158070.640985 538098.406985,158068.071985 538096.893985,158064.644985 538093.890985,158062.142985 538090.949985,158059.592985 538087.217985,158057.747985 538083.957985,158044.570985 538058.204985,158041.020985 538049.863985,158035.247985 538034.982985,158032.494985 538030.015985,158030.781985 538028.331985,158026.737985 538025.714985,158021.573985 538025.298985,158016.216985 538026.502985,158012.235985 538028.622985,158011.213985 538029.459985,158008.190985 538032.821985,158007.233985 538034.176985,158004.100985 538039.870985,157996.432985 538057.069985,157989.897985 538069.852985,157982.231985 538086.803985,157980.959985 538091.121985,157980.237285 538096.385085,157980.018985 538098.246985,157981.218985 538102.537985,157982.150985 538106.968985,157982.792985 538111.477985,157983.105985 538116.000985,157983.049985 538120.473985,157982.818985 538123.211985,157982.150985 538127.670985,157981.161985 538132.109985,157979.900985 538136.476985,157977.381985 538143.277985,157975.445985 538147.335985,157973.268985 538151.299985,157970.931985 538155.180985,157966.403985 538162.108985,157960.987985 538169.299985,157944.405985 538190.387985,157938.918985 538197.853985,157933.800985 538205.258985,157925.858985 538217.287985,157921.028985 538224.884985,157915.684985 538233.737985,157911.252985 538241.570985,157904.469985 538254.211985,157889.954985 538283.213985,157872.365985 538317.704985,157869.421985 538324.117985,157865.994985 538332.439985,157850.146985 538373.508985,157848.054985 538378.057985,157843.903985 538386.079985,157839.265985 538393.818985,157836.681985 538397.474985,157835.511985 538398.919985,157832.386985 538402.141985,157825.693985 538408.250985,157822.657985 538411.557985,157816.062985 538420.021985,157813.484985 538423.769985,157811.194985 538427.638985,157809.201985 538431.900985,157807.927985 538436.127985,157807.156985 538440.551985,157806.141985 538449.623985,157805.406985 538454.090985,157803.584985 538462.511985,157801.351985 538471.241985,157798.925985 538478.573985,157797.268985 538482.902985,157795.271985 538486.997985,157792.758985 538490.567985,157789.944985 538493.109985,157785.739985 538495.510985,157781.509985 538496.489985,157779.126985 538496.112985,157774.783985 538493.943985,157771.498985 538490.729985,157770.302985 538487.250985,157769.943985 538482.564985,157769.120985 538478.016985,157765.407985 538467.734985,157763.532985 538463.466985,157761.262985 538459.640985,157758.444985 538456.507985,157757.260985 538455.596985,157753.480985 538453.635985,157749.173985 538452.289985,157739.939985 538450.302985,157735.492985 538449.094985,157720.063985 538444.009985,157707.829985 538438.930985,157703.698985 538436.982985,157699.789985 538434.765985,157696.234985 538432.162985,157694.135985 538430.282985,157690.829985 538426.887985,157687.852985 538423.152985,157685.503985 538419.230985,157684.078985 538415.272985,157683.931985 538412.866985,157684.996985 538408.546985,157687.004985 538404.139985,157691.766985 538394.860985,157694.075985 538390.973985,157696.564985 538387.200985,157700.504985 538381.882985,157706.366985 538375.007985,157709.523985 538371.780985,157715.421985 538366.520985,157718.953985 538363.583985,157722.623985 538360.832985,157726.452985 538358.449985,157731.239985 538356.344985,157735.523985 538355.147985,157739.996985 538354.347985,157744.569985 538353.900985,157749.150985 538353.760985,157754.339985 538353.933985,157758.737985 538354.662985,157771.845985 538358.438985,157776.724985 538359.145985,157781.252985 538359.339985,157785.861985 538359.295985,157790.447985 538358.943985,157794.906985 538358.210985,157799.135985 538357.025985,157803.133985 538355.158985,157806.933985 538352.553985,157810.391985 538349.443985,157813.628985 538345.736985,157816.180985 538342.092985,157818.466985 538338.181985,157820.491985 538334.084985,157822.264985 538329.878985,157823.791985 538325.644985,157825.241985 538320.266985,157826.059985 538315.842985,157829.628985 538291.410985,157832.528985 538267.630985,157832.704985 538263.149985,157832.440985 538258.726985,157831.456985 538252.638985,157830.382985 538248.145985,157828.976985 538243.756985,157827.203985 538239.587985,157825.032985 538235.753985,157821.223985 538230.814985,157817.992985 538227.513985,157814.450985 538224.503985,157810.696985 538221.866985,157806.826985 538219.683985,157805.027985 538218.891985,157800.815985 538217.618985,157796.373985 538216.812985,157787.242985 538215.661985,157782.774985 538214.843985,157774.650985 538213.190985,157770.281985 538212.022985,157766.222985 538210.266985,157761.186985 538207.260985,157757.325985 538204.628985,157753.690985 538201.737985,157750.453985 538198.594985,157747.787985 538195.204985,157746.441985 538192.257985,157745.667985 538187.829985,157745.010985 538176.371985,157744.896985 538167.227985,157744.610985 538162.735985,157743.513985 538157.837985,157741.963985 538153.529985,157740.076985 538149.198985,157737.848985 538145.063985,157735.278985 538141.346985,157732.362985 538138.266985,157731.013985 538137.365985,157726.813985 538136.259985,157722.014985 538135.977985,157717.325985 538135.483985,157701.969985 538133.163985,157697.707985 538131.947985,157693.949985 538130.011985,157692.656985 538129.033985,157689.531985 538125.960985,157686.756985 538122.299985,157684.322985 538118.262985,157682.220985 538114.058985,157679.890985 538108.330985,157678.970985 538103.997985,157678.572985 538099.470985,157678.128985 538090.325985,157676.777985 538069.713985,157674.658985 538041.742985,157674.212985 538032.747985,157674.225985 538028.257985,157674.653985 538020.461985,157675.673985 538011.499985,157676.808985 538005.013985,157679.061985 537996.303985,157687.726985 537967.493985,157691.624985 537951.552985,157693.043985 537946.610985,157695.798985 537938.016985,157698.944985 537929.570985,157700.764985 537925.475985,157702.499985 537922.122985,157704.831985 537918.255985,157707.394985 537914.526985,157716.260985 537902.940985,157719.273985 537899.377985,157722.469985 537896.284985,157725.906985 537893.933985,157699.757985 537858.216985,157696.717985 537861.534985,157693.117985 537864.316985,157689.466985 537866.704985,157685.256985 537868.294985,157680.818985 537869.271985,157676.120985 537869.814985,157671.133985 537870.090985,157655.686985 537870.508985,157650.862985 537870.058985,157646.963985 537869.269985,157642.838985 537867.507985,157639.159985 537865.479985,157635.448985 537862.933985,157631.255985 537859.617985,157620.465985 537850.340985,157617.253985 537847.942985,157613.306985 537845.716985,157610.491985 537844.634985,157606.031985 537843.942985,157603.608985 537843.964985,157599.159985 537844.692985,157596.682985 537845.448985,157592.534985 537847.253985,157590.327985 537848.622985,157586.982985 537851.671985,157585.725985 537853.299985,157583.691985 537857.346985,157583.184985 537859.128985,157582.840985 537863.647985,157583.066985 537865.460985,157584.506985 537869.751985,157585.586985 537871.656985,157588.477985 537875.120985,157590.700985 537877.039985,157594.509985 537879.411985,157598.223985 537881.289985,157602.400985 537882.962985,157606.757985 537884.423985,157614.839985 537886.561985,157621.994985 537888.022985,157628.701985 537889.090985,157633.094985 537890.106985,157635.078985 537890.731985,157639.232985 537892.495985,157641.014985 537893.504985,157644.631985 537896.194985,157646.430985 537897.874985,157649.393985 537901.271985,157651.034985 537903.602985,157653.254985 537907.525985,157654.555985 537910.486985,157655.953985 537914.769985,157656.789985 537918.485985,157657.337985 537922.945985,157657.634985 537927.445985,157657.729985 537931.973985,157657.414985 537943.723985,157656.551985 537953.906985,157655.576985 537960.555985,157653.309985 537971.679985,157650.554985 537983.222985,157646.076985 537999.896985,157644.766985 538005.718985,157644.011985 538010.155985,157643.252985 538016.621985,157642.710985 538026.241985,157642.686985 538033.156985,157643.281985 538046.170985,157648.640985 538127.079985,157649.926985 538144.736985,157650.397985 538149.211985,157651.502985 538157.833985,157653.322985 538169.315985,157655.151985 538178.166985,157656.832985 538184.178985,157658.907985 538190.036985,157661.365985 538195.831985,157664.119985 538201.663985,157672.816985 538218.797985,157675.695985 538224.841985,157688.117985 538254.313985,157690.185985 538259.777985,157691.983985 538265.088985,157695.235985 538275.605985,157696.570985 538280.841985,157697.331985 538286.018985,157697.398985 538291.073985,157696.925985 538296.088985,157695.991985 538301.369985,157694.545985 538306.988985,157692.577985 538312.661985,157690.141985 538318.220985,157686.480985 538324.864985,157683.185985 538329.860985,157679.585985 538334.674985,157675.687985 538339.434985,157671.404985 538344.219985,157648.215985 538367.966985,157626.002985 538389.847985,157620.155985 538396.224985,157616.230985 538401.133985,157612.753985 538406.141985,157609.722985 538411.230985,157607.082985 538416.385985,157604.866985 538421.568985,157603.364985 538425.810985,157601.886985 538431.022985,157600.749985 538436.136985,157600.010985 538441.116985,157599.729985 538445.850985,157600.011985 538450.412985,157600.713985 538454.693985,157602.157985 538458.998985,157604.116985 538462.578985,157607.135985 538465.879985,157610.622985 538468.799985,157614.677985 538471.377985,157619.375985 538473.843985,157624.328985 538476.070985,157629.351985 538477.911985,157634.398985 538479.357985,157649.427985 538482.622985,157654.405985 538483.448985,157659.287985 538484.000985,157664.051985 538484.198985,157668.653985 538483.904985,157673.141985 538483.278985,157681.535985 538481.385985,157686.075985 538480.892985,157689.165985 538481.106985,157693.343985 538482.731985,157696.278985 538484.445985,157699.623985 538487.455985,157702.733985 538490.853985,157705.956985 538494.813985,157709.169985 538499.121985,157712.204985 538503.661985,157714.931985 538508.386985,157717.580985 538514.358985,157718.997985 538518.630985,157720.436985 538524.371985,157721.422985 538530.422985,157721.923985 538536.618985,157722.084985 538543.809985,157721.267985 538570.228985,157721.565985 538588.334985,157721.925985 538592.820985,157722.989985 538601.368985,157724.124985 538608.022985,157725.099985 538612.415985,157728.908985 538626.314985,157734.432985 538644.392985,157736.458985 538650.344985,157751.780985 538692.488985,157755.982985 538704.913985,157759.725985 538717.638985,157761.686985 538725.851985,157762.870985 538732.135985,157763.517985 538736.589985,157764.164985 538743.030985,157764.533985 538749.625985,157764.635985 538758.218985,157763.571985 538781.415985,157763.560985 538787.517985,157763.985985 538795.140985,157765.090985 538805.619985,157767.118985 538817.780985,157771.069985 538836.646985,157772.226985 538842.835985,157774.950985 538861.298985,157776.209985 538868.595985,157777.203985 538872.984985,157778.685985 538878.475985,157785.242985 538900.066985,157787.862985 538909.639985,157789.220985 538918.429985,157790.549985 538939.199985,157791.472985 538968.735985,157785.934985 539003.809985,157781.319985 539027.807985,157779.473985 539056.420985,157781.391985 539100.007985,157797.747985 539180.876985,157803.491985 539200.448985,157827.922985 539240.544985,157833.664985 539260.134985,157826.269985 539283.508985,157788.481985 539323.838985,157766.071985 539330.904985,157748.957985 539338.548985,157724.435985 539343.146985,157719.837985 539350.809985,157723.668985 539360.005985,157755.088985 539363.071985,157784.668985 539359.430985,157814.248985 539355.790985,157845.111985 539361.041985,157836.673985 539450.713985,157848.437985 539555.994985,157862.922985 539563.816985,157877.311985 539544.437985,157890.813985 539516.196985,157928.073985 539487.990985,157945.996985 539481.522985,157939.848985 539455.276985,157917.797985 539437.388985,157895.036985 539412.848985,157894.850985 539376.542985)) + POLYGON((157796.315971774 538569.836655627,157796.287068268 538570.771296678,157796.51655414 538584.714488642,157796.554360558 538585.185598617,157797.206645716 538590.425949682,157797.745244705 538593.583515912,157797.919481214 538594.368563076,157800.953785266 538605.440705901,157805.813578304 538621.345003246,157807.209346082 538625.445501674,157822.267151913 538666.862821146,157822.828057742 538668.461636939,157827.030057742 538680.886636939,157827.934857368 538683.749673937,157831.677857368 538696.474673937,157832.675381246 538700.221017627,157833.391842316 538703.221677889,157833.946541803 538703.097809599,157839.029337825 538702.145455139,157843.947337825 538701.398455139,157848.464141048 538700.851977146,157853.325141048 538700.412977146,157857.130544557 538700.166648434,157861.947544557 538699.977648434,157865.97028183 538699.927794516,157870.75128183 538699.996794516,157875.768289503 538700.237406525,157880.560289503 538700.628406525,157886.070498612 538701.283971654,157890.844498612 538702.031971655,157897.815434141 538703.465980419,157902.543434141 538704.674980419,157909.960878759 538706.987077252,157914.617878759 538708.708077252,157922.824771831 538712.311954722,157927.398771831 538714.655954722,157934.941721853 538719.095272138,157939.393721853 538722.078272138,157946.107333833 538727.144285587,157949.543333833 538730.053285587,157955.261447511 538735.432767872,157960.026447511 538740.410767872,157963.822197432 538744.691792236,157964.38101881 538745.372701376,157972.27211218 538740.875637403,157976.293272272 538738.742988021,157980.331272272 538736.755988021,157985.219584274 538734.563822681,157990.250173409 538732.520388571,157988.035045636 538729.232726279,157985.351045636 538724.703726279,157982.327645477 538719.067018718,157980.102645477 538714.457018718,157978.580290662 538711.09380653,157976.648290662 538706.52980653,157975.252041945 538702.982937432,157972.083041945 538694.290937432,157970.609783042 538689.818497764,157969.336783042 538685.502497764,157967.550938196 538678.071203302,157966.845938196 538674.301203302,157965.846189067 538666.968915013,157965.460189067 538662.499915014,157965.430513151 538649.945373854,157965.671513151 538646.992373853,157968.091866643 538633.263478771,157969.283866643 538628.915478771,157976.48675695 538611.552056761,157977.86075695 538609.146056761,157986.415224019 538597.10069128,157989.402224019 538593.66869128,157993.472939651 538589.771346564,157993.073094374 538586.888417902,157992.362268865 538576.378636575,157992.375268865 538571.653636575,157992.604080307 538566.002356522,157992.978080307 538561.228356522,157993.425111595 538557.038007983,157994.070111595 538552.267007984,157994.795861715 538547.881820104,157996.629861715 538538.529820104,157996.70088911 538538.220715465,157991.747339704 538533.78715219,157988.374339704 538530.44615219,157982.069573379 538523.356572488,157979.173573379 538519.652572488,157973.753039013 538511.720700753,157971.401039013 538507.755700753,157967.612586264 538500.492173534,157965.745586264 538496.379173534,157962.93789653 538489.246017041,157961.50589653 538484.980017041,157959.018966831 538475.597583095,157958.185966831 538471.365583095,157957.257852642 538465.386631263,157956.747852642 538460.918631263,157956.271183239 538451.373906524,157956.329183239 538447.187906524,157956.709321548 538440.614465539,157957.167321548 538436.125465539,157957.762055759 538431.640623683,157958.437055759 538427.510623683,157959.436480734 538422.482038756,157960.464480734 538418.099038756,157961.725695513 538413.410049625,157962.938695513 538409.420049625,157964.812534203 538404.008099305,157966.446534203 538399.814099305,157968.923037128 538394.157807255,157970.767037128 538390.377807255,157974.335673585 538383.895136913,157976.698673585 538380.063136913,157980.651617094 538374.276546409,157982.971617094 538371.199546409,157984.778589215 538368.975203492,157984.697241855 538368.664538577,157983.955241855 538364.774538577,157983.033357126 538358.518822859,157982.564357126 538354.031822858,157982.219073597 538349.261461117,157982.039073597 538344.804461117,157981.984086341 538340.821343012,157982.096086341 538332.041343012,157982.172478513 538329.481278912,157982.383478513 538324.986278912,157982.441623023 538323.912132756,157982.699623023 538319.705132756,157982.992422962 538316.244412123,157983.869422962 538308.122412123,157985.067706085 538300.61456184,157985.998706085 538296.22456184,157988.763354436 538286.483246844,157989.527354436 538284.351246844,157995.271580689 538271.99222302,157997.532580689 538268.09822302,158010.265327737 538251.833856796,158011.555327737 538250.586856796,158024.751755253 538240.406092739,158028.647755253 538238.040092738,158039.143177393 538232.744252177,158041.386177393 538231.825252177,158050.431255267 538228.775737375,158054.799255267 538227.606737375,158061.772571758 538226.09190755,158064.268571758 538225.67290755,158071.444323691 538224.821305917,158075.941323691 538224.506305917,158077.197262624 538224.465217282,158078.030556455 538222.470137458,158079.945556455 538218.388137458,158081.751151683 538214.813369151,158081.327734832 538213.430151094,158074.431914697 538195.053219633,158072.936478878 538190.659157777,158070.635478878 538183.143157777,158069.080309692 538177.205309379,158068.266766762 538173.483837246,158057.843915446 538172.447517446,158053.408915446 538171.400517446,158047.613039717 538169.563495325,158045.073072605 538175.572205208,158043.137072605 538179.630205208,158041.184574479 538183.439140725,158039.007574479 538187.403140725,158037.519521703 538189.989370281,158035.182521703 538193.870370281,158033.712367603 538196.212967163,158029.184367603 538203.140967163,158026.31288683 538207.230193777,158020.89688683 538214.421193777,158019.944393919 538215.658822856,158004.117151368 538235.786967285,157999.997829803 538241.392007344,157995.951261752 538247.246801485,157988.803794101 538258.072398108,157984.787642157 538264.38931453,157980.440001128 538271.591722095,157976.942518167 538277.773081309,157971.061487748 538288.733144043,157957.024068947 538316.780902919,157956.768749663 538317.286273616,157939.881981569 538350.400237931,157938.204571002 538354.054189686,157935.664217882 538360.223089209,157920.118047022 538400.509919791,157918.286839608 538404.845229414,157916.194839608 538409.394229414,157914.665582115 538412.525772164,157910.514582115 538420.547772164,157908.235749676 538424.63415538,157903.597749676 538432.37315538,157900.512564652 538437.107048955,157897.928564652 538440.763048955,157894.970653103 538444.670653984,157893.800653103 538446.115653984,157889.349200165 538451.136402565,157886.224200165 538454.358402565,157882.948159266 538457.536638685,157880.416711585 538459.847204034,157880.146892975 538461.800749577,157879.411892975 538466.267749577,157878.710811231 538469.95128323,157876.888811231 538478.37228323,157876.245699025 538481.097480351,157874.012699024 538489.827480351,157872.555499637 538494.801685834,157870.129499637 538502.133685834,157868.970184323 538505.384619853,157867.313184323 538509.713619853,157864.680256862 538515.777297554,157862.683256862 538519.872297554,157856.601177321 538530.16892626,157854.088177321 538533.73892626,157843.033967768 538546.222509593,157840.219967768 538548.764509593,157827.133718922 538558.24060813,157822.928718922 538560.64160813,157802.651122881 538568.57953785,157798.421122881 538569.55853785,157796.315971774 538569.836655627)) + + #56 Polygon - gid: 2556 + + POLYGON((165866.082985 541862.721985,165851.682985 541848.138985,165804.193985 541863.105985,165801.945985 541874.734985,165814.893985 541890.902985,165824.346985 541905.179985,165834.300985 541928.120985,165826.139985 541936.876985,165823.907985 541948.444985,165827.893985 541968.536985,165846.896985 541979.346985,165875.377985 541971.704985,165921.822985 541960.759985,165900.301985 541937.964985,165886.338985 541910.918985,165892.219985 541895.974985,165878.605985 541877.133985,165866.082985 541862.721985)) + POLYGON( EMPTY) + + #57 Polygon - gid: 2557 + + POLYGON((164054.834985 543306.880985,164069.572985 543304.004985,164103.605985 543312.388985,164098.333985 543300.131985,164075.912985 543252.912985,164094.128985 543217.655985,164100.007985 543181.949985,164113.692985 543153.753985,164056.104985 543132.795985,164041.707985 543117.852985,164019.452985 543100.919985,163992.041985 543102.519985,163994.001985 543156.339985,163998.122985 543200.290985,163968.364985 543209.075985,163940.187985 543232.044985,163942.884985 543247.017985,163977.816985 543288.031985,163999.532985 543335.043985,164021.073985 543335.717985,164039.006985 543320.999985,164054.834985 543306.880985)) + POLYGON( EMPTY) + + #58 Polygon - gid: 2558 + + POLYGON((166001.678985 545096.446985,165986.188985 545050.627985,166031.006985 545078.395985,166053.356985 545047.590985,166042.301985 545030.529985,166001.118985 545004.006985,165970.376985 544983.927985,165949.330985 544958.286985,165946.693985 544938.892985,165963.120985 544919.755985,165995.255985 544914.667985,166022.427985 544917.764985,166062.571985 544932.058985,166097.433985 544907.541985,166121.008985 544885.492985,166149.252985 544896.697985,166161.300985 544855.607985,166120.499985 544852.803985,166098.819985 544833.284985,166055.523985 544765.349985,166034.012985 544756.903985,166001.675985 544764.667985,165941.932985 544777.760985,165896.886985 544801.133985,165869.851985 544814.425985,165811.901985 544827.664985,165792.911985 544829.897985,165725.363985 544817.517985,165706.523985 544809.004985,165670.402985 544807.309985,165679.523985 544816.702985,165708.514985 544857.040985,165719.255985 544868.100985,165743.555985 544882.196985,165762.492985 544890.766985,165804.664985 544895.609985,165839.702985 544901.606985,165850.419985 544915.467985,165839.532985 544931.763985,165828.625985 544950.808985,165805.144985 544992.480985,165777.668985 545014.324985,165794.091985 545037.066985,165845.431985 545028.795985,165878.092985 545037.633985,165894.460985 545035.084985,165902.747985 545013.031985,165924.190985 544999.320985,165937.750985 545007.789985,165924.471985 545029.942985,165905.294985 545049.089985,165910.679985 545063.023985,165933.681985 545062.029985,165942.031985 545072.420985,165942.314985 545083.029985,165940.263985 545106.979985,165926.679985 545138.892985,165924.557985 545160.165985,165927.736985 545178.652985,165939.544985 545184.712985,165957.986985 545197.293985,166012.773985 545218.448985,166021.131985 545230.145985,166042.780985 545212.268985,166042.259985 545193.319985,165989.913985 545147.241985,166007.501985 545109.760985,166001.678985 545096.446985)) + POLYGON((166006.280209145 544840.438913134,166015.082113057 544841.442133229,166013.442395777 544838.869281385,166006.280209145 544840.438913134)) + + #59 Polygon - gid: 2559 + + POLYGON((165400.049985 545327.155985,165416.553985 545307.426985,165440.890985 545317.388985,165451.763985 545309.292985,165455.551985 545256.760985,165447.188985 545219.754985,165398.556985 545171.589985,165389.391985 545144.568985,165415.765985 545137.758985,165442.139985 545130.948985,165489.105985 545131.514985,165494.821985 545142.545985,165481.339985 545161.579985,165465.034985 545177.852985,165498.516985 545230.195985,165501.015485 545233.148485,165500.118985 545227.637985,165495.059985 545208.332985,165494.628985 545189.451985,165502.564985 545178.421985,165543.025985 545176.478985,165553.648985 545165.414985,165533.901985 545125.965985,165527.694985 545101.709985,165538.434985 545096.018985,165543.367985 545074.397985,165455.769985 545021.301985,165446.998985 544999.756985,165456.894985 544967.294985,165470.818985 544959.256985,165498.705985 544959.917985,165512.415985 544957.533985,165543.312985 544958.262985,165559.703985 544955.955985,165576.629985 544937.412985,165585.025985 544918.665985,165601.227985 544929.893985,165617.565985 544930.296985,165631.216985 544927.924985,165645.767985 544866.148985,165647.031985 544810.287985,165637.518985 544792.335985,165631.176985 544780.367985,165623.202985 544753.101985,165617.222985 544732.652985,165603.753985 544721.524985,165569.450985 544664.526985,165591.777985 544638.643985,165605.444985 544628.162985,165630.409985 544619.262985,165676.081985 544636.350985,165692.189985 544644.760985,165703.053985 544639.627985,165714.273985 544611.021985,165711.822985 544589.522985,165717.739985 544537.900985,165709.916985 544513.571985,165688.731985 544478.238985,165664.676985 544458.963985,165649.007985 544415.726985,165633.175985 544388.605985,165620.914985 544351.710985,165616.066985 544331.517985,165621.967985 544306.302985,165608.605985 544308.702985,165557.297985 544334.741985,165548.928985 544345.515985,165535.686985 544374.908985,165530.527985 544420.499985,165516.300985 544469.034985,165507.960985 544482.428985,165470.557985 544508.864985,165473.122985 544522.557985,165487.876985 544573.189985,165495.818985 544598.017985,165498.986985 544643.158985,165497.702985 544705.431985,165497.357985 544732.783985,165492.488985 544763.520985,165489.441985 544787.979985,165475.893985 544776.771985,165461.065985 544768.463985,165445.447985 544782.600985,165426.917985 544783.943985,165387.584985 544770.301985,165336.710985 544775.354985,165307.761985 544818.243985,165296.603985 544828.963985,165272.205985 544863.745985,165246.740985 544798.278985,165233.268985 544781.600985,165225.202985 544770.505985,165186.730985 544815.540985,165165.320985 544803.562985,165100.432985 544802.416985,165068.731985 544809.183985,165045.724985 544775.915985,165029.079985 544781.054985,165025.965985 544805.761985,164992.296985 544823.851985,164975.557985 544831.778985,164939.477985 544836.522985,164925.475985 544847.265985,164976.638985 544865.093985,164981.929985 544881.753985,164984.490985 544917.716985,164982.509985 544967.675985,164975.129985 545022.482985,165012.349985 545052.423985,165001.279985 545060.555985,164980.136985 545083.879985,165029.438985 545065.380985,165085.830985 545066.792985,165152.434985 545059.322985,165208.605985 545056.969985,165236.407985 545062.741985,165253.818985 545076.317985,165267.921985 545098.393985,165269.473985 545169.154985,165280.723985 545180.182985,165294.528985 545180.342985,165328.757985 545168.612985,165334.547985 545185.199985,165365.423985 545204.772985,165367.357985 545210.305985,165371.225985 545221.370985,165365.881985 545235.094985,165359.200985 545246.854985,165349.177985 545264.494985,165335.491985 545269.816985,165294.894985 545285.114985,165266.383985 545324.205985,165274.795985 545337.924985,165288.510985 545338.064985,165318.892985 545349.229985,165343.732985 545360.387985,165374.453985 545370.711985,165396.429985 545376.374985,165420.281985 545364.710985,165400.264985 545340.826985,165400.049985 545327.155985),(165342.461985 545093.777985,165322.031985 545055.610985,165307.902985 545033.527985,165304.183985 545003.597985,165314.784985 544970.879985,165305.688985 544951.716985,165327.686985 544941.061985,165380.740985 544947.170985,165397.607985 544966.537985,165396.440985 545017.969985,165394.198985 545050.695985,165377.954985 545069.612985,165386.777985 545105.268985,165378.710985 545118.851985,165345.544985 545115.710985,165342.702985 545110.200985,165342.461985 545093.777985)) + MULTIPOLYGON(((165057.217205208 544883.120216485,165059.30153673 544912.389570074,165059.432092366 544920.688588389,165057.451092366 544970.647588389,165056.839151797 544977.684729339,165055.105079377 544990.562684236,165055.666345379 544991.014185186,165082.574837416 544991.687947258,165144.075738552 544984.790287485,165149.295992153 544984.388702299,165205.466992153 544982.035702299,165223.851710387 544983.535879454,165231.859198159 544985.198321703,165232.835721359 544980.480345081,165234.671869136 544974.813419038,165232.980105736 544970.113149715,165230.792111361 544955.6486919,165231.453631581 544941.034648987,165234.596064132 544928.226786517,165229.177458967 544925.175179585,165218.024334311 544915.604916041,165208.951612951 544904.043434258,165202.307658569 544890.934658417,165201.450878229 544888.731994426,165192.63043154 544890.308601857,165177.936402401 544890.023568984,165163.580078568 544886.878461346,165150.112731992 544880.994048692,165145.151531196 544878.218464239,165107.693212873 544877.556905356,165084.388987872 544882.531502075,165069.804209359 544884.176320174,165057.217205208 544883.120216485)),((165433.450985222 544894.243752377,165445.727600121 544888.578682779,165458.965228219 544885.199652816,165472.596195875 544884.27804448,165493.116772708 544884.764439621,165499.5672165 544883.642786958,165514.185081919 544882.554852596,165519.617671597 544882.683031962,165523.817930203 544875.323465139,165533.380754455 544864.280599446,165544.902815038 544855.300921817,165557.947005961 544848.72508928,165571.226811748 544845.023247916,165571.608985418 544828.133530063,165571.248634832 544827.453511802,165564.906634832 544815.485511802,165561.598307512 544807.342441787,165560.674592039 544811.451578352,165554.799933434 544824.767735359,165546.463962451 544836.698503939,165535.980603089 544846.794583753,165523.744647759 544854.675766933,165510.216889818 544860.045256316,165495.906770564 544862.700842514,165481.353194207 544862.542518913,165467.1042333 544859.576247815,165458.583903741 544855.97784482,165450.869543946 544857.404772996,165432.339543946 544858.747772996,165417.139633107 544858.30381175,165402.341694045 544854.803041746,165379.029034346 544846.717431606,165369.926358081 544860.203378698,165362.080227598 544869.526690428,165389.320308912 544872.663299482,165402.872948774 544875.510841409,165415.671006543 544880.801612583,165427.278136608 544888.355225886,165433.450985222 544894.243752377)),((165564.244956383 544565.763054216,165569.5976314 544562.284557272,165580.260093066 544557.517948244,165605.225093066 544548.617948244,165617.918405741 544545.31056484,165630.99381411 544544.265257411,165641.322078728 544545.252988251,165641.157714701 544544.741827264,165631.329809072 544528.350541467,165617.778879255 544517.492334349,165607.933959442 544508.007119591,165599.974337952 544496.892436919,165594.164474795 544484.51757388,165591.817078659 544478.040174765,165588.272635808 544490.131939281,165579.967528816 544508.678032292,165571.627528816 544522.072032292,165562.518379322 544533.89247424,165556.154902685 544539.416730683,165559.608905593 544551.269995916,165564.244956383 544565.763054216))) + + #60 Polygon - gid: 2560 + + POLYGON((165039.888985 545214.900985,165061.521985 545211.327985,165071.841985 545218.422985,165077.658585 545221.274385,165042.910985 545188.529985,165018.330985 545164.645985,165012.696985 545156.314985,165001.478985 545145.165985,164983.560985 545134.409985,164959.705985 545136.405985,164912.749985 545126.728985,164872.247985 545143.406985,164854.636985 545152.272985,164842.895985 545158.183985,164822.013985 545183.452985,164819.327985 545202.866985,164836.326985 545230.849985,164837.880985 545249.634985,164820.022985 545295.891985,164797.828985 545328.982985,164765.676985 545371.292985,164741.785985 545411.115985,164755.907985 545414.000985,164781.197985 545405.853985,164828.946985 545376.498985,164869.393985 545349.987985,164902.767985 545314.165985,164924.560985 545268.486985,164951.092985 545252.883985,164976.229985 545250.334985,164992.874985 545239.445985,165003.027985 545231.057985,165018.255985 545218.473985,165039.888985 545214.900985)) + POLYGON( EMPTY) + + #61 Polygon - gid: 2561 + + POLYGON((165238.510985 545710.471985,165192.124985 545700.368985,165160.156985 545630.008985,165164.336985 545624.861985,165176.876985 545609.422985,165172.523985 545591.077985,165168.170985 545572.732985,165167.980985 545556.368985,165147.570985 545540.142985,165125.931985 545556.256985,165090.936985 545602.197985,165089.392985 545634.903985,165089.504985 545645.843985,165092.417985 545662.279985,165111.877985 545683.285985,165129.554985 545701.137985,165121.586985 545728.577985,165086.923985 545743.977985,165052.963985 545734.373985,165039.091985 545717.850985,165027.966985 545701.352985,165001.879985 545672.568985,164978.299985 545619.010985,164961.459985 545577.792985,164935.200985 545546.003985,164911.800985 545505.448985,164900.849985 545521.874985,164920.431985 545580.077985,164932.021985 545610.339985,164933.689985 545628.314985,164928.252985 545677.904985,164913.400985 545715.258985,164921.835985 545729.167985,164935.169985 545781.427985,164942.610985 545813.897985,164966.247985 545817.882985,164988.465985 545801.288985,165002.312985 545787.436985,165021.889985 545790.358985,165045.185985 545849.211985,165056.368985 545885.476985,165064.812985 545891.120985,165084.289985 545868.904985,165091.803985 545835.123985,165099.316985 545801.341985,165105.409985 545799.161985,165129.781985 545790.441985,165134.147985 545761.590985,165141.310985 545750.056985,165158.590985 545709.009985,165176.243985 545724.213985,165199.478985 545747.702985,165208.061985 545779.326985,165211.808985 545797.165985,165223.206985 545816.746985,165225.387985 545823.733985,165238.473985 545865.656985,165240.654985 545872.643985,165224.011985 545880.913985,165213.049985 545897.603985,165243.117985 545899.699985,165243.477985 545927.700985,165258.375985 545942.579985,165264.112985 545953.801985,165275.516985 545970.657985,165295.826985 545982.700985,165309.815985 545985.574985,165329.383985 545988.480985,165354.767985 546001.160985,165354.562985 545987.341985,165383.586985 545955.589985,165373.711985 545912.320985,165357.023985 545909.441985,165340.294985 545903.784985,165317.425985 545856.465985,165311.411985 545823.162985,165287.933985 545774.854985,165249.668985 545718.827985,165238.510985 545710.471985)) + POLYGON( EMPTY) + + #62 Polygon - gid: 2562 + + POLYGON((167132.502985 546739.675985,167129.431985 546728.461985,167149.272985 546730.744985,167174.754985 546732.873985,167203.344985 546749.030985,167214.701985 546712.855985,167222.891985 546698.488985,167172.714985 546705.889985,167136.868985 546710.488985,167119.637985 546696.854985,167075.210985 546707.329985,167010.354985 546685.151985,166970.378985 546680.545985,166953.227985 546678.167985,166944.879985 546686.925985,166934.540985 546732.693985,166943.806985 546763.687985,166970.472985 546795.157985,166972.578985 546790.292985,166993.557985 546761.456985,166991.220985 546735.941985,166999.607985 546730.041985,167040.797985 546729.182985,167063.593985 546739.815985,167081.551985 546762.749985,167104.289985 546789.026985,167117.932985 546804.791985,167133.736985 546789.873985,167149.540985 546774.955985,167144.229985 546759.119985,167132.502985 546739.675985)) + POLYGON( EMPTY) + + #63 Polygon - gid: 2563 + + POLYGON((142722.192985 546177.308985,142726.778985 546176.811985,142731.932985 546176.961985,142741.768985 546177.534985,142746.228985 546178.131985,142757.116985 546179.802985,142766.625985 546181.831985,142771.037985 546182.101985,142773.400985 546181.387985,142776.497985 546178.776985,142779.106985 546174.996985,142781.284985 546170.613985,142783.085985 546166.194985,142784.732985 546161.198985,142785.744985 546156.827985,142788.327985 546142.074985,142788.603985 546137.521985,142789.852985 546132.215985,142789.471985 546113.620985,142789.307985 546106.890985,142788.828985 546101.181985,142787.251985 546087.771985,142785.818985 546077.995985,142784.285985 546069.126985,142781.610985 546055.891985,142777.385985 546039.293985,142776.636985 546036.164985,142776.002985 546033.293985,142774.917985 546027.582985,142773.500985 546018.687985,142772.098985 546007.143985,142768.178985 546010.905985,142764.713985 546009.110985,142761.223985 546006.385985,142754.125985 545999.891985,142750.724985 545997.160985,142743.367985 545991.857985,142735.810985 545986.892985,142731.895985 545984.775985,142730.716985 545984.217985,142726.312985 545982.683985,142721.651985 545982.033985,142718.418985 545982.397985,142714.052985 545984.850985,142711.360985 545988.681985,142712.738985 545993.180985,142714.941985 545996.960985,142717.691985 546000.791985,142724.660985 546009.840985,142731.686985 546016.665985,142732.054985 546018.591985,142730.690985 546022.264985,142728.418985 546025.982985,142719.613985 546037.284985,142713.073985 546046.712985,142710.527985 546050.471985,142708.252985 546054.334985,142706.612985 546057.889985,142705.358985 546062.133985,142704.624985 546066.572985,142703.219985 546077.702985,142699.359985 546095.284985,142697.142985 546106.960985,142694.878985 546120.270985,142689.654985 546153.350985,142686.974985 546168.576985,142684.417985 546181.838985,142681.914985 546192.299985,142679.361985 546200.940985,142677.911985 546205.201985,142674.155985 546214.865985,142667.821985 546229.388985,142659.948985 546245.601985,142657.324985 546251.745985,142655.832985 546255.985985,142653.436985 546264.685985,142652.493985 546269.090985,142651.629985 546274.394985,142650.292985 546287.844985,142648.737985 546299.023985,142644.522985 546326.394985,142643.286985 546335.313985,142642.254985 546344.252985,142641.584985 546354.071985,142641.244985 546363.069985,142641.148985 546370.582985,142641.331985 546384.084985,142641.014985 546394.820985,142640.378985 546405.030985,142638.161985 546425.106985,142637.323985 546438.583985,142637.097985 546450.097985,142637.938985 546492.896985,142637.899985 546522.015985,142638.983985 546578.467985,142639.054985 546593.084985,142638.672985 546602.065985,142638.067985 546607.674985,142636.677985 546616.584985,142634.346985 546627.450985,142633.051985 546631.746985,142629.847985 546640.178985,142628.692985 546643.625985,142624.159985 546661.045985,142621.661985 546670.257985,142617.884985 546683.219985,142611.192985 546706.280985,142608.360985 546717.192985,142606.371985 546725.978985,142604.441985 546737.393985,142603.363985 546746.339985,142602.555985 546756.672985,142602.460985 546761.163985,142602.860985 546774.337985,142602.576985 546792.392985,142603.006985 546798.336985,142603.734985 546802.764985,142604.771985 546807.169985,142606.081985 546811.513985,142607.626985 546815.755985,142611.830985 546826.313985,142613.916985 546830.574985,142616.469985 546834.131985,142618.842985 546836.097985,142622.666985 546837.753985,142626.214985 546838.483985,142629.542985 546838.792985,142632.214985 546838.947985,142636.772985 546838.722985,142641.319985 546838.062985,142646.320985 546836.579985,142650.481985 546834.504985,142654.367985 546831.854985,142657.767985 546828.806985,142658.902985 546827.563985,142661.479985 546824.014985,142663.628985 546820.007985,142665.381985 546815.716985,142666.772985 546811.314985,142667.543985 546808.276985,142668.299985 546803.903985,142668.664985 546799.432985,142669.208985 546770.941985,142669.215985 546758.058985,142668.827985 546740.061985,142668.678985 546721.600985,142668.824985 546701.557985,142669.123985 546692.563985,142669.921985 546681.612985,142671.489985 546668.197985,142672.558985 546661.898985,142675.484985 546648.710985,142678.156985 546634.495985,142679.352985 546625.575985,142679.521985 546623.224985,142679.455985 546618.725985,142678.608985 546609.684985,142678.607985 546605.216985,142679.456985 546599.497985,142680.422985 546595.072985,142681.628985 546590.688985,142683.064985 546586.385985,142684.719985 546582.209985,142687.493985 546577.462985,142693.608985 546570.163985,142695.807985 546566.427985,142696.403985 546564.167985,142696.269985 546560.021985,142695.131985 546555.716985,142689.869985 546543.023985,142687.819985 546538.859985,142685.414985 546534.767985,142683.696985 546530.666985,142683.426985 546528.227985,142684.250985 546524.018985,142686.016985 546519.785985,142690.072985 546511.275985,142691.212985 546507.010985,142691.313985 546505.828985,142690.736985 546501.570985,142689.136985 546497.313985,142687.185985 546493.037985,142685.555985 546488.722985,142684.996985 546485.984985,142684.940985 546481.564985,142686.794985 546468.070985,142686.805985 546461.676985,142686.570985 546457.185985,142684.003985 546424.297985,142682.826985 546413.320985,142681.650985 546404.390985,142679.775985 546393.190985,142678.747985 546388.810985,142676.254985 546380.136985,142675.183985 546375.772985,142674.211985 546369.312985,142673.537985 546360.327985,142673.033985 546348.190985,142672.839985 546339.186985,142673.098985 546325.855985,142673.657985 546316.845985,142674.183985 546312.381985,142676.192985 546300.558985,142677.569985 546296.219985,142679.674985 546292.826985,142682.886985 546290.084985,142686.799985 546287.904985,142702.595985 546281.269985,142715.240985 546276.391985,142719.265985 546274.457985,142724.245985 546271.640985,142728.191985 546268.787985,142730.616985 546265.350985,142731.096985 546260.779985,142730.599985 546256.356985,142729.561985 546251.755985,142727.094985 546242.736985,142725.781985 546238.435985,142722.504985 546229.989985,142721.019985 546225.740985,142720.025985 546221.775985,142719.361985 546217.356985,142718.965985 546212.880985,142718.544985 546197.266985,142717.538985 546187.249985,142717.532985 546182.587985,142718.818985 546179.148985,142722.192985 546177.308985)) + POLYGON( EMPTY) + + #64 Polygon - gid: 2564 + + POLYGON((164037.000985 546901.414985,164106.537985 546859.892985,164138.256985 546862.893985,164190.193985 546854.347985,164219.006985 546863.152985,164224.504985 546879.653985,164241.465985 546901.930985,164267.345985 546890.411985,164324.403985 546869.382985,164341.607985 546857.870985,164388.533985 546827.945985,164369.933985 546821.741985,164340.564985 546826.620985,164308.425985 546822.759985,164308.404985 546843.093985,164299.745985 546854.692985,164283.505985 546842.787985,164277.086985 546808.974985,164262.628985 546820.547985,164248.158985 546840.876985,164213.916985 546848.404985,164193.642985 546839.577985,164196.758985 546825.842985,164191.001985 546805.342985,164179.409985 546796.532985,164106.760985 546814.691985,164077.598985 546829.265985,164036.608985 546881.968985,164022.598985 546855.664985,164029.130985 546839.253985,163976.139985 546849.840985,163958.295985 546855.749985,163940.475985 546855.696985,163921.815985 546832.990985,163901.558985 546850.001985,163887.908985 546861.066985,163923.509985 546885.561985,163987.096985 546921.878985,164037.000985 546901.414985)) + POLYGON( EMPTY) + + #65 Polygon - gid: 2565 + + POLYGON((165997.948985 547128.168985,166014.238985 547102.270985,166026.375985 547112.440985,166060.687985 547117.495985,166091.450985 547096.872985,166113.825985 547082.132985,166119.200985 547070.590985,166109.259985 547010.901985,166075.888985 547034.320985,166069.749985 547061.434985,166058.900985 547078.693985,166028.270985 547076.283985,166018.907985 547042.519985,165995.926985 547026.000985,165977.533985 546969.846985,165948.195985 546992.608985,165951.810985 547025.403985,165967.402985 547043.519985,165969.936985 547070.390985,165940.250985 547086.636985,165949.182985 547103.514985,165974.111985 547121.355985,165997.948985 547128.168985)) + POLYGON( EMPTY) + + #66 Polygon - gid: 2566 + + POLYGON((165100.071985 522081.185985,165136.799985 522076.135985,165166.082985 522092.836985,165183.181985 522109.283985,165190.140985 522118.074985,165206.348985 522101.100985,165220.161985 522076.505985,165220.503985 522074.959985,165225.622985 522051.802985,165237.799985 522011.812985,165240.146985 521960.824985,165236.333985 521894.861985,165237.261985 521814.285985,165243.911985 521772.257985,165226.779985 521761.751985,165193.019985 521743.035985,165165.246985 521728.639985,165152.601985 521722.553985,165133.996985 521739.272985,165111.166985 521751.180985,165092.073985 521752.238985,165109.023985 521784.973985,165126.567985 521832.153985,165144.191985 521855.304985,165157.186985 521856.297985,165161.740985 521873.524985,165162.965985 521907.180985,165164.675985 521942.335985,165164.830985 521979.277985,165164.301985 521990.709985,165142.466985 521995.789985,165110.505985 522011.506985,165079.857985 522028.091985,165054.334985 522038.602985,165032.108985 522040.275985,165001.716985 522035.707985,164983.310985 522019.245985,164959.550985 521989.898985,164922.332985 521959.299985,164891.493985 521946.315985,164842.601985 521944.356985,164828.038985 521942.830985,164784.350985 521938.253985,164721.590985 521932.459985,164654.326985 521933.159985,164615.460985 521948.266985,164665.212985 521993.048985,164721.052985 522031.550985,164773.155985 522075.997985,164829.624985 522115.536985,164873.224985 522125.840985,164944.614985 522131.113985,164945.480985 522178.821985,164954.957985 522264.115985,164978.215985 522266.299985,165016.474985 522263.290985,165041.880985 522239.804985,165055.918985 522218.725985,165063.579985 522211.999985,165067.228985 522203.579985,165070.618985 522174.606985,165076.243985 522151.298985,165077.752985 522136.665985,165079.504985 522123.716985,165083.574985 522101.381985,165100.071985 522081.185985)) + POLYGON((164820.266857 522017.427204655,164860.865764155 522045.854132527,164884.683758641 522051.483045719,164914.706877136 522053.700609857,164906.045863843 522043.003019071,164883.150492441 522024.179453335,164874.91441489 522020.711856107,164839.599301485 522019.296853506,164834.785821452 522018.948590341,164820.266857 522017.427204655)) + + #67 Polygon - gid: 2567 + + POLYGON((154374.974985 540624.728985,154320.493985 540619.008985,154292.141985 540622.113985,154300.537985 540553.371985,154315.955985 540540.285985,154376.940985 540530.412985,154405.631985 540496.147985,154445.668985 540435.041985,154454.521985 540417.090985,154451.884985 540403.553985,154445.292985 540369.710985,154445.579985 540362.563985,154447.014985 540326.827985,154437.326985 540254.795985,154511.563985 540278.324985,154528.041985 540293.316985,154555.203985 540318.597985,154568.395985 540311.500985,154566.744985 540300.457985,154553.075985 540281.217985,154539.316985 540265.833985,154513.536985 540265.913985,154479.903985 540247.544985,154439.739985 540232.015985,154403.476985 540219.274985,154352.216985 540193.238985,154334.278985 540175.092985,154332.774985 540144.333985,154350.235985 540125.468985,154371.989985 540117.381985,154383.699985 540112.299985,154407.119985 540102.135985,154415.975985 540097.389985,154420.402985 540095.016985,154432.473985 540079.628985,154446.542985 540043.686985,154432.038985 540027.748985,154407.872985 540019.283985,154375.098985 540051.097985,154358.677985 540070.534985,154354.465985 540108.800985,154334.695985 540111.082985,154308.823985 540096.567985,154262.980985 540157.924985,154255.293985 540164.418985,154215.750985 540176.802985,154206.665985 540194.763985,154166.906985 540153.065985,154162.757985 540169.964985,154166.319985 540198.641985,154180.928985 540222.157985,154211.961985 540249.040985,154209.983985 540262.387985,154208.994985 540269.061985,154197.947985 540292.833985,154192.961985 540297.380985,154158.065985 540329.211985,154140.829985 540316.837985,154117.762985 540294.223985,154092.528985 540254.239985,154073.822985 540242.348985,154048.200985 540266.020985,154064.357985 540290.020985,154062.051985 540304.767985,154040.168985 540346.540985,154041.641985 540357.709985,154049.520985 540373.836985,154104.527985 540418.794985,154090.465985 540443.160985,154069.529985 540448.440985,154046.019985 540476.715985,154023.556985 540493.431985,154012.295985 540517.485985,153979.630985 540532.522985,153949.623985 540550.285985,153937.859985 540571.634985,153958.642985 540598.024985,154012.244985 540548.784985,154030.269985 540532.534985,154070.531985 540499.593985,154087.180985 540483.491985,154132.461985 540455.676985,154148.344985 540445.370985,154180.755985 540450.271985,154197.244985 540479.738985,154193.874985 540497.126985,154183.840985 540529.466985,154188.908985 540557.187985,154202.879985 540575.534985,154249.118985 540618.863985,154258.226985 540629.278985,154262.780985 540634.485985,154280.201985 540662.114985,154287.169985 540673.165985,154298.532985 540705.614985,154310.100985 540727.104985,154343.491985 540740.559985,154373.404985 540748.738985,154410.171985 540758.451985,154418.213985 540774.691985,154432.851985 540756.015985,154427.625985 540739.482985,154393.172985 540712.859985,154367.238985 540699.027985,154362.824985 540688.093985,154374.974985 540624.728985)) + POLYGON ((154211.34039180956 540382.1317209445, 154217.6503256708 540384.9741471609, 154228.8660526432 540392.7357234654, 154238.49064413007 540402.4001860456, 154246.20578777403 540413.6479038943, 154262.69478777403 540443.1149038943, 154268.08157501929 540455.0980127293, 154271.29462502326 540467.8372703156, 154272.15180599023 540479.7780934644, 154278.51581715897 540475.2995723275, 154290.83214622788 540469.6192125722, 154303.9701183911 540466.2499194533, 154337.37449228237 540460.8420095831, 154345.30698193613 540451.368420026, 154375.74125760913 540404.9184650026, 154371.67648756542 540384.050137885, 154370.35338301142 540366.7016572024, 154370.6403821483 540359.5546786959, 154371.8131743791 540330.3484744037, 154365.60057125118 540284.1566671671, 154318.252931651 540260.1078348488, 154307.99700814812 540253.816156007, 154298.8791629049 540245.9654179738, 154285.6658256004 540232.5988654748, 154284.9711923334 540232.8950064374, 154286.85393501408 540245.0165815549, 154286.15170738756 540260.035760671, 154284.17376698626 540273.3823585154, 154283.18482683104 540280.055954669, 154277.00972538022 540300.6688686018, 154265.96272538023 540324.4408686018, 154258.40762354335 540337.2145224822, 154248.48523614364 540348.2504649211, 154243.50247502665 540352.7945112105, 154211.34039180956 540382.1317209445)) + + #68 Polygon - gid: 2568 + + POLYGON((151090.928985 540950.574985,151117.445985 540939.721985,151149.481985 540941.866985,151212.221985 540950.239985,151224.726985 540959.131985,151249.097985 540961.645985,151268.213985 540941.565985,151298.490985 540913.861985,151331.140985 540899.607985,151337.670985 540896.756985,151348.111985 540887.739985,151353.647985 540867.974985,151359.183985 540848.209985,151369.021985 540811.954985,151379.284985 540781.097985,151400.204985 540762.390985,151448.885985 540728.437985,151463.818985 540705.351985,151467.765985 540683.006985,151476.666985 540635.436985,151502.123985 540589.717985,151524.591985 540550.077985,151549.839985 540521.107985,151566.568985 540511.980985,151568.176985 540482.157985,151563.945985 540460.707985,151540.525985 540413.008985,151531.631985 540402.717985,151516.708985 540476.937985,151515.687985 540483.808985,151509.564985 540525.034985,151508.544985 540531.905985,151482.998985 540568.953985,151467.271985 540597.511985,151456.715985 540625.756985,151448.935985 540653.713985,151423.440985 540680.452985,151380.551985 540719.880985,151350.280985 540763.588985,151319.225985 540796.248985,151296.298985 540802.965985,151285.001985 540839.802985,151267.089985 540869.796985,151235.102985 540900.984985,151195.281985 540918.277985,151141.469985 540910.674985,151100.987985 540911.757985,151081.554985 540915.883985,151051.966985 540895.325985,151048.320985 540889.129985,151026.445985 540851.954985,151007.887985 540827.846985,151044.137985 540791.294985,151075.221985 540763.652985,151091.194985 540751.370985,151090.038985 540734.632985,151083.686985 540723.848985,151064.053985 540703.043985,151053.089985 540686.671985,151050.667985 540661.563985,151063.916985 540610.385985,151108.013985 540532.246985,151121.916985 540503.720985,151119.042985 540462.231985,151138.133985 540416.520985,151140.118985 540378.023985,151158.122985 540338.727985,151164.124985 540325.628985,151178.649985 540301.860985,151189.543985 540284.034985,151224.790985 540245.614985,151236.485985 540217.614985,151242.398985 540178.166985,151252.590985 540145.914985,151264.740985 540108.947985,151277.958985 540082.053985,151275.701985 540049.776985,151262.771985 540058.740985,151247.206985 540085.158985,151233.574985 540106.623985,151183.995985 540125.600985,151183.849985 540187.672985,151167.715985 540232.645985,151145.098985 540276.657985,151124.279985 540320.641985,151108.773985 540335.412985,151085.813985 540350.102985,151070.872985 540391.428985,151052.396985 540415.220985,151020.243985 540439.842985,150982.357985 540466.123985,150936.027985 540486.159985,150893.723985 540505.026985,150878.560985 540522.467985,150839.929985 540557.935985,150820.111985 540562.409985,150778.385985 540607.088985,150766.205985 540627.265985,150708.205985 540687.434985,150691.026985 540725.163985,150659.099985 540758.887985,150603.544985 540779.848985,150572.506985 540787.861985,150565.131985 540805.432985,150578.367985 540817.865985,150622.790985 540865.068985,150638.099985 540848.467985,150624.889985 540826.636985,150650.151985 540813.062985,150687.839985 540773.076985,150744.405985 540759.742985,150794.881985 540710.287985,150801.830985 540687.127985,150805.950985 540664.161985,150796.514985 540650.612985,150798.383985 540636.310985,150816.631985 540612.414985,150843.735985 540593.600985,150877.839985 540583.571985,150887.979985 540551.552985,150921.691985 540521.649985,150965.257985 540501.931985,151002.649985 540474.224985,151015.114985 540468.395985,151040.044985 540456.737985,151051.554985 540457.180985,151063.064985 540457.624985,151084.186985 540492.617985,151070.647985 540537.901985,151049.601985 540575.147985,151021.902985 540596.656985,151007.014985 540622.638985,150965.907985 540664.320985,150940.152985 540688.413985,150936.950985 540716.690985,150931.070985 540753.445985,150916.065985 540779.631985,150873.511985 540808.008985,150882.496985 540821.066985,150907.599985 540814.139985,150933.307985 540820.832985,150937.628985 540842.986985,150925.954985 540877.445985,150903.298985 540910.400985,150878.953985 540924.700985,150854.609985 540939.000985,150848.572985 540949.540985,150839.517985 540965.350985,150833.587985 541002.358985,150828.749985 541024.918985,150841.377985 541046.423985,150859.617985 541023.612985,150895.948985 540986.867985,150908.718985 540964.327985,150920.310985 540934.969985,150933.505985 540917.905985,150946.847985 540895.692985,150973.058985 540868.670985,150994.634985 540855.997985,151011.929985 540871.185985,151031.681985 540896.146985,151051.614985 540918.938985,151063.916985 540934.921985,151046.624985 540959.176985,151017.447985 540963.574985,150995.564985 540966.871985,150975.912985 540968.450985,150943.158985 540971.082985,150926.615985 540975.000985,150961.104985 540994.376985,151021.350985 541033.454985,151067.459985 541065.693985,151094.333985 541073.195985,151089.675985 541035.539985,151088.718985 540990.623985,151085.166985 540969.224985,151090.928985 540950.574985)) + POLYGON( EMPTY) + + #69 Polygon - gid: 2569 + + POLYGON((157856.121985 509999.999985,157796.029985 509999.999985,157791.006985 510004.813985,157791.813985 510018.198985,157800.933985 510029.066985,157811.325985 510037.421985,157822.700985 510041.583985,157836.355985 510047.726985,157846.509985 510047.168985,157860.168985 510044.667985,157865.721985 510035.395985,157865.310985 510029.671985,157864.898985 510023.947985,157864.938985 510012.985985,157856.897985 510002.060985,157856.121985 509999.999985)) + POLYGON( EMPTY) + + #70 Polygon - gid: 2570 + + POLYGON((166912.823985 510008.038985,166922.037985 510006.063985,166931.908985 510006.063985,166939.147985 510009.354985,166945.070985 510014.619985,166951.361985 510005.018985,166956.501985 509999.999985,166817.427985 509999.999985,166829.662985 510020.674985,166846.946985 510042.171985,166864.977985 510054.010985,166876.718985 510056.295985,166886.332985 510051.098985,166888.756985 510038.698985,166892.223985 510028.810985,166906.901985 510012.644985,166912.823985 510008.038985)) + POLYGON( EMPTY) + + #71 Polygon - gid: 2571 + + POLYGON((160978.349985 510216.528985,160976.017985 510196.815985,160972.315985 510179.827985,160967.100985 510160.634985,160968.288985 510153.324985,160933.313985 510163.101985,160874.570985 510167.697985,160863.688985 510172.638985,160844.319985 510175.223985,160810.435985 510182.778985,160768.056985 510200.089985,160716.009985 510219.903985,160738.406985 510250.985985,160748.943985 510253.617985,160780.763985 510240.957985,160797.438985 510248.395985,160805.905985 510245.900985,160816.794985 510243.385985,160819.530985 510230.970985,160825.180985 510216.642985,160843.337985 510214.067985,160859.081985 510213.938985,160867.450985 510238.436985,160922.763985 510238.573985,160931.321985 510255.515985,160938.802985 510279.789985,160937.700985 510301.677985,160953.256985 510301.882985,160978.462985 510235.998985,160978.349985 510216.528985)) + POLYGON( EMPTY) + + #72 Polygon - gid: 2572 + + POLYGON((164410.173985 510269.608985,164385.850985 510262.988985,164380.056985 510272.454985,164384.086985 510288.828985,164411.898985 510335.704985,164423.329985 510359.345985,164423.798985 510376.111985,164433.397985 510390.825985,164433.551985 510400.397985,164424.317985 510428.944985,164425.629985 510436.100985,164434.162985 510445.550985,164452.393985 510464.357985,164473.162985 510490.376985,164484.334985 510507.267985,164489.125985 510507.205985,164520.300985 510472.028985,164486.035985 510438.688985,164469.919985 510416.977985,164461.182985 510395.537985,164460.812985 510357.662985,164462.293985 510314.057985,164459.977985 510300.216985,164455.056985 510293.082985,164433.141985 510278.881985,164410.173985 510269.608985)) + POLYGON( EMPTY) + + #73 Polygon - gid: 2573 + + POLYGON((165811.803985 510461.433985,165827.476985 510461.338985,165854.112985 510465.702985,165860.990985 510489.889985,165940.128985 510487.374985,165967.267985 510478.917985,165996.204985 510476.027985,166010.928985 510478.380985,166019.470985 510482.908985,166045.518985 510470.094985,166044.175985 510465.335985,166021.852985 510442.020985,166001.663985 510418.254985,165994.615985 510423.284985,165980.675985 510431.298985,165958.830985 510417.903985,165925.719985 510435.804985,165903.141985 510416.529985,165886.871985 510433.864985,165815.334985 510412.070985,165802.365985 510419.692985,165789.470985 510429.714985,165779.722985 510425.222985,165778.145985 510413.260985,165776.187985 510391.342985,165769.739985 510377.140985,165758.796985 510372.686985,165747.033985 510380.266985,165729.008985 510378.757985,165718.359985 510383.904985,165721.532985 510409.525985,165740.376985 510475.641985,165741.587985 510513.924985,165761.560985 510539.628985,165782.635985 510526.535985,165800.213985 510512.079985,165787.945985 510464.582985,165790.350985 510462.507985,165811.803985 510461.433985)) + POLYGON( EMPTY) + + #74 Polygon - gid: 2574 + + POLYGON((156787.353985 510717.616985,156798.209985 510707.476985,156835.337985 510722.081985,156846.303985 510701.194985,156809.056985 510660.576985,156747.023985 510612.786985,156725.321985 510631.224985,156706.853985 510627.359985,156670.055985 510617.736985,156669.633985 510645.101985,156641.531985 510673.194985,156607.232985 510646.565985,156586.956985 510678.596985,156610.864985 510701.168985,156633.590985 510723.694985,156644.244985 510734.684985,156664.910985 510709.964985,156667.638985 510693.338985,156677.663985 510681.579985,156691.318985 510674.355985,156706.414985 510680.618985,156733.650985 510698.475985,156758.149985 510713.483985,156755.055985 510727.250985,156776.436985 510742.942985,156787.353985 510717.616985)) + POLYGON( EMPTY) + + #75 Polygon - gid: 2575 + + POLYGON((158008.700985 510611.812985,158026.072985 510610.072985,158045.611985 510612.296985,158069.846985 510619.338985,158090.368985 510618.785985,158109.698985 510613.651985,158128.025985 510597.619985,158093.668985 510549.634985,158057.574985 510514.193985,158039.492985 510494.646985,158015.478985 510474.555985,157995.775985 510460.308985,157942.439985 510496.109985,157921.521985 510507.754985,157902.162985 510523.671985,157865.738985 510559.611985,157883.243985 510610.932985,157890.286985 510634.366985,157893.710985 510647.347985,157892.650985 510661.155985,157898.540985 510682.313985,157906.960985 510705.486985,157913.131985 510731.023985,157917.901985 510747.795985,157920.336985 510757.682985,157923.967985 510759.058985,157940.909985 510743.266985,157936.142985 510728.843985,157938.154985 510709.160985,157948.143985 510678.120985,157961.674985 510650.062985,157989.091985 510622.655985,158008.700985 510611.812985)) + POLYGON( EMPTY) + + #76 Polygon - gid: 2576 + + POLYGON((166305.250985 510805.834985,166318.509985 510802.975985,166330.838985 510809.846985,166344.515985 510802.850985,166343.020985 510793.191985,166337.462985 510785.456985,166339.794985 510768.209985,166353.422985 510755.048985,166364.727985 510750.532985,166376.738985 510747.721985,166389.828985 510743.756985,166403.788985 510746.369985,166415.423985 510749.148985,166427.334985 510741.479985,166440.525985 510736.196985,166441.389985 510724.034985,166448.601985 510697.764985,166461.649985 510665.331985,166471.117985 510635.466985,166472.253985 510610.734985,166471.971985 510578.827985,166450.104985 510554.829985,166436.845985 510555.257985,166419.250985 510572.731985,166370.997985 510552.013985,166344.073985 510538.399985,166314.873985 510529.684985,166260.933985 510516.455985,166239.242985 510517.141985,166214.020985 510520.366985,166199.574985 510535.799985,166179.736985 510555.676985,166167.104985 510575.319985,166158.002985 510592.441985,166148.310985 510604.147985,166128.052985 510621.052985,166117.555985 510630.988985,166109.528985 510643.243985,166108.834985 510660.055985,166116.902985 510679.485985,166129.322985 510693.478985,166155.820985 510708.809985,166202.941985 510748.637985,166216.897985 510760.809985,166224.033985 510771.474985,166226.512985 510787.120985,166225.393985 510816.346985,166224.544985 510828.097985,166226.469985 510838.410985,166239.357985 510850.789985,166263.214985 510837.894985,166280.875985 510820.358985,166305.250985 510805.834985)) + POLYGON((166205.479485534 510652.581119516,166251.356748955 510691.357878233,166252.239160589 510692.115525049,166266.195160589 510704.287525049,166279.231532196 510719.102325104,166281.223092437 510722.078781098,166287.694391735 510714.260673777,166301.322391735 510701.099673777,166312.697826602 510692.069135259,166325.600553693 510685.400493874,166336.905553693 510680.884493874,166347.637140521 510677.506256777,166357.30243744 510675.244234494,166368.086801066 510671.977618621,166378.921550784 510670.069434357,166379.021705943 510669.772400869,166390.259992941 510641.837747114,166389.661020874 510641.648122609,166341.408020874 510620.930122609,166337.155021141 510618.944200876,166316.207348437 510608.352104004,166295.204881635 510602.083730778,166253.041853345 510591.743080032,166249.594867469 510591.852094477,166238.483846016 510602.984959354,166231.869257152 510613.27077071,166224.227146735 510627.646535877,166215.772193165 510640.272086276,166206.080193165 510651.978086276,166205.479485534 510652.581119516)) + + #77 Polygon - gid: 2577 + + POLYGON((144747.238985 510959.113985,144755.551985 510958.391985,144759.999985 510957.706985,144761.994985 510957.120985,144771.077985 510953.546985,144775.163985 510951.478985,144778.521985 510947.974985,144780.605985 510943.978985,144783.010985 510937.753985,144785.651985 510927.645985,144788.862985 510919.396985,144791.739985 510910.868985,144793.064985 510907.386985,144797.114985 510897.469985,144801.720985 510888.417985,144806.413985 510877.909985,144812.059985 510868.414985,144816.693985 510858.877985,144823.432985 510847.907985,144827.479985 510839.866985,144834.878985 510826.552985,144841.353985 510811.739985,144851.055985 510795.249985,144855.529985 510786.973985,144859.568985 510778.929985,144864.231985 510768.907985,144870.294985 510757.055985,144880.482985 510735.040985,144889.839985 510714.509985,144891.739985 510708.263985,144893.819985 510702.414985,144900.412985 510685.150985,144904.567985 510672.305985,144908.464985 510662.652985,144909.972985 510658.420985,144911.556985 510652.787985,144917.287985 510628.138985,144918.793985 510620.165985,144920.156985 510611.264985,144921.001985 510603.657985,144921.262985 510599.163985,144921.704985 510582.021985,144921.011985 510568.365985,144920.854985 510559.601985,144920.289985 510555.194985,144918.636985 510551.096985,144916.208985 510547.234985,144912.630985 510542.505985,144909.599985 510539.168985,144904.439985 510534.334985,144900.938985 510531.501985,144888.767985 510523.199985,144879.383985 510515.890985,144875.229985 510513.144985,144871.087985 510511.405985,144865.524985 510509.747985,144861.155985 510508.663985,144853.171985 510506.969985,144848.717985 510506.417985,144846.972985 510506.478985,144842.481985 510507.088985,144838.009985 510507.423985,144833.879985 510506.773985,144826.316985 510504.723985,144817.749985 510501.823985,144813.612985 510500.064985,144808.494985 510497.375985,144804.803985 510494.824985,144801.777985 510491.930985,144795.754985 510485.194985,144790.391985 510479.676985,144787.152985 510476.557985,144784.745985 510474.805985,144780.836985 510471.086985,144779.143985 510466.926985,144777.440985 510461.086985,144776.698985 510456.647985,144776.804985 510454.324985,144777.616985 510449.872985,144778.467985 510446.885985,144780.081985 510442.676985,144781.219985 510440.385985,144790.599985 510424.970985,144792.765985 510421.025985,144795.397985 510415.850985,144801.206985 510403.663985,144814.508985 510378.077985,144817.035985 510373.557985,144824.707985 510361.955985,144828.960985 510354.013985,144830.830985 510349.922985,144832.887985 510344.566985,144834.325985 510340.296985,144844.487985 510308.646985,144847.131985 510299.010985,144851.930985 510282.590985,144853.658985 510277.818985,144856.216985 510274.101985,144858.400985 510272.120985,144864.813985 510267.654985,144868.883985 510265.877985,144871.922985 510266.041985,144881.496985 510268.362985,144886.044985 510268.061985,144890.714985 510268.243985,144895.858985 510267.153985,144899.844985 510265.018985,144903.565985 510262.479985,144905.971985 510256.254985,144907.871985 510250.007985,144910.335985 510242.811985,144916.629985 510224.581985,144919.195985 510215.951985,144920.522985 510210.838985,144923.217985 510197.609985,144925.864985 510187.491985,144928.414985 510179.174985,144931.325985 510170.656985,144934.161985 510161.574985,144945.007985 510123.082985,144951.327985 510101.949985,144953.064985 510095.110985,144954.861985 510090.194985,144957.165985 510086.165985,144960.615985 510082.533985,144965.980985 510081.919985,144970.351985 510080.854985,144973.430985 510080.840985,144983.058985 510081.509985,144987.516985 510082.067985,144997.989985 510084.944985,145001.100985 510085.352985,145018.225985 510086.588985,145031.277985 510087.813985,145034.023985 510087.583985,145038.746985 510086.578985,145043.185985 510085.397985,145047.248985 510083.622985,145048.202985 510082.830985,145050.585985 510078.877985,145051.978985 510074.620985,145056.128985 510060.096985,145057.553985 510055.831985,145063.088985 510042.322985,145066.150985 510034.166985,145069.126985 510025.644985,145071.569985 510017.003985,145072.764985 510011.254985,145073.282985 510006.603985,145072.958985 510002.462985,145072.176985 510001.292985,145067.525985 509999.999985,144820.948985 509999.999985,144819.191985 510006.807985,144817.797985 510013.075985,144817.072985 510017.518985,144816.707985 510022.887985,144816.139985 510027.720985,144815.755985 510030.023985,144814.530985 510034.358985,144813.610985 510047.578985,144813.566985 510049.397985,144814.106985 510057.207985,144813.995985 510061.708985,144813.679985 510066.204985,144813.429985 510068.372985,144811.294985 510078.502985,144810.411985 510093.065985,144808.486985 510108.070985,144806.898985 510131.620985,144806.743985 510136.109985,144806.915985 510141.233985,144807.389985 510145.737985,144808.036985 510148.932985,144809.863985 510153.023985,144814.180985 510159.646985,144816.820985 510162.931985,144819.994985 510166.132985,144823.469985 510168.999985,144830.897985 510173.260985,144834.408985 510176.059985,144850.660985 510190.157985,144857.639985 510195.848985,144860.332985 510197.867985,144867.177985 510202.050985,144870.801985 510204.797985,144871.522985 510205.641985,144873.715985 510209.796985,144873.726985 510211.088985,144872.243985 510215.158985,144869.975985 510219.190985,144867.963985 510222.524985,144865.436985 510226.291985,144864.099985 510227.714985,144858.836985 510230.898985,144855.291985 510233.691985,144848.874985 510236.316985,144840.763985 510240.217985,144825.553985 510248.383985,144822.676985 510250.294985,144819.567985 510253.537985,144812.468985 510261.818985,144809.626985 510264.829985,144802.536985 510270.407985,144801.628985 510271.304985,144799.024985 510274.943985,144796.656985 510278.806985,144788.849985 510289.744985,144786.429985 510293.536985,144777.870985 510307.318985,144775.474985 510311.721985,144773.491985 510315.763985,144769.628985 510325.155985,144765.706985 510336.945985,144761.518985 510347.475985,144757.242985 510359.461985,144752.043985 510369.948985,144748.608985 510378.269985,144745.802985 510386.171985,144744.461985 510390.470985,144743.491985 510393.920985,144742.009985 510401.644985,144740.079985 510408.376985,144736.020985 510433.511985,144734.117985 510442.308985,144731.955985 510450.373985,144731.311985 510454.824985,144730.521985 510463.096985,144730.379985 510467.588985,144730.705985 510472.313985,144731.923985 510481.243985,144733.045985 510486.401985,144735.374985 510494.319985,144737.113985 510498.490985,144741.895985 510503.842985,144744.758985 510507.317985,144748.950985 510512.901985,144751.358985 510516.696985,144755.859985 510524.387985,144758.284985 510528.189985,144760.097985 510533.152985,144760.327985 510534.309985,144760.479985 510540.156985,144760.990985 510548.451985,144760.920985 510552.976985,144760.519985 510556.218985,144758.114985 510562.443985,144757.126985 510566.831985,144756.006985 510573.652985,144754.061985 510578.134985,144752.979985 510580.233985,144750.126985 510585.466985,144746.174985 510592.112985,144743.798985 510597.851985,144739.787985 510605.468985,144728.326985 510634.151985,144724.192985 510643.531985,144716.312985 510659.718985,144710.915985 510671.895985,144704.293985 510683.664985,144701.675985 510689.308985,144688.772985 510721.296985,144686.795985 510726.842985,144684.601985 510737.943985,144680.325985 510749.929985,144677.804985 510758.571985,144676.148985 510765.873985,144674.837985 510773.544985,144674.582985 510778.037985,144673.654985 510784.687985,144673.065985 510793.668985,144672.865985 510800.351985,144672.925985 510810.570985,144673.228985 510816.790985,144674.961985 510830.004985,144676.832985 510853.625985,144678.406985 510863.803985,144680.015985 510872.072985,144681.138985 510876.426985,144685.448985 510891.059985,144686.723985 510895.230985,144689.315985 510902.640985,144690.423985 510907.002985,144690.926985 510909.521985,144692.208985 510918.431985,144693.494985 510923.676985,144693.735985 510930.081985,144694.095985 510934.577985,144694.246985 510938.376985,144693.763985 510942.859985,144693.358985 510944.665985,144696.127985 510949.162985,144701.143985 510951.096985,144705.788985 510953.835985,144710.002985 510955.607985,144714.455985 510956.265985,144719.900985 510958.442985,144721.946985 510958.696985,144734.595985 510958.578985,144747.238985 510959.113985)) + POLYGON((144749.805324897 510825.061482914,144752.789028351 510819.62041865,144757.866524274 510811.355078054,144760.486491976 510806.149454063,144761.923067335 510803.434986066,144767.587610419 510793.24202396,144772.632499225 510781.700720814,144776.712345391 510773.707651011,144785.72556147 510758.388342297,144789.013934301 510752.305514056,144792.041340364 510746.276186408,144796.232065554 510737.269227828,144797.461513493 510734.750933975,144802.851102428 510724.215323211,144812.32672505 510703.739682063,144819.532622703 510687.928601084,144819.986383875 510686.436920937,144821.075239258 510683.134446422,144823.155239258 510677.285446422,144823.755352034 510675.657795175,144829.653168763 510660.214156769,144833.20844985 510649.223161446,144835.021528296 510644.229475959,144838.337343242 510636.016090875,144838.465649457 510635.656016669,144838.893478571 510634.134576393,144843.881842558 510612.679649866,144844.855340723 510607.525798029,144845.786560233 510601.444517867,144846.242579414 510597.339265905,144846.319063859 510596.02232684,144846.597559236 510585.2214948,144846.505245047 510585.158526071,144842.681852769 510582.369811905,144842.420062933 510582.165909314,144830.869719025 510581.69593476,144830.480274411 510583.247819704,144830.403008562 510583.447811353,144830.015933856 510585.805165431,144824.807966602 510603.50972512,144822.862966602 510607.99172512,144820.726062732 510612.499221354,144819.644062732 510614.598221354,144818.829365104 510616.134669394,144815.976365104 510621.367669394,144814.590794636 510623.799963586,144813.402521291 510625.798259296,144813.0949506 510626.541166785,144810.160479719 510632.796970601,144807.977881994 510636.941784083,144797.972947012 510661.980746658,144796.957259087 510664.399058888,144792.823259087 510673.779058888,144791.627021635 510676.359575578,144784.335439559 510691.337854647,144779.483161999 510702.285822749,144776.279551757 510708.673751936,144771.096265127 510717.885787628,144770.516318056 510719.136063131,144759.249566685 510747.067617255,144758.178740747 510752.485684136,144755.241424314 510763.144572561,144751.706995828 510773.051883092,144750.442994832 510777.384884522,144749.737494578 510780.495731656,144749.478023586 510782.013963529,144749.462483862 510782.287767375,144748.863209928 510788.403706614,144748.314579795 510792.335161771,144747.992515989 510797.245951313,144747.872572957 510801.253847731,144747.915266496 510808.525268963,144747.990947665 510810.078855983,144749.325187901 510820.252341544,144749.727807841 510824.08284561,144749.805324897 510825.061482914)) + + #78 Polygon - gid: 2578 + + POLYGON((164261.154985 510650.157985,164222.546985 510625.817985,164154.918985 510621.315985,164140.780985 510624.098985,164100.762985 510630.061985,164079.139985 510626.535985,164059.912985 510617.594985,164015.891985 510599.380985,163982.805985 510602.715985,163983.143985 510614.572985,163970.818985 510623.941985,163962.940985 510638.400985,163944.888985 510642.579985,163933.276985 510650.021985,163930.136985 510664.321985,163942.960985 510666.830985,163941.293985 510678.107985,163929.785985 510687.883985,163929.852985 510705.547985,163938.943985 510721.193985,163934.579985 510733.094985,163953.814985 510756.399985,163950.048985 510774.682985,163998.911985 510843.113985,164035.797985 510852.162985,164061.288985 510859.960985,164064.966985 510901.893985,164073.003985 510919.767985,164104.848985 510938.739985,164122.787985 510951.327985,164144.387985 510967.544985,164162.825985 510996.374985,164172.641985 511008.200985,164185.573985 511018.018985,164202.763985 511022.535985,164212.601985 511010.055985,164213.482985 511003.929985,164225.152985 510978.161985,164230.919985 510950.063985,164230.938985 510918.038985,164233.340985 510891.355985,164227.100985 510877.482985,164217.221985 510859.031985,164207.163985 510838.163985,164213.661985 510828.524985,164218.967985 510814.960985,164226.671985 510801.335985,164224.750985 510783.190985,164225.316985 510765.035985,164230.416985 510743.577985,164239.929985 510713.941985,164248.933985 510702.513985,164260.336985 510694.005985,164268.258985 510684.930985,164271.205985 510666.516985,164261.154985 510650.157985)) + MULTIPOLYGON(((164014.772946481 510692.038226625,164012.326520825 510702.178274868,164011.527687693 510703.983065768,164012.792704249 510710.315333713,164019.220139731 510719.696228589,164024.701026238 510731.901634901,164027.926009408 510744.88668568,164028.625355324 510755.663210165,164043.789058394 510776.899470009,164053.667376006 510779.322852758,164057.737747794 510780.44376297,164083.228747794 510788.24176297,164096.890697277 510793.949485374,164109.165116963 510802.229918941,164119.573627528 510812.760344693,164127.710570996 510825.130353169,164132.468221954 510836.901739132,164133.325767413 510825.014170419,164137.645626258 510810.01797644,164144.975438653 510796.240427145,164146.837342966 510793.478516453,164149.121889886 510787.638411963,164149.973044149 510785.847891558,164149.787406278 510780.853921626,164150.353406278 510762.698921626,164152.349592409 510747.69356249,164157.449592409 510726.23556249,164159.005822839 510720.655377845,164166.517509919 510697.254099772,164159.752582182 510696.803758128,164155.266414285 510697.686839558,164151.834541591 510698.279972367,164111.816541591 510704.242972367,164100.248309551 510705.06021904,164088.69238323 510704.084282809,164067.06938323 510700.558282809,164047.515386117 510694.54249017,164029.749639703 510686.281006908,164022.566743301 510683.309032735,164019.818736513 510687.28780718,164014.772946481 510692.038226625)),((164136.84918064 510863.064920405,164137.537585488 510870.913446915,164140.559339427 510872.713689205,164139.602082474 510870.727604686,164136.84918064 510863.064920405))) + + #79 Polygon - gid: 2579 + + POLYGON((161163.886985 511013.234985,161189.226985 511008.259985,161204.882985 511010.529985,161216.939985 511017.641985,161227.792985 511024.762985,161248.543985 511023.948985,161299.183985 511005.191985,161318.473985 510994.650985,161337.727985 510983.346985,161348.559985 510978.469985,161375.078985 510969.443985,161394.349985 510955.624985,161394.328985 510946.004985,161386.939985 510926.037985,161379.543985 510910.182985,161373.427985 510893.386985,161363.695985 510872.502985,161346.474985 510842.958985,161332.028985 510828.673985,161317.614985 510828.796985,161308.031985 510836.768985,161299.658985 510853.659985,161291.142985 510866.375985,161274.318985 510871.326985,161257.475985 510869.066985,161241.807985 510872.311985,161238.216985 510879.558985,161240.655985 510891.564985,161229.883985 510913.302985,161231.180985 510932.556985,161185.371985 510950.503985,161191.407985 510980.108985,161185.480985 510984.191985,161121.102985 510988.479985,161103.734985 510957.896985,161083.239985 510960.482985,161098.380985 511024.842985,161108.119985 511034.441985,161137.241985 511023.833985,161163.886985 511013.234985)) + POLYGON( EMPTY) + + #80 Polygon - gid: 2580 + + POLYGON((153813.688985 511062.953985,153835.321985 511057.586985,153844.786985 511047.891985,153846.824985 511035.417985,153842.431985 511021.764985,153850.025985 511008.873985,153863.361985 510999.755985,153876.654985 510996.614985,153892.257985 510993.431985,153902.800985 510983.707985,153905.732985 510969.043985,153904.396985 510957.029985,153901.984985 510954.939985,153890.617985 510951.489985,153860.008985 510941.167985,153846.688985 510938.404985,153830.265985 510936.142985,153810.244985 510933.880985,153789.735985 510928.797985,153776.421985 510929.931985,153733.777985 510924.325985,153700.997985 510915.447985,153687.636985 510916.347985,153676.673985 510919.325985,153663.820985 510943.732985,153641.900985 510991.329985,153631.225985 511030.452985,153671.961985 511040.388985,153697.242985 511041.748985,153714.534985 511045.144985,153735.736985 511055.102985,153749.989985 511063.251985,153773.223985 511062.327985,153792.770985 511065.572985,153813.688985 511062.953985)) + POLYGON( EMPTY) + + #81 Polygon - gid: 2581 + + POLYGON((144665.365985 511341.906985,144664.510985 511337.457985,144663.984985 511333.542985,144661.230985 511335.031985,144656.989985 511336.582985,144654.973985 511336.925985,144649.894985 511337.240985,144645.424985 511337.740985,144643.682985 511337.588985,144639.352985 511336.370985,144637.147985 511334.599985,144633.775985 511330.501985,144631.204985 511326.779985,144628.821985 511322.413985,144627.874985 511317.609985,144627.824985 511311.225985,144628.204985 511306.750985,144629.551985 511302.647985,144631.234985 511298.457985,144632.940985 511294.276985,144634.697985 511290.801985,144636.006985 511286.610985,144635.336985 511282.657985,144632.316985 511273.996985,144630.183985 511267.028985,144629.061985 511262.662985,144628.107985 511257.545985,144627.616985 511253.074985,144627.010985 511243.356985,144627.072985 511241.389985,144627.116985 511234.355985,144626.579985 511230.453985,144622.517985 511209.850985,144621.773985 511205.415985,144620.186985 511189.774985,144618.065985 511174.597985,144617.482985 511167.000985,144617.043985 511158.007985,144616.767985 511145.828985,144617.268985 511137.576985,144620.089985 511116.855985,144620.822985 511112.419985,144623.492985 511101.825985,144624.945985 511094.587985,144627.469985 511086.420985,144630.555985 511069.704985,144634.070985 511056.450985,144634.616985 511052.168985,144634.472985 511051.111985,144631.341985 511047.649985,144625.618985 511056.693985,144623.466985 511060.456985,144613.544985 511081.937985,144608.763985 511093.902985,144604.703985 511101.953985,144604.128985 511103.439985,144602.908985 511107.755985,144601.369985 511115.489985,144598.939985 511130.473985,144596.298985 511140.582985,144594.291985 511149.356985,144592.663985 511157.537985,144591.198985 511166.160985,144589.244985 511181.651985,144588.862985 511187.962985,144587.885985 511195.707985,144587.384985 511203.960985,144586.684985 511208.405985,144584.601985 511224.769985,144584.400985 511229.274985,144582.378985 511236.355985,144581.725985 511240.804985,144581.099985 511248.591985,144581.095985 511253.941985,144581.897985 511269.049985,144581.451985 511276.710985,144581.585985 511281.208985,144582.173985 511289.881985,144582.056985 511291.823985,144575.283985 511305.626985,144572.076985 511322.283985,144568.363985 511349.427985,144566.469985 511360.018985,144564.565985 511367.244985,144560.273985 511380.836985,144557.896985 511388.835985,144555.477985 511397.505985,144553.900985 511404.108985,144552.233985 511412.954985,144551.618985 511417.905985,144549.373985 511444.507985,144547.950985 511456.490985,144547.265985 511469.973985,144545.938985 511482.897985,144544.783985 511500.860985,144543.674985 511514.445985,144543.507985 511521.138985,144543.695985 511525.637985,144544.907985 511534.198985,144545.816985 511543.153985,144546.797985 511550.352985,144551.118985 511574.736985,144551.888985 511582.932985,144552.571985 511587.378985,144555.698985 511605.441985,144558.436985 511618.524985,144558.653985 511620.435985,144558.639985 511624.942985,144558.299985 511628.256985,144565.200985 511620.333985,144568.479985 511617.196985,144569.415985 511612.446985,144570.165985 511606.524985,144570.813985 511597.777985,144571.561985 511593.330985,144572.193985 511590.917985,144573.736985 511586.693985,144577.541985 511578.519985,144579.708985 511574.574985,144582.277985 511570.335985,144584.829985 511566.786985,144587.868985 511563.470985,144591.176985 511560.405985,144594.825985 511557.595985,144596.719985 511556.343985,144602.203985 511553.326985,144608.153985 511548.349985,144619.625985 511542.308985,144623.156985 511539.530985,144631.920985 511531.965985,144635.205985 511527.763985,144641.644985 511518.581985,144647.686985 511508.167985,144651.603985 511502.244985,144655.044985 511497.794985,144658.227985 511494.613985,144668.411985 511483.048985,144672.012985 511478.307985,144675.713985 511475.049985,144678.988985 511470.922985,144681.256985 511466.552985,144685.996985 511456.770985,144687.908985 511451.367985,144691.283985 511443.499985,144692.095985 511439.073985,144693.475985 511434.284985,144694.371985 511429.253985,144694.509985 511427.819985,144694.410985 511423.320985,144694.807985 511417.069985,144694.285985 511412.598985,144692.567985 511405.382985,144691.736985 511400.949985,144689.740985 511395.877985,144687.240985 511390.324985,144685.113985 511384.496985,144683.189985 511380.429985,144681.438985 511376.739985,144679.837985 511372.530985,144678.788985 511369.942985,144673.535985 511360.160985,144668.260985 511351.627985,144666.478985 511346.301985,144665.365985 511341.906985)) + POLYGON( EMPTY) + + #82 Polygon - gid: 2582 + + POLYGON((150793.118985 511863.872985,150782.435985 511854.966985,150773.079985 511846.582985,150769.853985 511843.245985,150766.986985 511839.782985,150761.511985 511832.617985,150758.605985 511829.192985,150754.526985 511825.034985,150751.182985 511821.998985,150747.703985 511819.159985,150745.002985 511817.382985,150740.884985 511815.528985,150736.708985 511814.410985,150732.238985 511813.744985,150725.323985 511813.170985,150720.857985 511813.353985,150717.259985 511814.287985,150711.627985 511816.933985,150702.186985 511822.826985,150698.518985 511825.423985,150696.368985 511827.525985,150684.761985 511840.202985,150681.550985 511843.503985,150678.272985 511846.599985,150674.783985 511849.436985,150669.637985 511852.923985,150665.663985 511855.000985,150661.936985 511856.225985,150656.873985 511856.914985,150652.348985 511856.798985,150647.905985 511856.025985,150645.239985 511855.186985,150641.073985 511853.447985,150636.151985 511851.082985,150628.316985 511846.527985,150624.260985 511844.691985,150620.988985 511843.836985,150616.496985 511843.242985,150611.814985 511842.919985,150607.312985 511842.716985,150602.796985 511842.724985,150598.313985 511843.011985,150596.601985 511843.287985,150592.221985 511844.505985,150587.641985 511845.379985,150583.110985 511845.114985,150578.119985 511843.789985,150574.644985 511840.859985,150566.899985 511831.685985,150563.749985 511828.530985,150562.674985 511827.708985,150554.656985 511823.535985,150545.568985 511816.704985,150540.506985 511813.718985,150530.264985 511808.717985,150526.014985 511807.641985,150524.251985 511807.730985,150515.536985 511810.459985,150509.160985 511811.415985,150500.505985 511813.304985,150490.484985 511815.200985,150479.709985 511816.692985,150470.899985 511818.531985,150462.891985 511820.493985,150458.194985 511821.964985,150445.836985 511827.404985,150439.625985 511829.715985,150435.355985 511831.140985,150422.598985 511834.889985,150419.093985 511836.166985,150399.357985 511844.231985,150390.792985 511848.186985,150386.777985 511850.257985,150382.945985 511852.571985,150380.704985 511854.175985,150377.924985 511857.651985,150377.614985 511859.079985,150377.897985 511868.209985,150376.511985 511876.021985,150376.611985 511877.158985,150379.114985 511885.853985,150380.117985 511890.230985,150380.935985 511898.667985,150381.832985 511915.743985,150382.366985 511932.541985,150382.275985 511937.039985,150381.956985 511940.848985,150381.344985 511945.308985,150381.694985 511947.764985,150384.059985 511951.718985,150387.229985 511954.008985,150396.270985 511958.492985,150415.434985 511967.136985,150427.214985 511971.698985,150435.461985 511975.194985,150439.538985 511977.090985,150442.724985 511978.823985,150450.449985 511983.451985,150461.357985 511990.730985,150470.449985 511996.184985,150476.812985 512000.277985,150486.281985 512004.468985,150498.388985 512009.375985,150506.829985 512012.490985,150515.408985 512015.156985,150519.751985 512016.347985,150529.479985 512018.627985,150538.331985 512020.289985,150542.988985 512021.027985,150551.938985 512021.972985,150568.897985 512022.823985,150577.823985 512023.998985,150585.204985 512025.356985,150590.396985 512025.748985,150594.855985 512025.332985,150603.774985 512023.841985,150612.102985 512022.714985,150617.473985 512021.715985,150621.801985 512020.489985,150636.118985 512015.843985,150644.319985 512013.498985,150645.997985 512012.737985,150661.643985 512004.213985,150668.485985 511999.122985,150671.737985 511997.405985,150679.881985 511993.545985,150696.995985 511983.795985,150705.252985 511978.647985,150720.985985 511967.981985,150724.570985 511965.274985,150726.337985 511963.711985,150732.784985 511957.421985,150738.545985 511953.334985,150742.362985 511950.937985,150749.200985 511947.223985,150750.312985 511946.426985,150753.762985 511943.523985,150759.775985 511938.828985,150769.269985 511930.492985,150772.469985 511927.344985,150775.669985 511922.275985,150776.549985 511921.269985,150779.777985 511918.119985,150782.178985 511915.393985,150785.867985 511911.585985,150793.096985 511906.023985,150796.180985 511902.741985,150798.947985 511899.183985,150800.512985 511896.731985,150803.753985 511890.480985,150805.353985 511886.291985,150805.688985 511883.904985,150805.356985 511879.352985,150802.648985 511875.749985,150797.659985 511868.435985,150796.383985 511866.983985,150793.118985 511863.872985)) + POLYGON((150457.10488879 511902.90912939,150464.733870064 511906.143144005,150467.087964112 511907.189121685,150471.164964112 511909.085121685,150475.376080646 511911.206976503,150478.562080646 511912.939976503,150481.269290797 511914.486309485,150488.994290797 511919.114309485,150492.08021185 511921.066696571,150501.486797912 511927.343790442,150509.030924817 511931.869270879,150511.024338606 511933.107874813,150512.491255491 511934.051469158,150515.55259617 511935.406425202,150525.464472069 511939.423735439,150530.957806829 511941.45095233,150536.461059094 511943.161136564,150538.233258087 511943.647134491,150544.964737503 511945.224824979,150551.123863489 511946.381226628,150552.802642224 511946.647264572,150557.760384086 511947.17073564,150572.656744079 511947.918232683,150578.686383311 511948.465480049,150587.612383311 511949.640480049,150590.267735925 511950.059246398,150591.408748513 511949.868501946,150593.717167366 511949.519442629,150600.209475453 511948.640860591,150600.252315061 511948.632892472,150612.969191529 511944.506147479,150615.49980374 511943.73400397,150616.316038105 511943.500609313,150621.116996024 511940.885029273,150623.714257734 511938.952457018,150633.468454743 511932.799741904,150636.720454743 511931.082741904,150638.019151806 511930.432505435,150635.050484011 511929.916012029,150625.391778503 511927.56695582,150622.725778503 511926.72795582,150616.34901009 511924.399061755,150612.18301009 511922.660061755,150608.591920771 511921.049135163,150603.669920771 511918.684135163,150603.656921969 511918.677247374,150601.700523332 511919.050586328,150583.263019067 511920.25204025,150578.732019067 511919.98704025,150563.866752358 511917.604015274,150558.875752358 511916.279015274,150543.486379129 511910.314516899,150529.774245546 511901.128361997,150526.299245546 511898.198361997,150517.336788462 511889.24149603,150515.759481157 511887.373165854,150514.988775912 511886.887589413,150514.448819526 511886.997571909,150504.427819526 511888.893571909,150500.771984776 511889.492152952,150492.530977352 511890.633274351,150487.491266548 511891.685263927,150484.051346716 511892.528061469,150476.053921669 511896.04853341,150471.991319844 511897.696881893,150465.780319844 511900.007881893,150463.368057644 511900.858897413,150459.098057644 511902.283897413,150457.10488879 511902.90912939)) + + #83 Polygon - gid: 2583 + + POLYGON((156449.341985 511947.023985,156464.014985 511945.970985,156481.530985 511959.981985,156488.552985 511957.898985,156502.465985 511951.515985,156519.696985 511967.276985,156532.436985 511968.984985,156546.765985 511960.382985,156557.920985 511953.685985,156617.345985 511926.606985,156650.552985 511912.686985,156629.697985 511893.765985,156618.726985 511870.069985,156571.803985 511869.954985,156520.017985 511866.320985,156489.605985 511875.922985,156479.281985 511900.711985,156450.551985 511915.185985,156420.762985 511933.429985,156402.252985 511952.078985,156397.242985 511979.578985,156395.515985 512016.444985,156378.536985 512022.679985,156378.119985 512031.838985,156381.340985 512046.684985,156381.973985 512059.782985,156387.971985 512068.254985,156389.726985 512093.748985,156394.837985 512106.687985,156406.149985 512102.202985,156420.544985 512083.467985,156439.940985 512083.059985,156434.834985 512074.138985,156430.875985 512065.561985,156431.200985 512050.264985,156442.042985 512026.074985,156436.831985 511998.762985,156428.771985 511968.333985,156449.341985 511947.023985)) + POLYGON( EMPTY) + + #84 Polygon - gid: 2584 + + POLYGON((155602.027985 512384.736985,155651.324985 512362.529985,155690.321985 512347.470985,155728.819985 512327.098985,155734.742985 512356.836985,155759.349985 512351.936985,155787.291985 512340.198985,155805.031985 512324.680985,155807.589985 512298.852985,155807.126985 512268.633985,155818.253985 512240.316985,155826.566985 512208.914985,155827.900985 512153.049985,155845.759985 512111.821985,155872.507985 512069.193985,155889.837985 512044.252985,155912.490985 512003.645985,155927.073985 511997.027985,155950.234985 512000.369985,155966.659985 511999.703985,155977.448985 511982.546985,155986.844985 511959.429985,155997.767985 511948.403985,156006.318985 511939.771985,156026.620985 511926.970985,156045.097985 511907.642985,156056.068985 511885.544985,156051.584985 511870.282985,156034.120985 511859.853985,156026.020985 511861.511985,156014.495985 511863.870985,155993.202985 511891.082985,155979.638985 511907.819985,155960.158985 511915.091985,155951.804985 511911.642985,155944.020985 511895.340985,155936.829985 511869.525985,155922.587985 511855.727985,155888.814985 511836.983985,155840.846985 511835.381985,155800.677985 511839.829985,155775.670985 511860.233985,155774.333985 511899.906985,155795.411985 511943.754985,155816.206985 511963.053985,155845.433985 511975.560985,155878.744985 511980.178985,155881.067985 511998.835985,155876.445985 512018.197985,155856.169985 512033.153985,155847.373985 512031.370985,155820.826985 512018.441985,155810.139985 512012.400985,155794.109985 512003.338985,155772.511985 512000.769985,155747.437985 512018.467985,155743.449985 512037.075985,155734.345985 512063.507985,155719.020985 512086.564985,155704.834985 512109.490985,155702.872985 512125.983985,155716.012985 512136.488985,155732.291985 512135.876985,155741.646985 512132.513985,155752.134985 512114.732985,155766.085985 512102.084985,155788.547985 512103.687985,155796.852985 512111.554985,155796.473985 512128.617985,155787.305985 512152.726985,155777.070985 512175.994985,155766.262985 512204.174985,155762.622985 512221.408985,155755.035985 512230.476985,155736.132985 512235.898985,155721.747985 512236.656985,155705.074985 512229.699985,155686.855985 512217.112985,155670.731985 512211.063985,155654.433985 512228.409985,155640.417985 512242.145985,155618.476985 512253.328985,155601.188985 512251.812985,155596.704985 512241.110985,155597.324985 512234.943985,155608.428985 512222.055985,155617.613985 512215.614985,155621.498985 512204.875985,155620.091985 512189.821985,155601.632985 512166.310985,155571.728985 512189.472985,155512.046985 512240.386985,155484.043985 512264.760985,155478.016985 512282.219985,155490.242985 512305.307985,155510.088985 512325.660985,155531.257985 512342.424985,155545.862985 512369.388985,155548.396985 512380.288985,155551.240985 512378.547985,155571.923985 512396.101985,155602.027985 512384.736985)) + POLYGON( EMPTY) + + #85 Polygon - gid: 2585 + + POLYGON((158639.754985 512372.943985,158642.449985 512349.639985,158651.455985 512332.998985,158654.537985 512321.227985,158662.359985 512307.021985,158667.084985 512302.182985,158674.148985 512294.948985,158682.389985 512285.305985,158690.575985 512270.902985,158694.679985 512247.278985,158692.208985 512240.181985,158683.712985 512228.424985,158668.883985 512217.032985,158646.555985 512214.750985,158627.649985 512229.323985,158617.422985 512243.507985,158608.087985 512260.305985,158586.772985 512272.531985,158565.598985 512272.645985,158544.191985 512277.739985,158539.545985 512287.325985,158537.795985 512315.696985,158533.147985 512325.284985,158525.175985 512334.748985,158523.574985 512355.881985,158524.640985 512365.547985,158529.449985 512367.856985,158536.445985 512375.035985,158563.901985 512374.626985,158573.392985 512369.724985,158581.691985 512364.839985,158593.207985 512355.298985,158604.326985 512359.738985,158609.225985 512369.189985,158611.793985 512383.436985,158613.851985 512401.113985,158626.612985 512394.997985,158634.009985 512385.227985,158638.305985 512373.378985,158639.754985 512372.943985)) + POLYGON( EMPTY) + + #86 Polygon - gid: 2586 + + POLYGON((155727.202985 512684.126985,155741.919985 512679.921985,155754.534985 512679.921985,155769.250985 512673.614985,155781.865985 512667.307985,155798.163985 512654.965985,155820.165985 512662.878985,155835.705985 512670.729985,155850.180985 512672.093985,155857.418985 512672.776985,155870.184985 512655.342985,155879.069985 512649.526985,155883.511985 512646.618985,155904.577985 512658.609985,155930.402985 512657.713985,155952.915985 512644.276985,155976.753985 512624.405985,155979.221985 512607.413985,156006.945985 512594.025985,156026.550985 512576.591985,156049.621985 512550.417985,156054.729985 512531.129985,156054.755985 512505.514985,156044.897985 512478.134985,156019.611985 512455.590985,156003.719985 512436.978985,155985.013985 512416.265985,155959.225985 512408.307985,155929.903985 512411.681985,155923.048985 512441.509985,155927.659985 512492.523985,155928.478985 512511.588985,155908.647985 512524.923985,155882.165985 512527.804985,155865.679985 512509.153985,155855.593985 512479.621985,155854.702985 512472.706985,155852.030985 512451.962985,155847.595985 512433.051985,155825.610985 512418.598985,155813.750985 512399.623985,155799.230985 512404.242985,155778.543985 512443.422985,155785.678985 512477.221985,155802.478985 512510.914985,155793.319985 512534.784985,155772.281985 512535.697985,155760.161985 512563.378985,155745.307985 512608.348985,155729.305985 512650.488985,155722.998985 512656.795985,155712.486985 512652.590985,155693.564985 512646.283985,155625.087985 512605.101985,155576.978985 512579.241985,155565.134985 512573.289985,155585.397985 512555.877985,155608.591985 512548.877985,155605.820985 512529.964985,155602.102985 512511.257985,155573.935985 512503.813985,155483.898985 512506.544985,155470.203985 512506.897985,155425.981985 512510.850985,155377.120985 512514.465985,155322.665985 512512.452985,155316.148985 512512.497985,155316.519985 512514.568985,155310.172985 512526.065985,155306.522985 512576.960985,155296.149985 512617.554985,155292.347985 512627.995985,155313.655985 512633.929985,155348.186985 512651.970985,155370.507985 512655.437985,155395.810985 512650.471985,155419.682985 512637.003985,155449.809985 512621.252985,155479.012985 512613.969985,155504.153985 512617.337985,155528.206985 512637.756985,155555.101985 512657.978985,155582.666985 512663.452985,155608.860985 512671.327985,155653.082985 512686.633985,155695.712985 512698.015985,155710.383985 512700.946985,155718.793985 512694.638985,155727.202985 512684.126985)) + POLYGON( EMPTY) + + #87 Polygon - gid: 2587 + + POLYGON((146166.976985 512563.940985,146169.594985 512563.533985,146174.055985 512564.781985,146177.356985 512561.339985,146181.129985 512554.989985,146185.373985 512548.630985,146189.013985 512541.920985,146194.870985 512530.011985,146198.574985 512521.811985,146202.486985 512510.766985,146206.272985 512502.588985,146208.002985 512498.444985,146209.826985 512492.155985,146212.021985 512482.022985,146213.069985 512474.579985,146213.899985 512465.609985,146214.122985 512461.084985,146213.982985 512452.080985,146213.290985 512444.415985,146211.750985 512435.542985,146210.899985 512432.081985,146209.279985 512427.626985,146202.014985 512417.721985,146193.565985 512405.040985,146190.827985 512399.745985,146189.280985 512395.443985,146188.608985 512391.002985,146188.735985 512383.754985,146189.509985 512374.731985,146190.957985 512365.827985,146193.621985 512354.666985,146196.283985 512346.008985,146199.521985 512337.449985,146202.058985 512333.521985,146205.570985 512330.766985,146209.847985 512330.235985,146220.199985 512330.990985,146232.889985 512334.095985,146236.718985 512336.497985,146243.325985 512339.763985,146249.933985 512343.512985,146258.162985 512349.266985,146262.031985 512352.246985,146265.456985 512355.165985,146272.146985 512361.243985,146278.196985 512367.051985,146281.562985 512370.018985,146283.636985 512371.307985,146288.761985 512373.835985,146292.889985 512375.617985,146295.481985 512376.220985,146299.968985 512376.458985,146303.856985 512375.344985,146308.377985 512373.216985,146316.009985 512368.440985,146319.433985 512366.733985,146324.146985 512364.674985,146334.262985 512360.634985,146338.382985 512358.815985,146343.177985 512356.459985,146352.192985 512351.076985,146356.303985 512348.809985,146360.631985 512347.534985,146365.076985 512346.785985,146369.540985 512346.711985,146374.638985 512347.185985,146383.481985 512348.875985,146386.523985 512348.970985,146391.031985 512348.741985,146396.693985 512348.157985,146398.836985 512347.264985,146402.911985 512345.190985,146406.601985 512342.664985,146407.369985 512341.866985,146413.207985 512329.834985,146414.615985 512325.605985,146415.160985 512322.986985,146415.639985 512318.282985,146415.082985 512313.996985,146413.604985 512312.108985,146409.418985 512309.747985,146407.116985 512308.829985,146402.755985 512307.423985,146394.786985 512303.239985,146391.945985 512301.969985,146387.707985 512300.465985,146384.157985 512299.758985,146373.077985 512298.308985,146371.668985 512297.962985,146366.140985 512295.894985,146362.222985 512293.667985,146360.086985 512292.216985,146355.784985 512288.717985,146352.559985 512285.575985,146348.870985 512281.607985,146346.171985 512278.002985,146344.075985 512274.769985,146341.569985 512269.924985,146339.050985 512260.216985,146339.079985 512246.711985,146338.564985 512238.156985,146338.130985 512233.677985,146335.336985 512214.430985,146334.344985 512210.061985,146332.244985 512204.923985,146330.093985 512200.952985,146327.794985 512197.206985,146324.899985 512193.795985,146321.434985 512191.598985,146317.091985 512189.432985,146309.323985 512184.888985,146303.936985 512181.457985,146300.355985 512178.763985,146298.733985 512177.197985,146295.789985 512172.900985,146294.087985 512168.735985,146292.744985 512164.191985,146290.697985 512155.428985,146288.537985 512143.477985,146287.578985 512134.336985,146287.272985 512129.846985,146287.102985 512123.380985,146287.228985 512114.373985,146287.112985 512109.880985,146286.374985 512101.930985,146284.902985 512090.429985,146283.740985 512081.485985,146282.851985 512077.088985,146280.837985 512070.639985,146275.584985 512056.262985,146273.874985 512052.114985,146273.243985 512050.980985,146254.611985 512024.878985,146248.543985 512017.815985,146245.732985 512014.270985,146243.655985 512010.600985,146243.852985 512008.166985,146246.012985 512003.791985,146252.863985 511979.961985,146254.225985 511974.758985,146255.146985 511970.352985,146257.351985 511957.390985,146257.964985 511952.925985,146258.260985 511948.133985,146257.735985 511943.629985,146256.366985 511939.322985,146254.473985 511936.211985,146251.644985 511932.639985,146247.278985 511926.685985,146233.230985 511908.799985,146222.941985 511895.214985,146212.626985 511883.086985,146203.013985 511872.601985,146198.631985 511866.609985,146192.859985 511859.687985,146189.793985 511856.402985,146187.793985 511854.542985,146180.824985 511848.828985,146174.327985 511842.730985,146170.156985 511839.261985,146166.346985 511836.872985,146162.414985 511834.655985,146155.353985 511830.943985,146151.558985 511828.564985,146150.071985 511827.399985,146146.718985 511824.409985,146131.468985 511809.734985,146128.133985 511806.716985,146124.322985 511803.666985,146120.556985 511801.187985,146116.544985 511799.068985,146112.378985 511797.359985,146112.171985 511800.770985,146111.199985 511805.322985,146109.552985 511809.493985,146107.855985 511811.576985,146103.683985 511814.013985,146095.647985 511813.349985,146091.150985 511813.203985,146082.184985 511813.362985,146080.884985 511813.180985,146076.120985 511811.909985,146071.102985 511810.343985,146066.266985 511808.030985,146061.890985 511806.956985,146060.071985 511806.842985,146055.518985 511805.799985,146053.676985 511801.503985,146053.392985 511796.956985,146052.060985 511798.081985,146048.202985 511800.432985,146046.939985 511800.933985,146041.831985 511802.104985,146033.783985 511803.032985,146021.534985 511804.853985,146010.430985 511805.941985,146001.961985 511808.986985,145999.868985 511809.336985,145993.249985 511809.685985,145988.748985 511809.704985,145972.952985 511808.649985,145968.456985 511808.614985,145962.536985 511809.137985,145955.586985 511810.173985,145946.751985 511811.900985,145931.180985 511815.560985,145923.630985 511815.211985,145921.449985 511815.416985,145916.390985 511816.456985,145912.040985 511817.607985,145899.094985 511821.446985,145898.671985 511827.626985,145897.959985 511833.437985,145896.272985 511842.280985,145894.388985 511851.014985,145893.746985 511866.238985,145892.513985 511880.048985,145892.097985 511882.450985,145891.100985 511886.840985,145886.859985 511899.482985,145880.730985 511914.091985,145878.241985 511922.288985,145876.483985 511926.259985,145871.473985 511927.983985,145867.052985 511928.834985,145851.133985 511929.639985,145846.673985 511930.725985,145844.102985 511934.297985,145839.483985 511943.835985,145835.917985 511952.104985,145834.022985 511955.925985,145833.089985 511959.888985,145834.858985 511961.248985,145839.696985 511961.704985,145847.667985 511964.562985,145851.967985 511965.836985,145857.630985 511965.736985,145861.503985 511967.145985,145867.018985 511969.482985,145871.317985 511970.809985,145879.898985 511972.132985,145888.307985 511975.341985,145891.449985 511976.221985,145897.298985 511977.362985,145906.240985 511978.406985,145912.375985 511979.747985,145920.173985 511980.489985,145927.160985 511981.356985,145931.603985 511982.135985,145935.971985 511983.195985,145941.276985 511984.958985,145949.658985 511988.269985,145953.697985 511989.930985,145957.682985 511991.993985,145960.523985 511994.105985,145965.656985 511999.048985,145971.858985 512005.613985,145974.677985 512009.092985,145976.774985 512012.567985,145978.664985 512017.548985,145978.930985 512022.067985,145978.934985 512030.767985,145980.033985 512039.324985,145980.355985 512043.792985,145979.736985 512049.515985,145974.978985 512077.720985,145970.939985 512094.710985,145970.097985 512099.899985,145969.429985 512104.353985,145968.212985 512110.362985,145963.403985 512127.711985,145959.777985 512138.566985,145958.219985 512142.787985,145954.919985 512150.579985,145954.316985 512152.865985,145950.023985 512173.319985,145949.268985 512177.747985,145948.670985 512184.400985,145948.801985 512188.872985,145949.475985 512191.375985,145951.382985 512196.412985,145955.761985 512214.480985,145957.308985 512218.688985,145958.951985 512221.666985,145965.956985 512232.465985,145968.169985 512236.379985,145971.396985 512243.185985,145972.893985 512247.412985,145974.089985 512252.919985,145975.258985 512261.871985,145975.389985 512263.170985,145975.261985 512267.671985,145974.422985 512270.700985,145972.905985 512274.963985,145970.962985 512281.855985,145968.886985 512288.012985,145966.777985 512291.988985,145962.060985 512296.906985,145960.735985 512298.727985,145958.760985 512302.764985,145957.946985 512308.248985,145956.867985 512324.439985,145956.311985 512329.454985,145954.998985 512333.765985,145953.531985 512341.807985,145952.899985 512346.276985,145952.677985 512352.128985,145953.306985 512356.903985,145955.010985 512360.832985,145956.774985 512361.674985,145962.064985 512362.327985,145966.355985 512363.971985,145970.113985 512366.364985,145972.275985 512368.577985,145975.177985 512372.065985,145977.783985 512375.818985,145980.028985 512379.722985,145980.947985 512381.625985,145982.588985 512385.838985,145983.846985 512390.212985,145984.753985 512394.622985,145985.225985 512398.653985,145985.264985 512403.214985,145984.759985 512407.672985,145984.234985 512409.635985,145980.270985 512418.610985,145977.746985 512427.267985,145976.275985 512431.506985,145974.447985 512435.293985,145972.231985 512439.224985,145969.560985 512444.528985,145966.183985 512453.477985,145964.959985 512457.841985,145964.811985 512462.320985,145964.972985 512483.908985,145966.055985 512493.902985,145966.394985 512498.383985,145966.345985 512501.348985,145965.651985 512510.442985,145966.007985 512515.207985,145967.991985 512519.177985,145970.988985 512523.506985,145981.550985 512539.664985,145983.874985 512543.507985,145985.060985 512545.952985,145986.235985 512550.291985,145983.358985 512554.463985,145979.245985 512556.198985,145974.914985 512557.683985,145968.780985 512560.209985,145965.765985 512560.497985,145959.080985 512560.161985,145954.623985 512559.494985,145947.257985 512557.988985,145942.825985 512557.286985,145938.688985 512556.844985,145934.331985 512557.437985,145932.222985 512558.727985,145928.878985 512561.837985,145925.633985 512565.565985,145922.904985 512569.126985,145914.850985 512580.807985,145912.164985 512584.415985,145905.868985 512591.644985,145894.297985 512609.011985,145889.770985 512616.314985,145882.367985 512628.854985,145879.953985 512632.675985,145877.267985 512636.269985,145874.109985 512639.263985,145869.573985 512643.201985,145859.814985 512652.529985,145850.545985 512661.964985,145845.579985 512667.687985,145842.865985 512671.301985,145840.476985 512675.106985,145838.542985 512678.871985,145836.761985 512683.029985,145835.290985 512687.282985,145834.663985 512692.058985,145833.664985 512697.458985,145832.411985 512701.812985,145831.523985 512706.199985,145831.460985 512712.157985,145832.017985 512721.523985,145832.476985 512725.999985,145833.300985 512728.179985,145836.406985 512734.549985,145838.616985 512738.457985,145840.467985 512740.636985,145843.809985 512743.682985,145846.311985 512745.633985,145849.977985 512748.254985,145854.914985 512751.492985,145860.112985 512754.126985,145878.402985 512762.178985,145898.977985 512770.121985,145903.383985 512771.155985,145907.855985 512770.825985,145912.244985 512769.534985,145914.149985 512768.607985,145917.905985 512766.050985,145929.966985 512758.667985,145933.945985 512756.582985,145937.171985 512755.312985,145941.494985 512754.031985,145945.543985 512753.171985,145953.081985 512751.955985,145960.672985 512750.985985,145965.480985 512750.093985,145973.107985 512745.253985,145975.481985 512743.387985,145978.768985 512740.319985,145981.568985 512736.896985,145986.785985 512729.543985,145992.444985 512719.776985,145996.313985 512714.047985,145999.352985 512710.106985,146008.645985 512699.953985,146032.532985 512667.829985,146036.110985 512662.656985,146041.021985 512655.112985,146046.773985 512645.487985,146061.241985 512626.123985,146063.657985 512622.326985,146074.236985 512610.353985,146077.335985 512607.099985,146083.940985 512601.665985,146089.128985 512596.256985,146090.859985 512595.001985,146096.079985 512592.079985,146100.081985 512589.961985,146104.225985 512588.255985,146107.119985 512587.579985,146111.607985 512586.972985,146116.021985 512586.112985,146118.617985 512585.203985,146127.304985 512581.405985,146134.333985 512579.170985,146138.669985 512577.976985,146146.690985 512576.867985,146149.532985 512576.265985,146153.768985 512574.808985,146154.806985 512574.093985,146158.013985 512570.866985,146163.266985 512566.206985,146166.976985 512563.940985)) + POLYGON((145961.546571986 511912.662006029,145964.929660209 511913.786300946,145968.831148249 511915.203927207,145977.213148249 511918.514927207,145978.184122361 511918.906330695,145982.223122361 511920.567330695,145988.178345514 511923.326895495,145992.163345514 511925.389895495,146002.428346021 511931.803847377,146005.269346021 511933.915847377,146012.547718291 511940.082553283,146017.680718291 511945.025553283,146020.175831511 511947.544661152,146026.377831511 511954.109661152,146030.130500873 511958.397140147,146032.949500873 511961.876140147,146038.891918642 511970.342878856,146040.988918642 511973.817878856,146046.896740518 511985.960854318,146048.786740518 511990.941854318,146052.005918251 512001.861170943,146053.535391539 512013.141919689,146053.801391539 512017.660919689,146053.930977073 512022.033502245,146053.93277973 512025.954280873,146054.422971197 512029.770994603,146054.839972833 512033.933864122,146055.161972833 512038.401864122,146054.921099551 512051.857951959,146054.302099551 512057.580951959,146053.692078361 512061.991728103,146048.934078361 512090.196728103,146047.945483201 512095.067170181,146044.535831084 512109.409826645,146044.201732362 512111.468779462,146043.600455739 512115.477890356,146042.937560607 512119.241440403,146041.720560607 512125.250440403,146040.487739668 512130.396952099,146035.678739668 512147.745952099,146034.540145377 512151.474280488,146030.914145377 512162.329280488,146030.138053291 512164.537367942,146028.580053291 512168.758367942,146027.281759347 512172.036426395,146026.57950483 512173.694598273,146024.940649099 512181.502926976,146026.518236958 512188.012143106,146028.878434452 512191.650654561,146031.243915918 512195.552347259,146033.456915918 512199.466347259,146035.938356115 512204.248258055,146039.165356115 512211.054258055,146042.094355838 512218.148378153,146043.591355838 512222.375378153,146046.185453891 512231.495680334,146047.381453891 512237.002680334,146048.458578972 512243.208536569,146049.627578972 512252.160536569,146049.880491616 512254.346644456,146050.011491616 512255.645644456,146050.359676122 512265.302982437,146050.231676122 512269.803982437,146047.540509038 512287.692348707,146046.701509038 512290.721348707,146045.082457196 512295.845347966,146044.409241749 512297.737185443,146043.149165993 512302.206790234,146042.031853863 512305.818786975,146039.955853863 512311.975786975,146035.143089159 512323.157382301,146033.900092563 512325.500746201,146036.782654969 512329.289067883,146039.388654969 512333.042067883,146042.800518365 512338.43114755,146045.045518365 512342.33514755,146047.566044974 512347.107873011,146048.485044974 512349.010873011,146050.833693904 512354.404895916,146052.474693904 512358.617895916,146054.667103858 512365.108698415,146055.925103858 512369.482698415,146057.30935832 512375.104056972,146058.21635832 512379.514056972,146059.245062512 512385.900636058,146059.717062512 512389.931636058,146060.223243322 512398.012701713,146060.262243322 512402.573701713,146059.7883581 512411.656955259,146059.2833581 512416.114955259,146057.213496243 512427.050516025,146056.688496243 512429.013516025,146052.841276933 512439.937415777,146050.883339039 512444.370436111,146049.74912714 512448.260639125,146048.602040581 512451.855809194,146047.131040581 512456.094809194,146043.818802383 512464.110172266,146041.990802383 512467.897172266,146039.885701639 512471.925759398,146039.942773595 512479.578364232,146040.61946415 512485.822912165,146040.842276676 512488.245195917,146041.181276676 512492.726195917,146041.214881873 512493.865328219,146044.32877048 512498.629029421,146045.728476222 512500.854553149,146048.052476222 512504.697553149,146051.355132213 512510.775283735,146052.541132213 512513.220283735,146057.453576793 512526.349091164,146057.783246656 512527.566484813,146059.446185907 512526.635621117,146060.997538858 512525.79105702,146064.999538858 512523.67305702,146071.530800114 512520.609048209,146075.674800114 512518.903048209,146087.166213225 512515.221991634,146090.060213225 512514.545991634,146095.149883514 512513.609553683,146097.260587609 512512.686743259,146104.578561552 512509.932145889,146111.607561552 512507.697145889,146114.422443778 512506.86240649,146118.758443778 512505.66840649,146119.768804542 512505.460385872,146124.173587901 512502.201467244,146125.310248092 512501.507216032,146127.027052853 512498.01644808,146128.929097065 512493.805659059,146131.790404731 512485.727145977,146134.426614427 512479.258478887,146137.160638771 512473.35281299,146138.138723824 512468.83758026,146138.55356072 512465.891367461,146139.070326178 512460.306564851,146139.094263736 512459.820836383,146139.074009868 512458.518223309,146131.150856926 512446.62646068,146126.945590272 512439.489831226,146124.207590272 512434.194831226,146120.252440831 512425.124963807,146118.705440831 512420.822963807,146115.125150132 512406.665043552,146114.453150132 512402.224043552,146113.620495716 512389.689031063,146113.747495716 512382.441031063,146114.010409293 512377.344966647,146114.784409293 512368.321966647,146115.482478327 512362.693369809,146116.930478327 512353.789369809,146118.007278605 512348.415505667,146120.671278605 512337.254505667,146121.93390625 512332.625674578,146124.59590625 512323.967674578,146126.136049455 512319.470953069,146129.374049455 512310.911953069,146136.520249982 512296.758691278,146139.057249982 512292.830691278,146146.650527786 512282.975937982,146155.768390522 512274.511978536,146159.280390522 512271.756978536,146170.629720208 512264.403531091,146183.115063238 512259.207697847,146196.330495087 512256.338406173,146200.607495087 512255.807406173,146215.30345241 512255.434662316,146225.65545241 512256.189662316,146238.02521772 512258.140033884,146250.71521772 512261.245033884,146262.104322338 512265.019777129,146264.860929343 512266.455561697,146264.051157917 512260.055933909,146264.075141688 512248.886939879,146263.831185196 512244.834419908,146263.647011297 512244.717118879,146258.848664716 512241.391643106,146255.267664716 512238.697643106,146248.262583799 512232.720240905,146246.640583799 512231.154240905,146236.862440829 512219.587984079,146233.918440829 512215.290984079,146226.363081824 512201.271834749,146224.661081824 512197.106834749,146222.163612255 512189.993562596,146220.820612255 512185.449562596,146219.711138352 512181.252384873,146217.664138352 512172.489384873,146216.8937512 512168.768215609,146214.7337512 512156.817215609,146213.947353077 512151.303432546,146212.988353077 512142.162432546,146212.752553856 512139.436514606,146212.446553856 512134.946514606,146212.298892925 512131.818156614,146212.128892925 512125.352156614,146212.110322503 512122.331903677,146212.215442812 512114.817470142,146212.202599351 512114.320007444,146211.816466238 512110.160443428,146210.518873503 512100.022118668,146209.861513672 512094.9623714,146209.780118043 512094.701735643,146207.132247706 512087.454746906,146195.526825505 512071.19644236,146191.655494679 512066.690310254,146189.777206437 512064.414973587,146186.966206437 512060.869973587,146180.460987801 512051.211022651,146178.383987801 512047.541022651,146172.379144857 512033.937909804,146169.175992617 512019.417488541,146168.900437923 512004.550515496,146169.097437923 512002.116515496,146171.563840795 511988.185002364,146175.219078694 511978.594789147,146179.898286967 511962.318985156,146174.248642708 511955.125823338,146173.443425464 511954.081854714,146164.435871062 511942.188801302,146156.400986805 511932.741678058,146147.732020724 511923.286345762,146142.475204054 511916.874504711,146139.501988848 511912.808894142,146137.197065522 511910.044743195,146133.271902142 511906.826435899,146129.497770574 511903.514605224,146126.031658823 511900.261357655,146120.454780701 511897.329567315,146115.518307519 511894.490179218,146111.723307519 511892.111179218,146106.696454615 511888.580879625,146097.507919426 511888.75926053,146091.340424848 511888.249651719,146090.59870786 511888.22557107,146083.514800452 511888.351194679,146071.786396658 511887.638616,146070.486396658 511887.456616,146061.55176564 511885.646332782,146056.78776564 511884.375332782,146053.777983367 511883.504609645,146048.759983367 511881.938609645,146043.912861215 511880.034496976,146043.324811988 511879.949292499,146038.771811988 511878.906292499,146037.122148048 511878.360987132,146032.563666518 511879.038674687,146028.848664137 511879.496533841,146026.841995148 511879.693152705,146014.332026289 511882.9598319,146012.239026289 511883.3098319,146003.818024229 511884.232946768,145997.199024229 511884.581946768,145993.566578491 511884.685316788,145989.065578491 511884.704316787,145983.750940641 511884.538263377,145971.08566392 511883.692361443,145968.316353774 511884.105167963,145967.434787875 511884.277489899,145967.216830011 511886.718688686,145966.413880576 511892.847634692,145965.997880576 511895.249634692,145965.235566751 511899.061046277,145964.238566751 511903.451046277,145962.206542228 511910.694700251,145961.546571986 511912.662006029)) + + #88 Polygon - gid: 2588 + + POLYGON((167532.477985 512809.448985,167555.559985 512773.894985,167560.645985 512730.879985,167581.079985 512731.212985,167606.259985 512686.118985,167617.210985 512664.753985,167628.468985 512640.940985,167597.450985 512637.978985,167581.803985 512637.728985,167556.555985 512632.534985,167547.781985 512627.528985,167513.601985 512631.705985,167490.695985 512631.340985,167471.007985 512626.155985,167475.732985 512640.627985,167482.838985 512659.940985,167492.745985 512684.143985,167503.099985 512701.159985,167507.038985 512713.225985,167508.550985 512727.632985,167499.191985 512749.026985,167495.486985 512763.329985,167491.846985 512768.058985,167481.381985 512777.436985,167460.916985 512781.885985,167425.096985 512774.037985,167424.939985 512795.525985,167423.600985 512814.612985,167420.790985 512833.544985,167420.668985 512850.249985,167421.333985 512859.894985,167427.557985 512867.347985,167437.147985 512869.901985,167461.115985 512877.483985,167486.197985 512894.246985,167505.321985 512851.981985,167514.324985 512823.525985,167522.807985 512814.080985,167532.477985 512809.448985)) + POLYGON( EMPTY) + + #89 Polygon - gid: 2589 + + POLYGON((164372.606985 512890.176985,164324.811985 512880.193985,164323.666985 512914.388985,164331.604985 512958.853985,164350.402985 512964.195985,164391.299985 512979.726985,164454.259985 513002.043985,164502.492985 513022.119985,164552.192985 513041.053985,164558.382985 513043.657985,164576.953985 513051.470985,164592.038985 513040.219985,164595.863985 513032.750985,164611.578985 513009.064985,164629.578985 512994.920985,164626.260985 512987.836985,164600.829985 512976.485985,164523.959985 512955.303985,164510.527985 512945.800985,164431.119985 512911.854985,164372.606985 512890.176985)) + POLYGON( EMPTY) + + #90 Polygon - gid: 2590 + + POLYGON((155418.520985 513085.717985,155400.143985 513071.569985,155370.702985 513097.312985,155348.413985 513124.256985,155334.276985 513145.103985,155324.433985 513167.135985,155314.900985 513197.823985,155293.396985 513250.465985,155281.650985 513277.996985,155264.569985 513307.253985,155252.427985 513331.225985,155236.340985 513356.837985,155217.667985 513407.428985,155244.525985 513419.754985,155271.368985 513429.290985,155283.571985 513410.496985,155322.096985 513324.107985,155339.112985 513295.890985,155349.832985 513271.657985,155363.984985 513253.183985,155421.428985 513170.677985,155456.713985 513126.870985,155443.701985 513110.996985,155418.520985 513085.717985)) + POLYGON( EMPTY) + + #91 Polygon - gid: 2591 + + POLYGON((166387.863985 513465.987985,166413.814985 513435.239985,166454.386985 513435.727985,166462.438985 513436.310985,166456.999985 513382.178985,166446.221985 513361.906985,166439.149985 513358.988985,166405.819985 513348.211985,166349.398985 513333.283985,166288.061985 513312.194985,166276.204985 513316.629985,166264.022985 513356.675985,166262.695985 513364.228985,166258.961985 513385.471985,166282.343985 513410.305985,166286.133985 513412.866985,166327.046985 513440.506985,166354.031985 513472.209985,166380.174985 513466.677985,166387.863985 513465.987985)) + POLYGON( EMPTY) + + #92 Polygon - gid: 2592 + + POLYGON((153201.327985 513295.818985,153226.912985 513272.838985,153240.302985 513281.911985,153282.966985 513342.907985,153287.232985 513349.007985,153310.162985 513372.145985,153338.326985 513391.395985,153372.548985 513386.775985,153399.672985 513387.103985,153440.243985 513369.694985,153483.249985 513348.552985,153521.235985 513335.287985,153552.489985 513341.581985,153585.786985 513360.695985,153617.380985 513383.704985,153639.382985 513396.019985,153663.846985 513408.126985,153718.985985 513419.295985,153723.902985 513420.291985,153763.134985 513416.882985,153805.106985 513411.106985,153825.172985 513392.221985,153822.154985 513354.195985,153791.182985 513314.212985,153756.511985 513292.424985,153715.682985 513274.824985,153689.942985 513246.766985,153691.749985 513225.302985,153710.502985 513199.946985,153745.088985 513192.753985,153766.799985 513182.803985,153787.870985 513144.522985,153784.039985 513111.169985,153761.533985 513086.127985,153735.204985 513069.676985,153715.986985 513046.641985,153705.754985 513022.981985,153712.351985 512993.515985,153716.387985 512988.183985,153736.567985 512961.525985,153775.863985 512967.269985,153804.701985 512977.344985,153840.921985 512987.562985,153863.302985 513002.651985,153879.277985 513023.277985,153891.556985 513047.051985,153902.749985 513097.542985,153906.019985 513136.783985,153914.811985 513155.032985,153934.801985 513183.161985,153941.688985 513209.182985,153945.277985 513236.635985,153954.682985 513271.076985,153974.307985 513291.640985,153998.334985 513310.524985,154022.287985 513346.805985,154047.856985 513378.812985,154086.098985 513411.216985,154113.196985 513422.599985,154142.014985 513416.474985,154164.428985 513408.373985,154165.569985 513407.127985,154178.679985 513392.818985,154205.335985 513385.772985,154230.846985 513375.101985,154244.263985 513337.841985,154243.386985 513308.802985,154208.806985 513283.898985,154177.676985 513268.476985,154162.078985 513245.276985,154158.446985 513221.398985,154157.986985 513171.460985,154149.270985 513136.844985,154123.459985 513090.000985,154107.167985 513068.292985,154094.948985 513052.011985,154076.373985 513047.009985,154061.578985 513057.829985,154031.411985 513063.123985,153984.551985 513054.041985,153957.058985 513028.116985,153947.947985 513002.556985,153952.346985 512983.883985,153976.123985 512949.924985,153983.887985 512932.847985,153996.487985 512894.246985,154028.021985 512877.669985,154068.066985 512863.923985,154075.796985 512828.768985,154074.893985 512770.551985,154043.848985 512733.687985,154003.264985 512710.015985,153966.255985 512712.388985,153936.827985 512716.348985,153912.933985 512723.953985,153879.560985 512721.080985,153843.470985 512726.852985,153820.456985 512739.259985,153797.975985 512758.057985,153767.137985 512785.980985,153744.767985 512802.198985,153720.964985 512810.467985,153708.070985 512834.152985,153679.882985 512843.837985,153654.329985 512844.694985,153636.123985 512831.799985,153626.553985 512805.764985,153605.236985 512802.037985,153582.908985 512813.348985,153573.985985 512817.868985,153560.453985 512847.489985,153551.985985 512889.573985,153555.109985 512925.676985,153578.672985 512951.618985,153597.250985 512967.807985,153596.944985 512978.668985,153587.475985 512994.806985,153576.295985 513010.457985,153558.742985 513027.177985,153552.552985 513043.269985,153557.760985 513070.500985,153564.618985 513091.397985,153563.372985 513099.704985,153540.931985 513098.182985,153513.679985 513097.136985,153451.601985 513088.120985,153434.166985 513073.086985,153414.508985 513059.064985,153388.431985 513055.047985,153368.376985 513057.902985,153357.554985 513073.586985,153361.949985 513104.716985,153363.585985 513143.808985,153363.701985 513182.599985,153356.162985 513189.535985,153341.513985 513187.480985,153310.732985 513173.723985,153275.728985 513162.829985,153233.550985 513165.629985,153209.115985 513186.380985,153197.266985 513215.733985,153184.292985 513230.539985,153146.242985 513231.663985,153118.440985 513226.217985,153096.885985 513247.200985,153093.357985 513260.228985,153092.263985 513262.605985,153087.803985 513263.035985,153082.778985 513262.845985,153076.497985 513261.659985,153071.281985 513260.063985,153055.923985 513250.436985,153033.931985 513239.087985,153015.307985 513233.412985,153006.635985 513232.228985,152996.172985 513231.665985,152987.242985 513230.525985,152982.556985 513230.723985,152974.418985 513231.858985,152970.794985 513232.794985,152961.965985 513239.194985,152955.583985 513250.126985,152952.564985 513254.159985,152941.417985 513259.329985,152928.100985 513267.043985,152916.934985 513271.741985,152911.597985 513274.544985,152905.880985 513279.270985,152902.860985 513283.303985,152910.867985 513287.443985,152915.392985 513290.322985,152928.090985 513301.585985,152939.258985 513309.171985,152947.015985 513313.813985,152952.723985 513316.300985,152960.090985 513318.841985,152983.972985 513325.878985,152991.794985 513328.551985,152999.927985 513332.409985,153004.955985 513335.231985,153019.213985 513344.762985,153023.201985 513346.836985,153033.085985 513351.198985,153043.206985 513354.628985,153051.243985 513358.682985,153058.527985 513363.312985,153061.845985 513366.353985,153064.669985 513369.434985,153068.040985 513374.363985,153072.140985 513386.330985,153072.901985 513390.757985,153073.871985 513400.687985,153073.924985 513405.177985,153072.405985 513410.305985,153067.072985 513421.537985,153063.536985 513427.582985,153053.230985 513442.950985,153039.346985 513464.721985,153026.435985 513482.811985,153012.952985 513509.466985,153009.212985 513518.289985,153000.494985 513543.991985,152997.121985 513556.173985,152995.943985 513562.563985,152995.654985 513566.242985,152996.366985 513572.809985,152998.891985 513581.458985,153001.483985 513586.984985,153020.855985 513620.435985,153026.242985 513628.995985,153033.223985 513644.556985,153035.690985 513648.323985,153038.496985 513651.695985,153042.246985 513654.701985,153049.671985 513658.825985,153056.569985 513661.100985,153068.194985 513666.667985,153079.818985 513672.234985,153088.929985 513675.960985,153095.902985 513680.122985,153099.932985 513682.158985,153105.266985 513687.400985,153109.487985 513690.840985,153114.233985 513696.130985,153122.711985 513704.466985,153135.555985 513715.121985,153137.765985 513717.391985,153139.714985 513721.448985,153142.866985 513724.734985,153145.367985 513728.862985,153149.163985 513737.372985,153150.038985 513740.992985,153150.096985 513745.498985,153149.465985 513749.556985,153147.941985 513753.792985,153146.556985 513756.418985,153221.601985 513713.434985,153243.039985 513693.223985,153249.433985 513648.436985,153241.906985 513608.578985,153239.679985 513583.675985,153242.975985 513553.159985,153244.171985 513516.224985,153234.234985 513488.502985,153208.367985 513465.446985,153196.520985 513425.096985,153191.753985 513354.604985,153201.327985 513295.818985)) + MULTIPOLYGON(((153314.366408853 513256.946373533,153344.425090418 513299.920762731,153344.428307148 513299.925362002,153345.019027492 513300.770039474,153357.292865102 513313.15521412,153362.514942791 513312.450229054,153373.455864573 513311.781468071,153384.696070673 513311.917391519,153408.891657558 513301.535074788,153450.161712931 513281.246475274,153458.523693422 513277.746131484,153496.509693422 513264.481131484,153509.454653284 513261.219096639,153522.772872664 513260.303733478,153536.04239993 513261.764042798,153567.29639993 513268.058042798,153578.904974802 513271.387624017,153589.828661247 513276.537206147,153623.125661247 513295.651206147,153629.939444942 513300.069585791,153651.402601521 513315.70058439,153634.676215225 513297.467913577,153625.451760944 513285.053823728,153618.969762242 513271.011606082,153615.505862725 513255.938398603,153615.207362908 513240.475181556,153617.014362908 513219.011181556,153619.43248915 513205.423855392,153624.299289231 513192.5096375,153631.44997307 513180.70580391,153650.20297307 513155.34980391,153659.283744334 513145.160222132,153670.060787432 513136.785060901,153682.177189719 513130.501687667,153688.930355783 513128.441002977,153685.92154806 513126.211424445,153677.615653278 513117.723513198,153658.397653278 513094.688513198,153647.148394857 513076.411911219,153637.42076158 513053.918185328,153637.324677965 513054.052693795,153632.951539397 513059.089474235,153635.879610916 513068.011595924,153639.353840605 513085.097083656,153638.789276955 513102.523082361,153637.543276955 513110.830082361,153634.201590111 513124.368899897,153628.411229936 513137.055041166,153620.372379684 513148.449923257,153610.362956986 513158.159604431,153598.729005737 513165.8484034,153585.872732732 513171.250504441,153572.238602643 513174.179147122,153558.297972073 513174.533082957,153536.95533708 513173.085576586,153510.803415323 513172.081800344,153502.900335114 513171.358270009,153440.822335114 513162.342270009,153438.640153453 513161.811056861,153438.701649662 513182.375707175,153437.138951167 513197.831925132,153432.425490879 513212.634627326,153424.763496524 513226.148714148,153414.481700623 513237.794373132,153406.942700623 513244.730373132,153393.622779106 513254.511086581,153378.484258408 513261.137386896,153362.262083874 513264.287580253,153345.743810109 513263.808730975,153331.094810109 513261.753730975,153314.366408853 513256.946373533)),((153663.604508215 512933.649641924,153674.652150649 512919.055585829,153656.843931777 512919.652840303,153654.048229341 512919.443407929,153657.699714222 512923.412589569,153663.604508215 512933.649641924)),((153758.883863202 512888.990949085,153786.711657314 512893.058611173,153800.600235846 512896.466610122,153827.272897789 512905.785115881,153861.285378758 512915.380354162,153872.465013832 512919.518607333,153882.847749304 512925.375926157,153895.692678836 512934.035822574,153910.714944618 512912.580587528,153913.88546164 512905.607001851,153925.190173663 512870.974209091,153930.971355511 512857.742584438,153939.180996602 512845.864042957,153949.51479589 512835.778878268,153961.58971764 512827.860910141,153993.12371764 512811.283910141,154000.467606639 512808.115371856,154000.317352548 512798.428392478,153994.845561675 512791.930982307,153985.236205669 512786.325998191,153973.665681018 512787.067894892,153953.32758408 512789.804705544,153935.680678951 512795.421375566,153921.251842618 512798.491312861,153906.501211173 512798.677605234,153882.307675006 512796.594842839,153867.870062007 512798.903900812,153862.737031022 512801.671151852,153847.220330287 512814.645794457,153817.478242466 512841.57647473,153811.160108057 512846.702090734,153788.790108057 512862.920090734,153773.268486522 512871.017112799,153766.206508123 512881.53716961,153758.883863202 512888.990949085)),((153990.108182012 513131.514460519,153995.936815762 513139.716243348,154002.712902558 513151.332638848,154007.305505499 513163.972417125,154014.192505499 513189.993417125,154016.056172848 513199.460774779,154018.980204051 513221.827291528,154022.036739822 513233.020289774,154024.865966578 513235.984886921,154044.680163522 513251.557837979,154053.512327266 513259.726747821,154060.924709775 513269.202759109,154083.006073029 513302.648838523,154101.904440147 513326.305611818,154122.168713438 513343.476353717,154123.380753089 513342.153464673,154133.958162066 513332.611356302,154136.654555011 513330.981247067,154133.313214698 513328.948927954,154123.567306259 513320.411007245,154115.43630788 513310.323109212,154099.83830788 513287.123109212,154092.193301943 513272.498140444,154087.931829395 513256.555252408,154084.299829395 513232.677252408,154083.450166684 513222.089812354,154083.072573594 513181.097978162,154078.906777441 513164.553324694,154062.016455659 513133.899330911,154044.375613461 513136.995118314,154030.747603531 513138.121042257,154017.141679456 513136.753859234,153990.108182012 513131.514460519)),((153129.558892559 513463.256147829,153128.274910414 513465.451190834,153125.827034416 513469.355580607,153116.002068797 513484.006276477,153102.582457504 513505.049085282,153100.393635915 513508.291543318,153090.790757281 513521.74643252,153081.018927562 513541.064694122,153079.347575667 513545.007565183,153073.620678631 513561.891335271,153085.066941185 513581.656404892,153089.719238659 513589.048954806,153093.155431415 513595.464797976,153100.588321987 513599.024273401,153100.590588832 513599.025358999,153110.237478323 513603.645475464,153117.319437878 513606.54168678,153127.369021378 513611.56036014,153132.077087556 513614.370480811,153133.752777555 513615.217057693,153143.648069656 513621.216459835,153152.502673599 513628.666669284,153155.350295181 513631.465175534,153156.868974625 513632.702857904,153165.313688058 513640.756148192,153168.491595461 513644.298316368,153173.036019042 513648.766624338,153173.195605074 513648.899012159,153168.20959292 513622.496398573,153167.205092577 513615.259349391,153164.978092577 513590.356349391,153165.113666398 513575.622157955,153168.106611313 513547.911991985,153168.669434958 513530.530811951,153158.464435212 513521.434802591,153148.98341495 513511.256076238,153141.545183943 513499.501547968,153136.405612332 513486.575565644,153129.558892559 513463.256147829))) + + #93 Polygon - gid: 2593 + + POLYGON((144142.989985 514088.951985,144136.449985 514054.961985,144132.731985 514033.263985,144127.866985 514013.332985,144126.033985 514004.523985,144123.194985 513984.498985,144121.950985 513977.743985,144119.474985 513965.987985,144116.997985 513955.498985,144114.004985 513944.396985,144111.364985 513935.792985,144104.055985 513915.874985,144099.268985 513901.813985,144095.552985 513888.833985,144092.293985 513878.724985,144090.002985 513870.475985,144088.955985 513866.101985,144087.123985 513855.157985,144085.447985 513846.294985,144084.879985 513841.845985,144084.800985 513839.927985,144085.669985 513820.505985,144086.874985 513812.816985,144087.854985 513808.424985,144085.355985 513807.847985,144081.847985 513810.575985,144081.061985 513814.139985,144080.321985 513815.397985,144076.741985 513819.927985,144070.813985 513826.699985,144068.515985 513829.942985,144066.267985 513833.838985,144065.506985 513835.614985,144064.259985 513839.956985,144063.081985 513846.147985,144062.077985 513852.889985,144060.916985 513861.814985,144059.234985 513868.846985,144058.119985 513877.778985,144056.474985 513887.398985,144055.675985 513904.802985,144055.567985 513911.744985,144055.264985 513916.555985,144053.261985 513926.195985,144051.759985 513939.993985,144051.299985 513947.409985,144050.945985 513963.879985,144051.901985 513981.625985,144052.777985 514006.209985,144052.802985 514010.705985,144052.525985 514016.993985,144051.223985 514036.894985,144051.208985 514041.388985,144051.664985 514047.744985,144052.166985 514052.223985,144053.651985 514062.584985,144054.499985 514067.055985,144055.829985 514071.244985,144056.995985 514072.928985,144061.349985 514075.995985,144065.576985 514077.579985,144071.276985 514083.651985,144073.625985 514085.443985,144077.782985 514087.370985,144083.025985 514085.365985,144087.943985 514084.820985,144092.174985 514086.440985,144096.761985 514089.493985,144100.786985 514096.214985,144106.124985 514105.807985,144109.287985 514110.877985,144111.976985 514114.527985,144115.094985 514118.007985,144119.064985 514120.147985,144120.248985 514120.616985,144124.620985 514121.695985,144137.912985 514121.582985,144151.392985 514120.745985,144147.230985 514106.336985,144142.989985 514088.951985)) + POLYGON( EMPTY) + + #94 Polygon - gid: 2594 + + POLYGON((146479.081985 514136.773985,146478.714985 514132.400985,146477.568985 514128.020985,146476.252985 514124.982985,146473.696985 514121.266985,146471.885985 514119.791985,146467.951985 514117.478985,146464.896985 514115.364985,146459.731985 514111.590985,146449.118985 514103.426985,146445.431985 514100.853985,146438.988985 514097.422985,146420.476985 514084.864985,146410.008985 514078.144985,146406.594985 514075.475985,146403.293985 514072.424985,146402.417985 514071.373985,146399.916985 514067.612985,146396.063985 514062.810985,146394.253985 514060.275985,146390.917985 514055.377985,146385.928985 514047.887985,146381.971985 514040.637985,146371.896985 514023.770985,146363.206985 514010.769985,146359.366985 514005.398985,146356.174985 514000.205985,146350.242985 513986.956985,146348.661985 513982.759985,146348.018985 513980.004985,146345.920985 513967.273985,146343.206985 513954.080985,146342.126985 513949.607985,146340.683985 513945.344985,146336.388985 513938.017985,146333.562985 513933.769985,146325.253985 513924.184985,146323.627985 513922.704985,146316.621985 513917.038985,146310.551985 513911.712985,146307.028985 513908.936985,146303.951985 513907.084985,146299.856985 513905.177985,146294.015985 513903.097985,146288.626985 513900.881985,146284.619985 513897.582985,146282.346985 513893.679985,146280.440985 513888.656985,146279.676985 513884.231985,146279.152985 513879.731985,146278.585985 513876.871985,146278.129985 513872.432985,146278.560985 513870.690985,146280.450985 513866.529985,146282.958985 513858.900985,146284.615985 513854.733985,146286.254985 513851.405985,146288.509985 513847.461985,146291.167985 513843.864985,146292.806985 513842.160985,146296.325985 513839.297985,146300.136985 513836.851985,146302.653985 513835.598985,146311.462985 513832.015985,146315.327985 513829.714985,146320.784985 513825.997985,146328.041985 513820.671985,146334.570985 513816.117985,146337.956985 513813.151985,146340.303985 513810.793985,146346.430985 513804.195985,146350.723985 513799.305985,146354.581985 513794.164985,146356.967985 513790.337985,146359.098985 513786.371985,146356.925985 513784.344985,146353.343985 513781.608985,146351.160985 513780.340985,146347.127985 513778.317985,146341.387985 513775.017985,146334.128985 513769.411985,146330.367985 513766.944985,146326.816985 513765.066985,146321.737985 513762.782985,146317.469985 513761.348985,146307.868985 513759.381985,146298.937985 513757.947985,146293.990985 513756.697985,146290.285985 513754.090985,146283.117985 513750.818985,146281.983985 513750.147985,146274.500985 513745.136985,146267.323985 513740.889985,146260.479985 513737.509985,146252.565985 513731.306985,146244.686985 513726.625985,146240.634985 513724.637985,146236.699985 513722.476985,146231.698985 513718.659985,146224.714985 513712.958985,146211.868985 513703.630985,146205.062985 513697.739985,146194.890985 513691.020985,146191.411985 513688.135985,146188.225985 513684.826985,146185.687985 513681.124985,146181.993985 513674.493985,146178.581985 513666.935985,146177.129985 513662.679985,146176.213985 513658.394985,146175.616985 513653.926985,146175.504985 513652.576985,146175.600985 513647.593985,146176.461985 513643.173985,146178.964985 513636.048985,146180.631985 513631.864985,146183.762985 513624.568985,146186.478985 513619.197985,146188.785985 513615.318985,146192.164985 513610.645985,146195.164985 513607.272985,146198.434985 513604.177985,146213.147985 513593.658985,146218.529985 513590.075985,146226.316985 513585.557985,146231.500985 513581.909985,146235.294985 513579.520985,146244.772985 513575.912985,146248.280985 513573.656985,146252.907985 513570.075985,146259.880985 513564.383985,146265.073985 513560.374985,146266.003985 513559.291985,146268.532985 513555.045985,146270.217985 513550.871985,146271.596985 513546.578985,146272.254985 513544.163985,146272.984985 513538.959985,146272.872985 513534.455985,146272.384985 513529.970985,146271.633985 513526.049985,146270.401985 513521.714985,146268.823985 513517.605985,146264.736985 513508.248985,146262.619985 513504.303985,146260.103985 513501.227985,146255.643985 513496.995985,146252.055985 513494.269985,146242.001985 513487.640985,146234.786985 513483.442985,146230.921985 513480.977985,146227.280985 513478.321985,146223.757985 513475.497985,146220.334985 513472.346985,146217.293985 513469.037985,146214.461985 513465.521985,146211.480985 513461.477985,146209.011985 513457.691985,146206.944985 513453.700985,146206.040985 513450.812985,146204.852985 513446.079985,146201.554985 513437.705985,146199.723985 513430.002985,146198.858985 513423.346985,146198.729985 513418.833985,146198.981985 513413.944985,146199.585985 513409.495985,146202.341985 513393.330985,146204.018985 513381.604985,146204.289985 513377.137985,146203.940985 513373.739985,146202.588985 513368.770985,146201.014985 513364.562985,146193.633985 513347.926985,146188.343985 513337.470985,146179.395985 513322.231985,146177.406985 513317.723985,146176.277985 513313.368985,146175.554985 513308.909985,146174.522985 513300.450985,146173.700985 513291.481985,146173.067985 513279.144985,146173.153985 513274.609985,146173.776985 513270.271985,146175.536985 513266.566985,146178.912985 513263.457985,146160.329985 513252.483985,146153.075985 513248.510985,146144.955985 513244.623985,146137.312985 513241.362985,146125.568985 513235.881985,146114.189985 513230.108985,146101.309985 513223.226985,146097.454985 513220.539985,146094.341985 513217.256985,146091.850985 513213.488985,146083.684985 513205.357985,146082.597985 513212.274985,146081.647985 513216.686985,146080.306985 513221.732985,146078.908985 513226.013985,146077.270985 513230.221985,146075.406985 513234.316985,146075.851985 513239.281985,146074.445985 513243.892985,146070.610985 513252.849985,146068.317985 513256.754985,146065.673985 513260.377985,146063.670985 513262.207985,146060.010985 513264.884985,146055.763985 513268.385985,146048.871985 513273.568985,146045.377985 513276.403985,146037.835985 513283.388985,146032.176985 513288.382985,146030.188985 513290.728985,146026.831985 513295.149985,146023.917985 513299.329985,146022.121985 513303.449985,146018.110985 513313.677985,146016.770985 513317.973985,146015.995985 513322.317985,146015.430985 513326.785985,146015.139985 513330.588985,146015.036985 513335.089985,146019.408985 513334.005985,146022.631985 513333.471985,146027.107985 513333.051985,146041.611985 513332.575985,146049.738985 513332.923985,146054.240985 513332.921985,146063.738985 513332.380985,146070.654985 513331.525985,146075.071985 513330.688985,146087.871985 513327.862985,146093.290985 513327.494985,146095.749985 513331.216985,146097.615985 513335.493985,146099.166985 513339.883985,146099.857985 513344.684985,146099.817985 513346.552985,146099.080985 513351.001985,146097.127985 513355.574985,146093.783985 513361.802985,146091.249985 513365.509985,146084.546985 513374.375985,146081.780985 513377.936985,146080.165985 513379.645985,146076.645985 513382.432985,146072.783985 513384.802985,146066.921985 513387.233985,146054.515985 513394.555985,146051.789985 513396.322985,146039.520985 513406.330985,146029.153985 513416.300985,146025.727985 513419.223985,146023.019985 513421.304985,146019.116985 513423.591985,146017.345985 513424.834985,146012.642985 513430.297985,146007.454985 513434.794985,146004.348985 513438.307985,146002.742985 513439.282985,145998.366985 513439.664985,145993.737985 513439.140985,145988.546985 513437.396985,145980.808985 513433.869985,145976.757985 513431.823985,145974.597985 513431.066985,145970.142985 513430.351985,145965.622985 513430.248985,145960.693985 513431.184985,145956.534985 513432.407985,145952.110985 513433.378985,145950.366985 513433.996985,145946.424985 513436.225985,145944.222985 513438.024985,145941.424985 513441.523985,145937.088985 513448.257985,145934.927985 513452.199985,145933.224985 513456.550985,145931.146985 513462.688985,145928.360985 513469.576985,145926.520985 513475.958985,145924.971985 513480.182985,145920.025985 513492.681985,145911.406985 513513.274985,145907.967985 513524.157985,145905.191985 513532.021985,145901.510985 513544.159985,145897.336985 513555.604985,145896.428985 513560.011985,145897.275985 513564.439985,145899.152985 513569.022985,145905.340985 513581.631985,145908.586985 513587.097985,145910.309985 513591.256985,145912.982985 513600.599985,145913.783985 513605.107985,145915.301985 513610.334985,145916.864985 513614.554985,145918.881985 513618.827985,145920.821985 513621.986985,145923.849985 513625.397985,145925.144985 513626.290985,145929.423985 513627.576985,145936.173985 513629.294985,145938.023985 513629.934985,145941.998985 513632.053985,145945.757985 513635.203985,145947.126985 513636.582985,145950.141985 513639.958985,145951.459985 513641.863985,145953.146985 513646.046985,145953.414985 513647.191985,145953.874985 513651.661985,145954.096985 513658.513985,145954.043985 513662.795985,145953.626985 513671.814985,145953.228985 513676.297985,145952.779985 513679.412985,145951.502985 513683.703985,145949.833985 513687.915985,145947.235985 513696.116985,145944.953985 513705.922985,145943.415985 513710.166985,145941.636985 513714.326985,145939.837985 513717.738985,145937.228985 513721.588985,145934.193985 513724.196985,145929.917985 513725.238985,145925.266985 513725.352985,145917.072985 513724.542985,145912.531985 513724.375985,145908.987985 513724.705985,145904.524985 513726.029985,145901.883985 513727.777985,145899.550985 513731.507985,145897.946985 513735.873985,145896.436985 513740.961985,145895.477985 513745.374985,145894.359985 513752.883985,145894.105985 513759.166985,145894.366985 513763.684985,145894.953985 513768.180985,145895.652985 513771.335985,145898.043985 513775.170985,145904.293985 513779.456985,145907.725985 513782.450985,145911.235985 513785.240985,145916.251985 513786.864985,145928.643985 513788.724985,145938.188985 513791.948985,145949.160985 513795.142985,145953.342985 513796.792985,145961.102985 513800.269985,145971.617985 513805.424985,145979.736985 513808.676985,145983.834985 513810.547985,145990.251985 513813.832985,145996.957985 513818.576985,146007.477985 513824.220985,146011.119985 513826.855985,146019.141985 513833.212985,146024.607985 513838.295985,146044.502985 513858.336985,146047.324985 513861.479985,146050.061985 513865.094985,146051.186985 513867.257985,146052.620985 513871.495985,146055.812985 513883.744985,146056.619985 513887.643985,146056.676985 513893.498985,146055.930985 513897.935985,146054.457985 513909.647985,146051.861985 513924.853985,146051.872985 513940.661985,146052.072985 513947.397985,146052.482985 513950.679985,146054.529985 513959.445985,146057.420985 513969.123985,146060.476985 513967.705985,146064.865985 513966.275985,146069.275985 513965.468985,146070.291985 513965.510985,146074.526985 513967.314985,146081.217985 513970.595985,146082.397985 513970.826985,146086.929985 513970.967985,146092.645985 513971.828985,146113.599985 513974.332985,146133.112985 513975.402985,146136.737985 513974.998985,146147.199985 513973.338985,146151.996985 513972.512985,146156.382985 513971.516985,146157.539985 513971.824985,146161.637985 513973.850985,146174.892985 513977.638985,146178.820985 513979.847985,146184.075985 513982.181985,146186.092985 513984.501985,146188.418985 513988.437985,146193.920985 514000.829985,146196.035985 514004.799985,146200.597985 514012.678985,146209.606985 514027.052985,146214.200985 514032.039985,146221.768985 514039.326985,146230.115985 514046.868985,146233.730985 514049.498985,146235.757985 514050.548985,146252.830985 514056.920985,146259.961985 514059.868985,146264.241985 514061.286985,146268.851985 514062.519985,146273.342985 514062.849985,146274.575985 514062.465985,146282.815985 514058.754985,146286.427985 514057.728985,146290.885985 514057.127985,146293.866985 514057.134985,146298.432985 514057.472985,146303.313985 514058.553985,146307.456985 514062.565985,146313.362985 514069.361985,146320.712985 514078.294985,146323.474985 514081.845985,146325.878985 514085.271985,146329.490985 514090.982985,146339.561985 514107.851985,146346.200985 514119.450985,146349.975985 514124.212985,146355.077985 514130.172985,146358.228985 514133.359985,146360.327985 514134.759985,146364.444985 514136.649985,146368.646985 514138.201985,146373.966985 514138.806985,146382.511985 514135.796985,146385.640985 514135.815985,146392.037985 514137.070985,146401.238985 514140.001985,146405.401985 514141.678985,146408.384985 514143.356985,146418.276985 514149.793985,146422.151985 514152.075985,146427.537985 514154.576985,146432.140985 514156.430985,146436.476985 514157.642985,146444.150985 514161.340985,146449.150985 514162.902985,146456.343985 514163.308985,146460.788985 514163.007985,146462.874985 514161.871985,146466.456985 514158.988985,146471.437985 514155.719985,146473.998985 514152.004985,146475.591985 514148.803985,146477.255985 514144.618985,146478.341985 514141.194985,146479.081985 514136.773985)) + MULTIPOLYGON(((146011.847522543 513740.890335071,146014.984307229 513742.322478592,146018.011201398 513743.787321187,146024.428201398 513747.072321187,146033.566291871 513752.604961839,146036.493665821 513754.675862826,146042.935029827 513758.13166686,146051.440930471 513763.45702014,146055.082930471 513766.09202014,146057.700853077 513768.074842368,146065.722853077 513774.431842368,146070.2158857 513778.290706576,146075.6818857 513783.373706576,146077.834518588 513785.457210202,146097.729518588 513805.498210202,146100.309160202 513808.23039053,146103.131160202 513811.37339053,146107.119921677 513816.207857286,146109.856921677 513819.822857286,146116.600222878 513830.48771842,146117.725222878 513832.65071842,146122.230218704 513843.219288178,146123.664218704 513847.457288178,146125.197185838 513852.583156763,146128.389185838 513864.832156763,146129.256356421 513868.543958907,146130.063356421 513872.442958907,146131.616431173 513886.913874422,146131.673431173 513892.768874422,146131.108825876 513899.953929188,146134.959352858 513899.34296811,146137.318948726 513898.93666705,146139.774375819 513898.379073483,146157.765635587 513896.529730901,146175.676491337 513899.041053732,146176.833491337 513899.349053732,146186.164377291 513902.857601769,146195.501380849 513905.525920854,146209.222567228 513911.251698752,146206.534467748 513901.417341877,146205.770467748 513896.992341877,146205.1803459 513892.906704753,146204.989884337 513891.271061556,146203.978602791 513884.536090945,146203.522602791 513880.097090945,146203.314130135 513867.180570234,146205.325260586 513854.419875801,146205.756260586 513852.677875802,146210.275071433 513839.674311931,146210.477032007 513839.229678096,146211.710284299 513835.478289843,146213.266858336 513831.188037104,146214.923858336 513827.021037104,146217.332991849 513821.597919563,146218.971991849 513818.269919563,146221.145894415 513814.179565307,146223.400894415 513810.235565307,146227.060181039 513804.624529814,146214.213235884 513796.538689257,146210.103192982 513793.317234099,146208.958646493 513792.637246522,146207.600077938 513791.970703016,146204.532771508 513790.377091938,146200.597771508 513788.216091938,146191.196115791 513782.095756264,146186.195115791 513778.278756264,146184.271868982 513776.760489871,146178.930882644 513772.400672701,146167.80106412 513764.318861461,146162.78504905 513760.338720202,146159.661996558 513757.635531511,146153.554337978 513753.601186446,146147.016034602 513748.753030905,146143.537034602 513745.868030905,146137.384343372 513740.155346205,146134.198343372 513736.846346205,146126.367313328 513727.23576639,146123.829313328 513723.53376639,146120.168646448 513717.62452302,146116.474646448 513710.99352302,146113.636813155 513705.353295708,146110.224813155 513697.795295708,146107.599279608 513691.152829039,146106.147279608 513686.896829039,146103.787047984 513678.358428479,146102.871047984 513674.073428479,146101.874656251 513668.327970511,146101.277656251 513663.859970511,146100.873767208 513660.127903811,146100.761767208 513658.777903811,146100.518899611 513651.132340369,146100.614899612 513646.149340369,146101.984689183 513633.253797059,146102.845689183 513628.833797059,146105.701299377 513618.315880282,146108.204299377 513611.190880282,146109.291399104 513608.289456394,146110.958399104 513604.105456394,146111.710285435 513602.287978238,146114.841285435 513594.991978238,146116.833661888 513590.724255606,146119.549661888 513585.353255606,146122.017937054 513580.860362517,146124.324937054 513576.981362517,146128.010088172 513571.37253617,146131.389088172 513566.69953617,146136.123955204 513560.802199235,146139.123955204 513557.429199235,146143.609554063 513552.802465075,146146.879554063 513549.707465075,146154.815451024 513543.167033067,146169.528451024 513532.648033067,146171.585632309 513531.2284569,146172.731747701 513530.46544474,146169.539682841 513527.527029206,146165.112892883 513523.096571621,146162.071892883 513519.787571621,146158.884736665 513516.084342021,146156.052736665 513512.568342021,146154.091428412 513510.023624266,146151.110428412 513505.979624266,146148.659199946 513502.446550055,146146.190199946 513498.660550055,146142.413986224 513492.184108145,146140.346986224 513488.193108145,146135.369578457 513476.105475136,146134.465578457 513473.217475136,146133.297507522 513469.071859128,146133.291225392 513469.04683108,146131.771944583 513465.189202972,146128.588019266 513455.05020339,146126.757019266 513447.34720339,146125.349413787 513439.66855052,146125.333509108 513439.54616724,146123.202128707 513441.233711893,146115.873841133 513446.356183474,146112.011841133 513448.726183474,146101.514293052 513454.08190964,146100.511940734 513454.497590036,146095.499821203 513457.455734419,146089.301229719 513462.512014765,146081.141827901 513470.358955647,146077.832919083 513473.356759262,146074.406919083 513476.279759262,146071.427632069 513478.69281934,146068.719632069 513480.77381934,146066.359203061 513482.363239454,146061.767349912 513486.970701292,146060.053668985 513488.456133661,146052.447934138 513495.853541664,146043.270261658 513502.418313523,146041.664261658 513503.393313523,146026.075330476 513510.561324309,146009.265256284 513513.998846618,146004.889256284 513514.380846618,145992.162649537 513514.217644662,145989.764384456 513520.278282601,145989.210645291 513521.638552137,145981.900192566 513539.105097324,145979.482413151 513546.756360302,145978.690931684 513549.123257126,145976.475479026 513555.399308892,145976.438362152 513555.521700801,145977.876266427 513558.392663553,145979.599266427 513562.551663553,145981.828103128 513568.939622633,145990.170574216 513574.569221868,145993.929574216 513577.719221868,145998.983628831 513582.364313931,146000.352628831 513583.743313931,146003.066429269 513586.625217087,146006.081429269 513590.001217087,146011.819217687 513597.286757872,146013.137217687 513599.191757872,146021.016327875 513613.811976769,146022.703327875 513617.994976769,146026.173297299 513628.954363433,146026.441297299 513630.099363433,146028.020982394 513639.514410324,146028.480982394 513643.984410324,146028.835651666 513649.233311912,146029.057651666 513656.085311912,146029.091240665 513659.44221843,146029.038240665 513663.72421843,146028.963947968 513666.259963774,146028.546947968 513675.278963774,146028.333151116 513678.447386096,146027.935151116 513682.930386096,146027.461793032 513686.99799489,146027.012793032 513690.11299489,146024.664272548 513700.805722171,146023.387272548 513705.096722171,146021.228562699 513711.332662394,146020.533592679 513713.086535207,146019.619527672 513715.971926707,146018.002063619 513722.922344107,146015.466585062 513731.476325928,146013.928585062 513735.720325927,146012.374991285 513739.656906197,146011.847522543 513740.890335071)),((146263.503396356 513971.644383436,146264.845146421 513973.961711091,146269.154816161 513980.837856373,146272.633703185 513984.187572248,146272.694587294 513984.174888747,146272.160337612 513980.932976116,146271.322748897 513976.861381452,146269.459899281 513975.354829079,146267.156598206 513973.414294395,146266.521108814 513972.856696948,146265.492769349 513972.462429559,146263.503396356 513971.644383436))) + + #95 Polygon - gid: 2595 + + POLYGON((152747.244985 514163.075985,152750.222985 514162.865985,152762.227985 514163.357985,152765.838985 514164.275985,152776.630985 514167.853985,152784.077985 514169.654985,152795.626985 514175.727985,152800.056985 514177.203985,152805.566985 514178.290985,152810.480985 514178.365985,152815.012985 514179.178985,152819.420985 514179.392985,152823.072985 514177.882985,152827.019985 514175.502985,152835.565985 514171.245985,152837.084985 514170.146985,152841.503985 514165.822985,152844.238985 514162.245985,152847.722985 514154.557985,152849.262985 514149.500985,152849.452985 514142.388985,152850.715985 514130.165985,152854.579985 514108.250985,152855.312985 514098.346985,152857.278985 514089.733985,152859.500985 514081.827985,152862.415985 514074.361985,152866.473985 514066.324985,152871.582985 514058.454985,152874.488985 514054.574985,152880.379985 514047.771985,152891.153985 514036.794985,152902.009985 514027.885985,152907.437985 514023.431985,152923.267985 514009.540985,152929.973985 514004.580985,152935.475985 514001.216985,152939.529985 513999.220985,152947.627985 513996.379985,152952.070985 513995.270985,152956.453985 513994.775985,152957.977985 513995.027985,152962.007985 513997.311985,152968.886985 514002.852985,152975.323985 514007.391985,152983.086985 514014.935985,152989.043985 514019.895985,152995.859985 514027.807985,153008.635985 514044.568985,153011.618985 514047.976985,153014.918985 514050.909985,153017.338985 514052.376985,153021.618985 514054.009985,153026.424985 514055.095985,153030.899985 514055.144985,153055.639985 514052.224985,153061.294985 514050.966985,153068.401985 514047.971985,153084.487985 514042.766985,153091.735985 514040.113985,153096.408985 514037.940985,153103.935985 514032.998985,153110.244985 514027.659985,153117.783985 514020.217985,153122.060985 514015.234985,153127.554985 514008.104985,153139.559985 513997.107985,153145.303985 513992.530985,153154.505985 513987.088985,153158.166985 513984.484985,153163.747985 513978.577985,153171.147985 513969.045985,153173.668985 513965.324985,153180.637985 513949.947985,153183.187985 513942.152985,153188.073985 513933.422985,153189.159985 513929.039985,153190.078985 513921.778985,153190.426985 513916.983985,153190.068985 513912.495985,153185.862985 513905.476985,153179.518985 513886.559985,153176.400985 513880.496985,153172.336985 513874.800985,153160.951985 513862.562985,153156.433985 513856.339985,153151.396985 513851.959985,153142.738985 513842.886985,153135.922985 513834.974985,153130.949985 513828.224985,153126.944985 513825.146985,153119.109985 513820.649985,153115.239985 513819.412985,153111.703985 513816.997985,153095.957985 513803.789985,153090.619985 513800.267985,153086.268985 513799.212985,153079.246985 513798.413985,153077.385985 513798.511985,153069.766985 513801.027985,153052.681985 513805.263985,153048.530985 513806.983985,153035.310985 513813.782985,153022.371985 513819.572985,153010.779985 513826.491985,152998.307985 513832.718985,152986.401985 513840.022985,152978.337985 513844.031985,152964.726985 513848.610985,152951.529985 513853.757985,152928.653985 513860.833985,152920.997985 513862.406985,152912.173985 513864.930985,152904.462985 513866.658985,152895.879985 513868.220985,152890.402985 513868.449985,152880.815985 513868.059985,152864.829985 513865.581985,152860.332985 513865.146985,152857.986985 513864.721985,152853.735985 513863.281985,152848.769985 513861.216985,152840.910985 513857.601985,152835.803985 513854.706985,152824.859985 513844.217985,152823.050985 513842.027985,152821.482985 513837.821985,152820.962985 513835.100985,152820.667985 513827.554985,152821.148985 513823.064985,152824.742985 513813.937985,152825.940985 513811.508985,152828.593985 513807.866985,152833.790985 513803.295985,152841.590985 513798.778985,152861.106985 513792.783985,152881.771985 513783.860985,152889.672985 513781.216985,152894.045985 513780.183985,152911.753985 513777.044985,152924.313985 513773.178985,152938.498985 513764.447985,152941.841985 513761.432985,152945.914985 513756.742985,152948.841985 513750.352985,152950.467985 513745.487985,152951.187985 513740.696985,152949.197985 513726.637985,152944.856985 513711.713985,152938.590985 513697.248985,152932.892985 513679.260985,152932.052985 513669.392985,152932.301985 513664.167985,152931.064985 513655.751985,152930.540985 513640.871985,152928.716985 513629.667985,152928.469985 513624.260985,152929.623985 513618.961985,152936.827985 513594.240985,152925.855985 513592.298985,152912.444985 513589.295985,152892.923985 513586.002985,152884.722985 513585.253985,152873.280985 513582.877985,152865.965985 513582.437985,152861.459985 513582.424985,152855.123985 513582.942985,152846.852985 513582.590985,152842.379985 513582.092985,152823.641985 513578.893985,152820.885985 513578.940985,152812.601985 513580.109985,152802.841985 513582.175985,152789.868985 513585.914985,152777.216985 513587.422985,152765.958985 513589.763985,152750.899985 513591.610985,152742.030985 513593.139985,152729.904985 513596.497985,152719.099985 513598.801985,152715.833985 513600.302985,152709.204985 513604.531985,152705.819985 513607.458985,152704.964985 513608.634985,152703.307985 513612.868985,152703.112985 513614.477985,152703.547985 513619.000985,152706.348985 513625.244985,152709.568985 513633.649985,152711.881985 513642.244985,152712.847985 513647.448985,152711.808985 513652.345985,152708.137985 513655.059985,152704.382985 513656.694985,152698.688985 513658.421985,152692.786985 513659.189985,152681.958985 513659.969985,152674.629985 513659.687985,152661.943985 513657.891985,152655.571985 513657.466985,152649.688985 513657.947985,152642.863985 513657.559985,152626.064985 513657.514985,152613.920985 513660.400985,152600.982985 513666.190985,152597.955985 513667.872985,152594.342985 513670.518985,152593.520985 513671.490985,152588.828985 513680.433985,152585.901985 513686.823985,152583.628985 513692.792985,152581.790985 513698.405985,152581.080985 513702.833985,152581.877985 513705.678985,152584.660985 513710.396985,152589.111985 513713.700985,152592.947985 513716.057985,152598.515985 513718.920985,152602.238985 513721.449985,152606.006985 513724.926985,152607.497985 513725.822985,152629.149985 513736.282985,152634.862985 513738.251985,152644.738985 513740.211985,152650.242985 513741.654985,152654.804985 513742.227985,152659.856985 513743.707985,152664.473985 513745.695985,152668.657985 513748.192985,152675.140985 513751.447985,152680.210985 513753.398985,152686.638985 513755.238985,152695.915985 513759.948985,152707.390985 513764.833985,152716.642985 513767.925985,152723.560985 513770.672985,152731.786985 513774.899985,152737.193985 513778.352985,152746.398985 513785.838985,152754.987985 513796.492985,152757.040985 513801.273985,152757.627985 513806.000985,152756.984985 513813.706985,152755.505985 513821.538985,152752.715985 513831.219985,152746.744985 513843.680985,152735.140985 513857.735985,152731.651985 513863.630985,152729.550985 513867.824985,152727.840985 513872.403985,152725.525985 513876.860985,152725.078985 513881.527985,152733.081985 513886.294985,152737.828985 513891.584985,152743.443985 513895.856985,152749.473985 513899.149985,152760.195985 513906.316985,152778.305985 513916.664985,152782.507985 513919.632985,152790.819985 513923.211985,152794.352985 513925.072985,152817.785985 513939.459985,152822.336985 513942.969985,152833.310985 513952.333985,152840.480985 513959.124985,152843.334985 513962.648985,152845.629985 513966.518985,152848.522985 513974.605985,152852.091985 513987.549985,152853.072985 513992.664985,152852.731985 513997.167985,152851.866985 514000.228985,152845.740985 514015.720985,152841.492985 514023.165985,152838.001985 514026.762985,152835.133985 514029.112985,152831.380985 514031.563985,152825.534985 514032.987985,152804.881985 514042.418985,152800.333985 514043.552985,152795.944985 514042.505985,152778.924985 514036.800985,152772.912985 514033.979985,152769.227985 514032.625985,152765.542985 514031.270985,152760.435985 514028.375985,152750.277985 514024.001985,152741.910985 514019.008985,152724.617985 514010.196985,152714.925985 514002.288985,152703.547985 513989.970985,152694.149985 513980.780985,152690.812985 513977.762985,152679.079985 513968.842985,152671.575985 513961.828985,152663.594985 513953.465985,152656.937985 513947.411985,152652.772985 513945.386985,152646.215985 513940.244985,152632.252985 513931.449985,152611.390985 513920.380985,152604.472985 513917.634985,152601.112985 513916.755985,152595.709985 513915.766985,152583.472985 513914.620985,152579.510985 513917.783985,152574.246985 513922.472985,152565.980985 513931.665985,152557.589985 513944.756985,152554.632985 513949.932985,152545.321985 513972.156985,152541.526985 513979.564985,152540.007985 513981.605985,152536.733985 513984.688985,152535.315985 513985.408985,152530.905985 513986.584985,152525.946985 513987.463985,152513.202985 513986.612985,152499.250985 513983.503985,152489.827985 513980.953985,152480.251985 513979.844985,152468.426985 513980.337985,152456.720985 513981.769985,152450.800985 513981.307985,152443.107985 513981.936985,152431.715985 513982.252985,152425.601985 513983.102985,152415.362985 513985.867985,152401.539985 513988.792985,152397.098985 513989.485985,152382.988985 513990.080985,152378.507985 513990.059985,152367.405985 513987.636985,152353.905985 513987.813985,152328.397985 513985.641985,152326.159985 513984.727985,152343.155985 514009.776985,152345.547985 514013.575985,152348.450985 514020.382985,152350.886985 514024.172985,152354.067985 514027.864985,152361.872985 514039.241985,152375.524985 514057.714985,152380.879985 514063.460985,152384.223985 514066.497985,152391.301985 514072.064985,152399.165985 514075.815985,152403.841985 514078.756985,152407.937985 514080.620985,152417.977985 514083.085985,152422.390985 514083.220985,152424.943985 514082.052985,152442.772985 514066.832985,152446.324985 514064.070985,152455.412985 514057.977985,152463.242985 514053.204985,152467.279985 514051.239985,152474.609985 514049.455985,152479.056985 514048.777985,152484.181985 514049.837985,152499.921985 514056.864985,152512.577985 514064.400985,152520.205985 514069.166985,152529.937985 514073.130985,152544.200985 514082.842985,152556.472985 514093.900985,152571.160985 514108.272985,152579.390985 514115.870985,152590.270985 514129.477985,152593.414985 514136.321985,152600.252985 514153.416985,152602.311985 514157.738985,152606.845985 514165.536985,152612.066985 514172.868985,152614.883985 514176.092985,152621.659985 514182.048985,152625.286985 514184.242985,152630.331985 514185.979985,152634.803985 514186.432985,152640.693985 514186.427985,152649.669985 514185.718985,152657.684985 514183.778985,152668.022985 514182.579985,152704.755985 514175.352985,152719.865985 514170.892985,152729.749985 514169.166985,152738.749985 514165.436985,152742.867985 514164.085985,152747.244985 514163.075985)) + MULTIPOLYGON(((152597.239547324 514029.678575879,152606.678441824 514038.183733586,152608.926208731 514040.294461888,152622.835937061 514053.904934079,152630.265885999 514060.764320717,152637.967903619 514069.033557604,152648.847903619 514082.640557604,152658.423790211 514098.16991668,152661.567790211 514105.01391668,152662.517340891 514107.225410577,152686.862372445 514102.435669934,152698.633931665 514098.961073367,152706.964296294 514097.011008656,152708.68782781 514096.710035831,152710.035074062 514096.151677107,152715.370621248 514094.174053889,152719.488621248 514092.823053889,152720.136823795 514092.642335451,152711.844861917 514088.406138982,152705.628187309 514084.696343796,152690.566315703 514077.021260665,152677.203554368 514068.307842573,152667.511554368 514060.399842573,152659.83253405 514053.178194686,152649.748363042 514042.260914102,152642.836939028 514035.502456272,152633.689321872 514028.54799066,152627.866066085 514023.634722601,152620.362066085 514016.620722601,152617.318280618 514013.60833914,152611.557280295 514007.571596163,152611.474695349 514007.519958978,152608.277829548 514013.760375802,152601.692834863 514024.342998692,152600.173834863 514026.383998692,152597.239547324 514029.678575879)),((152979.39142877 513923.39395504,152982.971243821 513924.314923876,152994.958013 513929.778636121,152998.988013 513932.062636121,153009.055554761 513938.9037135,153014.067370819 513942.940706199,153018.544937842 513946.098027423,153027.592891475 513953.605728244,153033.290382452 513959.142488765,153037.034018889 513962.259567283,153045.866385123 513970.944837472,153049.565287583 513975.238516501,153060.015813883 513971.857005287,153062.890625998 513969.019181735,153063.860375556 513967.889356612,153068.145995532 513962.327567309,153076.89462411 513952.801026421,153088.89962411 513941.804026421,153092.821268542 513938.452274418,153098.565268542 513933.875274418,153107.126126376 513927.97518657,153108.665998205 513927.06451688,153110.631601416 513922.727441177,153111.575413015 513919.842338661,153111.447332744 513919.460419607,153106.039801021 513913.647738603,153100.619179573 513907.061733153,153097.137580943 513903.737558055,153088.479580943 513894.664558055,153085.916584877 513891.838132528,153079.738127788 513884.666191141,153072.940822268 513881.346665919,153070.786713562 513879.875463282,153069.612655922 513880.479277041,153065.94505217 513882.241395211,153057.027815264 513886.231719169,153049.219187626 513890.892510631,153044.282261894 513893.593381728,153034.737621442 513898.358814385,153025.62057717 513903.951867582,153019.789678547 513907.181468601,153011.725678547 513911.190468601,153002.252391439 513915.117153387,152990.324366736 513919.129968399,152979.39142877 513923.39395504)),((152801.412882746 513735.377900866,152804.005720959 513733.876381609,152819.567849259 513727.08532076,152835.151968897 513722.298130904,152852.040751769 513715.005674598,152857.971202143 513712.737692505,152864.167594032 513710.664124582,152861.394377541 513701.909365326,152858.163243385 513685.62225202,152857.323243385 513675.75425202,152857.195936799 513668.928851093,152856.862228842 513666.658449992,152856.111445543 513658.391477922,152856.09040641 513657.794030773,152851.934996434 513657.875156675,152843.663996434 513657.523156675,152838.554159662 513657.130434274,152834.081159662 513656.632434274,152829.758404822 513656.023328661,152822.218943343 513654.736172226,152821.016752643 513654.990652348,152810.639563306 513657.981503418,152798.745454116 513660.38785453,152789.312251617 513661.51220399,152786.312745304 513662.135924391,152786.214807049 513663.015276221,152785.175807049 513667.912276221,152781.167293184 513680.88411889,152774.88583807 513692.920738318,152766.537291284 513703.627682429,152763.113476725 513706.674866787,152766.065546159 513708.191812751,152772.153957948 513711.689958145,152777.560957948 513715.142958145,152784.514842389 513720.165903479,152793.719842389 513727.651903479,152801.412882746 513735.377900866))) + + #96 Polygon - gid: 2596 + + POLYGON((154470.187985 514355.480985,154486.830985 514323.594985,154500.001985 514288.890985,154498.444985 514263.472985,154497.741985 514239.518985,154493.223985 514222.771985,154489.801985 514204.219985,154488.879985 514182.090985,154478.186985 514157.249985,154474.040985 514134.114985,154467.747985 514111.146985,154466.497985 514095.633985,154470.929985 514076.999985,154488.837985 514040.402985,154492.458985 514010.825985,154489.681985 513972.417985,154476.127985 513929.415985,154462.300985 513907.359985,154442.174985 513901.882985,154433.051985 513885.013985,154426.097985 513857.073985,154434.970985 513823.089985,154437.859985 513804.326985,154431.686985 513785.260985,154412.115985 513791.727985,154392.134985 513804.951985,154371.213985 513800.320985,154338.806985 513824.583985,154337.552985 513838.841985,154340.231985 513863.853985,154341.818985 513883.430985,154325.354985 513942.782985,154308.149985 513990.662985,154286.061985 514032.755985,154276.691985 514036.801985,154273.287985 514053.119985,154278.102985 514068.611985,154281.466985 514088.671985,154268.460985 514110.359985,154256.186985 514135.862985,154255.695985 514155.176985,154260.846985 514174.967985,154273.610985 514186.731985,154296.316985 514203.897985,154304.090985 514222.423985,154304.305985 514232.504985,154274.433985 514236.105985,154245.243985 514243.659985,154199.558985 514250.286985,154168.633985 514270.372985,154143.684985 514291.596985,154128.476985 514317.331985,154126.062985 514342.110985,154129.235985 514339.245985,154157.746985 514338.714985,154195.964985 514348.920985,154238.413985 514354.748985,154265.909985 514362.594985,154277.321985 514360.996985,154291.054985 514356.469985,154316.729985 514343.357985,154339.936985 514337.091985,154355.837985 514336.573985,154383.710985 514341.477985,154410.238985 514348.604985,154426.380985 514358.909985,154440.500985 514366.676985,154453.903985 514366.741985,154470.187985 514355.480985)) + POLYGON((154372.475003626 514263.349143873,154396.706937495 514267.612531514,154403.170413394 514269.046426639,154423.988413027 514274.639380627,154423.585300499 514268.058575085,154423.477262909 514265.673131474,154423.033047317 514250.536943284,154420.812790206 514242.307052659,154419.468203972 514236.376571173,154416.046203972 514217.824571173,154414.866998649 514207.342135003,154414.520949841 514199.036588282,154409.298243715 514186.90367489,154404.363076076 514170.479893208,154400.813488545 514150.672920818,154395.413932334 514130.965784784,154392.990283739 514117.170779661,154391.740283739 514101.657779661,154391.717630648 514089.898254615,154393.533403613 514078.279738746,154397.965403613 514059.645738746,154403.562880398 514044.035258131,154415.926643621 514018.768525795,154417.127981621 514008.955774066,154415.510664071 513986.587055149,154410.12603403 513969.503547621,154408.340036344 513968.817253125,154397.830595583 513962.092880346,154397.625941273 513962.830650185,154395.936468377 513968.14544159,154378.731468377 514016.02544159,154374.561855468 514025.512137945,154353.616308301 514065.427970836,154355.434134709 514076.267922606,154356.462902434 514089.454524599,154355.15919933 514102.616788591,154351.563572263 514115.345351006,154345.787849925 514127.244336955,154337.521882801 514141.02815173,154341.546834423 514144.071061954,154351.291906253 514152.880752292,154359.35032728 514163.255670093,154365.474862182 514174.877509063,154373.248862182 514193.403509063,154377.45396137 514206.839579392,154379.073933883 514220.824804957,154379.288933883 514230.905804957,154377.970664843 514246.594518123,154373.406257847 514261.662356151,154372.475003626 514263.349143873)) + + #97 Polygon - gid: 2597 + + POLYGON((144573.637985 514299.611985,144569.108985 514299.348985,144562.201985 514299.403985,144559.226985 514299.220985,144554.798985 514298.485985,144551.780985 514297.383985,144547.881985 514295.120985,144545.571985 514292.973985,144542.929985 514289.294985,144542.014985 514286.888985,144540.935985 514282.467985,144536.953985 514270.768985,144535.431985 514264.430985,144527.414985 514231.256985,144525.265985 514220.631985,144523.947985 514211.728985,144523.487985 514204.993985,144523.420985 514200.490985,144524.298985 514164.227985,144524.246985 514144.674985,144524.388985 514131.151985,144524.184985 514126.675985,144523.627985 514123.147985,144522.187985 514118.870985,144520.491985 514115.580985,144517.606985 514111.957985,144512.831985 514110.603985,144508.249985 514111.180985,144503.782985 514111.952985,144498.898985 514113.438985,144494.884985 514115.441985,144487.162985 514120.130985,144485.689985 514121.174985,144478.796985 514127.041985,144477.763985 514127.744985,144471.584985 514131.179985,144467.467985 514132.997985,144463.910985 514134.276985,144459.581985 514135.505985,144456.662985 514136.016985,144444.326985 514137.623985,144439.854985 514138.108985,144426.535985 514138.704985,144419.602985 514139.421985,144415.193985 514140.261985,144408.154985 514142.204985,144404.351985 514144.259985,144403.046985 514146.503985,144401.777985 514151.441985,144391.539985 514175.978985,144389.658985 514180.059985,144386.465985 514186.103985,144381.806985 514193.809985,144376.400985 514200.696985,144374.525985 514204.168985,144372.626985 514208.272985,144371.009985 514212.470985,144374.512985 514215.316985,144375.460985 514216.345985,144378.007985 514220.054985,144380.900985 514225.738985,144383.595985 514232.197985,144386.138985 514236.910985,144387.373985 514240.200985,144387.317985 514244.627985,144384.667985 514260.523985,144384.974985 514262.704985,144387.859985 514266.096985,144390.911985 514268.033985,144395.098985 514269.518985,144399.531985 514270.567985,144407.215985 514272.774985,144408.690985 514274.244985,144408.377985 514278.224985,144406.906985 514282.756985,144405.074985 514287.247985,144402.861985 514292.013985,144397.918985 514301.215985,144396.222985 514305.380985,144394.726985 514309.633985,144393.515985 514313.470985,144392.388985 514317.822985,144389.131985 514332.080985,144388.711985 514336.562985,144388.628985 514344.005985,144389.175985 514346.743985,144391.242985 514350.685985,144393.902985 514354.402985,144395.123985 514355.983985,144398.178985 514359.312985,144400.071985 514360.831985,144403.826985 514363.306985,144407.752985 514365.546985,144410.944985 514367.097985,144415.106985 514368.785985,144419.373985 514370.244985,144424.773985 514371.874985,144437.115985 514374.708985,144441.437985 514375.956985,144457.977985 514381.432985,144463.670985 514383.077985,144481.352985 514387.388985,144495.281985 514390.226985,144508.880985 514394.003985,144514.170985 514394.585985,144523.083985 514394.435985,144526.965985 514394.025985,144538.798985 514391.486985,144547.666985 514389.950985,144556.364985 514387.609985,144561.437985 514386.414985,144564.927985 514385.410985,144568.997985 514383.496985,144573.050985 514381.530985,144580.697985 514379.417985,144595.229985 514372.568985,144602.375985 514369.467985,144607.797985 514367.957985,144615.688985 514366.916985,144623.577985 514365.386985,144626.043985 514365.367285,144624.394985 514363.206985,144621.092985 514359.540985,144616.630985 514352.244985,144609.694985 514342.524985,144604.237985 514332.792985,144598.713985 514323.815985,144590.528985 514311.126985,144587.880985 514307.506985,144586.451985 514305.981985,144582.933985 514303.147985,144581.553985 514302.214985,144577.498985 514300.258985,144573.637985 514299.611985)) + POLYGON( EMPTY) + + #98 Polygon - gid: 2598 + + POLYGON((146978.395985 514128.105985,146993.088985 514109.724985,146990.935985 514109.919985,146986.515985 514108.676985,146984.834985 514107.491985,146981.559985 514104.355985,146978.605985 514100.856985,146976.054985 514097.475985,146971.011985 514090.004985,146967.745985 514085.474985,146964.701985 514082.154985,146959.542985 514075.969985,146956.337985 514072.894985,146952.680985 514071.027985,146947.749985 514069.211985,146939.485985 514065.648985,146927.297985 514062.022985,146919.855985 514059.063985,146915.584985 514057.875985,146911.533985 514057.834985,146907.047985 514058.932985,146902.995985 514060.801985,146899.081985 514063.093985,146893.310985 514066.882985,146889.708985 514069.594985,146885.365985 514073.314985,146874.977985 514084.255985,146871.396985 514088.322985,146864.758985 514096.561985,146858.269985 514103.545985,146851.525985 514109.507985,146845.834985 514113.792985,146843.682985 514115.048985,146833.562985 514120.296985,146827.089985 514122.419985,146822.686985 514123.116985,146818.808985 514122.219985,146814.499985 514120.648985,146810.509985 514118.510985,146805.983985 514115.339985,146799.004985 514109.608985,146789.184985 514100.497985,146782.878985 514094.071985,146773.731985 514084.130985,146772.704985 514082.828985,146770.140985 514078.765985,146767.239985 514075.730985,146765.038985 514075.353985,146760.639985 514077.133985,146756.696985 514093.552985,146755.166985 514104.428985,146754.236985 514107.679985,146747.054985 514128.282985,146745.452985 514132.485985,146740.637985 514142.592985,146736.292985 514152.151985,146732.113985 514160.830985,146729.632985 514165.603985,146720.451985 514182.099985,146718.255985 514185.582985,146715.669985 514189.265985,146708.041985 514198.572985,146700.623985 514208.288985,146697.764985 514212.325985,146695.357985 514216.136985,146693.225985 514220.099985,146691.843985 514223.389985,146688.846985 514231.402985,146687.411985 514235.659985,146686.889985 514238.098985,146686.285985 514244.852985,146686.270985 514253.857985,146686.450985 514255.277985,146686.301985 514260.300985,146683.033985 514264.144985,146683.155985 514265.983985,146682.338985 514271.113985,146682.374985 514276.109985,146680.337985 514280.147985,146677.579985 514283.544985,146668.796985 514293.186985,146665.431985 514297.393985,146661.798985 514300.600985,146659.382985 514304.403985,146657.401985 514310.058985,146656.451985 514315.110985,146657.862985 514320.479985,146660.328985 514325.311985,146664.346985 514327.493985,146671.146985 514330.078985,146674.727985 514332.813985,146678.721985 514337.242985,146681.490985 514340.795985,146686.032985 514347.673985,146690.888985 514355.863985,146692.808985 514359.916985,146693.698985 514363.305985,146695.616985 514373.416985,146698.231985 514382.035985,146699.836985 514386.527985,146701.571985 514390.707985,146703.974985 514394.998985,146706.750985 514398.590985,146710.002985 514401.691985,146712.889985 514403.299985,146717.072985 514405.089985,146726.061985 514410.373985,146734.615985 514414.500985,146745.317985 514418.731985,146749.574985 514420.166985,146751.177985 514420.590985,146755.638985 514421.241985,146756.964985 514414.062985,146760.786985 514395.658985,146762.453985 514390.190985,146763.644985 514384.449985,146765.274985 514379.265985,146767.350985 514375.290985,146772.077985 514367.066985,146782.052985 514344.326985,146787.377985 514332.973985,146796.553985 514316.678985,146800.956985 514309.903985,146805.131985 514302.406985,146810.612985 514294.080985,146815.038985 514286.445985,146817.815985 514282.583985,146823.033985 514277.958985,146826.565985 514274.275985,146829.279985 514270.683985,146831.879985 514268.007985,146838.691985 514261.283985,146846.154985 514255.376985,146849.511985 514252.379985,146854.426985 514246.995985,146866.975985 514234.461985,146873.174985 514227.718985,146875.892985 514224.130985,146883.032985 514216.049985,146888.426985 514211.137985,146895.661985 514205.813985,146898.228985 514203.079985,146900.862985 514199.416985,146903.718985 514196.294985,146910.227985 514189.724985,146918.475985 514180.160985,146921.638985 514177.199985,146925.123985 514174.344985,146929.916985 514170.920985,146942.656985 514162.441985,146948.828985 514158.846985,146952.598985 514156.414985,146955.585985 514153.824985,146964.483985 514144.873985,146967.826985 514140.249985,146969.666985 514137.975985,146978.395985 514128.105985)) + POLYGON((146797.091534784 514198.560801946,146799.036341277 514196.430417783,146800.519647422 514194.878956067,146799.137713142 514194.468888446,146798.660722856 514195.421904049,146796.985503573 514198.644726154,146797.091534784 514198.560801946)) + + #99 Polygon - gid: 2599 + + POLYGON((144130.790985 514542.589985,144136.106985 514541.268985,144140.618985 514541.819985,144146.580985 514542.271985,144155.308985 514545.689985,144159.779985 514546.073985,144165.774985 514546.027985,144170.614985 514545.336985,144174.457985 514542.248985,144180.591985 514535.602985,144185.031985 514531.945985,144188.930985 514529.699985,144202.240985 514526.170985,144204.522985 514525.434985,144208.647985 514523.675985,144209.506985 514523.064985,144212.582985 514519.733985,144214.710985 514516.736985,144217.305985 514512.269985,144225.821985 514492.742985,144230.222985 514479.998985,144238.048985 514458.756985,144239.749985 514453.779985,144242.237985 514445.130985,144246.840985 514428.052985,144247.696985 514425.401985,144249.538985 514420.578985,144253.385985 514411.927985,144260.058985 514394.218985,144264.745985 514384.187985,144266.213985 514379.927985,144267.402985 514375.585985,144266.909985 514372.870985,144264.565985 514368.375985,144255.527985 514363.949985,144249.852985 514362.074985,144245.934985 514359.844985,144246.620985 514355.223985,144248.164985 514351.697985,144250.544985 514347.859985,144251.479985 514346.801985,144258.417985 514340.953985,144264.816985 514336.013985,144266.807985 514330.309985,144266.470985 514325.834985,144264.754985 514315.479985,144263.754985 514311.093985,144261.914985 514304.532985,144260.268985 514300.367985,144258.258985 514296.998985,144255.314985 514293.564985,144253.224985 514291.582985,144249.714985 514288.669985,144245.918985 514286.308985,144244.887985 514285.843985,144240.548985 514284.624985,144234.199985 514283.756985,144225.189985 514283.542985,144216.921985 514283.099985,144200.074985 514283.128985,144195.587985 514283.291985,144186.779985 514284.886985,144177.834985 514285.878985,144169.973985 514286.948985,144165.504985 514287.444985,144158.597985 514287.500985,144150.714985 514288.363985,144146.268985 514289.065985,144138.749985 514290.519985,144129.998985 514292.618985,144122.836985 514294.931985,144118.663985 514296.619985,144116.254985 514315.702985,144113.154985 514338.329985,144110.932985 514350.449985,144109.642985 514359.358985,144103.633985 514384.235985,144100.698985 514392.568985,144099.732985 514399.419985,144098.307985 514417.516985,144097.345985 514425.834985,144096.877985 514434.147985,144095.446985 514450.289985,144095.470985 514467.498985,144095.977985 514472.854985,144095.698985 514478.235985,144090.849985 514512.499985,144086.867985 514532.967985,144086.837985 514540.297985,144083.986985 514558.486985,144082.564985 514573.165985,144082.617985 514579.549985,144083.019985 514582.853985,144084.070985 514587.218985,144088.382985 514601.055985,144090.700985 514599.014985,144094.407985 514596.448985,144099.296985 514594.867985,144103.775985 514594.417985,144104.772985 514593.932985,144108.205985 514590.960985,144109.332985 514588.480985,144110.651985 514584.097985,144115.058985 514573.308985,144115.953985 514570.340985,144117.115985 514565.480985,144117.981985 514561.064985,144120.043985 514555.351985,144121.899985 514551.257985,144123.475985 514548.300985,144126.738985 514544.570985,144130.790985 514542.589985)) + POLYGON((144176.60740853 514401.555584319,144177.632982782 514398.643143597,144179.373625931 514394.085531269,144178.682298521 514392.965629534,144176.60740853 514401.555584319)) + + #100 Polygon - gid: 2600 + + POLYGON((153556.031985 514886.227985,153560.525985 514886.012985,153566.393985 514886.836985,153572.264985 514888.653985,153582.160985 514890.869985,153584.416985 514890.833985,153588.654985 514889.150985,153590.995985 514887.355985,153594.093985 514881.247985,153600.596985 514871.470985,153607.108985 514856.972985,153612.956985 514847.521985,153608.356985 514841.430985,153606.284985 514837.439985,153605.664985 514834.687985,153605.359985 514830.122985,153602.267985 514813.476985,153597.582985 514800.609985,153596.965985 514795.730985,153594.556985 514792.788985,153590.938985 514790.044985,153579.228985 514795.635985,153573.643985 514797.721985,153559.445985 514799.291985,153546.944985 514802.898985,153541.754985 514805.976985,153537.104985 514807.634985,153532.352985 514810.440985,153520.030985 514819.197985,153514.515985 514821.769985,153510.278985 514822.486985,153507.876985 514821.350985,153504.524985 514817.626985,153501.188985 514808.128985,153492.871985 514787.013985,153489.388985 514780.831985,153486.307985 514777.186985,153482.664985 514774.839985,153479.481985 514774.368985,153474.831985 514774.926985,153469.574985 514776.303985,153466.025985 514779.167985,153457.313985 514787.843985,153455.681985 514790.459985,153452.692985 514795.895985,153448.357985 514807.237985,153450.054985 514811.435985,153451.618985 514813.811985,153455.073985 514816.927985,153474.460985 514819.993985,153483.496985 514823.991985,153487.335985 514827.674985,153490.999985 514832.613985,153492.523985 514837.561985,153493.082985 514843.424985,153490.543985 514855.424985,153490.223985 514860.751985,153488.498985 514874.433985,153495.036985 514879.182985,153501.180985 514882.939985,153516.063985 514894.582985,153519.796985 514897.079985,153525.665985 514899.415985,153529.748985 514901.565985,153534.832985 514900.527985,153538.446985 514898.728985,153542.061985 514896.077985,153549.964985 514888.768985,153554.033985 514886.791985,153556.031985 514886.227985)) + POLYGON( EMPTY) + \ No newline at end of file diff -Nru geos-3.1.0/tests/xmltester/tests/TestBufferExternal.xml geos-3.2.2/tests/xmltester/tests/TestBufferExternal.xml --- geos-3.1.0/tests/xmltester/tests/TestBufferExternal.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/TestBufferExternal.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,58 @@ + + + Various cases which have been reported or identified as causing buffer failures + in previous versions of JTS. + The cases in this file should all pass in the current version of JTS. + + + com.vividsolutions.jtstest.testrunner.BufferResultMatcher + + + + JTS List reported error - Jan 4, 2007 + Causes return of tiny polygon in Ver 1.8 and earlier + + + POLYGON ((-2598.774169921875 61.087974548339844, + -2599.804443359375 57.09324264526367, -2599.35595703125 + 42.387855529785156, -2595.31298828125 24.86284828186035, + -2586.894287109375 7.970212459564209, -2572.63818359375 + -9.27978801727295, -2560.283935546875 -18.67239761352539, + -2551.49951171875 -22.76344108581543, -2539.59619140625 + -22.507848739624023, -2531.886474609375 -17.93946647644043, + -2531.310546875 -17.19328498840332, -2518.694580078125 + -27.471830368041992, -2564.515869140625 -44.53504943847656, + -2570.234619140625 -46.65970230102539, -2673.622314453125 + 27.439390182495117, -2682.3828125 31.62391471862793, -2698.79052734375 + 39.21870803833008, -2598.774169921875 61.087974548339844)) + + + + POLYGON ((-2598.9877800006584 62.06489354920029, -2597.8058559463916 60.838238598016815, -2598.80056722021 56.981393691373356, -2598.359422519401 42.51673068489857, -2594.36518642589 25.202964287692787, -2586.050417509141 8.518874855177339, -2571.9409713392497 -8.553669047985187, -2559.764298593386 -17.811272817091698, -2551.2883050682995 -21.758675476666994, -2539.8801180014552 -21.51371480841184, -2532.561054468898 -17.176813608772246, -2532.1021741477675 -16.582280683172275, -2530.6789157044022 -16.41801596133651, -2518.0629489075272 -26.696561340975183, -2518.345604985255 -28.40896236757903, -2564.166894047755 -45.4721814380136, -2564.1676040045695 -45.47244551005364, -2569.8863540045695 -47.59709837260247, -2570.8171618573137 -47.47250238913616, -2674.1330478688596 26.575123582663668, -2682.808365109433 30.71896080032791, -2699.2105884679977 38.31121222462303, -2699.784579453414 39.327613516943224, -2699.0041374225334 40.195627039190526, -2598.9877800006584 62.06489354920029)) + + + + + + JTS List reported error - Jan 4, 2007 + Causes return of tiny polygon in Ver 1.8 and earlier + + + POLYGON ((-2985.708251953125 16.51972770690918, -2982.37744140625 + 13.961258888244629, -2972.9091796875 11.138115882873535, -2956.294921875 + 11.763388633728027, -2941.1298828125 14.348956108093262, + -2922.595458984375 19.414688110351562, -2914.568359375 + -10.223998069763184, -2931.0537109375 -16.33589744567871, + -2946.358642578125 -24.970754623413086, -2959.0654296875 + -34.12342834472656, -2969.88330078125 -44.616554260253906, + -2978.60400390625 -55.14395523071289, -2980.379638671875 + -57.39796829223633, -2985.708251953125 16.51972770690918)) + + + + POLYGON ((-2986.70566366335 16.44782582720175, -2985.0990937741126 17.312776452537154, -2981.914734351797 14.8667999628029, -2972.781730022179 12.143620348943537, -2956.3982051078096 12.76020953441973, -2941.346258567696 15.3264952683113, -2922.8591038389686 20.379307926987252, -2921.6302322462557 19.676102233954516, -2913.6031326368807 -9.962583946160228, -2914.2207342589513 -11.161631675545383, -2930.6315593382983 -17.24590055998214, -2945.8190749722658 -25.814513047986875, -2958.4216504283336 -34.892123320729795, -2969.147953587571 -45.296430109246224, -2977.8260723815997 -55.7724244074717, -2979.594103917119 -58.016785833253174, -2980.672899897084 -58.35400064199699, -2981.3770503821 -57.469870171943754, -2986.70566366335 16.44782582720175)) + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/TestIsValid.xml geos-3.2.2/tests/xmltester/tests/TestIsValid.xml --- geos-3.1.0/tests/xmltester/tests/TestIsValid.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/TestIsValid.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,102 @@ + + + + + + http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (1) + + POLYGON((-84.738876 42.582151,-84.738888 42.596708,-84.724038 + 42.596646,-84.719287 42.596633,-84.719227 42.589677,-84.719189 + 42.582134,-84.72666 42.582141,-84.738876 42.582151),(-84.726654 + 42.587769,-84.726352 42.587513,-84.726232 42.587565,-84.726351 + 42.58774,-84.726654 42.587769),(-84.726654 42.587769,-84.727094 + 42.587452,-84.727147 42.58742,-84.727192 42.587315,-84.727168 + 42.587211,-84.727028 42.587189,-84.726797 42.587195,-84.726723 + 42.587239,-84.726654 42.587769)) + + + true + + + + + http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (2) + + POLYGON((-82.509817 27.972398,-82.514117 27.972798,-82.514018 + 27.974298,-82.505617 27.973998,-82.505817 27.966898,-82.507967 + 27.96695,-82.509917 27.966998,-82.510617 27.966998,-82.511217 + 27.966898,-82.513917 27.966998,-82.514665 27.967018,-82.514633 + 27.967194,-82.514697 27.967306,-82.514761 27.967402,-82.514985 + 27.967386,-82.515257 27.967418,-82.515657 27.967498,-82.515881 + 27.967482,-82.516105 27.967354,-82.516105 27.967194,-82.516073 + 27.967018,-82.522762 27.96713,-82.522728 27.967269,-82.522698 + 27.967434,-82.522522 27.96745,-82.522346 27.967402,-82.522186 + 27.967434,-82.52201 27.967402,-82.521866 27.967466,-82.521866 + 27.967786,-82.520617 27.967798,-82.516017 27.968898,-82.509817 + 27.968798,-82.509817 27.972398),(-82.516169 27.967882,-82.516105 + 27.967722,-82.515945 27.967642,-82.515849 27.967642,-82.515801 + 27.967706,-82.515673 27.967754,-82.515657 27.967818,-82.515593 + 27.967946,-82.516169 27.967882),(-82.515593 27.967946,-82.515577 + 27.967786,-82.515433 27.967722,-82.515305 27.967722,-82.515129 + 27.967786,-82.515177 27.967946,-82.515593 27.967946)) + + + true + + + + + http://lists.refractions.net/pipermail/jts-devel/2006-March/001447.html (3) + + POLYGON((-71.931796 42.991371,-71.93256 42.991018,-71.93288 + 42.990854,-71.933182 42.990678,-71.933551 42.990446,-71.933835 + 42.99026,-71.93411 42.990064,-71.934374 42.98986,-71.934563 + 42.989701,-71.934805 42.98948,-71.935031 42.98925,-71.935299 + 42.988958,-71.935559 42.988664,-71.936008 42.988123,-71.936214 + 42.987883,-71.936407 42.987637,-71.936456 42.98757,-71.936383 + 42.991832,-71.936514 42.99218,-71.936843 42.992423,-71.937311 + 42.992499,-71.937807 42.992469,-71.942299 42.99218,-71.946553 + 42.991392,-71.947021 42.993047,-71.942798 42.99363,-71.942331 + 42.993745,-71.942443 42.994306,-71.937363 42.995159,-71.938871 + 42.997584,-71.939874 42.997559,-71.939932 42.999107,-71.938708 + 42.99946,-71.938807 43.000935,-71.938987 43.000993,-71.93738 + 43.002347,-71.937321 43.002418,-71.937093 43.002389,-71.936907 + 43.002351,-71.936541 43.002239,-71.936021 43.002065,-71.935846 + 43.002011,-71.935671 43.001975,-71.935472 43.001935,-71.935093 + 43.001869,-71.933985 43.00171,-71.933607 43.001674,-71.933126 + 43.001639,-71.932939 43.001615,-71.93285 43.001592,-71.932769 + 43.001558,-71.932627 43.001467,-71.931946 43.000986,-71.931801 + 43.000899,-71.931646 43.000819,-71.931466 43.000763,-71.93127 + 43.000744,-71.931078 43.000761,-71.930893 43.000798,-71.930528 + 43.000881,-71.929887 43.000996,-71.9297 43.00101,-71.929034 + 43.001018,-71.928727 43.001025,-71.928253 43.000345,-71.927829 + 42.999794,-71.927479 42.999373,-71.927353 42.999231,-71.927114 + 42.998965,-71.926971 42.998822,-71.926888 42.998722,-71.92683 + 42.99867,-71.92668 42.998502,-71.926461 42.998256,-71.926366 + 42.998132,-71.926283 42.998004,-71.92625 42.997947,-71.926207 + 42.997874,-71.926143 42.997741,-71.926086 42.997608,-71.926038 + 42.997471,-71.926002 42.997331,-71.925972 42.997122,-71.925968 + 42.996912,-71.926004 42.996632,-71.926095 42.996318,-71.926104 + 42.996288,-71.926203 42.996068,-71.926224 42.996021,-71.926372 + 42.995759,-71.926729 42.995183,-71.926877 42.994951,-71.926986 + 42.994781,-71.927784 42.994482,-71.927982 42.994385,-71.928404 + 42.994121,-71.928627 42.993843,-71.928705 42.993509,-71.928598 + 42.992996,-71.928837 42.992817,-71.928863 42.992798,-71.929156 + 42.992616,-71.929384 42.992486,-71.92978 42.992284,-71.930189 + 42.992093,-71.931796 42.991371),(-71.935914 43.001009,-71.935867 + 43.000784,-71.935867 43.000706,-71.935853 43.000638,-71.935832 + 43.000588,-71.935725 43.000595,-71.935689 43.000663,-71.9357 + 43.000852,-71.935732 43.000934,-71.935785 43.000977,-71.935914 + 43.001009),(-71.935914 43.001009,-71.936139 43.000984,-71.93621 + 43.000934,-71.936253 43.000874,-71.936257 43.000774,-71.936228 + 43.000552,-71.936209 43.000485,-71.936203 43.000463,-71.936121 + 43.000449,-71.93606 43.000456,-71.93601 43.000492,-71.936 + 43.000556,-71.936014 43.000638,-71.936032 43.000699,-71.936028 + 43.000806,-71.936003 43.000881,-71.935914 43.001009)) + + + true + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/testLeaksBig.xml geos-3.2.2/tests/xmltester/tests/testLeaksBig.xml --- geos-3.1.0/tests/xmltester/tests/testLeaksBig.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/testLeaksBig.xml 2009-05-02 10:42:20.000000000 +0100 @@ -0,0 +1,10306 @@ + + + + + P - point + POINT(10 10) + + GEOMETRYCOLLECTION EMPTY + + + + + mP - MultiPoint + MULTIPOINT((10 10), (20 20)) + + GEOMETRYCOLLECTION EMPTY + + + + + L - Line + LINESTRING(10 10, 20 20) + + + MULTIPOINT(10 10, 20 20) + + + + + L - closed + LINESTRING(10 10, 20 20, 20 10, 10 10) + + MULTIPOINT EMPTY + + + + + L - self-intersecting with boundary + LINESTRING(40 40, 100 100, 180 100, 180 180, 100 180, 100 100) + + MULTIPOINT(40 40, 100 100) + + + + + mL - 2 lines with common endpoint + MULTILINESTRING( (10 10, 20 20), (20 20, 30 30)) + + MULTIPOINT(10 10, 30 30) + + + + + mL - 3 lines with common endpoint + MULTILINESTRING( (10 10, 20 20), (20 20, 30 20), (20 20, 30 30)) + + MULTIPOINT(10 10, 20 20, 30 20, 30 30) + + + + + mL - 4 lines with common endpoint + MULTILINESTRING( (10 10, 20 20), (20 20, 30 20), (20 20, 30 30), (20 20, 30 40)) + + MULTIPOINT((10 10), (30 20), (30 30), (30 40)) + + + + + mL - 2 lines, one closed, with common endpoint + MULTILINESTRING( (10 10, 20 20), (20 20, 20 30, 30 30, 30 20, 20 20)) + + MULTIPOINT(10 10, 20 20) + + + + + L - 1 line, self-intersecting, topologically equal to prev case + MULTILINESTRING( (10 10, 20 20, 20 30, 30 30, 30 20, 20 20)) + + MULTIPOINT(10 10, 20 20) + + + + + A - polygon with no holes + POLYGON( (40 60, 420 60, 420 320, 40 320, 40 60)) + + LINESTRING(40 60, 420 60, 420 320, 40 320, 40 60) + + + + + A - polygon with 1 hole + POLYGON( (40 60, 420 60, 420 320, 40 320, 40 60), (200 140, 160 220, 260 200, 200 140)) + + + MULTILINESTRING((40 60, 420 60, 420 320, 40 320, 40 60), (200 140, 160 220, 260 200, 200 140)) + + + + + + + SegFault + POLYGON((1033707.6 1048313.1,1033694.9 1048315.7,1033659.9 1048344.3,1033627.6 1048388.8,1033620.9 1048426.8,1033623.6 1048471.3,1033623.6 1048480.8,1033616.8 1048503.2,1033629.1 1048541.3,1033668.3 1048707.6,1033696.3 1048755.6,1033721.4 1048771.6,1033724.5 1048772,1033737.2 1048772,1033772.1 1048756.4,1033794.6 1048721.9,1033811.1 1048667.4,1033814.8 1048613.6,1033815.1 1048597.5,1033809.2 1048556.1,1033809.3 1048549.6,1033797.1 1048501.9,1033790.9 1048492.2,1033773 1048399.6,1033760.6 1048377.6,1033741.8 1048357.8,1033742.1 1048341.8,1033713.9 1048313.4,1033707.6 1048313.1)) + + true + + + + + AA - simple polygons + + POLYGON( + (10 10, 100 10, 100 100, 10 100, 10 10)) + + + POLYGON( + (50 50, 200 50, 200 200, 50 200, 50 50)) + + + + POLYGON( + (50 50, 50 100, 100 100, 100 50, 50 50)) + + + + + POLYGON( + (10 10, 10 100, 50 100, 50 200, 200 200, 200 50, 100 50, 100 10, 10 10)) + + + + + POLYGON( + (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)) + + + + + MULTIPOLYGON( + ( + (10 10, 10 100, 50 100, 50 50, 100 50, 100 10, 10 10)), + ( + (50 100, 50 200, 200 200, 200 50, 100 50, 100 100, 50 100))) + + + + + + AA - A with hole intersecting B + + POLYGON( + (20 20, 20 160, 160 160, 160 20, 20 20), + (140 140, 40 140, 40 40, 140 40, 140 140)) + + + POLYGON( + (80 100, 220 100, 220 240, 80 240, 80 100)) + + + + POLYGON( + (80 140, 80 160, 160 160, 160 100, 140 100, 140 140, 80 140)) + + + + + POLYGON( + (20 20, 20 160, 80 160, 80 240, 220 240, 220 100, 160 100, 160 20, 20 20), + (80 100, 80 140, 40 140, 40 40, 140 40, 140 100, 80 100)) + + + + + POLYGON( + (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, + 160 20, 20 20)) + + + + + MULTIPOLYGON( + ( + (20 20, 20 160, 80 160, 80 140, 40 140, 40 40, 140 40, 140 100, 160 100, + 160 20, 20 20)), + ( + (80 100, 80 140, 140 140, 140 100, 80 100)), + ( + (80 160, 80 240, 220 240, 220 100, 160 100, 160 160, 80 160))) + + + + + + AA - simple polygons #2 + + POLYGON( + (20 340, 330 380, 50 40, 20 340)) + + + POLYGON( + (210 320, 140 270, 0 270, 140 220, 210 320)) + + + + POLYGON( + (27 270, 140 270, 210 320, 140 220, 28 260, 27 270)) + + + + + POLYGON( + (20 340, 330 380, 50 40, 28 260, 0 270, 27 270, 20 340)) + + + + + POLYGON( + (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)) + + + + + MULTIPOLYGON( + ( + (20 340, 330 380, 50 40, 28 260, 140 220, 210 320, 140 270, 27 270, 20 340)), + ( + (27 270, 28 260, 0 270, 27 270))) + + + + + + AA - simple polygons intersecting in P, L and A + + POLYGON( + (0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0)) + + + POLYGON( + (220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0)) + + + + GEOMETRYCOLLECTION( + POINT(110 260), + LINESTRING(110 0, 110 60), + POLYGON( + (110 100, 40 140, 110 180, 180 140, 110 100))) + + + + + POLYGON( + (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), + (110 260, 40 220, 110 180, 180 220, 110 260), + (110 100, 40 60, 110 60, 180 60, 110 100)) + + + + + POLYGON( + (110 0, 0 0, 0 260, 110 260, 40 220, 110 180, 40 140, 110 100, 40 60, + 110 60, 110 0)) + + + + + POLYGON( + (110 0, 0 0, 0 260, 110 260, 220 260, 220 0, 110 0), + (110 260, 40 220, 110 180, 180 220, 110 260), + (110 180, 40 140, 110 100, 180 140, 110 180), + (110 100, 40 60, 110 60, 180 60, 110 100)) + + + + + + AA - simple polygons with two touching holes in their symDifference + + POLYGON( + (0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, + 0 0)) + + + POLYGON( + (230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, + 230 0)) + + + + POLYGON( + (120 0, 0 0, 0 190, 120 190, 230 190, 230 0, 120 0), + (120 100, 50 50, 120 50, 190 50, 120 100), + (120 100, 190 150, 120 150, 50 150, 120 100)) + + + + + + AmA - A simple, symDiff contains inversion + + POLYGON( + (0 0, 210 0, 210 230, 0 230, 0 0)) + + + MULTIPOLYGON( + ( + (40 20, 0 0, 20 40, 60 60, 40 20)), + ( + (60 90, 60 60, 90 60, 90 90, 60 90)), + ( + (70 120, 90 90, 100 120, 70 120)), + ( + (120 70, 90 90, 120 100, 120 70))) + + + + POLYGON( + (0 0, 0 230, 210 230, 210 0, 0 0), + (0 0, 40 20, 60 60, 20 40, 0 0), + (60 60, 90 60, 90 90, 60 90, 60 60), + (90 90, 120 70, 120 100, 90 90), + (90 90, 100 120, 70 120, 90 90)) + + + + + + AmA - A simple, B connected multiPolygon touching A at vertex + + POLYGON( + (0 0, 340 0, 340 300, 0 300, 0 0)) + + + MULTIPOLYGON( + ( + (40 20, 0 0, 20 40, 60 60, 40 20)), + ( + (60 100, 60 60, 100 60, 100 100, 60 100))) + + + + MULTIPOLYGON( + ( + (40 20, 0 0, 20 40, 60 60, 40 20)), + ( + (60 60, 60 100, 100 100, 100 60, 60 60))) + + + + + POLYGON( + (0 0, 0 300, 340 300, 340 0, 0 0), + (0 0, 40 20, 60 60, 20 40, 0 0), + (60 60, 100 60, 100 100, 60 100, 60 60)) + + + + + + AmA - A simple, B connected multiPolygon touching A at interior of edge + + POLYGON( + (0 0, 120 0, 120 120, 0 120, 0 0)) + + + MULTIPOLYGON( + ( + (60 20, 0 20, 60 60, 60 20)), + ( + (60 100, 60 60, 100 60, 100 100, 60 100))) + + + + MULTIPOLYGON( + ( + (60 20, 0 20, 60 60, 60 20)), + ( + (60 60, 60 100, 100 100, 100 60, 60 60))) + + + + + POLYGON( + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20)) + + + + + POLYGON( + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), + (0 20, 60 20, 60 60, 0 20), + (60 60, 100 60, 100 100, 60 100, 60 60)) + + + + + POLYGON( + (0 20, 0 120, 120 120, 120 0, 0 0, 0 20), + (0 20, 60 20, 60 60, 0 20), + (60 60, 100 60, 100 100, 60 100, 60 60)) + + + + + + AA - simple polygons with holes + + POLYGON( + (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), + (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) + + + POLYGON( + (300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), + (290 240, 240 200, 240 110, 290 80, 330 170, 290 240)) + + + + POLYGON( + (251 104, 217 57, 176 89, 210 130, 210 210, 172 226, 190 270, 217 285, 260 250, + 263 218, 240 200, 240 110, 251 104)) + + + + + MULTIPOLYGON( + ( + (217 57, 190 20, 60 40, 20 150, 60 260, 160 330, 217 285, 190 270, 172 226, + 140 240, 80 190, 90 100, 160 70, 176 89, 217 57)), + ( + (217 57, 251 104, 290 80, 330 170, 290 240, 263 218, 260 250, 217 285, 300 330, + 380 250, 380 50, 250 30, 217 57)), + ( + (263 218, 270 130, 251 104, 240 110, 240 200, 263 218)), + ( + (172 226, 210 210, 210 130, 176 89, 150 110, 150 170, 172 226))) + + + + + + mAmA - complex polygons touching and overlapping + + MULTIPOLYGON( + ( + (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, + 200 200, 220 200, 220 340, 120 340)), + ( + (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, + 220 120, 220 100, 360 100, 360 200))) + + + MULTIPOLYGON( + ( + (100 220, 100 200, 300 200, 300 220, 100 220)), + ( + (280 180, 280 160, 300 160, 300 180, 280 180)), + ( + (220 140, 220 120, 240 120, 240 140, 220 140)), + ( + (180 220, 160 240, 200 240, 180 220))) + + + + MULTILINESTRING( + (120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, + 200 200, 220 200, 220 340, 120 340), + (360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, + 220 120, 220 100, 360 100, 360 200)) + + + + + POLYGON( + (220 100, 120 200, 120 340, 220 340, 360 200, 360 100, 220 100)) + + + + + GEOMETRYCOLLECTION( + POINT(200 240), + LINESTRING(300 200, 220 200), + LINESTRING(280 180, 300 180), + LINESTRING(300 180, 300 160), + LINESTRING(300 160, 280 160), + LINESTRING(220 140, 240 140), + LINESTRING(240 120, 220 120), + POLYGON( + (120 200, 120 220, 140 220, 140 200, 120 200)), + POLYGON( + (160 200, 160 220, 180 220, 180 200, 160 200)), + POLYGON( + (180 240, 180 220, 160 240, 180 240)), + POLYGON( + (200 200, 200 220, 220 220, 220 200, 200 200))) + + + + + POLYGON( + (120 220, 120 340, 220 340, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, + 220 120, 220 140, 220 160, 280 160, 280 180, 220 180, 220 200, 200 200, 180 200, 160 200, + 140 200, 120 200, 100 200, 100 220, 120 220), + (200 240, 200 280, 180 280, 180 240, 200 240), + (200 240, 180 220, 200 220, 200 240), + (160 240, 160 280, 140 280, 140 220, 160 220, 160 240), + (240 120, 300 120, 300 140, 240 140, 240 120)) + + + + + MULTIPOLYGON( + ( + (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, + 160 240, 160 280, 140 280, 140 220, 120 220)), + ( + (160 220, 160 240, 180 220, 160 220)), + ( + (300 200, 360 200, 360 100, 220 100, 220 120, 240 120, 300 120, 300 140, 240 140, + 220 140, 220 160, 280 160, 300 160, 300 180, 280 180, 220 180, 220 200, 300 200))) + + + + + MULTIPOLYGON( + ( + (120 220, 120 340, 220 340, 220 220, 200 220, 200 240, 200 280, 180 280, 180 240, + 160 240, 160 280, 140 280, 140 220, 120 220)), + ( + (120 220, 120 200, 100 200, 100 220, 120 220)), + ( + (140 200, 140 220, 160 220, 160 200, 140 200)), + ( + (160 220, 160 240, 180 220, 160 220)), + ( + (180 200, 180 220, 200 220, 200 200, 180 200)), + ( + (180 220, 180 240, 200 240, 180 220)), + ( + (220 200, 220 220, 300 220, 300 200, 360 200, 360 100, 220 100, 220 120, 220 140, + 220 160, 280 160, 280 180, 220 180, 220 200), + (240 120, 300 120, 300 140, 240 140, 240 120))) + + + + + + mAmA - complex polygons touching + + MULTIPOLYGON( + ( + (100 200, 100 180, 120 180, 120 200, 100 200)), + ( + (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, + 160 220, 220 220, 220 240, 60 240), + (80 220, 80 160, 140 160, 140 220, 80 220)), + ( + (280 220, 240 180, 260 160, 300 200, 280 220))) + + + MULTIPOLYGON( + ( + (80 220, 80 160, 140 160, 140 220, 80 220), + (100 200, 100 180, 120 180, 120 200, 100 200)), + ( + (220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, + 220 140, 320 140, 320 240, 220 240), + (240 220, 240 160, 300 160, 300 220, 240 220))) + + + + MULTILINESTRING( + (100 200, 100 180, 120 180, 120 200, 100 200), + (60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, + 160 220, 220 220, 220 240, 60 240), + (80 220, 80 160, 140 160, 140 220, 80 220), + (280 220, 240 180, 260 160, 300 200, 280 220)) + + + + + POLYGON( + (60 140, 60 240, 220 240, 280 220, 300 200, 260 160, 220 140, 60 140)) + + + + + GEOMETRYCOLLECTION( + POINT(240 180), + POINT(260 160), + POINT(280 220), + POINT(300 200), + LINESTRING(100 200, 100 180), + LINESTRING(100 180, 120 180), + LINESTRING(120 180, 120 200), + LINESTRING(120 200, 100 200), + LINESTRING(220 140, 220 160), + LINESTRING(220 160, 160 160), + LINESTRING(160 160, 160 180), + LINESTRING(160 180, 200 180), + LINESTRING(200 200, 160 200), + LINESTRING(160 200, 160 220), + LINESTRING(160 220, 220 220), + LINESTRING(220 220, 220 240), + LINESTRING(80 220, 80 160), + LINESTRING(80 160, 140 160), + LINESTRING(140 160, 140 220), + LINESTRING(140 220, 80 220)) + + + + + MULTIPOLYGON( + ( + (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), + (200 200, 200 180, 220 180, 220 200, 200 200), + (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), + ( + (240 180, 280 220, 300 200, 260 160, 240 180))) + + + + + MULTIPOLYGON( + ( + (100 180, 100 200, 120 200, 120 180, 100 180)), + ( + (220 140, 60 140, 60 240, 220 240, 220 220, 160 220, 160 200, 200 200, 200 180, + 160 180, 160 160, 220 160, 220 140), + (80 220, 80 160, 140 160, 140 220, 80 220)), + ( + (240 180, 280 220, 300 200, 260 160, 240 180))) + + + + + MULTIPOLYGON( + ( + (220 140, 60 140, 60 240, 220 240, 320 240, 320 140, 220 140), + (200 200, 200 180, 220 180, 220 200, 200 200), + (240 220, 240 180, 240 160, 260 160, 300 160, 300 200, 300 220, 280 220, 240 220)), + ( + (240 180, 280 220, 300 200, 260 160, 240 180))) + + + + + + AA - hole intersecting boundary to produce line + + POLYGON( + (60 160, 140 160, 140 60, 60 60, 60 160)) + + + POLYGON( + (160 160, 100 160, 100 100, 160 100, 160 160), + (140 140, 120 140, 120 120, 140 120, 140 140)) + + + + LINESTRING( + 60 160, 140 160, 140 60, 60 60, 60 160) + + + + + POLYGON( + (60 60, 60 160, 140 160, 140 60, 60 60)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(140 140, 140 120), + POLYGON( + (100 160, 140 160, 140 140, 120 140, 120 120, 140 120, 140 100, 100 100, 100 160))) + + + + + POLYGON( + (60 160, 100 160, 140 160, 160 160, 160 100, 140 100, 140 60, 60 60, 60 160)) + + + + + MULTIPOLYGON( + ( + (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), + ( + (140 140, 140 120, 120 120, 120 140, 140 140))) + + + + + MULTIPOLYGON( + ( + (60 160, 100 160, 100 100, 140 100, 140 60, 60 60, 60 160)), + ( + (140 140, 140 160, 160 160, 160 100, 140 100, 140 120, 120 120, 120 140, 140 140))) + + + + + + + LA - A and B simple + + LINESTRING(240 190, 120 120) + + + POLYGON( + (110 240, 50 80, 240 70, 110 240)) + + + + LINESTRING(177 153, 120 120) + + + + + GEOMETRYCOLLECTION( + LINESTRING(240 190, 177 153), + POLYGON( + (177 153, 240 70, 50 80, 110 240, 177 153))) + + + + + LINESTRING(240 190, 177 153) + + + + + GEOMETRYCOLLECTION( + LINESTRING(240 190, 177 153), + POLYGON( + (177 153, 240 70, 50 80, 110 240, 177 153))) + + + + + + LA - A intersects B-hole + + LINESTRING(0 100, 100 100, 200 200) + + + POLYGON( + (30 240, 260 30, 30 30, 30 240), + (80 140, 80 80, 140 80, 80 140)) + + + + MULTILINESTRING( + (30 100, 80 100), + (110 110, 140 140)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(0 100, 30 100), + LINESTRING(80 100, 100 100, 110 110), + LINESTRING(140 140, 200 200), + POLYGON( + (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), + (80 140, 80 100, 80 80, 140 80, 110 110, 80 140))) + + + + + MULTILINESTRING( + (0 100, 30 100), + (80 100, 100 100, 110 110), + (140 140, 200 200)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(0 100, 30 100), + LINESTRING(80 100, 100 100, 110 110), + LINESTRING(140 140, 200 200), + POLYGON( + (30 240, 140 140, 260 30, 30 30, 30 100, 30 240), + (80 140, 80 100, 80 80, 140 80, 110 110, 80 140))) + + + + + + LA - A intersects B-hole #2 + + LINESTRING(40 340, 200 250, 120 180, 160 110, 270 40) + + + POLYGON( + (160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), + (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) + + + + MULTILINESTRING( + (114 298, 200 250, 173 226), + (182 96, 225 68)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 340, 114 298), + LINESTRING(173 226, 120 180, 160 110, 182 96), + LINESTRING(225 68, 270 40), + POLYGON( + (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, + 114 298), + (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240))) + + + + + MULTILINESTRING( + (40 340, 114 298), + (173 226, 120 180, 160 110, 182 96), + (225 68, 270 40)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 340, 114 298), + LINESTRING(173 226, 120 180, 160 110, 182 96), + LINESTRING(225 68, 270 40), + POLYGON( + (114 298, 160 330, 260 250, 270 130, 225 68, 190 20, 60 40, 20 150, 60 260, + 114 298), + (140 240, 80 190, 90 100, 160 70, 182 96, 210 130, 210 210, 173 226, 140 240))) + + + + + + mLmA - A and B complex, disjoint + + MULTIPOLYGON( + ( + (60 320, 60 80, 300 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + ( + (120 160, 140 160, 140 140, 120 160))) + + + MULTILINESTRING( + (100 240, 100 180, 160 180, 160 120, 220 120), + (40 360, 40 60, 340 60, 40 360, 40 20), + (120 120, 120 140, 100 140, 100 120, 140 120)) + + + + POLYGON( + (60 80, 60 320, 300 80, 60 80)) + + + + + MULTILINESTRING( + (60 320, 60 80, 300 80, 60 320), + (80 280, 80 100, 260 100, 80 280), + (120 160, 140 160, 140 140, 120 160)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), + LINESTRING(40 360, 40 60), + LINESTRING(40 60, 340 60, 40 360), + LINESTRING(40 60, 40 20), + LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), + LINESTRING(120 120, 140 120), + POLYGON( + (60 320, 300 80, 60 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + POLYGON( + (120 160, 140 160, 140 140, 120 160))) + + + + + MULTIPOLYGON( + ( + (60 320, 300 80, 60 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + ( + (120 160, 140 160, 140 140, 120 160))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(100 240, 100 180, 160 180, 160 120, 220 120), + LINESTRING(40 360, 40 60), + LINESTRING(40 60, 340 60, 40 360), + LINESTRING(40 60, 40 20), + LINESTRING(120 120, 120 140, 100 140, 100 120, 120 120), + LINESTRING(120 120, 140 120), + POLYGON( + (60 320, 300 80, 60 80, 60 320), + (80 280, 80 100, 260 100, 80 280)), + POLYGON( + (120 160, 140 160, 140 140, 120 160))) + + + + + GEOMETRYCOLLECTION EMPTY + + + + + mLmA - A and B complex, overlapping and touching #1 + + MULTIPOLYGON( + ( + (60 260, 60 120, 220 120, 220 260, 60 260), + (80 240, 80 140, 200 140, 200 240, 80 240)), + ( + (100 220, 100 160, 180 160, 180 220, 100 220), + (120 200, 120 180, 160 180, 160 200, 120 200))) + + + MULTILINESTRING( + (40 260, 240 260, 240 240, 40 240, 40 220, 240 220), + (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320)) + + + + MULTILINESTRING( + (60 260, 60 120, 220 120, 220 260, 60 260), + (80 240, 80 140, 200 140, 200 240, 80 240), + (100 220, 100 160, 180 160, 180 220, 100 220), + (120 200, 120 180, 160 180, 160 200, 120 200)) + + + + + POLYGON( + (60 120, 60 260, 220 260, 220 120, 60 120)) + + + + + MULTILINESTRING( + (220 260, 140 260), + (140 260, 120 260), + (120 260, 60 260), + (200 240, 140 240), + (140 240, 120 240), + (120 240, 80 240), + (180 220, 140 220), + (140 220, 120 220), + (120 220, 100 220), + (120 200, 120 180), + (220 240, 200 240), + (80 240, 60 240), + (60 220, 80 220), + (200 220, 220 220), + (120 260, 120 240), + (120 220, 120 200), + (120 180, 120 160), + (120 140, 120 120), + (140 120, 140 140), + (140 160, 140 180), + (140 200, 140 220), + (140 240, 140 260)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 260, 60 260), + LINESTRING(220 260, 240 260, 240 240, 220 240), + LINESTRING(60 240, 40 240, 40 220, 60 220), + LINESTRING(80 220, 100 220), + LINESTRING(180 220, 200 220), + LINESTRING(220 220, 240 220), + LINESTRING(120 300, 120 260), + LINESTRING(120 240, 120 220), + LINESTRING(120 160, 120 140), + LINESTRING(120 120, 120 80), + LINESTRING(120 80, 140 80), + LINESTRING(140 80, 140 120), + LINESTRING(140 140, 140 160), + LINESTRING(140 180, 140 200), + LINESTRING(140 220, 140 240), + LINESTRING(140 260, 140 300), + LINESTRING(120 300, 120 320), + POLYGON( + (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, + 120 120, 60 120, 60 220, 60 240), + (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, + 120 240, 80 240)), + POLYGON( + (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), + (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) + + + + + MULTIPOLYGON( + ( + (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, + 120 120, 60 120, 60 220, 60 240), + (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, + 120 240, 80 240)), + ( + (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), + (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(40 260, 60 260), + LINESTRING(220 260, 240 260, 240 240, 220 240), + LINESTRING(60 240, 40 240, 40 220, 60 220), + LINESTRING(80 220, 100 220), + LINESTRING(180 220, 200 220), + LINESTRING(220 220, 240 220), + LINESTRING(120 300, 120 260), + LINESTRING(120 240, 120 220), + LINESTRING(120 160, 120 140), + LINESTRING(120 120, 120 80), + LINESTRING(120 80, 140 80), + LINESTRING(140 80, 140 120), + LINESTRING(140 140, 140 160), + LINESTRING(140 180, 140 200), + LINESTRING(140 220, 140 240), + LINESTRING(140 260, 140 300), + LINESTRING(120 300, 120 320), + POLYGON( + (60 240, 60 260, 120 260, 140 260, 220 260, 220 240, 220 220, 220 120, 140 120, + 120 120, 60 120, 60 220, 60 240), + (80 240, 80 220, 80 140, 120 140, 140 140, 200 140, 200 220, 200 240, 140 240, + 120 240, 80 240)), + POLYGON( + (120 160, 100 160, 100 220, 120 220, 140 220, 180 220, 180 160, 140 160, 120 160), + (120 200, 120 180, 140 180, 160 180, 160 200, 140 200, 120 200))) + + + + mLmA - A and B complex, overlapping and touching #2 + + MULTIPOLYGON( + ( + (60 320, 60 120, 280 120, 280 320, 60 320), + (120 260, 120 180, 240 180, 240 260, 120 260)), + ( + (280 400, 320 400, 320 360, 280 360, 280 400)), + ( + (300 240, 300 220, 320 220, 320 240, 300 240))) + + + MULTILINESTRING( + (80 300, 80 160, 260 160, 260 300, 80 300, 80 140), + (220 360, 220 240, 300 240, 300 360)) + + + + POLYGON( + (60 120, 60 320, 280 400, 320 400, 320 220, 280 120, 60 120)) + + + + + MULTILINESTRING( + (60 320, 60 120, 280 120, 280 320, 60 320), + (120 260, 120 180, 240 180, 240 260, 120 260), + (280 400, 320 400, 320 360, 280 360, 280 400), + (300 240, 300 220, 320 220, 320 240, 300 240)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(220 360, 220 320), + LINESTRING(220 260, 220 240, 240 240), + LINESTRING(280 240, 300 240), + LINESTRING(300 240, 300 360), + POLYGON( + (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), + (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), + POLYGON( + (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), + POLYGON( + (300 240, 320 240, 320 220, 300 220, 300 240))) + + + + + MULTIPOLYGON( + ( + (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), + (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), + ( + (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), + ( + (300 240, 320 240, 320 220, 300 220, 300 240))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(220 360, 220 320), + LINESTRING(220 260, 220 240, 240 240), + LINESTRING(280 240, 300 240), + LINESTRING(300 240, 300 360), + POLYGON( + (280 240, 280 120, 60 120, 60 320, 220 320, 280 320, 280 240), + (120 260, 120 180, 240 180, 240 240, 240 260, 220 260, 120 260)), + POLYGON( + (280 400, 320 400, 320 360, 300 360, 280 360, 280 400)), + POLYGON( + (300 240, 320 240, 320 220, 300 220, 300 240))) + + + + + GEOMETRYCOLLECTION( + POINT(300 240), + POINT(300 360), + LINESTRING(80 300, 80 160), + LINESTRING(80 160, 260 160, 260 240), + LINESTRING(260 240, 260 300, 220 300), + LINESTRING(220 300, 80 300), + LINESTRING(80 160, 80 140), + LINESTRING(220 320, 220 300), + LINESTRING(220 300, 220 260), + LINESTRING(240 240, 260 240), + LINESTRING(260 240, 280 240)) + + + + + + mLmA - A and B complex, overlapping and touching #3 + + MULTIPOLYGON( + ( + (120 180, 60 80, 180 80, 120 180)), + ( + (100 240, 140 240, 120 220, 100 240))) + + + MULTILINESTRING( + (180 260, 120 180, 60 260, 180 260), + (60 300, 60 40), + (100 100, 140 100)) + + + + POLYGON( + (60 80, 100 240, 140 240, 180 80, 60 80)) + + + + + MULTILINESTRING( + (120 180, 60 80, 180 80, 120 180), + (100 240, 140 240, 120 220, 100 240)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(180 260, 120 180), + LINESTRING(120 180, 60 260), + LINESTRING(60 260, 180 260), + LINESTRING(60 300, 60 260), + LINESTRING(60 260, 60 80), + LINESTRING(60 80, 60 40), + POLYGON( + (60 80, 120 180, 180 80, 60 80)), + POLYGON( + (100 240, 140 240, 120 220, 100 240))) + + + + + MULTIPOLYGON( + ( + (60 80, 120 180, 180 80, 60 80)), + ( + (100 240, 140 240, 120 220, 100 240))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(180 260, 120 180), + LINESTRING(120 180, 60 260), + LINESTRING(60 260, 180 260), + LINESTRING(60 300, 60 260), + LINESTRING(60 260, 60 80), + LINESTRING(60 80, 60 40), + POLYGON( + (60 80, 120 180, 180 80, 60 80)), + POLYGON( + (100 240, 140 240, 120 220, 100 240))) + + + + + GEOMETRYCOLLECTION( + POINT(60 80), + POINT(120 180), + LINESTRING(100 100, 140 100)) + + + + + + + LL - A crosses B + + LINESTRING(0 0, 100 100) + + + LINESTRING(0 100, 100 0) + + + + POINT(50 50) + + + + + MULTILINESTRING( + (0 0, 50 50), + (0 100, 50 50), + (50 50, 100 100), + (50 50, 100 0)) + + + + + MULTILINESTRING( + (0 0, 50 50), + (50 50, 100 100)) + + + + + MULTILINESTRING( + (0 0, 50 50), + (0 100, 50 50), + (50 50, 100 100), + (50 50, 100 0)) + + + + + + LL - A shares one segment with B + + LINESTRING(0 0, 100 100, 200 0) + + + LINESTRING(0 0, 100 100, 200 200) + + + + LINESTRING(0 0, 100 100) + + + + + MULTILINESTRING( + (0 0, 100 100), + (100 100, 200 200), + (100 100, 200 0)) + + + + + LINESTRING(100 100, 200 0) + + + + + MULTILINESTRING( + (100 100, 200 200), + (100 100, 200 0)) + + + + + + LL - A and B disjoint + + LINESTRING(40 360, 40 220, 120 360) + + + LINESTRING(120 340, 60 220, 140 220, 140 360) + + + + MULTIPOINT(40 360, 120 360) + + + + + POLYGON( + (40 220, 40 360, 120 360, 40 220)) + + + + + GEOMETRYCOLLECTION EMPTY + + + + MULTILINESTRING( + (40 360, 40 220, 120 360), + (120 340, 60 220, 140 220, 140 360)) + + + + + LINESTRING(40 360, 40 220, 120 360) + + + + + MULTILINESTRING( + (40 360, 40 220, 120 360), + (120 340, 60 220, 140 220, 140 360)) + + + + + + LL - A and B intersect frequently + + LINESTRING(220 240, 200 220, 60 320, 40 300, 180 200, 160 180, 20 280) + + + LINESTRING(220 240, 140 160, 120 180, 220 280, 200 300, 100 200) + + + + MULTIPOINT(220 240, 20 280) + + + + + POLYGON( + (160 180, 20 280, 60 320, 220 240, 160 180)) + + + + + GEOMETRYCOLLECTION( + POINT(113 213), + POINT(133 233), + POINT(137 197), + POINT(153 253), + POINT(157 217), + POINT(177 237), + LINESTRING(180 200, 160 180), + LINESTRING(220 240, 200 220)) + + + + + MULTILINESTRING( + (113 213, 20 280), + (133 233, 113 213), + (113 213, 100 200), + (137 197, 113 213), + (153 253, 133 233), + (153 253, 60 320, 40 300, 133 233), + (133 233, 157 217), + (137 197, 157 217), + (160 180, 140 160, 120 180, 137 197), + (160 180, 137 197), + (177 237, 220 280, 200 300, 153 253), + (177 237, 153 253), + (157 217, 177 237), + (157 217, 180 200), + (180 200, 160 180), + (200 220, 177 237), + (200 220, 180 200), + (220 240, 200 220)) + + + + + MULTILINESTRING( + (200 220, 177 237), + (177 237, 153 253), + (153 253, 60 320, 40 300, 133 233), + (133 233, 157 217), + (157 217, 180 200), + (160 180, 137 197), + (137 197, 113 213), + (113 213, 20 280)) + + + + + MULTILINESTRING( + (200 220, 177 237), + (177 237, 153 253), + (153 253, 60 320, 40 300, 133 233), + (133 233, 157 217), + (157 217, 180 200), + (160 180, 137 197), + (137 197, 113 213), + (113 213, 20 280), + (200 220, 180 200), + (160 180, 140 160, 120 180, 137 197), + (137 197, 157 217), + (157 217, 177 237), + (177 237, 220 280, 200 300, 153 253), + (153 253, 133 233), + (133 233, 113 213), + (113 213, 100 200)) + + + + + + LL - A and B equal + + LINESTRING(80 320, 220 320, 220 160, 80 300) + + + LINESTRING(80 320, 220 320, 220 160, 80 300) + + + + MULTIPOINT(80 320, 80 300) + + + + + POLYGON( + (220 160, 80 300, 80 320, 220 320, 220 160)) + + + + + MULTILINESTRING( + (220 160, 80 300), + (80 320, 220 320), + (220 320, 220 160)) + + + + + MULTILINESTRING( + (220 160, 80 300), + (80 320, 220 320), + (220 320, 220 160)) + + + + + GEOMETRYCOLLECTION EMPTY + + + + GEOMETRYCOLLECTION EMPTY + + + + + LL - A and B touch ends + + LINESTRING(60 200, 60 260, 140 200) + + + LINESTRING(60 200, 60 140, 140 200) + + + + MULTIPOINT(60 200, 140 200) + + + + + POLYGON( + (60 200, 60 260, 140 200, 60 200)) + + + + + MULTIPOINT(60 200, 140 200) + + + + + MULTILINESTRING( + (60 200, 60 260, 140 200), + (60 200, 60 140, 140 200)) + + + + + LINESTRING(60 200, 60 260, 140 200) + + + + + MULTILINESTRING( + (60 200, 60 260, 140 200), + (60 200, 60 140, 140 200)) + + + + + + LL - intersecting rings + + LINESTRING(180 200, 100 280, 20 200, 100 120, 180 200) + + + LINESTRING(100 200, 220 200, 220 80, 100 80, 100 200) + + + + MULTIPOINT EMPTY + + + + POLYGON( + (100 120, 20 200, 100 280, 180 200, 100 120)) + + + + + MULTIPOINT(100 120, 180 200) + + + + + MULTILINESTRING( + (100 120, 180 200), + (100 120, 100 200), + (180 200, 100 280, 20 200, 100 120), + (180 200, 220 200, 220 80, 100 80, 100 120), + (100 200, 180 200)) + + + + + MULTILINESTRING( + (100 120, 180 200), + (180 200, 100 280, 20 200, 100 120)) + + + + + MULTILINESTRING( + (100 120, 180 200), + (100 120, 100 200), + (180 200, 100 280, 20 200, 100 120), + (180 200, 220 200, 220 80, 100 80, 100 120), + (100 200, 180 200)) + + + + + + + PA - point contained in simple polygon + + POINT(100 100) + + + POLYGON( + (50 50, 200 50, 200 200, 50 200, 50 50)) + + + + POINT(100 100) + + + + + + mPmA - points on I, B and E of touching triangles + + MULTIPOLYGON( + ( + (120 320, 180 200, 240 320, 120 320)), + ( + (180 200, 240 80, 300 200, 180 200))) + + + MULTIPOINT(120 320, 180 260, 180 320, 180 200, 300 200, 200 220) + + + + MULTILINESTRING( + (120 320, 180 200, 240 320, 120 320), + (180 200, 240 80, 300 200, 180 200)) + + + + + POLYGON( + (240 80, 120 320, 240 320, 300 200, 240 80)) + + + + + MULTIPOINT(120 320, 180 200, 180 260, 180 320, 300 200) + + + + + GEOMETRYCOLLECTION( + POINT(200 220), + POLYGON( + (180 200, 120 320, 240 320, 180 200)), + POLYGON( + (180 200, 300 200, 240 80, 180 200))) + + + + + MULTIPOLYGON( + ( + (180 200, 120 320, 240 320, 180 200)), + ( + (180 200, 300 200, 240 80, 180 200))) + + + + + GEOMETRYCOLLECTION( + POINT(200 220), + POLYGON( + (180 200, 120 320, 240 320, 180 200)), + POLYGON( + (180 200, 300 200, 240 80, 180 200))) + + + + + + mPmA - points on I, B and E of concentric doughnuts + + MULTIPOLYGON( + ( + (120 80, 420 80, 420 340, 120 340, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + ( + (200 260, 200 160, 340 160, 340 260, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + MULTIPOINT(200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, + 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200) + + + + MULTILINESTRING( + (120 80, 420 80, 420 340, 120 340, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300), + (200 260, 200 160, 340 160, 340 260, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220)) + + + + + POLYGON( + (120 80, 120 340, 420 340, 420 80, 120 80)) + + + + + MULTIPOINT(200 160, 220 180, 260 200, 340 120, 400 100, 420 340) + + + + + GEOMETRYCOLLECTION( + POINT(200 140), + POINT(200 360), + POLYGON( + (120 80, 120 340, 420 340, 420 80, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + POLYGON( + (200 260, 340 260, 340 160, 200 160, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + + + MULTIPOLYGON( + ( + (120 80, 120 340, 420 340, 420 80, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + ( + (200 260, 340 260, 340 160, 200 160, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + + + GEOMETRYCOLLECTION( + POINT(200 140), + POINT(200 360), + POLYGON( + (120 80, 120 340, 420 340, 420 80, 120 80), + (160 300, 160 120, 380 120, 380 300, 160 300)), + POLYGON( + (200 260, 340 260, 340 160, 200 160, 200 260), + (240 220, 240 200, 300 200, 300 220, 240 220))) + + + + + + + mPL - points in I and E of line + + MULTIPOINT(40 90, 20 20, 70 70) + + + LINESTRING(20 20, 100 100) + + + + MULTIPOINT(20 20, 70 70) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 100 100)) + + + + + POINT(40 90) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 100 100)) + + + + + + mPL - points in I and E of line, line self-intersecting + + MULTIPOINT(40 90, 20 20, 70 70) + + + LINESTRING(20 20, 110 110, 170 50, 130 10, 70 70) + + + + MULTIPOINT(20 20, 70 70) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 70 70), + LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70)) + + + + + POINT(40 90) + + + + + GEOMETRYCOLLECTION( + POINT(40 90), + LINESTRING(20 20, 70 70), + LINESTRING(70 70, 110 110, 170 50, 130 10, 70 70)) + + + + + + mPmL - points in I, B and E of lines, lines overlap, points overlap + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 220, 100 320)) + + + MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, + 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, + 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320) + + + + MULTIPOINT(100 220, 100 320) + + + + + POLYGON( + (100 180, 100 320, 220 320, 220 180, 100 180)) + + + + + MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, + 220 260, 220 320) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320)) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + + mPmL - points in I, B and E of lines, lines overlap, points overlap, x <0, y < 0 + + MULTILINESTRING( + (-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340), + (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140)) + + + MULTIPOINT(-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, + -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, + -320 -180, -280 -140, -320 -120) + + + + MULTIPOINT(-500 -340, -500 -140) + + + + + POLYGON( + (-500 -340, -500 -140, -320 -140, -320 -280, -500 -340)) + + + + + MULTIPOINT(-500 -340, -500 -280, -500 -220, -500 -140, -420 -140, -320 -180, -320 -140) + + + + + GEOMETRYCOLLECTION( + POINT(-560 -180), + POINT(-420 -180), + POINT(-320 -120), + POINT(-280 -140), + LINESTRING(-500 -140, -500 -280), + LINESTRING(-500 -280, -320 -280, -320 -140), + LINESTRING(-320 -140, -500 -140), + LINESTRING(-500 -280, -500 -340)) + + + + + MULTILINESTRING( + (-500 -140, -500 -280), + (-500 -280, -320 -280, -320 -140), + (-320 -140, -500 -140), + (-500 -280, -500 -340)) + + + + + GEOMETRYCOLLECTION( + POINT(-560 -180), + POINT(-420 -180), + POINT(-320 -120), + POINT(-280 -140), + LINESTRING(-500 -140, -500 -280), + LINESTRING(-500 -280, -320 -280, -320 -140), + LINESTRING(-320 -140, -500 -140), + LINESTRING(-500 -280, -500 -340)) + + + + + + mL - lines intersect at 1 point + + MULTILINESTRING( + (180 100, 140 280, 240 140, 220 120, 140 280), + (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280)) + + + + MULTIPOINT(180 100, 140 280) + + + + + + mPmL - points in I, B and E of lines, lines overlap, points overlap + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320), + (100 220, 100 320)) + + + MULTIPOINT(100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, + 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, + 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320) + + + + MULTIPOINT(100 220, 100 320) + + + + + POLYGON( + (100 180, 100 320, 220 320, 220 180, 100 180)) + + + + + MULTIPOINT(100 180, 100 220, 100 260, 100 320, 120 180, 160 320, 200 180, 200 320, 220 180, + 220 260, 220 320) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + MULTILINESTRING( + (100 320, 100 220), + (100 180, 200 180), + (220 180, 220 320), + (220 320, 160 320)) + + + + + GEOMETRYCOLLECTION( + POINT(100 200), + POINT(120 320), + POINT(140 320), + LINESTRING(100 320, 100 220), + LINESTRING(100 180, 200 180), + LINESTRING(220 180, 220 320), + LINESTRING(220 320, 160 320)) + + + + + + + PP - point contained in both A and B + + POINT(100 100) + + + POINT(100 100) + + + + POINT(100 100) + + + + + + PP - A different from B + + POINT(100 100) + + + POINT(200 200) + + + + GEOMETRYCOLLECTION EMPTY + + + + MULTIPOINT(100 100, 200 200) + + + + + POINT(100 100) + + + + + MULTIPOINT(100 100, 200 200) + + + + + + PmP - point in A contained in B + + POINT(100 100) + + + MULTIPOINT(100 100, 200 200) + + + + POINT(100 100) + + + + + MULTIPOINT(100 100, 200 200) + + + + + GEOMETRYCOLLECTION EMPTY + + + + POINT(200 200) + + + + + + mPmP - points in A only, B only, and in both + + MULTIPOINT(100 100, 200 200, 300 300, 500 500) + + + MULTIPOINT(100 100, 200 200, 400 400, 600 600) + + + + MULTIPOINT(100 100, 200 200) + + + + + MULTIPOINT(100 100, 200 200, 300 300, 400 400, 500 500, 600 600) + + + + + MULTIPOINT(300 300, 500 500) + + + + + MULTIPOINT(300 300, 400 400, 500 500, 600 600) + + + + + + PP - point contained in both A and B + + POINT(80 200) + + + POINT(80 200) + + + + GEOMETRYCOLLECTION EMPTY + + + + POINT(80 200) + + + + + POINT(80 200) + + + + + POINT(80 200) + + + + + GEOMETRYCOLLECTION EMPTY + + + + GEOMETRYCOLLECTION EMPTY + + + + + PP - A different from B + + POINT(80 200) + + + POINT(260 80) + + + + GEOMETRYCOLLECTION EMPTY + + + + POINT(80 200) + + + + + GEOMETRYCOLLECTION EMPTY + + + + MULTIPOINT(80 200, 260 80) + + + + + POINT(80 200) + + + + + MULTIPOINT(80 200, 260 80) + + + + + + PP - A different from B, same y + + POINT(60 260) + + + POINT(120 260) + + + + GEOMETRYCOLLECTION EMPTY + + + + POINT(60 260) + + + + + GEOMETRYCOLLECTION EMPTY + + + + MULTIPOINT(60 260, 120 260) + + + + + POINT(60 260) + + + + + MULTIPOINT(60 260, 120 260) + + + + + + PP - A different from B, same x + + POINT(80 80) + + + POINT(80 280) + + + + GEOMETRYCOLLECTION EMPTY + + + + POINT(80 80) + + + + + GEOMETRYCOLLECTION EMPTY + + + + MULTIPOINT(80 80, 80 280) + + + + + POINT(80 80) + + + + + MULTIPOINT(80 80, 80 280) + + + + + + AA - sliver triangle, cut by polygon + + POLYGON( + (10 10, 100 10, 10 11, 10 10)) + + + POLYGON( + (90 0, 200 0, 200 200, 90 200, 90 0)) + + + + true + + + + + LINESTRING(90 10, 100 10) + + + + + MULTIPOLYGON( + ( + (90 10, 10 10, 10 11, 90 10)), + ( + (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) + + + + + POLYGON( + (90 10, 10 10, 10 11, 90 10)) + + + + + MULTIPOLYGON( + ( + (90 10, 10 10, 10 11, 90 10)), + ( + (90 10, 90 200, 200 200, 200 0, 90 0, 90 10))) + + + + + + AA - polygon with outward sliver, cut by polygon + + POLYGON( + (100 10, 10 10, 90 11, 90 20, 100 20, 100 10)) + + + POLYGON( + (20 20, 0 20, 0 0, 20 0, 20 20)) + + + + true + + + + + LINESTRING(20 10, 10 10) + + + + + + AA - narrow wedge in polygon + + POLYGON( + (10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10)) + + + POLYGON( + (60 40, 40 40, 40 20, 60 20, 60 40)) + + + + true + + + + + POLYGON( + (50 40, 50 20, 40 20, 40 30, 40 40, 50 40)) + + + + + POLYGON( + (50 20, 50 10, 10 10, 10 30, 40 30, 10 31, 10 50, 50 50, 50 40, + 60 40, 60 20, 50 20)) + + + + + MULTIPOLYGON( + ( + (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), + ( + (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) + + + + + MULTIPOLYGON( + ( + (50 20, 50 10, 10 10, 10 30, 40 30, 40 20, 50 20)), + ( + (50 20, 50 40, 60 40, 60 20, 50 20)), + ( + (40 30, 10 31, 10 50, 50 50, 50 40, 40 40, 40 30))) + + + + + + AA - hole close to shell + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + POLYGON( + (0 30, 0 0, 30 0, 30 30, 0 30)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) + + + + + POLYGON( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (30 10, 30 0, 0 0, 0 30, 10 30, 30 30, 30 10))) + + + + + + mAA - shells close together + + MULTIPOLYGON( + ( + (0 0, 100 0, 100 20, 0 20, 0 0)), + ( + (0 40, 0 21, 100 20, 100 40, 0 40))) + + + POLYGON( + (110 30, 90 30, 90 10, 110 10, 110 30)) + + + + true + + + + + GEOMETRYCOLLECTION( + LINESTRING(100 20, 90 20), + POLYGON( + (100 20, 100 10, 90 10, 90 20, 90 30, 100 30, 100 20))) + + + + + POLYGON( + (100 10, 100 0, 0 0, 0 20, 90 20, 0 21, 0 40, 100 40, 100 30, + 110 30, 110 10, 100 10)) + + + + + MULTIPOLYGON( + ( + (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), + ( + (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) + + + + + MULTIPOLYGON( + ( + (100 10, 100 0, 0 0, 0 20, 90 20, 90 10, 100 10)), + ( + (100 10, 100 20, 100 30, 110 30, 110 10, 100 10)), + ( + (90 20, 0 21, 0 40, 100 40, 100 30, 90 30, 90 20))) + + + + + + AA - A sliver triangle cutting all the way across B + + POLYGON( + (100 10, 0 10, 100 11, 100 10)) + + + POLYGON( + (20 20, 0 20, 0 0, 20 0, 20 20)) + + + + true + + + + + LINESTRING(20 10, 0 10) + + + + + MULTIPOLYGON( + ( + (100 10, 20 10, 100 11, 100 10)), + ( + (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) + + + + + POLYGON( + (100 10, 20 10, 100 11, 100 10)) + + + + + MULTIPOLYGON( + ( + (100 10, 20 10, 100 11, 100 10)), + ( + (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) + + + + + + AA - A polygon with sliver cutting all the way across B + + POLYGON( + (100 10, 0 10, 90 11, 90 20, 100 20, 100 10)) + + + POLYGON( + (20 20, 0 20, 0 0, 20 0, 20 20)) + + + + true + + + + + LINESTRING(20 10, 0 10) + + + + + MULTIPOLYGON( + ( + (100 10, 20 10, 90 11, 90 20, 100 20, 100 10)), + ( + (0 10, 0 20, 20 20, 20 10, 20 0, 0 0, 0 10))) + + + + + + AA - hole close to shell, B coincident with A + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + POLYGON( + (10 30, 10 0, 30 10, 30 30, 10 30)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) + + + + + POLYGON( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 0, 10 10))) + + + + + + AA - A hole close to shell, B coincident with A + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + POLYGON( + (10 30, 10 10, 30 10, 30 30, 10 30)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + POLYGON( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + + AA - B hole close to shell, A coincident with B + + POLYGON( + (10 30, 10 10, 30 10, 30 30, 10 30)) + + + POLYGON( + (10 100, 10 10, 100 10, 100 100, 10 100), + (90 90, 11 90, 10 10, 90 11, 90 90)) + + + + true + + + + + MULTILINESTRING( + (10 30, 10 10), + (10 10, 30 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + POLYGON( + (10 10, 10 30, 30 30, 30 10, 10 10)) + + + + + MULTIPOLYGON( + ( + (10 30, 10 100, 100 100, 100 10, 30 10, 90 11, 90 90, 11 90, 10 30)), + ( + (10 10, 10 30, 30 30, 30 10, 10 10))) + + + + + + AA - B sliver crossing A triangle in line segment with length < 1 + + POLYGON( + (0 0, 200 0, 0 198, 0 0)) + + + POLYGON( + (280 60, 139 60, 280 70, 280 60)) + + + + true + + + + + POINT(139 60) + + + + + MULTIPOLYGON( + ( + (139 60, 200 0, 0 0, 0 198, 139 60)), + ( + (280 60, 139 60, 280 70, 280 60))) + + + + + POLYGON( + (139 60, 200 0, 0 0, 0 198, 139 60)) + + + + + MULTIPOLYGON( + ( + (139 60, 200 0, 0 0, 0 198, 139 60)), + ( + (280 60, 139 60, 280 70, 280 60))) + + + + + + AA - sliver triangles, at angle to each other + + POLYGON( + (0 0, 140 10, 0 20, 0 0)) + + + POLYGON( + (280 0, 139 10, 280 1, 280 0)) + + + + LINESTRING(140 10, 139 10) + + + + + + AA - sliver triangle with multiple intersecting boxes + + MULTIPOLYGON( + ( + (1 4, 1 1, 2 1, 2 4, 1 4)), + ( + (3 4, 3 1, 4 1, 4 4, 3 4)), + ( + (5 4, 5 1, 6 1, 6 4, 5 4)), + ( + (7 4, 7 1, 8 1, 8 4, 7 4)), + ( + (9 4, 9 1, 10 1, 10 4, 9 4))) + + + POLYGON( + (0 2, 11 3, 11 2, 0 2)) + + + + POLYGON( + (1 1, 1 4, 10 4, 10 1, 1 1)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(1 2, 2 2), + LINESTRING(3 2, 4 2), + POLYGON( + (6 3, 6 2, 5 2, 6 3)), + POLYGON( + (7 2, 7 3, 8 3, 8 2, 7 2)), + POLYGON( + (9 2, 9 3, 10 3, 10 2, 9 2))) + + + + +GEOMETRYCOLLECTION( + LINESTRING(0 2, 1 2), + LINESTRING(2 2, 3 2), + LINESTRING(4 2, 5 2), + POLYGON( + (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), + POLYGON( + (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), + POLYGON( + (5 2, 5 4, 6 4, 6 3, 7 3, 7 4, 8 4, 8 3, 9 3, + 9 4, 10 4, 10 3, 11 3, 11 2, 10 2, 10 1, 9 1, 9 2, 8 2, + 8 1, 7 1, 7 2, 6 2, 6 1, 5 1, 5 2))) + + + + MULTIPOLYGON( + ( + (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), + ( + (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), + ( + (5 2, 5 4, 6 4, 6 3, 5 2)), + ( + (6 2, 6 1, 5 1, 5 2, 6 2)), + ( + (7 3, 7 4, 8 4, 8 3, 7 3)), + ( + (8 2, 8 1, 7 1, 7 2, 8 2)), + ( + (9 3, 9 4, 10 4, 10 3, 9 3)), + ( + (10 2, 10 1, 9 1, 9 2, 10 2))) + + + + +GEOMETRYCOLLECTION( + LINESTRING(0 2, 1 2), + LINESTRING(2 2, 3 2), + LINESTRING(4 2, 5 2), + POLYGON( + (1 2, 1 4, 2 4, 2 2, 2 1, 1 1, 1 2)), + POLYGON( + (3 2, 3 4, 4 4, 4 2, 4 1, 3 1, 3 2)), + POLYGON( + (5 2, 5 4, 6 4, 6 3, 5 2)), + POLYGON( + (6 2, 6 1, 5 1, 5 2, 6 2)), + POLYGON( + (6 2, 6 3, 7 3, 7 2, 6 2)), + POLYGON( + (7 3, 7 4, 8 4, 8 3, 7 3)), + POLYGON( + (8 2, 8 1, 7 1, 7 2, 8 2)), + POLYGON( + (8 2, 8 3, 9 3, 9 2, 8 2)), + POLYGON( + (9 3, 9 4, 10 4, 10 3, 9 3)), + POLYGON( + (10 2, 10 1, 9 1, 9 2, 10 2)), + POLYGON( + (10 2, 10 3, 11 3, 11 2, 10 2))) + + + + + + AA - Polygon with hole with outward sliver, cut by polygon + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40), + (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) + + + POLYGON( + (200 160, 160 160, 160 80, 200 80, 200 160)) + + + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(180 120, 160 120), + POLYGON( + (180 160, 180 120, 180 80, 160 80, 160 120, 160 160, 180 160))) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, + 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + MULTIPOLYGON( + ( + (20 40, 20 200, 180 200, 180 160, 160 160, 160 120, 160 80, 180 80, 180 40, + 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)), + ( + (180 120, 180 160, 200 160, 200 80, 180 80, 180 120))) + + + + + + AA - Polygon with hole with outward sliver, cut by line + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40), + (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) + + + LINESTRING(160 140, 160 100) + + + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40)) + + + + + MULTILINESTRING( + (160 140, 160 120), + (160 120, 160 100)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 180 40, 20 40), + (160 120, 120 120, 120 160, 60 120, 120 80, 120 119, 160 120)) + + + + + + AA - Polygon with inward sliver touching hole, cut by polygon + + POLYGON( + (20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), + (140 160, 80 120, 140 80, 140 160)) + + + POLYGON( + (200 160, 150 160, 150 80, 200 80, 200 160)) + + + + POLYGON( + (20 40, 20 200, 180 200, 180 40, 20 40)) + + + + + MULTIPOLYGON( + ( + (180 160, 180 120, 150 120, 150 160, 180 160)), + ( + (150 120, 180 119, 180 80, 150 80, 150 120))) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 200 160, 200 80, 180 80, 180 40, 20 40), + (140 160, 80 120, 140 80, 140 120, 140 160)) + + + + + POLYGON( + (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, + 20 40), + (140 160, 80 120, 140 80, 140 120, 140 160)) + + + + + MULTIPOLYGON( + ( + (20 40, 20 200, 180 200, 180 160, 150 160, 150 120, 150 80, 180 80, 180 40, + 20 40), + (140 160, 80 120, 140 80, 140 120, 140 160)), + ( + (150 120, 180 120, 180 160, 200 160, 200 80, 180 80, 180 119, 150 120))) + + + + + + AA - intersecting slivers, dimensional collapse + + POLYGON( + (83 33, 62 402, 68 402, 83 33)) + + + POLYGON( + (78 39, 574 76, 576 60, 78 39)) + + + + LINESTRING( + 83 33, 62 402, 68 402, 83 33) + + + + + POLYGON( + (83 33, 62 402, 68 402, 83 33)) + + + + + POINT(83 39) + + + + + GEOMETRYCOLLECTION( + LINESTRING(78 39, 83 39), + LINESTRING(83 33, 83 39), + POLYGON( + (83 39, 62 402, 68 402, 83 39)), + POLYGON( + (83 39, 574 76, 576 60, 83 39))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(83 33, 83 39), + POLYGON( + (83 39, 62 402, 68 402, 83 39))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(78 39, 83 39), + LINESTRING(83 33, 83 39), + POLYGON( + (83 39, 62 402, 68 402, 83 39)), + POLYGON( + (83 39, 574 76, 576 60, 83 39))) + + + + + + LA - line and sliver intersecting, dimensional collapse + + POLYGON( + (95 9, 81 414, 87 414, 95 9)) + + + LINESTRING(93 13, 96 13) + + + + LINESTRING( + 95 9, 81 414, 87 414, 95 9) + + + + + POLYGON( + (95 9, 81 414, 87 414, 95 9)) + + + + + POINT(95 13) + + + + + GEOMETRYCOLLECTION( + LINESTRING(95 9, 95 13), + POLYGON( + (95 13, 81 414, 87 414, 95 13)), + LINESTRING(93 13, 95 13), + LINESTRING(95 13, 96 13)) + + + + + GEOMETRYCOLLECTION( + LINESTRING(95 9, 95 13), + POLYGON( + (95 13, 81 414, 87 414, 95 13))) + + + + + GEOMETRYCOLLECTION( + LINESTRING(95 9, 95 13), + POLYGON( + (95 13, 81 414, 87 414, 95 13)), + LINESTRING(93 13, 95 13), + LINESTRING(95 13, 96 13)) + + + + + LL - narrow V + + LINESTRING(0 10, 620 10, 0 11) + + + LINESTRING(400 60, 400 10) + + + + POINT(400 10) + + + + + MULTILINESTRING( + (0 10, 400 10), + (400 10, 620 10, 400 10), + (400 10, 0 11), + (400 60, 400 10)) + + + + + +A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + true + + + + +A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (20 20, 140 20, 120 100, 20 100, 20 20)) + + + true + + + + +A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (120 100, 140 20, 20 20, 20 100, 120 100)) + + + true + + + + +A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + + POLYGON( + (20 20, 20 100, 120 100, 140 20, 20 20)) + + + POLYGON( + (20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) + + + true + + + + +A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}] + + POLYGON( + (0 0, 80 0, 80 80, 0 80, 0 0)) + + + POLYGON( + (100 200, 100 140, 180 140, 180 200, 100 200)) + + + true + + + + +A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 140 200, 240 200, 240 120, 140 120)) + + + true + + + + +A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (80 180, 140 260, 260 200, 200 60, 80 180)) + + + true + + + + +A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (240 80, 140 120, 180 240, 280 200, 240 80)) + + + true + + + + +A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + + POLYGON( + (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) + + + POLYGON( + (140 40, 180 80, 120 100, 140 40)) + + + true + + + + +A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) + + + POLYGON( + (120 100, 180 80, 130 40, 120 100)) + + + true + + + + +A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 180 20, 140 140, 20 140, 20 20)) + + + POLYGON( + (180 100, 80 200, 180 280, 260 200, 180 100)) + + + true + + + + +A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 140, 20 120, 0 220, 120 240, 140 140)) + + + true + + + + +A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] + + POLYGON( + (160 200, 210 70, 120 70, 160 200)) + + + POLYGON( + (160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) + + + true + + + + +A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] + + POLYGON( + (110 140, 200 70, 200 160, 110 140)) + + + POLYGON( + (110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) + + + true + + + + +A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) + + + POLYGON( + (20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) + + + true + + + + +A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) + + + POLYGON( + (20 120, 300 120, 140 240, 20 120)) + + + true + + + + +A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, + 20 20)) + + + POLYGON( + (100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) + + + true + + + + +A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, + 20 20)) + + + POLYGON( + (260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) + + + true + + + + +A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + + POLYGON( + (0 140, 300 140, 140 240, 0 140)) + + + true + + + + +A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + + POLYGON( + (20 240, 20 140, 320 140, 180 240, 20 240)) + + + true + + + + +A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + + POLYGON( + (20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) + + + true + + + + +A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (120 120, 220 20, 280 20, 240 160, 120 120)) + + + true + + + + +A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 160 20, 260 120, 220 200, 140 120)) + + + true + + + + +A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] + + POLYGON( + (20 140, 120 40, 20 40, 20 140)) + + + POLYGON( + (190 140, 190 20, 140 20, 20 140, 190 140)) + + + true + + + + +A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (300 20, 220 20, 120 120, 260 160, 300 20)) + + + true + + + + +A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 240 160, 280 60, 160 20, 140 120)) + + + true + + + + +A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (280 60, 180 60, 120 120, 260 180, 280 60)) + + + true + + + + +A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (120 200, 120 120, 40 120, 40 200, 120 200)) + + + true + + + + +A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (160 220, 140 120, 60 120, 40 220, 160 220)) + + + true + + + + +A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}] + + POLYGON( + (140 120, 160 20, 20 20, 20 120, 140 120)) + + + POLYGON( + (140 120, 20 120, 20 220, 140 220, 140 120)) + + + true + + + + +A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}] + + POLYGON( + (120 120, 180 60, 20 20, 20 120, 120 120)) + + + POLYGON( + (320 20, 220 20, 80 160, 240 140, 320 20)) + + + true + + + + +A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (60 40, 60 140, 180 140, 180 40, 60 40)) + + + true + + + + +A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 80 140, 160 60, 20 20)) + + + true + + + + +A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (160 60, 20 20, 100 140, 160 60)) + + + true + + + + +A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 100, 140 160, 160 40, 20 100)) + + + true + + + + +A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (160 40, 20 100, 160 160, 160 40)) + + + true + + + + +A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 180, 180 120, 80 40, 20 180)) + + + true + + + + +A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (180 120, 100 40, 20 180, 180 120)) + + + true + + + + +A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) + + + true + + + + +A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) + + + true + + + + +A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) + + + true + + + + +A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) + + + true + + + + +A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) + + + true + + + + +A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) + + + true + + + + +A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 20 140, 120 120, 120 40, 20 20)) + + + true + + + + +A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 20 180, 140 140, 140 60, 20 20)) + + + true + + + + +A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 120 40, 120 120, 20 140, 20 20)) + + + true + + + + +A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (120 40, 20 20, 20 140, 120 120, 120 40)) + + + true + + + + +A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 140 60, 140 140, 20 180, 20 20)) + + + true + + + + +A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (140 60, 20 20, 20 180, 140 140, 140 60)) + + + true + + + + +A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 60 120, 140 120, 180 20, 20 20)) + + + true + + + + +A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 40, 120 40, 120 120, 20 140, 20 40)) + + + true + + + + +A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}, dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}] + + POLYGON( + (20 20, 20 180, 220 180, 220 20, 20 20)) + + + POLYGON( + (20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) + + + true + + + + +A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (150 150, 330 150, 250 70, 70 70, 150 150)) + + + POLYGON( + (150 150, 270 150, 140 20, 20 20, 150 150)) + + + true + + + + +A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) + + + POLYGON( + (150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) + + + true + + + + +A/A-6-3: spiky polygons overlapping; boundary <-> boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, + 80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, + 100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, + 190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, + 290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, + 240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, + 240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, + 250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, + 160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, + 70 40, 20 20)) + + + POLYGON( + (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, + 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, + 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, + 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, + 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, + 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, + 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, + 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, + 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, + 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, + 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, + 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, + 200 120, 120 120, 190 140)) + + + true + + + + +A/A-6-4: spiky polygons overlapping; boundary <-> boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, + 20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, + 200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, + 270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, + 350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, + 360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, + 410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, + 240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, + 170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, + 410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, + 420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, + 460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, + 140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, + 90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, + 50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, + 40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) + + + POLYGON( + (190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, + 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, + 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, + 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, + 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, + 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, + 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, + 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, + 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, + 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, + 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, + 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, + 200 120, 120 120, 190 140)) + + + true + + + + +A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) + + + true + + + + +A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (60 160, 20 200, 260 200, 140 80, 60 160)) + + + true + + + + +A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (20 200, 140 80, 260 200, 20 200)) + + + true + + + + +A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) + + + true + + + + +A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + + POLYGON( + (60 160, 220 160, 220 20, 60 20, 60 160)) + + + POLYGON( + (20 200, 60 160, 140 80, 260 200, 20 200)) + + + true + + + + +A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (0 0, 0 200, 200 200, 200 0, 0 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + + + +A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 0, 100 200, 200 200, 200 0, 100 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + + + +A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 0, 120 200, 200 200, 200 0, 120 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + + + +A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (0 0, 0 200, 110 200, 110 0, 0 0)) + + + POLYGON( + (100 100, 1000000 110, 10000000 100, 100 100)) + + + true + + + + +A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 2100 110, 2100 100, 100 100)) + + + true + + + + +A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 2101 110, 2101 100, 100 100)) + + + true + + + + +A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 2101 110, 2101 100, 100 100)) + + + true + + + + +A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 1000000 110, 1000000 100, 100 100)) + + + true + + + + +A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 100 200, 200 200, 200 100, 100 100)) + + + POLYGON( + (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) + + + true + + + + +A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 500 110, 500 100, 100 100)) + + + true + + + + +A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 501 110, 501 100, 100 100)) + + + true + + + + +A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 130 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 501 110, 501 100, 100 100)) + + + true + + + + +A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 17 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 501 110, 501 100, 100 100)) + + + true + + + + +A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 1000000 110, 1000000 100, 100 100)) + + + true + + + + +A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (120 100, 120 200, 200 200, 200 100, 120 100)) + + + POLYGON( + (100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) + + + true + + + + +A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (101 99, 101 1000000, 102 1000000, 101 99)) + + + POLYGON( + (100 100, 1000000 110, 1000000 100, 100 100)) + + + true + + + + +A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (100 100, 200 101, 200 100, 100 100)) + + + POLYGON( + (100 100, 2101 110, 2101 100, 100 100)) + + + true + + + + +A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + + POLYGON( + (16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) + + + POLYGON( + (10 307, 22 307, 153 34, 22 34, 10 307)) + + + true + + + + +A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}] + + POLYGON( + (160 200, 210 70, 120 70, 160 200)) + + + POLYGON( + (160 200, 310 20, 20 20, 160 200), + (160 200, 260 40, 70 40, 160 200)) + + + true + + + + +A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] + + POLYGON( + (170 120, 240 100, 260 50, 190 70, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] + + POLYGON( + (270 90, 200 50, 150 80, 210 120, 270 90)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}] + + POLYGON( + (170 120, 260 100, 240 60, 150 80, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}] + + POLYGON( + (220 120, 270 80, 200 60, 160 100, 220 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}] + + POLYGON( + (260 50, 180 70, 180 110, 260 90, 260 50)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}] + + POLYGON( + (230 110, 290 80, 190 60, 140 90, 230 110)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}] + + POLYGON( + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] + + POLYGON( + (170 120, 330 120, 280 70, 120 70, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] + + POLYGON( + (170 120, 300 120, 250 70, 120 70, 170 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}] + + POLYGON( + (190 100, 310 100, 260 50, 140 50, 190 100)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}] + + POLYGON( + (280 130, 360 130, 270 40, 190 40, 280 130)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + + + +A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}] + + POLYGON( + (220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, + 390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + + + +A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}] + + POLYGON( + (260 130, 360 130, 280 40, 170 40, 260 130)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + + + +A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}] + + POLYGON( + (240 110, 340 110, 290 60, 190 60, 240 110)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + + + +A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}] + + POLYGON( + (250 120, 350 120, 280 50, 180 50, 250 120)) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 250 120, 180 50, 100 50, 170 120)) + + + true + + + + +Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (120 180, 50 50, 200 50, 120 180)) + + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (120 180, 50 50, 200 50, 120 180)) + + + true + + + + +A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (140 40, 40 40, 40 170, 140 40), + (110 190, 210 190, 210 50, 110 190)) + + + POLYGON( + (230 210, 230 20, 20 20, 20 210, 230 210), + (140 40, 40 40, 40 170, 140 40), + (110 190, 210 190, 210 50, 110 190)) + + + true + + + + +A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] + + POLYGON( + (280 190, 330 150, 200 110, 150 150, 280 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] + + POLYGON( + (80 190, 220 190, 140 110, 0 110, 80 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] + + POLYGON( + (330 150, 200 110, 150 150, 280 190, 330 150)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}] + + POLYGON( + (290 190, 340 150, 220 120, 170 170, 290 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}] + + POLYGON( + (220 190, 340 190, 260 110, 140 110, 220 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] + + POLYGON( + (140 190, 220 190, 100 70, 20 70, 140 190)) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + + POLYGON( + (140 220, 60 140, 140 60, 220 140, 140 220)) + + + MULTIPOLYGON( + ( + (100 20, 180 20, 180 100, 100 100, 100 20)), + ( + (20 100, 100 100, 100 180, 20 180, 20 100)), + ( + (100 180, 180 180, 180 260, 100 260, 100 180)), + ( + (180 100, 260 100, 260 180, 180 180, 180 100))) + + + true + + + + +mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 150 200, 110 110)), + ( + (110 110, 150 20, 70 20, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110))) + + + true + + + + +mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 150 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 150 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + + + +mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + + + +mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] + + MULTIPOLYGON( + ( + (110 110, 20 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 20 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + + + +mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 160 160, 210 110, 160 60, 110 110), + (110 110, 160 130, 160 90, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + + + +mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] + + MULTIPOLYGON( + ( + (110 110, 70 200, 200 200, 110 110), + (110 110, 100 180, 120 180, 110 110)), + ( + (110 110, 200 20, 70 20, 110 110), + (110 110, 120 40, 100 40, 110 110))) + + + MULTIPOLYGON( + ( + (110 110, 70 200, 210 110, 70 20, 110 110), + (110 110, 110 140, 150 110, 110 80, 110 110)), + ( + (110 110, 60 60, 10 110, 60 160, 110 110), + (110 110, 60 90, 60 130, 110 110))) + + + true + + + + + + +AC A-shells overlapping B-shell at A-vertex + + POLYGON( + (100 60, 140 100, 100 140, 60 100, 100 60)) + + + MULTIPOLYGON( + ( + (80 40, 120 40, 120 80, 80 80, 80 40)), + ( + (120 80, 160 80, 160 120, 120 120, 120 80)), + ( + (80 120, 120 120, 120 160, 80 160, 80 120)), + ( + (40 80, 80 80, 80 120, 40 120, 40 80))) + + + true + + + + + + +L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}] + + LINESTRING(150 150, 40 230) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] + + LINESTRING(40 40, 50 130, 130 130) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}] + + LINESTRING(40 230, 150 150) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}] + + LINESTRING(210 150, 330 150) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}] + + LINESTRING(200 150, 310 150, 360 220) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}] + + LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}] + + LINESTRING(210 210, 220 150, 320 150, 370 210) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}] + + LINESTRING(20 60, 150 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}] + + LINESTRING(60 90, 310 180) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}] + + LINESTRING(90 210, 210 90) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}] + + LINESTRING(290 10, 130 170) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}] + + LINESTRING(30 100, 100 100, 180 100) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}] + + LINESTRING(20 100, 100 100, 360 100, 410 100) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}] + + LINESTRING(90 210, 150 150, 210 90) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}] + + LINESTRING(180 90, 280 120) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] + + LINESTRING(70 70, 80 20) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}] + + LINESTRING(130 20, 150 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}] + + LINESTRING(70 70, 80 20, 140 20, 150 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}] + + LINESTRING(170 50, 170 20, 240 20, 260 60) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150)) + + + true + + + + +L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}] + + LINESTRING(50 100, 140 190, 280 190) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}] + + LINESTRING(140 60, 180 100, 290 100) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}] + + LINESTRING(170 120, 210 80, 270 80) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}] + + LINESTRING(170 120, 260 50) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(190 90, 190 270) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (190 190, 280 50, 100 50, 190 190)) + + + true + + + + +L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (110 110, 250 100, 140 30, 110 110)) + + + true + + + + +L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + + + +L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + + LINESTRING(60 160, 150 70) + + + POLYGON( + (190 190, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + + + +L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(190 90, 190 190, 190 270) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (190 190, 280 50, 100 50, 190 190)) + + + true + + + + +L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(60 160, 110 110, 150 70) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (110 110, 250 100, 140 30, 110 110)) + + + true + + + + +L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(60 160, 110 110, 150 70) + + + POLYGON( + (190 190, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + + + +L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + + LINESTRING(60 160, 110 110, 150 70) + + + POLYGON( + (190 190, 110 110, 20 20, 360 20, 190 190), + (250 100, 110 110, 140 30, 250 100)) + + + true + + + + +L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}] + + LINESTRING(130 110, 180 110, 190 60) + + + POLYGON( + (20 200, 240 200, 240 20, 20 20, 20 200), + (130 110, 60 180, 60 40, 130 110), + (130 110, 200 40, 200 180, 130 110)) + + + true + + + + +L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] + + LINESTRING(80 110, 180 110) + + + POLYGON( + (20 200, 240 200, 240 20, 20 20, 20 200), + (130 110, 60 180, 60 40, 130 110), + (130 110, 200 40, 200 180, 130 110)) + + + true + + + + +L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}] + + LINESTRING(80 110, 180 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (60 180, 130 110, 60 40, 60 180), + (130 110, 200 40, 200 180, 130 110)) + + + true + + + + +L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] + + LINESTRING(80 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 130 40, 200 110, 130 180)) + + + true + + + + +L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + + LINESTRING(80 110, 130 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 130 40, 200 110, 130 180)) + + + true + + + + +L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + + LINESTRING(80 110, 130 110, 180 110) + + + POLYGON( + (20 200, 240 200, 240 20, 20 20, 20 200), + (130 110, 60 180, 60 40, 130 110), + (130 110, 200 40, 200 180, 130 110)) + + + true + + + + +L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}] + + LINESTRING(80 110, 130 110, 180 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (60 180, 130 110, 60 40, 60 180), + (130 110, 200 40, 200 180, 130 110)) + + + true + + + + +L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + + LINESTRING(80 110, 130 110, 170 110) + + + POLYGON( + (20 200, 20 20, 240 20, 240 200, 20 200), + (130 110, 60 40, 60 180, 130 110), + (130 180, 130 40, 200 110, 130 180)) + + + true + + + + +L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}] + + LINESTRING(160 70, 320 230) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}] + + LINESTRING(160 70, 200 110, 280 190, 320 230) + + + MULTIPOLYGON( + ( + (140 110, 260 110, 170 20, 50 20, 140 110)), + ( + (300 270, 420 270, 340 190, 220 190, 300 270))) + + + true + + + + +L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP] + + LINESTRING(70 50, 70 150) + + + MULTIPOLYGON( + ( + (0 0, 0 100, 140 100, 140 0, 0 0)), + ( + (20 170, 70 100, 130 170, 20 170))) + + + true + + + + +RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}] + + LINESTRING(110 110, 20 200, 200 200, 110 110) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + + + +RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}] + + LINESTRING(150 70, 160 110, 200 60, 150 70) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + + + +RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}] + + LINESTRING(80 60, 120 40, 120 70, 80 60) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + + + +RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}] + + LINESTRING(20 20, 200 20, 110 110, 20 20) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + + + +RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}] + + LINESTRING(110 90, 170 30, 50 30, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + + + +RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}] + + LINESTRING(110 110, 170 50, 170 110, 110 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + + + +RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}] + + LINESTRING(110 90, 70 50, 130 50, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + + + +RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}] + + LINESTRING(110 60, 20 150, 200 150, 110 60) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + + + +RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}] + + LINESTRING(110 130, 110 70, 200 100, 110 130) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 50 30, 170 30, 110 90)) + + + true + + + + +RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}] + + LINESTRING(110 90, 160 40, 60 40, 110 90) + + + POLYGON( + (20 20, 200 20, 110 110, 20 20)) + + + true + + + + +RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}] + + LINESTRING(110 100, 40 30, 180 30, 110 100) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + + + +RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}] + + LINESTRING(110 110, 180 30, 40 30, 110 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + + + +RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}] + + LINESTRING(110 90, 180 30, 40 30, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + + + +RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}] + + LINESTRING(110 90, 50 30, 180 30, 110 90) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110), + (110 90, 60 40, 160 40, 110 90)) + + + true + + + + +nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}] + + LINESTRING(110 110, 200 200, 200 110, 110 200) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}] + + LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}] + + LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}] + + LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}] + + LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}] + + LINESTRING(110 110, 180 40, 110 40, 110 180) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}] + + LINESTRING(110 60, 50 30, 170 30, 90 70) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}] + + LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}] + + LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90) + + + POLYGON( + (150 150, 410 150, 280 20, 20 20, 150 150), + (170 120, 330 120, 260 50, 100 50, 170 120)) + + + true + + + + +mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (200 200, 110 110, 20 210, 110 110)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (60 180, 60 110, 160 110, 110 110)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (200 200, 110 110, 20 200, 110 200, 110 110)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 50, 110 170, 110 70, 110 150, 200 150)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 60, 110 160, 200 160)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 60, 110 160, 200 160)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] + + MULTILINESTRING( + (110 100, 40 30, 180 30), + (170 30, 110 90, 50 30)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] + + MULTILINESTRING( + (110 110, 60 40, 70 20, 150 20, 170 40), + (180 30, 40 30, 110 80)) + + + POLYGON( + (110 110, 200 20, 20 20, 110 110)) + + + true + + + + +mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}] + + MULTILINESTRING( + (20 110, 200 110, 200 160), + (110 110, 200 110, 200 70, 20 150)) + + + MULTIPOLYGON( + ( + (110 110, 20 20, 200 20, 110 110)), + ( + (110 110, 20 200, 200 200, 110 110))) + + + true + + + + +mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}] + + MULTILINESTRING( + (20 160, 70 110, 150 110, 200 160), + (110 110, 20 110, 50 80, 70 110, 200 110)) + + + MULTIPOLYGON( + ( + (110 110, 20 20, 200 20, 110 110)), + ( + (110 110, 20 200, 200 200, 110 110))) + + + true + + + + +mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}] + + MULTILINESTRING( + (20 110, 200 110), + (110 110, 20 170, 20 130, 200 90)) + + + MULTIPOLYGON( + ( + (110 110, 20 20, 200 20, 110 110)), + ( + (110 110, 20 200, 200 200, 110 110))) + + + true + + + + + + +LC - topographically equal with no boundary + + LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) + + + MULTILINESTRING( + (0 0, 0 50), + (0 50, 50 50), + (50 50, 50 0), + (50 0, 0 0)) + + + true + + + + +LC - intersection (containment) along mod-2 A-Int line segment + + LINESTRING(40 180, 140 180) + + + MULTIPOLYGON( + ( + (20 320, 180 320, 180 180, 20 180, 20 320)), + ( + (20 180, 20 80, 180 80, 180 180, 20 180))) + + + true + + + + +LC - intersection (overlap) along mod-2 A-Int line segment + + LINESTRING(40 180, 140 180) + + + MULTIPOLYGON( + ( + (20 320, 180 320, 180 180, 20 180, 20 320)), + ( + (60 180, 60 80, 180 80, 180 180, 60 180))) + + + true + + + + +LC - equal with boundary intersection + + LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) + + + MULTILINESTRING( + (0 0, 60 0), + (60 0, 120 0), + (60 0, 60 60)) + + + true + + + + + + +L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(40 40, 60 120) + + + true + + + + +L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(60 240, 40 40) + + + true + + + + +L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}] + + LINESTRING(40 40, 180 180) + + + LINESTRING(120 120, 20 200) + + + true + + + + +L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(60 240, 120 120) + + + true + + + + +L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}] + + LINESTRING(40 40, 180 180) + + + LINESTRING(20 180, 140 140) + + + true + + + + +L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(40 40, 120 120) + + + LINESTRING(40 120, 120 40) + + + true + + + + +L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(40 40, 100 100) + + + LINESTRING(40 40, 100 100) + + + true + + + + +L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + + LINESTRING(40 40, 100 100) + + + LINESTRING(100 100, 40 40) + + + true + + + + +L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext} + + LINESTRING(40 40, 120 120) + + + LINESTRING(40 120, 120 160) + + + true + + + + +L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(20 20, 180 180) + + + LINESTRING(20 20, 180 180) + + + true + + + + +L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}] + + LINESTRING(20 20, 180 180) + + + LINESTRING(20 20, 110 110) + + + true + + + + +L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] + + LINESTRING(20 20, 180 180) + + + LINESTRING(50 50, 140 140) + + + true + + + + +L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV] + + LINESTRING(180 180, 40 40) + + + LINESTRING(120 120, 260 260) + + + true + + + + +L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP] + + LINESTRING(40 40, 180 180) + + + LINESTRING(260 260, 120 120) + + + true + + + + +L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV] + + LINESTRING(40 40, 180 180) + + + LINESTRING(120 120, 260 260) + + + true + + + + +L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(40 40, 20 100, 40 160, 20 200) + + + true + + + + +L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(20 200, 40 160, 20 100, 40 40) + + + true + + + + +L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + + LINESTRING(80 240, 200 120, 100 100, 40 40) + + + LINESTRING(20 200, 40 160, 20 100, 40 40) + + + true + + + + +L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(20 20, 60 60, 250 160, 310 230) + + + true + + + + +L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(20 20, 110 110, 200 110, 320 230) + + + true + + + + +L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + + LINESTRING(60 110, 60 250, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}] + + LINESTRING(60 110, 60 250, 360 210) + + + LINESTRING(360 210, 310 160, 110 160, 60 110) + + + true + + + + +L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(160 160, 240 240) + + + true + + + + +L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(240 240, 160 160) + + + true + + + + +L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(60 150, 110 100, 170 100, 110 230) + + + true + + + + +L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(200 120, 200 190, 150 240, 200 240) + + + true + + + + +L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(200 240, 150 240, 200 200, 200 120) + + + true + + + + +L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}] + + LINESTRING(60 60, 60 230, 140 230, 250 160) + + + LINESTRING(60 230, 80 140, 120 140, 140 230) + + + true + + + + +L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(60 110, 200 110, 250 160, 300 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] + + LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(60 110, 220 110, 250 160, 280 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] + + LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(130 160, 160 110, 190 110, 230 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + + LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}] + + LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] + + LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(110 160, 180 110, 250 160, 320 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] + + LINESTRING(140 160, 180 80, 220 160, 250 80) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}] + + LINESTRING(40 40, 100 100, 200 120, 130 190) + + + LINESTRING(20 130, 70 130, 160 40) + + + true + + + + +L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(40 40, 100 100, 200 120, 130 190) + + + LINESTRING(40 160, 40 100, 110 40, 170 40) + + + true + + + + +L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] + + LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-16: two LineStrings crossing at vertices for both LineString [dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(40 40, 100 100, 200 120, 130 190) + + + LINESTRING(30 140, 80 140, 100 100, 200 30) + + + true + + + + +L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, + 240 80, 300 80, 270 110, 200 110) + + + true + + + + +L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}] + + LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, + 230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, + 80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, + 70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, + 40 190, 230 190, 20 200, 230 200) + + + LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, + 70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, + 120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, + 150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, + 190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) + + + true + + + + +L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + true + + + + +L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(80 240, 200 120, 100 100, 40 40) + + + true + + + + +L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40) + + + true + + + + +L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(260 210, 240 130, 280 120, 260 40) + + + true + + + + +L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] + + LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) + + + LINESTRING(140 130, 100 110, 120 60, 170 60) + + + true + + + + +L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 310 160, 360 210) + + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + true + + + + +L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(60 110, 110 160, 250 160) + + + true + + + + +L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(110 160, 310 160, 340 190) + + + true + + + + +L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(140 160, 250 160, 310 160, 340 190) + + + true + + + + +L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}] + + LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + + LINESTRING(110 160, 250 160, 310 160) + + + true + + + + +L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40) + + + true + + + + +L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40) + + + true + + + + +L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(80 190, 140 140, 40 40) + + + true + + + + +L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(240 200, 200 260, 80 240, 140 180) + + + true + + + + +L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(140 180, 80 240, 200 260, 240 200) + + + true + + + + +L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(280 240, 240 140, 200 120, 80 240) + + + true + + + + +L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(20 80, 120 80, 200 80, 260 20) + + + true + + + + +L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(100 100, 200 120, 240 140, 280 240) + + + true + + + + +L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}] + + LINESTRING(40 40, 100 100, 200 120, 80 240) + + + LINESTRING(280 240, 240 140, 200 120, 100 100) + + + true + + + + +L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(80 20, 80 80, 240 80, 300 20) + + + true + + + + +L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}] + + LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + + LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, + 300 80) + + + true + + + + +L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}] + + LINESTRING(100 100, 20 180, 180 180) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] + + LINESTRING(20 100, 180 100, 100 180) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] + + LINESTRING(100 40, 100 160, 180 160) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}] + + LINESTRING(20 100, 100 100, 180 100, 100 180) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] + + LINESTRING(100 100, 160 40) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] + + LINESTRING(100 100, 180 20) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}] + + LINESTRING(60 60, 100 100, 140 60) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}] + + LINESTRING(100 100, 190 10, 190 100) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}] + + LINESTRING(100 100, 160 40, 160 100) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}] + + LINESTRING(60 140, 160 40, 160 140) + + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 140 80, 80 20, 80 140) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 140 80, 80 80) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(20 140, 140 20, 100 20, 100 80) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 140 80) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 80 140, 80 20) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 80 80, 140 80) + + + true + + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}] + + LINESTRING(20 20, 140 140) + + + LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20) + + + true + + + + +L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] + + LINESTRING(130 150, 220 150, 220 240) + + + LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + + true + + + + +L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] + + LINESTRING(30 150, 130 150, 250 150) + + + LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + + true + + + + +L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + + LINESTRING(30 150, 250 150) + + + LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + + true + + + + +L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] + + LINESTRING(30 150, 130 150, 250 150) + + + LINESTRING(130 240, 130 20, 30 20, 130 150) + + + true + + + + +L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}] + + LINESTRING(30 150, 250 150) + + + LINESTRING(120 240, 120 20, 20 20, 120 170) + + + true + + + + +nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}] + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + LINESTRING(110 110, 200 110) + + + true + + + + +L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] + + LINESTRING(110 110, 200 110) + + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + + + +L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + + LINESTRING(20 110, 200 110) + + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + + + +nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV} + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + LINESTRING(20 110, 200 110) + + + true + + + + +L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}] + + LINESTRING(90 200, 90 130, 110 110, 150 200) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + + + +L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}] + + LINESTRING(200 110, 110 110, 90 130, 90 200) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + + + +L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx] + + LINESTRING(80 80, 150 80, 210 80) + + + MULTILINESTRING( + (20 20, 140 140), + (20 140, 140 20)) + + + true + + + + +LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + true + + + + +LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(40 80, 260 20, 160 200, 40 80) + + + true + + + + +LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(260 20, 40 80, 160 200, 260 20) + + + true + + + + +LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}] + + LINESTRING(40 80, 160 200, 260 20, 40 80) + + + LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140) + + + true + + + + +LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}] + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + LINESTRING(100 100, 180 180, 20 180, 100 100) + + + true + + + + +LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150) + + + true + + + + +LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}] + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + LINESTRING(180 100, 20 100, 100 180, 180 100) + + + true + + + + +LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}] + + LINESTRING(100 100, 180 20, 20 20, 100 100) + + + LINESTRING(180 180, 100 100, 20 180, 180 180) + + + true + + + + +LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}] + + LINESTRING(20 180, 100 100, 20 20, 20 180) + + + LINESTRING(100 20, 100 180, 180 100, 100 20) + + + true + + + + +LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(170 20, 20 170, 170 170, 170 20) + + + true + + + + +LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(40 150, 150 150, 90 210, 40 150) + + + true + + + + +LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(20 150, 170 150, 90 230, 20 150) + + + true + + + + +LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}] + + LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + + LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150) + + + true + + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) + + + true + + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) + + + true + + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) + + + true + + + + +LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40) + + + true + + + + +LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}] + + LINESTRING(110 110, 200 20, 20 20, 110 110) + + + LINESTRING(200 20, 20 200, 200 200, 20 20) + + + true + + + + +nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}] + + LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110) + + + LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110) + + + true + + + + +nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}] + + LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) + + + LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100) + + + true + + + + +nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}] + + LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) + + + LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160) + + + true + + + + +nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}] + + LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200) + + + LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110) + + + true + + + + +nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] + + LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) + + + LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200) + + + true + + + + +nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] + + LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) + + + LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120) + + + true + + + + +mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] + + MULTILINESTRING( + (70 20, 20 90, 70 170), + (70 170, 120 90, 70 20)) + + + MULTILINESTRING( + (70 20, 20 90, 70 170), + (70 170, 120 90, 70 20)) + + + true + + + + +mL/mL-1-1: non-simple MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + true + + + + +mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 140, 90 60, 90 20), + (170 20, 130 20, 20 20)) + + + true + + + + +mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (130 100, 130 60, 90 20, 50 90)) + + + true + + + + +mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) + + + true + + + + +mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60)) + + + true + + + + +mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (130 100, 90 20)) + + + true + + + + +mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (120 100, 170 100, 90 20)) + + + true + + + + +mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60), + (120 100, 170 100, 90 20)) + + + true + + + + +mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (130 140, 130 60, 90 20, 20 90, 90 20)) + + + true + + + + +mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}] + + MULTILINESTRING( + (20 20, 90 20, 170 20), + (90 20, 90 80, 90 140)) + + + MULTILINESTRING( + (90 20, 170 100, 170 140), + (170 60, 90 20, 20 60, 20 140, 90 20)) + + + true + + + + +mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}] + + MULTILINESTRING( + (20 20, 90 90, 20 160), + (90 160, 90 20)) + + + MULTILINESTRING( + (160 160, 90 90, 160 20), + (160 120, 120 120, 90 90, 160 60)) + + + true + + + + +mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}] + + MULTILINESTRING( + (20 20, 90 90, 20 160), + (90 160, 90 20)) + + + MULTILINESTRING( + (160 160, 90 90, 160 20), + (160 120, 120 120, 90 90, 120 60, 160 60)) + + + true + + + + +mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}] + + MULTILINESTRING( + (20 20, 90 90, 20 160), + (90 160, 90 20)) + + + MULTILINESTRING( + (160 160, 90 90, 160 20), + (160 120, 90 90, 160 60)) + + + true + + + + + + +P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(20 20) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(70 170) + + + POLYGON( + (110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) + + + true + + + + +P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(110 130) + + + POLYGON( + (20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) + + + true + + + + +P/A-2-4: dim(0){A.P.Int = B.A.Ext} + + POINT(100 70) + + + POLYGON( + (20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) + + + true + + + + +P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] + + POINT(100 70) + + + POLYGON( + (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) + + + true + + + + +P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}] + + POINT(60 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}] + + POINT(110 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V] + + POINT(160 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}] + + POINT(100 150) + + + POLYGON( + (20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) + + + true + + + + +P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}] + + POINT(100 80) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}] + + POINT(60 160) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}] + + POINT(190 90) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}] + + POINT(190 190) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}] + + POINT(360 20) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}] + + POINT(130 130) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}] + + POINT(280 50) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}] + + POINT(150 100) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}] + + POINT(100 50) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}] + + POINT(140 120) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] + + POINT(190 50) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (90 50, 150 110, 190 50, 90 50), + (190 50, 230 110, 290 50, 190 50)) + + + true + + + + +P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] + + POINT(180 90) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (180 140, 180 40, 80 40, 180 140), + (180 90, 210 140, 310 40, 230 40, 180 90)) + + + true + + + + +mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}] + + MULTIPOINT(20 80, 110 160, 20 160) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}] + + MULTIPOINT(20 80, 60 120, 20 160) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}] + + MULTIPOINT(10 80, 110 170, 110 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}] + + MULTIPOINT(10 80, 110 170, 160 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}] + + MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}] + + MULTIPOINT(60 120, 110 120, 160 120) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}] + + MULTIPOINT(60 120, 160 120, 160 40, 60 40) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}] + + MULTIPOINT(20 150, 60 120, 110 80) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}] + + MULTIPOINT(110 80, 160 120, 200 160) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}] + + MULTIPOINT(110 80, 110 120, 110 160) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}] + + MULTIPOINT(110 170, 110 80) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}] + + MULTIPOINT(60 120, 160 120, 110 80, 110 170) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int] + + MULTIPOINT(90 80, 130 80) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}] + + MULTIPOINT(60 120, 160 120, 110 80) + + + POLYGON( + (60 120, 60 40, 160 40, 160 120, 60 120)) + + + true + + + + +mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}] + + MULTIPOINT(40 170, 40 90, 130 170) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}] + + MULTIPOINT(90 170, 280 170, 190 90) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}] + + MULTIPOINT(190 110, 150 70, 230 70) + + + POLYGON( + (190 190, 360 20, 20 20, 190 190), + (280 50, 100 50, 190 140, 280 50)) + + + true + + + + +P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}] + + POINT(100 100) + + + MULTIPOLYGON( + ( + (20 100, 20 20, 100 20, 100 100, 20 100)), + ( + (100 180, 100 100, 180 100, 180 180, 100 180))) + + + true + + + + +P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}] + + POINT(20 100) + + + MULTIPOLYGON( + ( + (20 100, 20 20, 100 20, 100 100, 20 100)), + ( + (100 180, 100 100, 180 100, 180 180, 100 180))) + + + true + + + + +P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}] + + POINT(60 100) + + + MULTIPOLYGON( + ( + (20 100, 20 20, 100 20, 100 100, 20 100)), + ( + (100 180, 100 100, 180 100, 180 180, 100 180))) + + + true + + + + +P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}] + + POINT(110 110) + + + MULTIPOLYGON( + ( + (110 110, 20 200, 200 200, 110 110), + (110 110, 80 180, 140 180, 110 110)), + ( + (110 110, 20 20, 200 20, 110 110), + (110 110, 80 40, 140 40, 110 110))) + + + true + + + + + + +P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}] + + POINT(110 200) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +P/L-3-1: a point touching the start point of a line [dim(0){A.P.Int = B.L.Bdy.SP}] + + POINT(90 80) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}] + + POINT(340 240) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] + + POINT(230 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}] + + POINT(160 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] + + POINT(90 150) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + + + +P/LR-2-2: a point inside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] + + POINT(150 80) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + + + +P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}] + + POINT(150 150) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + + + +P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] + + POINT(100 20) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + + + +P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}] + + POINT(20 20) + + + LINESTRING(150 150, 20 20, 280 20, 150 150) + + + true + + + + +P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}] + + POINT(220 220) + + + LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) + + + true + + + + +P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) + + + true + + + + +P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 220 20, 20 20, 220 220) + + + true + + + + +P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(110 20) + + + LINESTRING(110 110, 220 20, 20 20, 220 220) + + + true + + + + +P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(220 20) + + + LINESTRING(110 110, 220 20, 20 20, 220 220) + + + true + + + + +P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(110 20) + + + LINESTRING(220 220, 20 20, 220 20, 110 110) + + + true + + + + +P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(20 20) + + + LINESTRING(220 220, 20 20, 220 20, 110 110) + + + true + + + + +P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(20 110) + + + LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200) + + + true + + + + +P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}] + + POINT(20 200) + + + LINESTRING(20 200, 200 20, 20 20, 200 200) + + + true + + + + +P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + + true + + + + +P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 20 20, 200 200) + + + true + + + + +P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(80 140) + + + LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + + + +P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] + + POINT(110 110) + + + LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + + + +P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + + + +P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + + true + + + + +P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200) + + + true + + + + +P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + + true + + + + +P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, + 20 140) + + + true + + + + +P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + + true + + + + +P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + + true + + + + +P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + + true + + + + +P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) + + + true + + + + +P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200) + + + true + + + + +P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + + true + + + + +P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 110) + + + LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) + + + true + + + + +P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + + + +P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + + true + + + + +P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110) + + + true + + + + +P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) + + + true + + + + +P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) + + + true + + + + +P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 160) + + + LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(110 160) + + + LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(110 110) + + + LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(140 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(110 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + + true + + + + +P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + + true + + + + +P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}] + + POINT(140 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + + true + + + + +P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + + POINT(110 200) + + + LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + + true + + + + +P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) + + + true + + + + +P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) + + + true + + + + +P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) + + + true + + + + +P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) + + + true + + + + +P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + + POINT(90 130) + + + LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) + + + true + + + + +P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) + + + true + + + + +P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + + POINT(90 130) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + + + +P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + + true + + + + +P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, + 110 110) + + + true + + + + +P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) + + + true + + + + +P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, + 110 110) + + + true + + + + +P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(110 110) + + + LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) + + + true + + + + +P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200) + + + true + + + + +P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) + + + true + + + + +P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + + POINT(110 110) + + + LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) + + + true + + + + +P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, + 90 130) + + + true + + + + +P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + + true + + + + +P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, + 90 130) + + + true + + + + +P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + + true + + + + +P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + + true + + + + +P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + + POINT(90 130) + + + LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + + true + + + + +P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + + POINT(110 110) + + + LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + + true + + + + +P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}] + + POINT(110 200) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + + + +P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 150) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + + + +P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 110) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + + + +P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}] + + POINT(110 200) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + + true + + + + +P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 150) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + + true + + + + +P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 110) + + + LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + + true + + + + +P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + + POINT(110 150) + + + LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + + + +P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 110) + + + LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + + + +P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + + POINT(110 200) + + + LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + + true + + + + +mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}] + + MULTIPOINT(50 250, 90 220, 130 190) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}] + + MULTIPOINT(180 180, 230 130, 280 80) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}] + + MULTIPOINT(50 120, 90 80, 130 40) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}] + + MULTIPOINT(300 280, 340 240, 380 200) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV] + + MULTIPOINT(230 150, 260 120, 290 90) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV] + + MULTIPOINT(200 190, 240 150, 270 110) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V] + + MULTIPOINT(160 150, 190 120, 220 90) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V] + + MULTIPOINT(120 190, 160 150, 200 110) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}] + + MULTIPOINT(90 80, 160 150, 340 240) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] + + MULTIPOINT(90 80, 160 150, 300 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT(90 80, 160 150, 240 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT(90 80, 130 120, 210 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT(130 120, 210 150, 340 200) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] + + MULTIPOINT(160 150, 240 150, 340 210) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] + + MULTIPOINT(160 150, 300 150, 340 150) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + +mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}] + + MULTIPOINT(160 150, 240 150, 340 240) + + + LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + + true + + + + + + +P/P: same point [dim(0){A.P.Int = B.P.Int}] + + POINT(20 20) + + + POINT(20 20) + + + true + + + + +P/P: different point [dim(0){A.P.Int = B.P.Ext}] + + POINT(20 20) + + + POINT(40 60) + + + true + + + + +P/mP: different points [dim(0){A.P.Int = B.3P.Ext}] + + POINT(40 40) + + + MULTIPOINT(20 20, 80 80, 20 120) + + + true + + + + +P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}] + + POINT(20 20) + + + MULTIPOINT(20 20, 80 80, 20 120) + + + true + + + + +mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}] + + MULTIPOINT(40 40, 80 60, 120 100) + + + MULTIPOINT(40 40, 80 60, 120 100) + + + true + + + + +mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}] + + MULTIPOINT(40 40, 80 60, 120 100) + + + MULTIPOINT(40 40, 120 100, 80 60) + + + true + + + + +mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}] + + MULTIPOINT(40 40, 60 100, 100 60, 120 120) + + + MULTIPOINT(20 120, 60 60, 100 100, 140 40) + + + true + + + + +mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}] + + MULTIPOINT(20 20, 80 70, 140 120, 200 170) + + + MULTIPOINT(20 20, 80 70, 140 120, 200 170) + + + true + + + + +mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}] + + MULTIPOINT(20 20, 140 120, 80 70, 200 170) + + + MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + + true + + + + +mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}] + + MULTIPOINT(20 20, 80 70, 140 120, 200 170) + + + MULTIPOINT(80 70, 140 120) + + + true + + + + +mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}] + + MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + + MULTIPOINT(140 120, 80 70) + + + true + + + + +mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}] + + MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + + MULTIPOINT(80 170, 140 120, 200 80) + + + true + + + + +mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int} + + MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + + MULTIPOINT(80 170, 140 120, 200 80, 80 70) + + + true + + + + + Multipoint buffer + + MULTIPOINT(0 0, 5 5) + + + + POLYGON ((-10.0 -2.0, -10.0 -0.0, -10.0 2.0, -9.0 4.0, -8.0 6.0, -7.0 7.0, -6.0 8.0, -4.0 9.0, -3.0 11.0, -2.0 12.0, -1.0 13.0, 1.0 14.0, 3.0 15.0, 5.0 15.0, 7.0 15.0, 9.0 14.0, 11.0 13.0, 12.0 12.0, 13.0 11.0, 14.0 9.0, 15.0 7.0, 15.0 5.0, 15.0 3.0, 14.0 1.0, 13.0 -1.0, 12.0 -2.0, 11.0 -3.0, 9.0 -4.0, 8.0 -6.0, 7.0 -7.0, 6.0 -8.0, 4.0 -9.0, 2.0 -10.0, 0.0 -10.0, -2.0 -10.0, -4.0 -9.0, -6.0 -8.0, -7.0 -7.0, -8.0 -6.0, -9.0 -4.0, -10.0 -2.0)) + + + + + + + Multipolygon buffering + + MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) + + + + + MULTIPOLYGON (((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70 7, 80 60, 60 60))) + + + + + + + + diff -Nru geos-3.1.0/tests/xmltester/tests/test.xml geos-3.2.2/tests/xmltester/tests/test.xml --- geos-3.1.0/tests/xmltester/tests/test.xml 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tests/test.xml 2009-04-14 12:03:14.000000000 +0100 @@ -0,0 +1,6597 @@ + + + +A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(100 100, 100 200, 200 200, 200 100, 100 100)) + + +POLYGON( +(100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) + + +true + + + +A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(120 100, 120 200, 200 200, 200 100, 120 100)) + + +POLYGON( +(100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) + + +true + + + + +A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + +POLYGON( +(20 20, 20 100, 120 100, 140 20, 20 20)) + + +POLYGON( +(20 20, 20 100, 120 100, 140 20, 20 20)) + + +true + + + +A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}] + +POLYGON( +(20 20, 20 100, 120 100, 140 20, 20 20)) + + +POLYGON( +(20 20, 140 20, 120 100, 20 100, 20 20)) + + +true + + + +A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + +POLYGON( +(20 20, 20 100, 120 100, 140 20, 20 20)) + + +POLYGON( +(120 100, 140 20, 20 20, 20 100, 120 100)) + + +true + + + +A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] + +POLYGON( +(20 20, 20 100, 120 100, 140 20, 20 20)) + + +POLYGON( +(20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) + + +true + + + +A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}] + +POLYGON( +(0 0, 80 0, 80 80, 0 80, 0 0)) + + +POLYGON( +(100 200, 100 140, 180 140, 180 200, 100 200)) + + +true + + + +A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(140 120, 140 200, 240 200, 240 120, 140 120)) + + +true + + + +A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(80 180, 140 260, 260 200, 200 60, 80 180)) + + +true + + + +A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(240 80, 140 120, 180 240, 280 200, 240 80)) + + +true + + + +A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + +POLYGON( +(140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) + + +POLYGON( +(140 40, 180 80, 120 100, 140 40)) + + +true + + + +A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + +POLYGON( +(140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) + + +POLYGON( +(120 100, 180 80, 130 40, 120 100)) + + +true + + + +A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(20 20, 180 20, 140 140, 20 140, 20 20)) + + +POLYGON( +(180 100, 80 200, 180 280, 260 200, 180 100)) + + +true + + + +A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(140 140, 20 120, 0 220, 120 240, 140 140)) + + +true + + + +A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] + +POLYGON( +(160 200, 210 70, 120 70, 160 200)) + + +POLYGON( +(160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) + + +true + + + +A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] + +POLYGON( +(110 140, 200 70, 200 160, 110 140)) + + +POLYGON( +(110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) + + +true + + + +A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) + + +POLYGON( +(20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) + + +true + + + +A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) + + +POLYGON( +(20 120, 300 120, 140 240, 20 120)) + + +true + + + +A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, +20 20)) + + +POLYGON( +(100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) + + +true + + + +A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, +20 20)) + + +POLYGON( +(260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) + + +true + + + +A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + +POLYGON( +(0 140, 300 140, 140 240, 0 140)) + + +true + + + +A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + +POLYGON( +(20 240, 20 140, 320 140, 180 240, 20 240)) + + +true + + + +A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) + + +POLYGON( +(20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) + + +true + + + +A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}] + +POLYGON( +(120 120, 180 60, 20 20, 20 120, 120 120)) + + +POLYGON( +(120 120, 220 20, 280 20, 240 160, 120 120)) + + +true + + + +A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(140 120, 160 20, 260 120, 220 200, 140 120)) + + +true + + + +A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] + +POLYGON( +(20 140, 120 40, 20 40, 20 140)) + + +POLYGON( +(190 140, 190 20, 140 20, 20 140, 190 140)) + + +true + + + +A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] + +POLYGON( +(120 120, 180 60, 20 20, 20 120, 120 120)) + + +POLYGON( +(300 20, 220 20, 120 120, 260 160, 300 20)) + + +true + + + +A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(140 120, 240 160, 280 60, 160 20, 140 120)) + + +true + + + +A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] + +POLYGON( +(120 120, 180 60, 20 20, 20 120, 120 120)) + + +POLYGON( +(280 60, 180 60, 120 120, 260 180, 280 60)) + + +true + + + +A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(120 200, 120 120, 40 120, 40 200, 120 200)) + + +true + + + +A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(160 220, 140 120, 60 120, 40 220, 160 220)) + + +true + + + +A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}] + +POLYGON( +(140 120, 160 20, 20 20, 20 120, 140 120)) + + +POLYGON( +(140 120, 20 120, 20 220, 140 220, 140 120)) + + +true + + + +A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}] + +POLYGON( +(120 120, 180 60, 20 20, 20 120, 120 120)) + + +POLYGON( +(320 20, 220 20, 80 160, 240 140, 320 20)) + + +true + + + +A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(60 40, 60 140, 180 140, 180 40, 60 40)) + + +true + + + +A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 80 140, 160 60, 20 20)) + + +true + + + +A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(160 60, 20 20, 100 140, 160 60)) + + +true + + + +A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 100, 140 160, 160 40, 20 100)) + + +true + + + +A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(160 40, 20 100, 160 160, 160 40)) + + +true + + + +A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 180, 180 120, 80 40, 20 180)) + + +true + + + +A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(180 120, 100 40, 20 180, 180 120)) + + +true + + + +A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) + + +true + + + +A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) + + +true + + + +A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) + + +true + + + +A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) + + +true + + + +A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) + + +true + + + +A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) + + +true + + + +A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 20 140, 120 120, 120 40, 20 20)) + + +true + + + +A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 20 180, 140 140, 140 60, 20 20)) + + +true + + + +A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 120 40, 120 120, 20 140, 20 20)) + + +true + + + +A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(120 40, 20 20, 20 140, 120 120, 120 40)) + + +true + + + +A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 140 60, 140 140, 20 180, 20 20)) + + +true + + + +A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(140 60, 20 20, 20 180, 140 140, 140 60)) + + +true + + + +A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 60 120, 140 120, 180 20, 20 20)) + + +true + + + +A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 40, 120 40, 120 120, 20 140, 20 40)) + + +true + + + +A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}, dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}] + +POLYGON( +(20 20, 20 180, 220 180, 220 20, 20 20)) + + +POLYGON( +(20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) + + +true + + + +A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] + +POLYGON( +(150 150, 330 150, 250 70, 70 70, 150 150)) + + +POLYGON( +(150 150, 270 150, 140 20, 20 20, 150 150)) + + +true + + + +A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] + +POLYGON( +(150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) + + +POLYGON( +(150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) + + +true + + + +A/A-6-3: spiky polygons overlapping; boundary <-> boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}] + +POLYGON( +(20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, +80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, +100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, +190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, +290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, +240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, +240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, +250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, +160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, +70 40, 20 20)) + + +POLYGON( +(190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, +120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, +120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, +200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, +380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, +440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, +440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, +390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, +370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, +280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, +200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, +180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, +200 120, 120 120, 190 140)) + + +true + + + +A/A-6-4: spiky polygons overlapping; boundary <-> boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}] + +POLYGON( +(70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, +20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, +200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, +270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, +350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, +360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, +410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, +240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, +170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, +410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, +420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, +460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, +140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, +90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, +50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, +40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) + + +POLYGON( +(190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, +120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, +120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, +200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, +380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, +440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, +440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, +390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, +370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, +280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, +200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, +180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, +200 120, 120 120, 190 140)) + + +true + + + +A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(60 160, 220 160, 220 20, 60 20, 60 160)) + + +POLYGON( +(60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) + + +true + + + +A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(60 160, 220 160, 220 20, 60 20, 60 160)) + + +POLYGON( +(60 160, 20 200, 260 200, 140 80, 60 160)) + + +true + + + +A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(60 160, 220 160, 220 20, 60 20, 60 160)) + + +POLYGON( +(20 200, 140 80, 260 200, 20 200)) + + +true + + + +A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] + +POLYGON( +(60 160, 220 160, 220 20, 60 20, 60 160)) + + +POLYGON( +(20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) + + +true + + + +A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] + +POLYGON( +(60 160, 220 160, 220 20, 60 20, 60 160)) + + +POLYGON( +(20 200, 60 160, 140 80, 260 200, 20 200)) + + +true + + + +A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(0 0, 0 200, 200 200, 200 0, 0 0)) + + +POLYGON( +(100 100, 1000000 110, 10000000 100, 100 100)) + + +true + + + +A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(100 0, 100 200, 200 200, 200 0, 100 0)) + + +POLYGON( +(100 100, 1000000 110, 10000000 100, 100 100)) + + +true + + + +A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(120 0, 120 200, 200 200, 200 0, 120 0)) + + +POLYGON( +(100 100, 1000000 110, 10000000 100, 100 100)) + + +true + + + +A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(0 0, 0 200, 110 200, 110 0, 0 0)) + + +POLYGON( +(100 100, 1000000 110, 10000000 100, 100 100)) + + +true + + + +A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(100 100, 100 200, 200 200, 200 100, 100 100)) + + +POLYGON( +(100 100, 2100 110, 2100 100, 100 100)) + + +true + + + +A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(100 100, 100 200, 200 200, 200 100, 100 100)) + + +POLYGON( +(100 100, 2101 110, 2101 100, 100 100)) + + +true + + + +A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(100 100, 200 200, 200 100, 100 100)) + + +POLYGON( +(100 100, 2101 110, 2101 100, 100 100)) + + +true + + + +A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(100 100, 100 200, 200 200, 200 100, 100 100)) + + +POLYGON( +(100 100, 1000000 110, 1000000 100, 100 100)) + + +true + + + +A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(120 100, 120 200, 200 200, 200 100, 120 100)) + + +POLYGON( +(100 100, 500 110, 500 100, 100 100)) + + +true + + + +A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(120 100, 120 200, 200 200, 200 100, 120 100)) + + +POLYGON( +(100 100, 501 110, 501 100, 100 100)) + + +true + + + +A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(120 100, 130 200, 200 200, 200 100, 120 100)) + + +POLYGON( +(100 100, 501 110, 501 100, 100 100)) + + +true + + + +A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(120 100, 17 200, 200 200, 200 100, 120 100)) + + +POLYGON( +(100 100, 501 110, 501 100, 100 100)) + + +true + + + +A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(120 100, 120 200, 200 200, 200 100, 120 100)) + + +POLYGON( +(100 100, 1000000 110, 1000000 100, 100 100)) + + +true + + + +A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(101 99, 101 1000000, 102 1000000, 101 99)) + + +POLYGON( +(100 100, 1000000 110, 1000000 100, 100 100)) + + +true + + + +A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(100 100, 200 101, 200 100, 100 100)) + + +POLYGON( +(100 100, 2101 110, 2101 100, 100 100)) + + +true + + + +A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] + +POLYGON( +(16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) + + +POLYGON( +(10 307, 22 307, 153 34, 22 34, 10 307)) + + +true + + + +A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}] + +POLYGON( +(160 200, 210 70, 120 70, 160 200)) + + +POLYGON( +(160 200, 310 20, 20 20, 160 200), +(160 200, 260 40, 70 40, 160 200)) + + +true + + + +A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] + +POLYGON( +(170 120, 240 100, 260 50, 190 70, 170 120)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] + +POLYGON( +(270 90, 200 50, 150 80, 210 120, 270 90)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}] + +POLYGON( +(170 120, 260 100, 240 60, 150 80, 170 120)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}] + +POLYGON( +(220 120, 270 80, 200 60, 160 100, 220 120)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}] + +POLYGON( +(260 50, 180 70, 180 110, 260 90, 260 50)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}] + +POLYGON( +(230 110, 290 80, 190 60, 140 90, 230 110)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}] + +POLYGON( +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] + +POLYGON( +(170 120, 330 120, 280 70, 120 70, 170 120)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] + +POLYGON( +(170 120, 300 120, 250 70, 120 70, 170 120)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}] + +POLYGON( +(190 100, 310 100, 260 50, 140 50, 190 100)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}] + +POLYGON( +(280 130, 360 130, 270 40, 190 40, 280 130)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 250 120, 180 50, 100 50, 170 120)) + + +true + + + +A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}] + +POLYGON( +(220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, +390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 250 120, 180 50, 100 50, 170 120)) + + +true + + + +A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}] + +POLYGON( +(260 130, 360 130, 280 40, 170 40, 260 130)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 250 120, 180 50, 100 50, 170 120)) + + +true + + + +A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}] + +POLYGON( +(240 110, 340 110, 290 60, 190 60, 240 110)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 250 120, 180 50, 100 50, 170 120)) + + +true + + + +A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}] + +POLYGON( +(250 120, 350 120, 280 50, 180 50, 250 120)) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 250 120, 180 50, 100 50, 170 120)) + + +true + + + +Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] + +POLYGON( +(230 210, 230 20, 20 20, 20 210, 230 210), +(120 180, 50 50, 200 50, 120 180)) + + +POLYGON( +(230 210, 230 20, 20 20, 20 210, 230 210), +(120 180, 50 50, 200 50, 120 180)) + + +true + + + +A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] + +POLYGON( +(230 210, 230 20, 20 20, 20 210, 230 210), +(140 40, 40 40, 40 170, 140 40), +(110 190, 210 190, 210 50, 110 190)) + + +POLYGON( +(230 210, 230 20, 20 20, 20 210, 230 210), +(140 40, 40 40, 40 170, 140 40), +(110 190, 210 190, 210 50, 110 190)) + + +true + + + +A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] + +POLYGON( +(280 190, 330 150, 200 110, 150 150, 280 190)) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] + +POLYGON( +(80 190, 220 190, 140 110, 0 110, 80 190)) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] + +POLYGON( +(330 150, 200 110, 150 150, 280 190, 330 150)) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}] + +POLYGON( +(290 190, 340 150, 220 120, 170 170, 290 190)) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}] + +POLYGON( +(220 190, 340 190, 260 110, 140 110, 220 190)) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] + +POLYGON( +(140 190, 220 190, 100 70, 20 70, 140 190)) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] + +POLYGON( +(140 220, 60 140, 140 60, 220 140, 140 220)) + + +MULTIPOLYGON( +( +(100 20, 180 20, 180 100, 100 100, 100 20)), +( +(20 100, 100 100, 100 180, 20 180, 20 100)), +( +(100 180, 180 180, 180 260, 100 260, 100 180)), +( +(180 100, 260 100, 260 180, 180 180, 180 100))) + + +true + + + +mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] + +MULTIPOLYGON( +( +(110 110, 70 200, 150 200, 110 110)), +( +(110 110, 150 20, 70 20, 110 110))) + + +MULTIPOLYGON( +( +(110 110, 160 160, 210 110, 160 60, 110 110)), +( +(110 110, 60 60, 10 110, 60 160, 110 110))) + + +true + + + +mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] + +MULTIPOLYGON( +( +(110 110, 70 200, 150 200, 110 110), +(110 110, 100 180, 120 180, 110 110)), +( +(110 110, 150 20, 70 20, 110 110), +(110 110, 120 40, 100 40, 110 110))) + + +MULTIPOLYGON( +( +(110 110, 160 160, 210 110, 160 60, 110 110), +(110 110, 160 130, 160 90, 110 110)), +( +(110 110, 60 60, 10 110, 60 160, 110 110), +(110 110, 60 90, 60 130, 110 110))) + + +true + + + +mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] + +MULTIPOLYGON( +( +(110 110, 70 200, 200 200, 110 110), +(110 110, 100 180, 120 180, 110 110)), +( +(110 110, 200 20, 70 20, 110 110), +(110 110, 120 40, 100 40, 110 110))) + + +MULTIPOLYGON( +( +(110 110, 160 160, 210 110, 160 60, 110 110), +(110 110, 160 130, 160 90, 110 110)), +( +(110 110, 60 60, 10 110, 60 160, 110 110), +(110 110, 60 90, 60 130, 110 110))) + + +true + + + +mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] + +MULTIPOLYGON( +( +(110 110, 20 200, 200 200, 110 110), +(110 110, 100 180, 120 180, 110 110)), +( +(110 110, 200 20, 20 20, 110 110), +(110 110, 120 40, 100 40, 110 110))) + + +MULTIPOLYGON( +( +(110 110, 160 160, 210 110, 160 60, 110 110), +(110 110, 160 130, 160 90, 110 110)), +( +(110 110, 60 60, 10 110, 60 160, 110 110), +(110 110, 60 90, 60 130, 110 110))) + + +true + + + +mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] + +MULTIPOLYGON( +( +(110 110, 70 200, 200 200, 110 110), +(110 110, 100 180, 120 180, 110 110)), +( +(110 110, 200 20, 70 20, 110 110), +(110 110, 120 40, 100 40, 110 110))) + + +MULTIPOLYGON( +( +(110 110, 160 160, 210 110, 160 60, 110 110), +(110 110, 160 130, 160 90, 110 110)), +( +(110 110, 60 60, 10 110, 60 160, 110 110), +(110 110, 60 90, 60 130, 110 110))) + + +true + + + +mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] + +MULTIPOLYGON( +( +(110 110, 70 200, 200 200, 110 110), +(110 110, 100 180, 120 180, 110 110)), +( +(110 110, 200 20, 70 20, 110 110), +(110 110, 120 40, 100 40, 110 110))) + + +MULTIPOLYGON( +( +(110 110, 70 200, 210 110, 70 20, 110 110), +(110 110, 110 140, 150 110, 110 80, 110 110)), +( +(110 110, 60 60, 10 110, 60 160, 110 110), +(110 110, 60 90, 60 130, 110 110))) + + +true + + + + +AC A-shells overlapping B-shell at A-vertex + +POLYGON( +(100 60, 140 100, 100 140, 60 100, 100 60)) + + +MULTIPOLYGON( +( +(80 40, 120 40, 120 80, 80 80, 80 40)), +( +(120 80, 160 80, 160 120, 120 120, 120 80)), +( +(80 120, 120 120, 120 160, 80 160, 80 120)), +( +(40 80, 80 80, 80 120, 40 120, 40 80))) + + +true + + + + +L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}] + +LINESTRING(150 150, 40 230) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] + +LINESTRING(40 40, 50 130, 130 130) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}] + +LINESTRING(40 230, 150 150) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}] + +LINESTRING(210 150, 330 150) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}] + +LINESTRING(200 150, 310 150, 360 220) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}] + +LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}] + +LINESTRING(210 210, 220 150, 320 150, 370 210) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}] + +LINESTRING(20 60, 150 60) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}] + +LINESTRING(60 90, 310 180) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}] + +LINESTRING(90 210, 210 90) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}] + +LINESTRING(290 10, 130 170) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}] + +LINESTRING(30 100, 100 100, 180 100) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}] + +LINESTRING(20 100, 100 100, 360 100, 410 100) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}] + +LINESTRING(90 210, 150 150, 210 90) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}] + +LINESTRING(180 90, 280 120) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] + +LINESTRING(70 70, 80 20) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}] + +LINESTRING(130 20, 150 60) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}] + +LINESTRING(70 70, 80 20, 140 20, 150 60) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}] + +LINESTRING(170 50, 170 20, 240 20, 260 60) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150)) + + +true + + + +L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}] + +LINESTRING(50 100, 140 190, 280 190) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}] + +LINESTRING(140 60, 180 100, 290 100) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}] + +LINESTRING(170 120, 210 80, 270 80) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}] + +LINESTRING(170 120, 260 50) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + +LINESTRING(190 90, 190 270) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(190 190, 280 50, 100 50, 190 190)) + + +true + + + +L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + +LINESTRING(60 160, 150 70) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(110 110, 250 100, 140 30, 110 110)) + + +true + + + +L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + +LINESTRING(60 160, 150 70) + + +POLYGON( +(190 190, 20 20, 360 20, 190 190), +(250 100, 110 110, 140 30, 250 100)) + + +true + + + +L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] + +LINESTRING(60 160, 150 70) + + +POLYGON( +(190 190, 20 20, 360 20, 190 190), +(250 100, 110 110, 140 30, 250 100)) + + +true + + + +L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + +LINESTRING(190 90, 190 190, 190 270) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(190 190, 280 50, 100 50, 190 190)) + + +true + + + +L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + +LINESTRING(60 160, 110 110, 150 70) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(110 110, 250 100, 140 30, 110 110)) + + +true + + + +L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + +LINESTRING(60 160, 110 110, 150 70) + + +POLYGON( +(190 190, 20 20, 360 20, 190 190), +(250 100, 110 110, 140 30, 250 100)) + + +true + + + +L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] + +LINESTRING(60 160, 110 110, 150 70) + + +POLYGON( +(190 190, 110 110, 20 20, 360 20, 190 190), +(250 100, 110 110, 140 30, 250 100)) + + +true + + + +L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}] + +LINESTRING(130 110, 180 110, 190 60) + + +POLYGON( +(20 200, 240 200, 240 20, 20 20, 20 200), +(130 110, 60 180, 60 40, 130 110), +(130 110, 200 40, 200 180, 130 110)) + + +true + + + +L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] + +LINESTRING(80 110, 180 110) + + +POLYGON( +(20 200, 240 200, 240 20, 20 20, 20 200), +(130 110, 60 180, 60 40, 130 110), +(130 110, 200 40, 200 180, 130 110)) + + +true + + + +L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}] + +LINESTRING(80 110, 180 110) + + +POLYGON( +(20 200, 20 20, 240 20, 240 200, 20 200), +(60 180, 130 110, 60 40, 60 180), +(130 110, 200 40, 200 180, 130 110)) + + +true + + + +L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] + +LINESTRING(80 110, 170 110) + + +POLYGON( +(20 200, 20 20, 240 20, 240 200, 20 200), +(130 110, 60 40, 60 180, 130 110), +(130 180, 130 40, 200 110, 130 180)) + + +true + + + +L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + +LINESTRING(80 110, 130 110, 170 110) + + +POLYGON( +(20 200, 20 20, 240 20, 240 200, 20 200), +(130 110, 60 40, 60 180, 130 110), +(130 180, 130 40, 200 110, 130 180)) + + +true + + + +L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + +LINESTRING(80 110, 130 110, 180 110) + + +POLYGON( +(20 200, 240 200, 240 20, 20 20, 20 200), +(130 110, 60 180, 60 40, 130 110), +(130 110, 200 40, 200 180, 130 110)) + + +true + + + +L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}] + +LINESTRING(80 110, 130 110, 180 110) + + +POLYGON( +(20 200, 20 20, 240 20, 240 200, 20 200), +(60 180, 130 110, 60 40, 60 180), +(130 110, 200 40, 200 180, 130 110)) + + +true + + + +L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] + +LINESTRING(80 110, 130 110, 170 110) + + +POLYGON( +(20 200, 20 20, 240 20, 240 200, 20 200), +(130 110, 60 40, 60 180, 130 110), +(130 180, 130 40, 200 110, 130 180)) + + +true + + + +L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}] + +LINESTRING(160 70, 320 230) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}] + +LINESTRING(160 70, 200 110, 280 190, 320 230) + + +MULTIPOLYGON( +( +(140 110, 260 110, 170 20, 50 20, 140 110)), +( +(300 270, 420 270, 340 190, 220 190, 300 270))) + + +true + + + +L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP] + +LINESTRING(70 50, 70 150) + + +MULTIPOLYGON( +( +(0 0, 0 100, 140 100, 140 0, 0 0)), +( +(20 170, 70 100, 130 170, 20 170))) + + +true + + + +RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}] + +LINESTRING(110 110, 20 200, 200 200, 110 110) + + +POLYGON( +(20 20, 200 20, 110 110, 20 20)) + + +true + + + +RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}] + +LINESTRING(150 70, 160 110, 200 60, 150 70) + + +POLYGON( +(20 20, 200 20, 110 110, 20 20)) + + +true + + + +RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}] + +LINESTRING(80 60, 120 40, 120 70, 80 60) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 50 30, 170 30, 110 90)) + + +true + + + +RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}] + +LINESTRING(20 20, 200 20, 110 110, 20 20) + + +POLYGON( +(20 20, 200 20, 110 110, 20 20)) + + +true + + + +RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}] + +LINESTRING(110 90, 170 30, 50 30, 110 90) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 50 30, 170 30, 110 90)) + + +true + + + +RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}] + +LINESTRING(110 110, 170 50, 170 110, 110 110) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 50 30, 170 30, 110 90)) + + +true + + + +RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}] + +LINESTRING(110 90, 70 50, 130 50, 110 90) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 50 30, 170 30, 110 90)) + + +true + + + +RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}] + +LINESTRING(110 60, 20 150, 200 150, 110 60) + + +POLYGON( +(20 20, 200 20, 110 110, 20 20)) + + +true + + + +RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}] + +LINESTRING(110 130, 110 70, 200 100, 110 130) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 50 30, 170 30, 110 90)) + + +true + + + +RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}] + +LINESTRING(110 90, 160 40, 60 40, 110 90) + + +POLYGON( +(20 20, 200 20, 110 110, 20 20)) + + +true + + + +RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}] + +LINESTRING(110 100, 40 30, 180 30, 110 100) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 60 40, 160 40, 110 90)) + + +true + + + +RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}] + +LINESTRING(110 110, 180 30, 40 30, 110 110) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 60 40, 160 40, 110 90)) + + +true + + + +RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}] + +LINESTRING(110 90, 180 30, 40 30, 110 90) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 60 40, 160 40, 110 90)) + + +true + + + +RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}] + +LINESTRING(110 90, 50 30, 180 30, 110 90) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110), +(110 90, 60 40, 160 40, 110 90)) + + +true + + + +nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}] + +LINESTRING(110 110, 200 200, 200 110, 110 200) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}] + +LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}] + +LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}] + +LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}] + +LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}] + +LINESTRING(110 110, 180 40, 110 40, 110 180) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}] + +LINESTRING(110 60, 50 30, 170 30, 90 70) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}] + +LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}] + +LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90) + + +POLYGON( +(150 150, 410 150, 280 20, 20 20, 150 150), +(170 120, 330 120, 260 50, 100 50, 170 120)) + + +true + + + +mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}] + +MULTILINESTRING( +(20 110, 200 110), +(200 200, 110 110, 20 210, 110 110)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}] + +MULTILINESTRING( +(20 110, 200 110), +(60 180, 60 110, 160 110, 110 110)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}] + +MULTILINESTRING( +(20 110, 200 110), +(200 200, 110 110, 20 200, 110 200, 110 110)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}] + +MULTILINESTRING( +(20 110, 200 110), +(110 50, 110 170, 110 70, 110 150, 200 150)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}] + +MULTILINESTRING( +(20 110, 200 110), +(50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}] + +MULTILINESTRING( +(20 110, 200 110), +(110 60, 110 160, 200 160)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}] + +MULTILINESTRING( +(20 110, 200 110), +(110 60, 110 160, 200 160)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] + +MULTILINESTRING( +(110 100, 40 30, 180 30), +(170 30, 110 90, 50 30)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] + +MULTILINESTRING( +(110 110, 60 40, 70 20, 150 20, 170 40), +(180 30, 40 30, 110 80)) + + +POLYGON( +(110 110, 200 20, 20 20, 110 110)) + + +true + + + +mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}] + +MULTILINESTRING( +(20 110, 200 110, 200 160), +(110 110, 200 110, 200 70, 20 150)) + + +MULTIPOLYGON( +( +(110 110, 20 20, 200 20, 110 110)), +( +(110 110, 20 200, 200 200, 110 110))) + + +true + + + +mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}] + +MULTILINESTRING( +(20 160, 70 110, 150 110, 200 160), +(110 110, 20 110, 50 80, 70 110, 200 110)) + + +MULTIPOLYGON( +( +(110 110, 20 20, 200 20, 110 110)), +( +(110 110, 20 200, 200 200, 110 110))) + + +true + + + +mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}] + +MULTILINESTRING( +(20 110, 200 110), +(110 110, 20 170, 20 130, 200 90)) + + +MULTIPOLYGON( +( +(110 110, 20 20, 200 20, 110 110)), +( +(110 110, 20 200, 200 200, 110 110))) + + +true + + + + +LC - topographically equal with no boundary + +LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) + + +MULTILINESTRING( +(0 0, 0 50), +(0 50, 50 50), +(50 50, 50 0), +(50 0, 0 0)) + + +true + + + +LC - intersection (containment) along mod-2 A-Int line segment + +LINESTRING(40 180, 140 180) + + +MULTIPOLYGON( +( +(20 320, 180 320, 180 180, 20 180, 20 320)), +( +(20 180, 20 80, 180 80, 180 180, 20 180))) + + +true + + + +LC - intersection (overlap) along mod-2 A-Int line segment + +LINESTRING(40 180, 140 180) + + +MULTIPOLYGON( +( +(20 320, 180 320, 180 180, 20 180, 20 320)), +( +(60 180, 60 80, 180 80, 180 180, 60 180))) + + +true + + + +LC - equal with boundary intersection + +LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) + + +MULTILINESTRING( +(0 0, 60 0), +(60 0, 120 0), +(60 0, 60 60)) + + +true + + + + +L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] + +LINESTRING(40 40, 120 120) + + +LINESTRING(40 40, 60 120) + + +true + + + +L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + +LINESTRING(40 40, 120 120) + + +LINESTRING(60 240, 40 40) + + +true + + + +L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}] + +LINESTRING(40 40, 180 180) + + +LINESTRING(120 120, 20 200) + + +true + + + +L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + +LINESTRING(40 40, 120 120) + + +LINESTRING(60 240, 120 120) + + +true + + + +L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}] + +LINESTRING(40 40, 180 180) + + +LINESTRING(20 180, 140 140) + + +true + + + +L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}] + +LINESTRING(40 40, 120 120) + + +LINESTRING(40 120, 120 40) + + +true + + + +L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + +LINESTRING(40 40, 100 100) + + +LINESTRING(40 40, 100 100) + + +true + + + +L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + +LINESTRING(40 40, 100 100) + + +LINESTRING(100 100, 40 40) + + +true + + + +L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext} + +LINESTRING(40 40, 120 120) + + +LINESTRING(40 120, 120 160) + + +true + + + +L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + +LINESTRING(20 20, 180 180) + + +LINESTRING(20 20, 180 180) + + +true + + + +L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}] + +LINESTRING(20 20, 180 180) + + +LINESTRING(20 20, 110 110) + + +true + + + +L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] + +LINESTRING(20 20, 180 180) + + +LINESTRING(50 50, 140 140) + + +true + + + +L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV] + +LINESTRING(180 180, 40 40) + + +LINESTRING(120 120, 260 260) + + +true + + + +L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP] + +LINESTRING(40 40, 180 180) + + +LINESTRING(260 260, 120 120) + + +true + + + +L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV] + +LINESTRING(40 40, 180 180) + + +LINESTRING(120 120, 260 260) + + +true + + + +L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(40 40, 20 100, 40 160, 20 200) + + +true + + + +L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(20 200, 40 160, 20 100, 40 40) + + +true + + + +L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + +LINESTRING(80 240, 200 120, 100 100, 40 40) + + +LINESTRING(20 200, 40 160, 20 100, 40 40) + + +true + + + +L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}] + +LINESTRING(60 60, 60 230, 140 230, 250 160) + + +LINESTRING(20 20, 60 60, 250 160, 310 230) + + +true + + + +L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}] + +LINESTRING(60 60, 60 230, 140 230, 250 160) + + +LINESTRING(20 20, 110 110, 200 110, 320 230) + + +true + + + +L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] + +LINESTRING(60 110, 60 250, 360 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}] + +LINESTRING(60 110, 60 250, 360 210) + + +LINESTRING(360 210, 310 160, 110 160, 60 110) + + +true + + + +L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(160 160, 240 240) + + +true + + + +L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(240 240, 160 160) + + +true + + + +L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] + +LINESTRING(60 60, 60 230, 140 230, 250 160) + + +LINESTRING(60 150, 110 100, 170 100, 110 230) + + +true + + + +L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}] + +LINESTRING(60 60, 60 230, 140 230, 250 160) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(200 120, 200 190, 150 240, 200 240) + + +true + + + +L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(200 240, 150 240, 200 200, 200 120) + + +true + + + +L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}] + +LINESTRING(60 60, 60 230, 140 230, 250 160) + + +LINESTRING(60 230, 80 140, 120 140, 140 230) + + +true + + + +L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(60 110, 200 110, 250 160, 300 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] + +LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(60 110, 220 110, 250 160, 280 110) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] + +LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}] + +LINESTRING(130 160, 160 110, 190 110, 230 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] + +LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}] + +LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] + +LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(110 160, 180 110, 250 160, 320 110) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] + +LINESTRING(140 160, 180 80, 220 160, 250 80) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}] + +LINESTRING(40 40, 100 100, 200 120, 130 190) + + +LINESTRING(20 130, 70 130, 160 40) + + +true + + + +L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}] + +LINESTRING(40 40, 100 100, 200 120, 130 190) + + +LINESTRING(40 160, 40 100, 110 40, 170 40) + + +true + + + +L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] + +LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-16: two LineStrings crossing at vertices for both LineString [dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(40 40, 100 100, 200 120, 130 190) + + +LINESTRING(30 140, 80 140, 100 100, 200 30) + + +true + + + +L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}] + +LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + +LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, +240 80, 300 80, 270 110, 200 110) + + +true + + + +L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}] + +LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, +230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, +80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, +70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, +40 190, 230 190, 20 200, 230 200) + + +LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, +70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, +120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, +150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, +190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) + + +true + + + +L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +true + + + +L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(80 240, 200 120, 100 100, 40 40) + + +true + + + +L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40) + + +true + + + +L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(260 210, 240 130, 280 120, 260 40) + + +true + + + +L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] + +LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) + + +LINESTRING(140 130, 100 110, 120 60, 170 60) + + +true + + + +L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] + +LINESTRING(60 110, 110 160, 310 160, 360 210) + + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +true + + + +L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +LINESTRING(60 110, 110 160, 250 160) + + +true + + + +L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +LINESTRING(110 160, 310 160, 340 190) + + +true + + + +L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}] + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +LINESTRING(140 160, 250 160, 310 160, 340 190) + + +true + + + +L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}] + +LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) + + +LINESTRING(110 160, 250 160, 310 160) + + +true + + + +L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40) + + +true + + + +L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40) + + +true + + + +L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(80 190, 140 140, 40 40) + + +true + + + +L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(240 200, 200 260, 80 240, 140 180) + + +true + + + +L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(140 180, 80 240, 200 260, 240 200) + + +true + + + +L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(280 240, 240 140, 200 120, 80 240) + + +true + + + +L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}] + +LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + +LINESTRING(20 80, 120 80, 200 80, 260 20) + + +true + + + +L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(100 100, 200 120, 240 140, 280 240) + + +true + + + +L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}] + +LINESTRING(40 40, 100 100, 200 120, 80 240) + + +LINESTRING(280 240, 240 140, 200 120, 100 100) + + +true + + + +L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}] + +LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + +LINESTRING(80 20, 80 80, 240 80, 300 20) + + +true + + + +L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}] + +LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) + + +LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, +300 80) + + +true + + + +L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}] + +LINESTRING(100 100, 20 180, 180 180) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] + +LINESTRING(20 100, 180 100, 100 180) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] + +LINESTRING(100 40, 100 160, 180 160) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}] + +LINESTRING(20 100, 100 100, 180 100, 100 180) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] + +LINESTRING(100 100, 160 40) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] + +LINESTRING(100 100, 180 20) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}] + +LINESTRING(60 60, 100 100, 140 60) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}] + +LINESTRING(100 100, 190 10, 190 100) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}] + +LINESTRING(100 100, 160 40, 160 100) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}] + +LINESTRING(60 140, 160 40, 160 140) + + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(80 80, 20 80, 140 80) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(80 80, 140 80, 80 20, 80 140) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(80 80, 20 80, 140 80, 80 80) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(20 140, 140 20, 100 20, 100 80) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(140 80, 20 80, 140 80) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(140 80, 20 80, 80 140, 80 20) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(140 80, 20 80, 80 80, 140 80) + + +true + + + +L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}] + +LINESTRING(20 20, 140 140) + + +LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20) + + +true + + + +L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] + +LINESTRING(130 150, 220 150, 220 240) + + +LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + +true + + + +L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] + +LINESTRING(30 150, 130 150, 250 150) + + +LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + +true + + + +L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + +LINESTRING(30 150, 250 150) + + +LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) + + +true + + + +L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] + +LINESTRING(30 150, 130 150, 250 150) + + +LINESTRING(130 240, 130 20, 30 20, 130 150) + + +true + + + +L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}] + +LINESTRING(30 150, 250 150) + + +LINESTRING(120 240, 120 20, 20 20, 120 170) + + +true + + + +nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}] + +LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + +LINESTRING(110 110, 200 110) + + +true + + + +L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] + +LINESTRING(110 110, 200 110) + + +LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + +true + + + +L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] + +LINESTRING(20 110, 200 110) + + +LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + +true + + + +nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV} + +LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + +LINESTRING(20 110, 200 110) + + +true + + + +L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}] + +LINESTRING(90 200, 90 130, 110 110, 150 200) + + +LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + +true + + + +L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}] + +LINESTRING(200 110, 110 110, 90 130, 90 200) + + +LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + +true + + + +L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx] + +LINESTRING(80 80, 150 80, 210 80) + + +MULTILINESTRING( +(20 20, 140 140), +(20 140, 140 20)) + + +true + + + +LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] + +LINESTRING(40 80, 160 200, 260 20, 40 80) + + +LINESTRING(40 80, 160 200, 260 20, 40 80) + + +true + + + +LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] + +LINESTRING(40 80, 160 200, 260 20, 40 80) + + +LINESTRING(40 80, 260 20, 160 200, 40 80) + + +true + + + +LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}] + +LINESTRING(40 80, 160 200, 260 20, 40 80) + + +LINESTRING(260 20, 40 80, 160 200, 260 20) + + +true + + + +LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}] + +LINESTRING(40 80, 160 200, 260 20, 40 80) + + +LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140) + + +true + + + +LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}] + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +LINESTRING(100 100, 180 180, 20 180, 100 100) + + +true + + + +LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},] + +LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + +LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150) + + +true + + + +LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}] + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +LINESTRING(180 100, 20 100, 100 180, 180 100) + + +true + + + +LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}] + +LINESTRING(100 100, 180 20, 20 20, 100 100) + + +LINESTRING(180 180, 100 100, 20 180, 180 180) + + +true + + + +LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}] + +LINESTRING(20 180, 100 100, 20 20, 20 180) + + +LINESTRING(100 20, 100 180, 180 100, 100 20) + + +true + + + +LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},] + +LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + +LINESTRING(170 20, 20 170, 170 170, 170 20) + + +true + + + +LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}] + +LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + +LINESTRING(40 150, 150 150, 90 210, 40 150) + + +true + + + +LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}] + +LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + +LINESTRING(20 150, 170 150, 90 230, 20 150) + + +true + + + +LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}] + +LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) + + +LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150) + + +true + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}] + +LINESTRING(110 110, 200 20, 20 20, 110 110) + + +LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) + + +true + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}] + +LINESTRING(110 110, 200 20, 20 20, 110 110) + + +LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) + + +true + + + +LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}] + +LINESTRING(110 110, 200 20, 20 20, 110 110) + + +LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) + + +true + + + +LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}] + +LINESTRING(110 110, 200 20, 20 20, 110 110) + + +LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40) + + +true + + + +LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}] + +LINESTRING(110 110, 200 20, 20 20, 110 110) + + +LINESTRING(200 20, 20 200, 200 200, 20 20) + + +true + + + +nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}] + +LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110) + + +LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110) + + +true + + + +nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}] + +LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) + + +LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100) + + +true + + + +nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}] + +LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) + + +LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160) + + +true + + + +nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}] + +LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200) + + +LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110) + + +true + + + +nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] + +LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) + + +LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200) + + +true + + + +nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] + +LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) + + +LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120) + + +true + + + +mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] + +MULTILINESTRING( +(70 20, 20 90, 70 170), +(70 170, 120 90, 70 20)) + + +MULTILINESTRING( +(70 20, 20 90, 70 170), +(70 170, 120 90, 70 20)) + + +true + + + +mL/mL-1-1: non-simple MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +true + + + +mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 140, 90 60, 90 20), +(170 20, 130 20, 20 20)) + + +true + + + +mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(170 60, 90 20, 20 60), +(130 100, 130 60, 90 20, 50 90)) + + +true + + + +mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) + + +true + + + +mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(170 60, 90 20, 20 60)) + + +true + + + +mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(170 60, 90 20, 20 60), +(130 100, 90 20)) + + +true + + + +mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(170 60, 90 20, 20 60), +(120 100, 170 100, 90 20)) + + +true + + + +mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(170 60, 90 20, 20 60), +(120 100, 170 100, 90 20)) + + +true + + + +mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(130 140, 130 60, 90 20, 20 90, 90 20)) + + +true + + + +mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}] + +MULTILINESTRING( +(20 20, 90 20, 170 20), +(90 20, 90 80, 90 140)) + + +MULTILINESTRING( +(90 20, 170 100, 170 140), +(170 60, 90 20, 20 60, 20 140, 90 20)) + + +true + + + +mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}] + +MULTILINESTRING( +(20 20, 90 90, 20 160), +(90 160, 90 20)) + + +MULTILINESTRING( +(160 160, 90 90, 160 20), +(160 120, 120 120, 90 90, 160 60)) + + +true + + + +mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}] + +MULTILINESTRING( +(20 20, 90 90, 20 160), +(90 160, 90 20)) + + +MULTILINESTRING( +(160 160, 90 90, 160 20), +(160 120, 120 120, 90 90, 120 60, 160 60)) + + +true + + + +mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}] + +MULTILINESTRING( +(20 20, 90 90, 20 160), +(90 160, 90 20)) + + +MULTILINESTRING( +(160 160, 90 90, 160 20), +(160 120, 90 90, 160 60)) + + +true + + + + +P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}] + +POINT(20 20) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}] + +POINT(70 170) + + +POLYGON( +(110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) + + +true + + + +P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] + +POINT(110 130) + + +POLYGON( +(20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) + + +true + + + +P/A-2-4: dim(0){A.P.Int = B.A.Ext} + +POINT(100 70) + + +POLYGON( +(20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) + + +true + + + +P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] + +POINT(100 70) + + +POLYGON( +(20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) + + +true + + + +P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}] + +POINT(60 120) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}] + +POINT(110 120) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V] + +POINT(160 120) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}] + +POINT(100 150) + + +POLYGON( +(20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) + + +true + + + +P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}] + +POINT(100 80) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}] + +POINT(60 160) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}] + +POINT(190 90) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}] + +POINT(190 190) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}] + +POINT(360 20) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}] + +POINT(130 130) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}] + +POINT(280 50) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}] + +POINT(150 100) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}] + +POINT(100 50) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}] + +POINT(140 120) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] + +POINT(190 50) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(90 50, 150 110, 190 50, 90 50), +(190 50, 230 110, 290 50, 190 50)) + + +true + + + +P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] + +POINT(180 90) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(180 140, 180 40, 80 40, 180 140), +(180 90, 210 140, 310 40, 230 40, 180 90)) + + +true + + + +mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}] + +MULTIPOINT(20 80, 110 160, 20 160) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}] + +MULTIPOINT(20 80, 60 120, 20 160) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}] + +MULTIPOINT(10 80, 110 170, 110 120) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}] + +MULTIPOINT(10 80, 110 170, 160 120) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}] + +MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}] + +MULTIPOINT(60 120, 110 120, 160 120) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}] + +MULTIPOINT(60 120, 160 120, 160 40, 60 40) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}] + +MULTIPOINT(20 150, 60 120, 110 80) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}] + +MULTIPOINT(110 80, 160 120, 200 160) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}] + +MULTIPOINT(110 80, 110 120, 110 160) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}] + +MULTIPOINT(110 170, 110 80) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}] + +MULTIPOINT(60 120, 160 120, 110 80, 110 170) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int] + +MULTIPOINT(90 80, 130 80) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}] + +MULTIPOINT(60 120, 160 120, 110 80) + + +POLYGON( +(60 120, 60 40, 160 40, 160 120, 60 120)) + + +true + + + +mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}] + +MULTIPOINT(40 170, 40 90, 130 170) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}] + +MULTIPOINT(90 170, 280 170, 190 90) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}] + +MULTIPOINT(190 110, 150 70, 230 70) + + +POLYGON( +(190 190, 360 20, 20 20, 190 190), +(280 50, 100 50, 190 140, 280 50)) + + +true + + + +P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}] + +POINT(100 100) + + +MULTIPOLYGON( +( +(20 100, 20 20, 100 20, 100 100, 20 100)), +( +(100 180, 100 100, 180 100, 180 180, 100 180))) + + +true + + + +P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}] + +POINT(20 100) + + +MULTIPOLYGON( +( +(20 100, 20 20, 100 20, 100 100, 20 100)), +( +(100 180, 100 100, 180 100, 180 180, 100 180))) + + +true + + + +P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}] + +POINT(60 100) + + +MULTIPOLYGON( +( +(20 100, 20 20, 100 20, 100 100, 20 100)), +( +(100 180, 100 100, 180 100, 180 180, 100 180))) + + +true + + + +P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}] + +POINT(110 110) + + +MULTIPOLYGON( +( +(110 110, 20 200, 200 200, 110 110), +(110 110, 80 180, 140 180, 110 110)), +( +(110 110, 20 20, 200 20, 110 110), +(110 110, 80 40, 140 40, 110 110))) + + +true + + + + +P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}] + +POINT(110 200) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +P/L-3-1: a point touching the start point of a line [dim(0){A.P.Int = B.L.Bdy.SP}] + +POINT(90 80) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}] + +POINT(340 240) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] + +POINT(230 150) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}] + +POINT(160 150) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] + +POINT(90 150) + + +LINESTRING(150 150, 20 20, 280 20, 150 150) + + +true + + + +P/LR-2-2: a point inside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] + +POINT(150 80) + + +LINESTRING(150 150, 20 20, 280 20, 150 150) + + +true + + + +P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}] + +POINT(150 150) + + +LINESTRING(150 150, 20 20, 280 20, 150 150) + + +true + + + +P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] + +POINT(100 20) + + +LINESTRING(150 150, 20 20, 280 20, 150 150) + + +true + + + +P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}] + +POINT(20 20) + + +LINESTRING(150 150, 20 20, 280 20, 150 150) + + +true + + + +P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}] + +POINT(220 220) + + +LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) + + +true + + + +P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 110) + + +LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) + + +true + + + +P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 110) + + +LINESTRING(110 110, 220 20, 20 20, 220 220) + + +true + + + +P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + +POINT(110 20) + + +LINESTRING(110 110, 220 20, 20 20, 220 220) + + +true + + + +P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + +POINT(220 20) + + +LINESTRING(110 110, 220 20, 20 20, 220 220) + + +true + + + +P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + +POINT(110 20) + + +LINESTRING(220 220, 20 20, 220 20, 110 110) + + +true + + + +P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + +POINT(20 20) + + +LINESTRING(220 220, 20 20, 220 20, 110 110) + + +true + + + +P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + +POINT(20 110) + + +LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200) + + +true + + + +P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}] + +POINT(20 200) + + +LINESTRING(20 200, 200 20, 20 20, 200 200) + + +true + + + +P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + +POINT(110 110) + + +LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + +true + + + +P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + +POINT(110 110) + + +LINESTRING(20 200, 200 20, 20 20, 200 200) + + +true + + + +P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + +POINT(80 140) + + +LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + +true + + + +P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] + +POINT(110 110) + + +LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + +true + + + +P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] + +POINT(110 110) + + +LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + +true + + + +P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + +POINT(110 110) + + +LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + +true + + + +P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + +POINT(110 110) + + +LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200) + + +true + + + +P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + +POINT(110 110) + + +LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + +true + + + +P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, +20 140) + + +true + + + +P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) + + +true + + + +P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) + + +true + + + +P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) + + +true + + + +P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) + + +true + + + +P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200) + + +true + + + +P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) + + +true + + + +P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 110) + + +LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) + + +true + + + +P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(110 110) + + +LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + +true + + + +P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(110 110) + + +LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) + + +true + + + +P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(110 110) + + +LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110) + + +true + + + +P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(110 110) + + +LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) + + +true + + + +P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(110 110) + + +LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) + + +true + + + +P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 160) + + +LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(110 160) + + +LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(110 110) + + +LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(110 110) + + +LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(110 110) + + +LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(110 110) + + +LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] + +POINT(140 200) + + +LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + +POINT(110 200) + + +LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) + + +true + + + +P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(110 110) + + +LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + +true + + + +P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}] + +POINT(140 200) + + +LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + +true + + + +P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] + +POINT(110 200) + + +LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) + + +true + + + +P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(90 130) + + +LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) + + +true + + + +P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + +POINT(110 110) + + +LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) + + +true + + + +P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(90 130) + + +LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) + + +true + + + +P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + +POINT(110 110) + + +LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) + + +true + + + +P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] + +POINT(90 130) + + +LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) + + +true + + + +P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + +POINT(110 110) + + +LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) + + +true + + + +P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] + +POINT(90 130) + + +LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + +true + + + +P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + +POINT(110 110) + + +LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) + + +true + + + +P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(110 110) + + +LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, +110 110) + + +true + + + +P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(110 110) + + +LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) + + +true + + + +P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(110 110) + + +LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, +110 110) + + +true + + + +P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(110 110) + + +LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) + + +true + + + +P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + +POINT(110 110) + + +LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200) + + +true + + + +P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + +POINT(110 110) + + +LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) + + +true + + + +P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] + +POINT(110 110) + + +LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) + + +true + + + +P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(90 130) + + +LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, +90 130) + + +true + + + +P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(90 130) + + +LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + +true + + + +P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(90 130) + + +LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, +90 130) + + +true + + + +P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(90 130) + + +LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + +true + + + +P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(90 130) + + +LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) + + +true + + + +P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] + +POINT(90 130) + + +LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + +true + + + +P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] + +POINT(110 110) + + +LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) + + +true + + + +P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}] + +POINT(110 200) + + +LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + +true + + + +P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + +POINT(110 150) + + +LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + +true + + + +P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + +POINT(110 110) + + +LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + +true + + + +P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}] + +POINT(110 200) + + +LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + +true + + + +P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + +POINT(110 150) + + +LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + +true + + + +P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + +POINT(110 110) + + +LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) + + +true + + + +P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] + +POINT(110 150) + + +LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + +true + + + +P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + +POINT(110 110) + + +LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + +true + + + +P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] + +POINT(110 200) + + +LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) + + +true + + + +mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}] + +MULTIPOINT(50 250, 90 220, 130 190) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}] + +MULTIPOINT(180 180, 230 130, 280 80) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}] + +MULTIPOINT(50 120, 90 80, 130 40) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}] + +MULTIPOINT(300 280, 340 240, 380 200) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV] + +MULTIPOINT(230 150, 260 120, 290 90) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV] + +MULTIPOINT(200 190, 240 150, 270 110) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V] + +MULTIPOINT(160 150, 190 120, 220 90) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V] + +MULTIPOINT(120 190, 160 150, 200 110) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}] + +MULTIPOINT(90 80, 160 150, 340 240) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] + +MULTIPOINT(90 80, 160 150, 300 150) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] + +MULTIPOINT(90 80, 160 150, 240 150) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] + +MULTIPOINT(90 80, 130 120, 210 150) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] + +MULTIPOINT(130 120, 210 150, 340 200) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] + +MULTIPOINT(160 150, 240 150, 340 210) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] + +MULTIPOINT(160 150, 300 150, 340 150) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + +mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}] + +MULTIPOINT(160 150, 240 150, 340 240) + + +LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) + + +true + + + + +P/P: same point [dim(0){A.P.Int = B.P.Int}] + +POINT(20 20) + + +POINT(20 20) + + +true + + + +P/P: different point [dim(0){A.P.Int = B.P.Ext}] + +POINT(20 20) + + +POINT(40 60) + + +true + + + +P/mP: different points [dim(0){A.P.Int = B.3P.Ext}] + +POINT(40 40) + + +MULTIPOINT(20 20, 80 80, 20 120) + + +true + + + +P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}] + +POINT(20 20) + + +MULTIPOINT(20 20, 80 80, 20 120) + + +true + + + +mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}] + +MULTIPOINT(40 40, 80 60, 120 100) + + +MULTIPOINT(40 40, 80 60, 120 100) + + +true + + + +mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}] + +MULTIPOINT(40 40, 80 60, 120 100) + + +MULTIPOINT(40 40, 120 100, 80 60) + + +true + + + +mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}] + +MULTIPOINT(40 40, 60 100, 100 60, 120 120) + + +MULTIPOINT(20 120, 60 60, 100 100, 140 40) + + +true + + + +mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}] + +MULTIPOINT(20 20, 80 70, 140 120, 200 170) + + +MULTIPOINT(20 20, 80 70, 140 120, 200 170) + + +true + + + +mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}] + +MULTIPOINT(20 20, 140 120, 80 70, 200 170) + + +MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + +true + + + +mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}] + +MULTIPOINT(20 20, 80 70, 140 120, 200 170) + + +MULTIPOINT(80 70, 140 120) + + +true + + + +mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}] + +MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + +MULTIPOINT(140 120, 80 70) + + +true + + + +mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}] + +MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + +MULTIPOINT(80 170, 140 120, 200 80) + + +true + + + +mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int} + +MULTIPOINT(80 70, 20 20, 200 170, 140 120) + + +MULTIPOINT(80 170, 140 120, 200 80, 80 70) + + +true + + + diff -Nru geos-3.1.0/tests/xmltester/TestValid2-big.xml geos-3.2.2/tests/xmltester/TestValid2-big.xml --- geos-3.1.0/tests/xmltester/TestValid2-big.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestValid2-big.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,18 +0,0 @@ - - - - Test 92 - - POLYGON ((100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - true - - - Test 558 - - MULTIPOINT (-1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 -1000000000000000000000000, 1000000000000000000000000 1000000000000000000000000, -1000000000000000000000000 1000000000000000000000000, 0 0) - - true - - - diff -Nru geos-3.1.0/tests/xmltester/TestValid2.xml geos-3.2.2/tests/xmltester/TestValid2.xml --- geos-3.1.0/tests/xmltester/TestValid2.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestValid2.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,5246 +0,0 @@ - - - - Test 1 - - LINESTRING (-123456789 -40, 381039468754763 123456789) - - true - - - Test 2 - - POINT (0 0) - - true - - - Test 3 - - POLYGON ((20 20, 20 100, 120 100, 140 20, 20 20)) - - true - - - Test 4 - - POLYGON ((20 20, 140 20, 120 100, 20 100, 20 20)) - - true - - - Test 5 - - POLYGON ((120 100, 140 20, 20 20, 20 100, 120 100)) - - true - - - Test 6 - - POLYGON ((20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) - - true - - - Test 7 - - POLYGON ((0 0, 80 0, 80 80, 0 80, 0 0)) - - true - - - Test 8 - - POLYGON ((100 200, 100 140, 180 140, 180 200, 100 200)) - - true - - - Test 9 - - POLYGON ((140 120, 160 20, 20 20, 20 120, 140 120)) - - true - - - Test 10 - - POLYGON ((140 120, 140 200, 240 200, 240 120, 140 120)) - - true - - - Test 11 - - POLYGON ((80 180, 140 260, 260 200, 200 60, 80 180)) - - true - - - Test 12 - - POLYGON ((240 80, 140 120, 180 240, 280 200, 240 80)) - - true - - - Test 13 - - POLYGON ((140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - true - - - Test 14 - - POLYGON ((140 40, 180 80, 120 100, 140 40)) - - true - - - Test 15 - - POLYGON ((120 100, 180 80, 130 40, 120 100)) - - true - - - Test 16 - - POLYGON ((20 20, 180 20, 140 140, 20 140, 20 20)) - - true - - - Test 17 - - POLYGON ((180 100, 80 200, 180 280, 260 200, 180 100)) - - true - - - Test 18 - - POLYGON ((140 140, 20 120, 0 220, 120 240, 140 140)) - - true - - - Test 19 - - POLYGON ((160 200, 210 70, 120 70, 160 200)) - - true - - - Test 20 - - POLYGON ((160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) - - false - - - Test 21 - - POLYGON ((110 140, 200 70, 200 160, 110 140)) - - true - - - Test 22 - - POLYGON ((110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) - - false - - - Test 23 - - POLYGON ((20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) - - true - - - Test 24 - - POLYGON ((20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) - - true - - - Test 25 - - POLYGON ((20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) - - true - - - Test 26 - - POLYGON ((20 120, 300 120, 140 240, 20 120)) - - true - - - Test 27 - - POLYGON ((20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, 20 20)) - - true - - - Test 28 - - POLYGON ((100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) - - true - - - Test 29 - - POLYGON ((260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) - - true - - - Test 30 - - POLYGON ((20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - true - - - Test 31 - - POLYGON ((0 140, 300 140, 140 240, 0 140)) - - true - - - Test 32 - - POLYGON ((20 240, 20 140, 320 140, 180 240, 20 240)) - - true - - - Test 33 - - POLYGON ((20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) - - true - - - Test 34 - - POLYGON ((120 120, 180 60, 20 20, 20 120, 120 120)) - - true - - - Test 35 - - POLYGON ((120 120, 220 20, 280 20, 240 160, 120 120)) - - true - - - Test 36 - - POLYGON ((140 120, 160 20, 260 120, 220 200, 140 120)) - - true - - - Test 37 - - POLYGON ((20 140, 120 40, 20 40, 20 140)) - - true - - - Test 38 - - POLYGON ((190 140, 190 20, 140 20, 20 140, 190 140)) - - true - - - Test 39 - - POLYGON ((300 20, 220 20, 120 120, 260 160, 300 20)) - - true - - - Test 40 - - POLYGON ((140 120, 240 160, 280 60, 160 20, 140 120)) - - true - - - Test 41 - - POLYGON ((280 60, 180 60, 120 120, 260 180, 280 60)) - - true - - - Test 42 - - POLYGON ((120 200, 120 120, 40 120, 40 200, 120 200)) - - true - - - Test 43 - - POLYGON ((160 220, 140 120, 60 120, 40 220, 160 220)) - - true - - - Test 44 - - POLYGON ((140 120, 20 120, 20 220, 140 220, 140 120)) - - true - - - Test 45 - - POLYGON ((320 20, 220 20, 80 160, 240 140, 320 20)) - - true - - - Test 46 - - POLYGON ((20 20, 20 180, 220 180, 220 20, 20 20)) - - true - - - Test 47 - - POLYGON ((60 40, 60 140, 180 140, 180 40, 60 40)) - - true - - - Test 48 - - POLYGON ((20 20, 80 140, 160 60, 20 20)) - - true - - - Test 49 - - POLYGON ((160 60, 20 20, 100 140, 160 60)) - - true - - - Test 50 - - POLYGON ((20 100, 140 160, 160 40, 20 100)) - - true - - - Test 51 - - POLYGON ((160 40, 20 100, 160 160, 160 40)) - - true - - - Test 52 - - POLYGON ((20 180, 180 120, 80 40, 20 180)) - - true - - - Test 53 - - POLYGON ((180 120, 100 40, 20 180, 180 120)) - - true - - - Test 54 - - POLYGON ((20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) - - true - - - Test 55 - - POLYGON ((20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) - - true - - - Test 56 - - POLYGON ((40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) - - true - - - Test 57 - - POLYGON ((20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) - - true - - - Test 58 - - POLYGON ((40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) - - true - - - Test 59 - - POLYGON ((60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) - - true - - - Test 60 - - POLYGON ((20 20, 20 140, 120 120, 120 40, 20 20)) - - true - - - Test 61 - - POLYGON ((20 20, 20 180, 140 140, 140 60, 20 20)) - - true - - - Test 62 - - POLYGON ((20 20, 120 40, 120 120, 20 140, 20 20)) - - true - - - Test 63 - - POLYGON ((120 40, 20 20, 20 140, 120 120, 120 40)) - - true - - - Test 64 - - POLYGON ((20 20, 140 60, 140 140, 20 180, 20 20)) - - true - - - Test 65 - - POLYGON ((140 60, 20 20, 20 180, 140 140, 140 60)) - - true - - - Test 66 - - POLYGON ((20 20, 60 120, 140 120, 180 20, 20 20)) - - true - - - Test 67 - - POLYGON ((20 40, 120 40, 120 120, 20 140, 20 40)) - - true - - - Test 68 - - POLYGON ((20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) - - true - - - Test 69 - - POLYGON ((150 150, 330 150, 250 70, 70 70, 150 150)) - - true - - - Test 70 - - POLYGON ((150 150, 270 150, 140 20, 20 20, 150 150)) - - true - - - Test 71 - - POLYGON ((150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) - - true - - - Test 72 - - POLYGON ((150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) - - true - - - Test 73 - - POLYGON ((20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, 80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, 100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, 190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, 290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, 240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, 240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, 250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, 160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, 70 40, 20 20)) - - true - - - Test 74 - - POLYGON ((190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, 120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, 120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, 200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, 380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, 440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, 440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, 390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, 370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, 280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, 200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, 180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, 200 120, 120 120, 190 140)) - - true - - - Test 75 - - POLYGON ((70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, 20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, 200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, 270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, 350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, 360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, 410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, 240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, 170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, 410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, 420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, 460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, 140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, 90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, 50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, 40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) - - true - - - Test 76 - - POLYGON ((60 160, 220 160, 220 20, 60 20, 60 160)) - - true - - - Test 77 - - POLYGON ((60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) - - true - - - Test 78 - - POLYGON ((60 160, 20 200, 260 200, 140 80, 60 160)) - - true - - - Test 79 - - POLYGON ((20 200, 140 80, 260 200, 20 200)) - - true - - - Test 80 - - POLYGON ((20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) - - true - - - Test 81 - - POLYGON ((20 200, 60 160, 140 80, 260 200, 20 200)) - - true - - - Test 82 - - POLYGON ((0 0, 0 200, 200 200, 200 0, 0 0)) - - true - - - Test 83 - - POLYGON ((100 100, 1000000 110, 10000000 100, 100 100)) - - true - - - Test 84 - - POLYGON ((100 0, 100 200, 200 200, 200 0, 100 0)) - - true - - - Test 85 - - POLYGON ((120 0, 120 200, 200 200, 200 0, 120 0)) - - true - - - Test 86 - - POLYGON ((0 0, 0 200, 110 200, 110 0, 0 0)) - - true - - - Test 87 - - POLYGON ((100 100, 100 200, 200 200, 200 100, 100 100)) - - true - - - Test 88 - - POLYGON ((100 100, 2100 110, 2100 100, 100 100)) - - true - - - Test 89 - - POLYGON ((100 100, 2101 110, 2101 100, 100 100)) - - true - - - Test 90 - - POLYGON ((100 100, 200 200, 200 100, 100 100)) - - true - - - Test 91 - - POLYGON ((100 100, 1000000 110, 1000000 100, 100 100)) - - true - - - Test 93 - - POLYGON ((120 100, 120 200, 200 200, 200 100, 120 100)) - - true - - - Test 94 - - POLYGON ((100 100, 500 110, 500 100, 100 100)) - - true - - - Test 95 - - POLYGON ((100 100, 501 110, 501 100, 100 100)) - - true - - - Test 96 - - POLYGON ((120 100, 130 200, 200 200, 200 100, 120 100)) - - true - - - Test 97 - - POLYGON ((120 100, 17 200, 200 200, 200 100, 120 100)) - - true - - - Test 98 - - POLYGON ((101 99, 101 1000000, 102 1000000, 101 99)) - - true - - - Test 99 - - POLYGON ((100 100, 200 101, 200 100, 100 100)) - - true - - - Test 100 - - POLYGON ((16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) - - true - - - Test 101 - - POLYGON ((10 307, 22 307, 153 34, 22 34, 10 307)) - - true - - - Test 102 - - POLYGON ((160 200, 310 20, 20 20, 160 200), (160 200, 260 40, 70 40, 160 200)) - - true - - - Test 103 - - POLYGON ((170 120, 240 100, 260 50, 190 70, 170 120)) - - true - - - Test 104 - - POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150), (170 120, 330 120, 260 50, 100 50, 170 120)) - - true - - - Test 105 - - POLYGON ((270 90, 200 50, 150 80, 210 120, 270 90)) - - true - - - Test 106 - - POLYGON ((170 120, 260 100, 240 60, 150 80, 170 120)) - - true - - - Test 107 - - POLYGON ((220 120, 270 80, 200 60, 160 100, 220 120)) - - true - - - Test 108 - - POLYGON ((260 50, 180 70, 180 110, 260 90, 260 50)) - - true - - - Test 109 - - POLYGON ((230 110, 290 80, 190 60, 140 90, 230 110)) - - true - - - Test 110 - - POLYGON ((170 120, 330 120, 260 50, 100 50, 170 120)) - - true - - - Test 111 - - POLYGON ((170 120, 330 120, 280 70, 120 70, 170 120)) - - true - - - Test 112 - - POLYGON ((170 120, 300 120, 250 70, 120 70, 170 120)) - - true - - - Test 113 - - POLYGON ((190 100, 310 100, 260 50, 140 50, 190 100)) - - true - - - Test 114 - - POLYGON ((280 130, 360 130, 270 40, 190 40, 280 130)) - - true - - - Test 115 - - POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150), (170 120, 250 120, 180 50, 100 50, 170 120)) - - true - - - Test 116 - - POLYGON ((220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, 390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) - - true - - - Test 117 - - POLYGON ((260 130, 360 130, 280 40, 170 40, 260 130)) - - true - - - Test 118 - - POLYGON ((240 110, 340 110, 290 60, 190 60, 240 110)) - - true - - - Test 119 - - POLYGON ((250 120, 350 120, 280 50, 180 50, 250 120)) - - true - - - Test 120 - - POLYGON ((230 210, 230 20, 20 20, 20 210, 230 210), (120 180, 50 50, 200 50, 120 180)) - - true - - - Test 121 - - POLYGON ((230 210, 230 20, 20 20, 20 210, 230 210), (140 40, 40 40, 40 170, 140 40), (110 190, 210 190, 210 50, 110 190)) - - true - - - Test 122 - - POLYGON ((280 190, 330 150, 200 110, 150 150, 280 190)) - - true - - - Test 123 - - MULTIPOLYGON (((140 110, 260 110, 170 20, 50 20, 140 110)), ((300 270, 420 270, 340 190, 220 190, 300 270))) - - true - - - Test 124 - - POLYGON ((80 190, 220 190, 140 110, 0 110, 80 190)) - - true - - - Test 125 - - POLYGON ((330 150, 200 110, 150 150, 280 190, 330 150)) - - true - - - Test 126 - - POLYGON ((290 190, 340 150, 220 120, 170 170, 290 190)) - - true - - - Test 127 - - POLYGON ((220 190, 340 190, 260 110, 140 110, 220 190)) - - true - - - Test 128 - - POLYGON ((140 190, 220 190, 100 70, 20 70, 140 190)) - - true - - - Test 129 - - POLYGON ((140 220, 60 140, 140 60, 220 140, 140 220)) - - true - - - Test 130 - - MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), ((20 100, 100 100, 100 180, 20 180, 20 100)), ((100 180, 180 180, 180 260, 100 260, 100 180)), ((180 100, 260 100, 260 180, 180 180, 180 100))) - - true - - - Test 131 - - MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110)), ((110 110, 150 20, 70 20, 110 110))) - - true - - - Test 132 - - MULTIPOLYGON (((110 110, 160 160, 210 110, 160 60, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110))) - - true - - - Test 133 - - MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 150 20, 70 20, 110 110), (110 110, 120 40, 100 40, 110 110))) - - true - - - Test 134 - - MULTIPOLYGON (((110 110, 160 160, 210 110, 160 60, 110 110), (110 110, 160 130, 160 90, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110), (110 110, 60 90, 60 130, 110 110))) - - true - - - Test 135 - - MULTIPOLYGON (((110 110, 70 200, 200 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 200 20, 70 20, 110 110), (110 110, 120 40, 100 40, 110 110))) - - true - - - Test 136 - - MULTIPOLYGON (((110 110, 20 200, 200 200, 110 110), (110 110, 100 180, 120 180, 110 110)), ((110 110, 200 20, 20 20, 110 110), (110 110, 120 40, 100 40, 110 110))) - - true - - - Test 137 - - MULTIPOLYGON (((110 110, 70 200, 210 110, 70 20, 110 110), (110 110, 110 140, 150 110, 110 80, 110 110)), ((110 110, 60 60, 10 110, 60 160, 110 110), (110 110, 60 90, 60 130, 110 110))) - - true - - - Test 138 - - POLYGON ((100 60, 140 100, 100 140, 60 100, 100 60)) - - true - - - Test 139 - - MULTIPOLYGON (((80 40, 120 40, 120 80, 80 80, 80 40)), ((120 80, 160 80, 160 120, 120 120, 120 80)), ((80 120, 120 120, 120 160, 80 160, 80 120)), ((40 80, 80 80, 80 120, 40 120, 40 80))) - - true - - - Test 140 - - LINESTRING (150 150, 40 230) - - true - - - Test 141 - - POLYGON ((150 150, 410 150, 280 20, 20 20, 150 150)) - - true - - - Test 142 - - LINESTRING (40 40, 50 130, 130 130) - - true - - - Test 143 - - LINESTRING (40 230, 150 150) - - true - - - Test 144 - - LINESTRING (210 150, 330 150) - - true - - - Test 145 - - LINESTRING (200 150, 310 150, 360 220) - - true - - - Test 146 - - LINESTRING (180 150, 250 150, 230 250, 370 250, 410 150) - - true - - - Test 147 - - LINESTRING (210 210, 220 150, 320 150, 370 210) - - true - - - Test 148 - - LINESTRING (20 60, 150 60) - - true - - - Test 149 - - LINESTRING (60 90, 310 180) - - true - - - Test 150 - - LINESTRING (90 210, 210 90) - - true - - - Test 151 - - LINESTRING (290 10, 130 170) - - true - - - Test 152 - - LINESTRING (30 100, 100 100, 180 100) - - true - - - Test 153 - - LINESTRING (20 100, 100 100, 360 100, 410 100) - - true - - - Test 154 - - LINESTRING (90 210, 150 150, 210 90) - - true - - - Test 155 - - LINESTRING (180 90, 280 120) - - true - - - Test 156 - - LINESTRING (70 70, 80 20) - - true - - - Test 157 - - LINESTRING (130 20, 150 60) - - true - - - Test 158 - - LINESTRING (70 70, 80 20, 140 20, 150 60) - - true - - - Test 159 - - LINESTRING (170 50, 170 20, 240 20, 260 60) - - true - - - Test 160 - - LINESTRING (50 100, 140 190, 280 190) - - true - - - Test 161 - - LINESTRING (140 60, 180 100, 290 100) - - true - - - Test 162 - - LINESTRING (170 120, 210 80, 270 80) - - true - - - Test 163 - - LINESTRING (170 120, 260 50) - - true - - - Test 164 - - LINESTRING (190 90, 190 270) - - true - - - Test 165 - - POLYGON ((190 190, 360 20, 20 20, 190 190), (190 190, 280 50, 100 50, 190 190)) - - true - - - Test 166 - - LINESTRING (60 160, 150 70) - - true - - - Test 167 - - POLYGON ((190 190, 360 20, 20 20, 190 190), (110 110, 250 100, 140 30, 110 110)) - - true - - - Test 168 - - POLYGON ((190 190, 20 20, 360 20, 190 190), (250 100, 110 110, 140 30, 250 100)) - - true - - - Test 169 - - LINESTRING (190 90, 190 190, 190 270) - - true - - - Test 170 - - LINESTRING (60 160, 110 110, 150 70) - - true - - - Test 171 - - POLYGON ((190 190, 110 110, 20 20, 360 20, 190 190), (250 100, 110 110, 140 30, 250 100)) - - true - - - Test 172 - - LINESTRING (130 110, 180 110, 190 60) - - true - - - Test 173 - - POLYGON ((20 200, 240 200, 240 20, 20 20, 20 200), (130 110, 60 180, 60 40, 130 110), (130 110, 200 40, 200 180, 130 110)) - - true - - - Test 174 - - LINESTRING (80 110, 180 110) - - true - - - Test 175 - - POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (60 180, 130 110, 60 40, 60 180), (130 110, 200 40, 200 180, 130 110)) - - true - - - Test 176 - - LINESTRING (80 110, 170 110) - - true - - - Test 177 - - POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (130 110, 60 40, 60 180, 130 110), (130 180, 130 40, 200 110, 130 180)) - - true - - - Test 178 - - LINESTRING (80 110, 130 110, 170 110) - - true - - - Test 179 - - LINESTRING (80 110, 130 110, 180 110) - - true - - - Test 180 - - LINESTRING (160 70, 320 230) - - true - - - Test 181 - - LINESTRING (160 70, 200 110, 280 190, 320 230) - - true - - - Test 182 - - LINESTRING (70 50, 70 150) - - true - - - Test 183 - - MULTIPOLYGON (((0 0, 0 100, 140 100, 140 0, 0 0)), ((20 170, 70 100, 130 170, 20 170))) - - true - - - Test 184 - - LINESTRING (110 110, 20 200, 200 200, 110 110) - - true - - - Test 185 - - POLYGON ((20 20, 200 20, 110 110, 20 20)) - - true - - - Test 186 - - LINESTRING (150 70, 160 110, 200 60, 150 70) - - true - - - Test 187 - - LINESTRING (80 60, 120 40, 120 70, 80 60) - - true - - - Test 188 - - POLYGON ((110 110, 200 20, 20 20, 110 110), (110 90, 50 30, 170 30, 110 90)) - - true - - - Test 189 - - LINESTRING (20 20, 200 20, 110 110, 20 20) - - true - - - Test 190 - - LINESTRING (110 90, 170 30, 50 30, 110 90) - - true - - - Test 191 - - LINESTRING (110 110, 170 50, 170 110, 110 110) - - true - - - Test 192 - - LINESTRING (110 90, 70 50, 130 50, 110 90) - - true - - - Test 193 - - LINESTRING (110 60, 20 150, 200 150, 110 60) - - true - - - Test 194 - - LINESTRING (110 130, 110 70, 200 100, 110 130) - - true - - - Test 195 - - LINESTRING (110 90, 160 40, 60 40, 110 90) - - true - - - Test 196 - - LINESTRING (110 100, 40 30, 180 30, 110 100) - - true - - - Test 197 - - POLYGON ((110 110, 200 20, 20 20, 110 110), (110 90, 60 40, 160 40, 110 90)) - - true - - - Test 198 - - LINESTRING (110 110, 180 30, 40 30, 110 110) - - true - - - Test 199 - - LINESTRING (110 90, 180 30, 40 30, 110 90) - - true - - - Test 200 - - LINESTRING (110 90, 50 30, 180 30, 110 90) - - true - - - Test 201 - - LINESTRING (110 110, 200 200, 200 110, 110 200) - - true - - - Test 202 - - POLYGON ((110 110, 200 20, 20 20, 110 110)) - - true - - - Test 203 - - LINESTRING (110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - true - - - Test 204 - - LINESTRING (110 110, 20 110, 200 110, 50 110, 110 170) - - true - - - Test 205 - - LINESTRING (110 110, 20 200, 110 200, 110 110, 200 200) - - true - - - Test 206 - - LINESTRING (110 110, 170 50, 20 200, 20 110, 200 110) - - true - - - Test 207 - - LINESTRING (110 110, 180 40, 110 40, 110 180) - - true - - - Test 208 - - LINESTRING (110 60, 50 30, 170 30, 90 70) - - true - - - Test 209 - - LINESTRING (110 110, 180 40, 110 40, 110 110, 70 40) - - true - - - Test 210 - - LINESTRING (230 70, 170 120, 190 60, 140 60, 170 120, 270 90) - - true - - - Test 211 - - MULTILINESTRING ((20 110, 200 110), (200 200, 110 110, 20 210, 110 110)) - - true - - - Test 212 - - MULTILINESTRING ((20 110, 200 110), (60 180, 60 110, 160 110, 110 110)) - - true - - - Test 213 - - MULTILINESTRING ((20 110, 200 110), (200 200, 110 110, 20 200, 110 200, 110 110)) - - true - - - Test 214 - - MULTILINESTRING ((20 110, 200 110), (110 50, 110 170, 110 70, 110 150, 200 150)) - - true - - - Test 215 - - MULTILINESTRING ((20 110, 200 110), (50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) - - true - - - Test 216 - - MULTILINESTRING ((20 110, 200 110), (110 60, 110 160, 200 160)) - - true - - - Test 217 - - MULTILINESTRING ((110 100, 40 30, 180 30), (170 30, 110 90, 50 30)) - - true - - - Test 218 - - MULTILINESTRING ((110 110, 60 40, 70 20, 150 20, 170 40), (180 30, 40 30, 110 80)) - - true - - - Test 219 - - MULTILINESTRING ((20 110, 200 110, 200 160), (110 110, 200 110, 200 70, 20 150)) - - true - - - Test 220 - - MULTIPOLYGON (((110 110, 20 20, 200 20, 110 110)), ((110 110, 20 200, 200 200, 110 110))) - - true - - - Test 221 - - MULTILINESTRING ((20 160, 70 110, 150 110, 200 160), (110 110, 20 110, 50 80, 70 110, 200 110)) - - true - - - Test 222 - - MULTILINESTRING ((20 110, 200 110), (110 110, 20 170, 20 130, 200 90)) - - true - - - Test 223 - - LINESTRING (0 0, 0 50, 50 50, 50 0, 0 0) - - true - - - Test 224 - - MULTILINESTRING ((0 0, 0 50), (0 50, 50 50), (50 50, 50 0), (50 0, 0 0)) - - true - - - Test 225 - - LINESTRING (40 180, 140 180) - - true - - - Test 226 - - MULTIPOLYGON (((20 320, 180 320, 180 180, 20 180, 20 320)), ((20 180, 20 80, 180 80, 180 180, 20 180))) - - false - - - Test 227 - - MULTIPOLYGON (((20 320, 180 320, 180 180, 20 180, 20 320)), ((60 180, 60 80, 180 80, 180 180, 60 180))) - - false - - - Test 228 - - LINESTRING (0 0, 60 0, 60 60, 60 0, 120 0) - - true - - - Test 229 - - MULTILINESTRING ((0 0, 60 0), (60 0, 120 0), (60 0, 60 60)) - - true - - - Test 230 - - LINESTRING (40 40, 120 120) - - true - - - Test 231 - - LINESTRING (40 40, 60 120) - - true - - - Test 232 - - LINESTRING (60 240, 40 40) - - true - - - Test 233 - - LINESTRING (40 40, 180 180) - - true - - - Test 234 - - LINESTRING (120 120, 20 200) - - true - - - Test 235 - - LINESTRING (60 240, 120 120) - - true - - - Test 236 - - LINESTRING (20 180, 140 140) - - true - - - Test 237 - - LINESTRING (40 120, 120 40) - - true - - - Test 238 - - LINESTRING (40 40, 100 100) - - true - - - Test 239 - - LINESTRING (100 100, 40 40) - - true - - - Test 240 - - LINESTRING (40 120, 120 160) - - true - - - Test 241 - - LINESTRING (20 20, 180 180) - - true - - - Test 242 - - LINESTRING (20 20, 110 110) - - true - - - Test 243 - - LINESTRING (50 50, 140 140) - - true - - - Test 244 - - LINESTRING (180 180, 40 40) - - true - - - Test 245 - - LINESTRING (120 120, 260 260) - - true - - - Test 246 - - LINESTRING (260 260, 120 120) - - true - - - Test 247 - - LINESTRING (40 40, 100 100, 200 120, 80 240) - - true - - - Test 248 - - LINESTRING (40 40, 20 100, 40 160, 20 200) - - true - - - Test 249 - - LINESTRING (20 200, 40 160, 20 100, 40 40) - - true - - - Test 250 - - LINESTRING (80 240, 200 120, 100 100, 40 40) - - true - - - Test 251 - - LINESTRING (60 60, 60 230, 140 230, 250 160) - - true - - - Test 252 - - LINESTRING (20 20, 60 60, 250 160, 310 230) - - true - - - Test 253 - - LINESTRING (20 20, 110 110, 200 110, 320 230) - - true - - - Test 254 - - LINESTRING (60 110, 60 250, 360 210) - - true - - - Test 255 - - LINESTRING (60 110, 110 160, 250 160, 310 160, 360 210) - - true - - - Test 256 - - LINESTRING (360 210, 310 160, 110 160, 60 110) - - true - - - Test 257 - - LINESTRING (160 160, 240 240) - - true - - - Test 258 - - LINESTRING (240 240, 160 160) - - true - - - Test 259 - - LINESTRING (60 150, 110 100, 170 100, 110 230) - - true - - - Test 260 - - LINESTRING (200 120, 200 190, 150 240, 200 240) - - true - - - Test 261 - - LINESTRING (200 240, 150 240, 200 200, 200 120) - - true - - - Test 262 - - LINESTRING (60 230, 80 140, 120 140, 140 230) - - true - - - Test 263 - - LINESTRING (60 110, 200 110, 250 160, 300 210) - - true - - - Test 264 - - LINESTRING (60 110, 200 110, 250 160, 300 210, 360 210) - - true - - - Test 265 - - LINESTRING (60 110, 220 110, 250 160, 280 110) - - true - - - Test 266 - - LINESTRING (60 110, 150 110, 200 160, 250 110, 360 110, 360 210) - - true - - - Test 267 - - LINESTRING (130 160, 160 110, 220 110, 250 160, 250 210) - - true - - - Test 268 - - LINESTRING (130 160, 160 110, 190 110, 230 210) - - true - - - Test 269 - - LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 360 210) - - true - - - Test 270 - - LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) - - true - - - Test 271 - - LINESTRING (130 160, 160 110, 200 110, 230 160, 260 210, 380 210) - - true - - - Test 272 - - LINESTRING (110 160, 160 110, 200 110, 250 160, 250 210) - - true - - - Test 273 - - LINESTRING (110 160, 180 110, 250 160, 320 110) - - true - - - Test 274 - - LINESTRING (140 160, 180 80, 220 160, 250 80) - - true - - - Test 275 - - LINESTRING (40 40, 100 100, 200 120, 130 190) - - true - - - Test 276 - - LINESTRING (20 130, 70 130, 160 40) - - true - - - Test 277 - - LINESTRING (40 160, 40 100, 110 40, 170 40) - - true - - - Test 278 - - LINESTRING (130 110, 180 160, 230 110, 280 160, 330 110) - - true - - - Test 279 - - LINESTRING (30 140, 80 140, 100 100, 200 30) - - true - - - Test 280 - - LINESTRING (110 110, 110 160, 180 110, 250 160, 250 110) - - true - - - Test 281 - - LINESTRING (20 20, 80 80, 160 80, 240 80, 300 140) - - true - - - Test 282 - - LINESTRING (20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, 240 80, 300 80, 270 110, 200 110) - - true - - - Test 283 - - LINESTRING (20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, 230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, 80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, 70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, 40 190, 230 190, 20 200, 230 200) - - true - - - Test 284 - - LINESTRING (30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, 70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, 120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, 150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, 190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) - - true - - - Test 285 - - LINESTRING (80 240, 120 200, 200 120, 100 100, 80 80, 40 40) - - true - - - Test 286 - - LINESTRING (260 210, 240 130, 280 120, 260 40) - - true - - - Test 287 - - LINESTRING (100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) - - true - - - Test 288 - - LINESTRING (140 130, 100 110, 120 60, 170 60) - - true - - - Test 289 - - LINESTRING (60 110, 110 160, 310 160, 360 210) - - true - - - Test 290 - - LINESTRING (60 110, 110 160, 250 160) - - true - - - Test 291 - - LINESTRING (110 160, 310 160, 340 190) - - true - - - Test 292 - - LINESTRING (140 160, 250 160, 310 160, 340 190) - - true - - - Test 293 - - LINESTRING (110 160, 250 160, 310 160) - - true - - - Test 294 - - LINESTRING (200 120, 100 100, 40 40, 140 80, 200 40) - - true - - - Test 295 - - LINESTRING (280 240, 240 140, 200 120, 100 100, 40 40) - - true - - - Test 296 - - LINESTRING (80 190, 140 140, 40 40) - - true - - - Test 297 - - LINESTRING (240 200, 200 260, 80 240, 140 180) - - true - - - Test 298 - - LINESTRING (140 180, 80 240, 200 260, 240 200) - - true - - - Test 299 - - LINESTRING (280 240, 240 140, 200 120, 80 240) - - true - - - Test 300 - - LINESTRING (20 80, 120 80, 200 80, 260 20) - - true - - - Test 301 - - LINESTRING (100 100, 200 120, 240 140, 280 240) - - true - - - Test 302 - - LINESTRING (280 240, 240 140, 200 120, 100 100) - - true - - - Test 303 - - LINESTRING (80 20, 80 80, 240 80, 300 20) - - true - - - Test 304 - - LINESTRING (20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, 300 80) - - true - - - Test 305 - - LINESTRING (100 100, 20 180, 180 180) - - true - - - Test 306 - - LINESTRING (100 100, 180 20, 20 20, 100 100) - - true - - - Test 307 - - LINESTRING (20 100, 180 100, 100 180) - - true - - - Test 308 - - LINESTRING (100 40, 100 160, 180 160) - - true - - - Test 309 - - LINESTRING (20 100, 100 100, 180 100, 100 180) - - true - - - Test 310 - - LINESTRING (100 100, 160 40) - - true - - - Test 311 - - LINESTRING (100 100, 180 20) - - true - - - Test 312 - - LINESTRING (60 60, 100 100, 140 60) - - true - - - Test 313 - - LINESTRING (100 100, 190 10, 190 100) - - true - - - Test 314 - - LINESTRING (100 100, 160 40, 160 100) - - true - - - Test 315 - - LINESTRING (60 140, 160 40, 160 140) - - true - - - Test 316 - - LINESTRING (20 20, 140 140) - - true - - - Test 317 - - LINESTRING (80 80, 20 80, 140 80, 80 20, 80 140) - - true - - - Test 318 - - LINESTRING (80 80, 20 80, 140 80) - - true - - - Test 319 - - LINESTRING (80 80, 140 80, 80 20, 80 140) - - true - - - Test 320 - - LINESTRING (80 80, 20 80, 140 80, 80 20, 80 80) - - true - - - Test 321 - - LINESTRING (80 80, 20 80, 140 80, 80 80) - - true - - - Test 322 - - LINESTRING (80 80, 20 80, 20 140, 140 20, 80 20, 80 80) - - true - - - Test 323 - - LINESTRING (20 140, 140 20, 100 20, 100 80) - - true - - - Test 324 - - LINESTRING (140 80, 20 80, 120 80, 80 20, 80 140) - - true - - - Test 325 - - LINESTRING (140 80, 20 80, 140 80) - - true - - - Test 326 - - LINESTRING (140 80, 20 80, 80 140, 80 20) - - true - - - Test 327 - - LINESTRING (140 80, 80 80, 20 80, 50 140, 50 60) - - true - - - Test 328 - - LINESTRING (140 80, 20 80, 120 80, 80 20, 80 80, 80 140) - - true - - - Test 329 - - LINESTRING (140 80, 20 80, 80 80, 140 80) - - true - - - Test 330 - - LINESTRING (140 80, 20 80, 80 140, 80 80, 80 20) - - true - - - Test 331 - - LINESTRING (130 150, 220 150, 220 240) - - true - - - Test 332 - - LINESTRING (130 240, 130 150, 220 20, 50 20, 130 150) - - true - - - Test 333 - - LINESTRING (30 150, 130 150, 250 150) - - true - - - Test 334 - - LINESTRING (30 150, 250 150) - - true - - - Test 335 - - LINESTRING (130 240, 130 20, 30 20, 130 150) - - true - - - Test 336 - - LINESTRING (120 240, 120 20, 20 20, 120 170) - - true - - - Test 337 - - LINESTRING (200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - true - - - Test 338 - - LINESTRING (110 110, 200 110) - - true - - - Test 339 - - LINESTRING (20 110, 200 110) - - true - - - Test 340 - - LINESTRING (90 200, 90 130, 110 110, 150 200) - - true - - - Test 341 - - LINESTRING (200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - true - - - Test 342 - - LINESTRING (200 110, 110 110, 90 130, 90 200) - - true - - - Test 343 - - LINESTRING (80 80, 150 80, 210 80) - - true - - - Test 344 - - MULTILINESTRING ((20 20, 140 140), (20 140, 140 20)) - - true - - - Test 345 - - LINESTRING (40 80, 160 200, 260 20, 40 80) - - true - - - Test 346 - - LINESTRING (40 80, 260 20, 160 200, 40 80) - - true - - - Test 347 - - LINESTRING (260 20, 40 80, 160 200, 260 20) - - true - - - Test 348 - - LINESTRING (100 140, 160 200, 260 20, 40 80, 100 140) - - true - - - Test 349 - - LINESTRING (100 100, 180 180, 20 180, 100 100) - - true - - - Test 350 - - LINESTRING (40 150, 40 40, 150 40, 150 150, 40 150) - - true - - - Test 351 - - LINESTRING (40 150, 150 40, 170 20, 170 190, 40 150) - - true - - - Test 352 - - LINESTRING (180 100, 20 100, 100 180, 180 100) - - true - - - Test 353 - - LINESTRING (180 180, 100 100, 20 180, 180 180) - - true - - - Test 354 - - LINESTRING (20 180, 100 100, 20 20, 20 180) - - true - - - Test 355 - - LINESTRING (100 20, 100 180, 180 100, 100 20) - - true - - - Test 356 - - LINESTRING (170 20, 20 170, 170 170, 170 20) - - true - - - Test 357 - - LINESTRING (40 150, 150 150, 90 210, 40 150) - - true - - - Test 358 - - LINESTRING (20 150, 170 150, 90 230, 20 150) - - true - - - Test 359 - - LINESTRING (40 150, 150 150, 150 40, 20 40, 20 150, 40 150) - - true - - - Test 360 - - LINESTRING (110 110, 200 20, 20 20, 110 110) - - true - - - Test 361 - - LINESTRING (200 20, 20 200, 200 200, 110 110, 110 40) - - true - - - Test 362 - - LINESTRING (200 20, 20 200, 200 200, 20 20) - - true - - - Test 363 - - LINESTRING (110 110, 20 110, 110 20, 20 20, 110 110) - - true - - - Test 364 - - LINESTRING (110 110, 200 200, 110 200, 200 110, 110 110) - - true - - - Test 365 - - LINESTRING (20 120, 120 120, 20 20, 120 20, 20 120) - - true - - - Test 366 - - LINESTRING (170 100, 70 100, 170 170, 70 170, 170 100) - - true - - - Test 367 - - LINESTRING (20 110, 110 110, 20 20, 110 20, 20 110) - - true - - - Test 368 - - LINESTRING (110 160, 70 110, 60 160, 20 130, 110 160) - - true - - - Test 369 - - LINESTRING (20 200, 200 200, 20 20, 200 20, 20 200) - - true - - - Test 370 - - LINESTRING (20 110, 200 110, 200 160, 20 60, 20 110) - - true - - - Test 371 - - LINESTRING (200 200, 110 110, 200 110, 110 200, 200 200) - - true - - - Test 372 - - LINESTRING (220 120, 120 20, 220 20, 120 120, 220 120) - - true - - - Test 373 - - MULTILINESTRING ((70 20, 20 90, 70 170), (70 170, 120 90, 70 20)) - - true - - - Test 374 - - MULTILINESTRING ((20 20, 90 20, 170 20), (90 20, 90 80, 90 140)) - - true - - - Test 375 - - MULTILINESTRING ((90 140, 90 60, 90 20), (170 20, 130 20, 20 20)) - - true - - - Test 376 - - MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (130 100, 130 60, 90 20, 50 90)) - - true - - - Test 377 - - MULTILINESTRING ((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) - - true - - - Test 378 - - MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60)) - - true - - - Test 379 - - MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (130 100, 90 20)) - - true - - - Test 380 - - MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60), (120 100, 170 100, 90 20)) - - true - - - Test 381 - - MULTILINESTRING ((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20)) - - true - - - Test 382 - - MULTILINESTRING ((90 20, 170 100, 170 140), (170 60, 90 20, 20 60, 20 140, 90 20)) - - true - - - Test 383 - - MULTILINESTRING ((20 20, 90 90, 20 160), (90 160, 90 20)) - - true - - - Test 384 - - MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 120 120, 90 90, 160 60)) - - true - - - Test 385 - - MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 120 120, 90 90, 120 60, 160 60)) - - true - - - Test 386 - - MULTILINESTRING ((160 160, 90 90, 160 20), (160 120, 90 90, 160 60)) - - true - - - Test 387 - - POINT (20 20) - - true - - - Test 388 - - POLYGON ((60 120, 60 40, 160 40, 160 120, 60 120)) - - true - - - Test 389 - - POINT (70 170) - - true - - - Test 390 - - POLYGON ((110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) - - true - - - Test 391 - - POINT (110 130) - - true - - - Test 392 - - POLYGON ((20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) - - true - - - Test 393 - - POINT (100 70) - - true - - - Test 394 - - POLYGON ((20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) - - true - - - Test 395 - - POLYGON ((20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - false - - - Test 396 - - POINT (60 120) - - true - - - Test 397 - - POINT (110 120) - - true - - - Test 398 - - POINT (160 120) - - true - - - Test 399 - - POINT (100 150) - - true - - - Test 400 - - POINT (100 80) - - true - - - Test 401 - - POINT (60 160) - - true - - - Test 402 - - POLYGON ((190 190, 360 20, 20 20, 190 190), (280 50, 100 50, 190 140, 280 50)) - - true - - - Test 403 - - POINT (190 90) - - true - - - Test 404 - - POINT (190 190) - - true - - - Test 405 - - POINT (360 20) - - true - - - Test 406 - - POINT (130 130) - - true - - - Test 407 - - POINT (280 50) - - true - - - Test 408 - - POINT (150 100) - - true - - - Test 409 - - POINT (100 50) - - true - - - Test 410 - - POINT (140 120) - - true - - - Test 411 - - POINT (190 50) - - true - - - Test 412 - - POLYGON ((190 190, 360 20, 20 20, 190 190), (90 50, 150 110, 190 50, 90 50), (190 50, 230 110, 290 50, 190 50)) - - true - - - Test 413 - - POINT (180 90) - - true - - - Test 414 - - POLYGON ((190 190, 360 20, 20 20, 190 190), (180 140, 180 40, 80 40, 180 140), (180 90, 210 140, 310 40, 230 40, 180 90)) - - true - - - Test 415 - - MULTIPOINT (20 80, 110 160, 20 160) - - true - - - Test 416 - - MULTIPOINT (20 80, 60 120, 20 160) - - true - - - Test 417 - - MULTIPOINT (10 80, 110 170, 110 120) - - true - - - Test 418 - - MULTIPOINT (10 80, 110 170, 160 120) - - true - - - Test 419 - - MULTIPOINT (20 120, 60 120, 110 120, 160 120, 200 120) - - true - - - Test 420 - - MULTIPOINT (60 120, 110 120, 160 120) - - true - - - Test 421 - - MULTIPOINT (60 120, 160 120, 160 40, 60 40) - - true - - - Test 422 - - MULTIPOINT (20 150, 60 120, 110 80) - - true - - - Test 423 - - MULTIPOINT (110 80, 160 120, 200 160) - - true - - - Test 424 - - MULTIPOINT (110 80, 110 120, 110 160) - - true - - - Test 425 - - MULTIPOINT (110 170, 110 80) - - true - - - Test 426 - - MULTIPOINT (60 120, 160 120, 110 80, 110 170) - - true - - - Test 427 - - MULTIPOINT (90 80, 130 80) - - true - - - Test 428 - - MULTIPOINT (60 120, 160 120, 110 80) - - true - - - Test 429 - - MULTIPOINT (40 170, 40 90, 130 170) - - true - - - Test 430 - - MULTIPOINT (90 170, 280 170, 190 90) - - true - - - Test 431 - - MULTIPOINT (190 110, 150 70, 230 70) - - true - - - Test 432 - - POINT (100 100) - - true - - - Test 433 - - MULTIPOLYGON (((20 100, 20 20, 100 20, 100 100, 20 100)), ((100 180, 100 100, 180 100, 180 180, 100 180))) - - true - - - Test 434 - - POINT (20 100) - - true - - - Test 435 - - POINT (60 100) - - true - - - Test 436 - - POINT (110 110) - - true - - - Test 437 - - MULTIPOLYGON (((110 110, 20 200, 200 200, 110 110), (110 110, 80 180, 140 180, 110 110)), ((110 110, 20 20, 200 20, 110 110), (110 110, 80 40, 140 40, 110 110))) - - true - - - Test 438 - - POINT (110 200) - - true - - - Test 439 - - LINESTRING (90 80, 160 150, 300 150, 340 150, 340 240) - - true - - - Test 440 - - POINT (90 80) - - true - - - Test 441 - - POINT (340 240) - - true - - - Test 442 - - POINT (230 150) - - true - - - Test 443 - - POINT (160 150) - - true - - - Test 444 - - POINT (90 150) - - true - - - Test 445 - - LINESTRING (150 150, 20 20, 280 20, 150 150) - - true - - - Test 446 - - POINT (150 80) - - true - - - Test 447 - - POINT (150 150) - - true - - - Test 448 - - POINT (100 20) - - true - - - Test 449 - - POINT (220 220) - - true - - - Test 450 - - LINESTRING (110 110, 220 20, 20 20, 110 110, 220 220) - - true - - - Test 451 - - LINESTRING (110 110, 220 20, 20 20, 220 220) - - true - - - Test 452 - - POINT (110 20) - - true - - - Test 453 - - POINT (220 20) - - true - - - Test 454 - - LINESTRING (220 220, 20 20, 220 20, 110 110) - - true - - - Test 455 - - POINT (20 110) - - true - - - Test 456 - - LINESTRING (20 200, 20 20, 110 20, 20 110, 110 200) - - true - - - Test 457 - - POINT (20 200) - - true - - - Test 458 - - LINESTRING (20 200, 200 20, 20 20, 200 200) - - true - - - Test 459 - - LINESTRING (20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - true - - - Test 460 - - POINT (80 140) - - true - - - Test 461 - - LINESTRING (20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - true - - - Test 462 - - LINESTRING (20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - true - - - Test 463 - - LINESTRING (20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - true - - - Test 464 - - LINESTRING (20 200, 200 20, 20 20, 110 110, 200 200) - - true - - - Test 465 - - LINESTRING (20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - true - - - Test 466 - - LINESTRING (110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - true - - - Test 467 - - LINESTRING (110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - true - - - Test 468 - - LINESTRING (110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - true - - - Test 469 - - LINESTRING (110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - true - - - Test 470 - - LINESTRING (110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) - - true - - - Test 471 - - LINESTRING (110 110, 110 200, 20 200, 200 20, 20 20, 200 200) - - true - - - Test 472 - - LINESTRING (110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - true - - - Test 473 - - LINESTRING (110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) - - true - - - Test 474 - - LINESTRING (200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - true - - - Test 475 - - LINESTRING (200 200, 20 20, 200 20, 20 200, 110 200, 110 110) - - true - - - Test 476 - - LINESTRING (200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) - - true - - - Test 477 - - LINESTRING (200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) - - true - - - Test 478 - - POINT (110 160) - - true - - - Test 479 - - LINESTRING (110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - true - - - Test 480 - - LINESTRING (110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) - - true - - - Test 481 - - LINESTRING (110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) - - true - - - Test 482 - - LINESTRING (110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - true - - - Test 483 - - LINESTRING (110 110, 200 200, 110 200, 110 20, 20 20, 110 110) - - true - - - Test 484 - - POINT (140 200) - - true - - - Test 485 - - LINESTRING (110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - true - - - Test 486 - - POINT (90 130) - - true - - - Test 487 - - LINESTRING (90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - true - - - Test 488 - - LINESTRING (90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - true - - - Test 489 - - LINESTRING (200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - true - - - Test 490 - - LINESTRING (110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, 110 110) - - true - - - Test 491 - - LINESTRING (110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) - - true - - - Test 492 - - LINESTRING (110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, 110 110) - - true - - - Test 493 - - LINESTRING (110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) - - true - - - Test 494 - - LINESTRING (200 200, 20 20, 200 20, 20 200, 200 200) - - true - - - Test 495 - - LINESTRING (200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) - - true - - - Test 496 - - LINESTRING (200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) - - true - - - Test 497 - - LINESTRING (90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - true - - - Test 498 - - LINESTRING (90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - true - - - Test 499 - - LINESTRING (90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - true - - - Test 500 - - LINESTRING (90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - true - - - Test 501 - - LINESTRING (90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - true - - - Test 502 - - LINESTRING (110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - true - - - Test 503 - - POINT (110 150) - - true - - - Test 504 - - LINESTRING (110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - true - - - Test 505 - - LINESTRING (20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - true - - - Test 506 - - MULTIPOINT (50 250, 90 220, 130 190) - - true - - - Test 507 - - MULTIPOINT (180 180, 230 130, 280 80) - - true - - - Test 508 - - MULTIPOINT (50 120, 90 80, 130 40) - - true - - - Test 509 - - MULTIPOINT (300 280, 340 240, 380 200) - - true - - - Test 510 - - MULTIPOINT (230 150, 260 120, 290 90) - - true - - - Test 511 - - MULTIPOINT (200 190, 240 150, 270 110) - - true - - - Test 512 - - MULTIPOINT (160 150, 190 120, 220 90) - - true - - - Test 513 - - MULTIPOINT (120 190, 160 150, 200 110) - - true - - - Test 514 - - MULTIPOINT (90 80, 160 150, 340 240) - - true - - - Test 515 - - MULTIPOINT (90 80, 160 150, 300 150) - - true - - - Test 516 - - MULTIPOINT (90 80, 160 150, 240 150) - - true - - - Test 517 - - MULTIPOINT (90 80, 130 120, 210 150) - - true - - - Test 518 - - MULTIPOINT (130 120, 210 150, 340 200) - - true - - - Test 519 - - MULTIPOINT (160 150, 240 150, 340 210) - - true - - - Test 520 - - MULTIPOINT (160 150, 300 150, 340 150) - - true - - - Test 521 - - MULTIPOINT (160 150, 240 150, 340 240) - - true - - - Test 522 - - POINT (40 60) - - true - - - Test 523 - - POINT (40 40) - - true - - - Test 524 - - MULTIPOINT (20 20, 80 80, 20 120) - - true - - - Test 525 - - MULTIPOINT (40 40, 80 60, 120 100) - - true - - - Test 526 - - MULTIPOINT (40 40, 120 100, 80 60) - - true - - - Test 527 - - MULTIPOINT (40 40, 60 100, 100 60, 120 120) - - true - - - Test 528 - - MULTIPOINT (20 120, 60 60, 100 100, 140 40) - - true - - - Test 529 - - MULTIPOINT (20 20, 80 70, 140 120, 200 170) - - true - - - Test 530 - - MULTIPOINT (20 20, 140 120, 80 70, 200 170) - - true - - - Test 531 - - MULTIPOINT (80 70, 20 20, 200 170, 140 120) - - true - - - Test 532 - - MULTIPOINT (80 70, 140 120) - - true - - - Test 533 - - MULTIPOINT (140 120, 80 70) - - true - - - Test 534 - - MULTIPOINT (80 170, 140 120, 200 80) - - true - - - Test 535 - - MULTIPOINT (80 170, 140 120, 200 80, 80 70) - - true - - - Test 536 - - POINT (10 10) - - true - - - Test 537 - - MULTIPOINT (10 10, 20 20) - - true - - - Test 538 - - LINESTRING (10 10, 20 20) - - true - - - Test 539 - - LINESTRING (10 10, 20 20, 20 10, 10 10) - - true - - - Test 540 - - LINESTRING (40 40, 100 100, 180 100, 180 180, 100 180, 100 100) - - true - - - Test 541 - - MULTILINESTRING ((10 10, 20 20), (20 20, 30 30)) - - true - - - Test 542 - - MULTILINESTRING ((10 10, 20 20), (20 20, 30 20), (20 20, 30 30)) - - true - - - Test 543 - - MULTILINESTRING ((10 10, 20 20), (20 20, 30 20), (20 20, 30 30), (20 20, 30 40)) - - true - - - Test 544 - - MULTILINESTRING ((10 10, 20 20), (20 20, 20 30, 30 30, 30 20, 20 20)) - - true - - - Test 545 - - MULTILINESTRING ((10 10, 20 20, 20 30, 30 30, 30 20, 20 20)) - - true - - - Test 546 - - POLYGON ((40 60, 420 60, 420 320, 40 320, 40 60)) - - true - - - Test 547 - - POLYGON ((40 60, 420 60, 420 320, 40 320, 40 60), (200 140, 160 220, 260 200, 200 140)) - - true - - - Test 548 - - MULTIPOINT (130 240, 130 240, 130 240, 570 240, 570 240, 570 240, 650 240) - - true - - - Test 549 - - POLYGON ((10 10, 100 10, 100 100, 10 100, 10 10)) - - true - - - Test 550 - - LINESTRING (30 220, 240 220, 240 220) - - true - - - Test 551 - - LINESTRING (110 290, 110 100, 110 100) - - true - - - Test 552 - - LINESTRING (120 230, 120 200, 150 180, 180 220, 160 260, 90 250, 80 190, 140 110, 230 150, 240 230, 180 320, 60 310, 40 160, 140 50, 280 140) - - true - - - Test 553 - - POLYGON ((200 360, 230 210, 100 190, 270 150, 360 10, 320 200, 490 230, 280 240, 200 360), (220 300, 250 200, 150 190, 290 150, 330 70, 310 210, 390 230, 280 230, 220 300)) - - true - - - Test 554 - - MULTIPOINT (70 340, 70 50, 430 50, 420 340, 340 120, 390 110, 390 70, 350 100, 350 50, 370 90, 320 80, 360 120, 350 80, 390 90, 420 80, 410 60, 410 100, 370 100, 380 60, 370 80, 380 100, 360 80, 370 80, 380 70, 390 80, 390 70, 410 70, 400 60, 410 60, 410 60, 410 60, 370 70, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50, 410 50) - - true - - - Test 555 - - MULTIPOINT (140 350, 510 140, 110 140, 250 290, 250 50, 300 370, 450 310, 440 160, 290 280, 220 160, 100 260, 320 230, 200 280, 360 130, 330 210, 380 80, 220 210, 380 310, 260 150, 260 110, 170 130) - - true - - - Test 556 - - GEOMETRYCOLLECTION (POINT (110 300), POINT (100 110), POINT (130 210), POINT (150 210), POINT (150 180), POINT (130 170), POINT (140 190), POINT (130 200), LINESTRING (240 50, 210 120, 270 80, 250 140, 330 70, 300 160, 340 130, 340 130), POLYGON ((210 340, 220 260, 150 270, 230 220, 230 140, 270 210, 360 240, 260 250, 260 280, 240 270, 210 340), (230 270, 230 250, 200 250, 240 220, 240 190, 260 220, 290 230, 250 230, 230 270))) - - true - - - Test 557 - - MULTIPOINT (50 320, 50 280, 50 230, 50 160, 50 120, 100 120, 160 120, 210 120, 210 180, 210 150, 180 180, 140 180, 140 210, 140 260, 160 180, 140 300, 140 320, 110 320, 80 320) - - true - - - Test 559 - - POLYGON ((50 50, 200 50, 200 200, 50 200, 50 50)) - - true - - - Test 560 - - POLYGON ((20 20, 20 160, 160 160, 160 20, 20 20), (140 140, 40 140, 40 40, 140 40, 140 140)) - - true - - - Test 561 - - POLYGON ((80 100, 220 100, 220 240, 80 240, 80 100)) - - true - - - Test 562 - - POLYGON ((20 340, 330 380, 50 40, 20 340)) - - true - - - Test 563 - - POLYGON ((210 320, 140 270, 0 270, 140 220, 210 320)) - - true - - - Test 564 - - POLYGON ((0 0, 110 0, 110 60, 40 60, 180 140, 40 220, 110 260, 0 260, 0 0)) - - true - - - Test 565 - - POLYGON ((220 0, 110 0, 110 60, 180 60, 40 140, 180 220, 110 260, 220 260, 220 0)) - - true - - - Test 566 - - POLYGON ((0 0, 120 0, 120 50, 50 50, 120 100, 50 150, 120 150, 120 190, 0 190, 0 0)) - - true - - - Test 567 - - POLYGON ((230 0, 120 0, 120 50, 190 50, 120 100, 190 150, 120 150, 120 190, 230 190, 230 0)) - - true - - - Test 568 - - POLYGON ((0 0, 210 0, 210 230, 0 230, 0 0)) - - true - - - Test 569 - - MULTIPOLYGON (((40 20, 0 0, 20 40, 60 60, 40 20)), ((60 90, 60 60, 90 60, 90 90, 60 90)), ((70 120, 90 90, 100 120, 70 120)), ((120 70, 90 90, 120 100, 120 70))) - - true - - - Test 570 - - POLYGON ((0 0, 340 0, 340 300, 0 300, 0 0)) - - true - - - Test 571 - - MULTIPOLYGON (((40 20, 0 0, 20 40, 60 60, 40 20)), ((60 100, 60 60, 100 60, 100 100, 60 100))) - - true - - - Test 572 - - POLYGON ((0 0, 120 0, 120 120, 0 120, 0 0)) - - true - - - Test 573 - - MULTIPOLYGON (((60 20, 0 20, 60 60, 60 20)), ((60 100, 60 60, 100 60, 100 100, 60 100))) - - true - - - Test 574 - - POLYGON ((160 330, 60 260, 20 150, 60 40, 190 20, 270 130, 260 250, 160 330), (140 240, 80 190, 90 100, 160 70, 210 130, 210 210, 140 240)) - - true - - - Test 575 - - POLYGON ((300 330, 190 270, 150 170, 150 110, 250 30, 380 50, 380 250, 300 330), (290 240, 240 200, 240 110, 290 80, 330 170, 290 240)) - - true - - - Test 576 - - MULTIPOLYGON (((120 340, 120 200, 140 200, 140 280, 160 280, 160 200, 180 200, 180 280, 200 280, 200 200, 220 200, 220 340, 120 340)), ((360 200, 220 200, 220 180, 300 180, 300 160, 220 160, 220 140, 300 140, 300 120, 220 120, 220 100, 360 100, 360 200))) - - true - - - Test 577 - - MULTIPOLYGON (((100 220, 100 200, 300 200, 300 220, 100 220)), ((280 180, 280 160, 300 160, 300 180, 280 180)), ((220 140, 220 120, 240 120, 240 140, 220 140)), ((180 220, 160 240, 200 240, 180 220))) - - true - - - Test 578 - - MULTIPOLYGON (((100 200, 100 180, 120 180, 120 200, 100 200)), ((60 240, 60 140, 220 140, 220 160, 160 160, 160 180, 200 180, 200 200, 160 200, 160 220, 220 220, 220 240, 60 240), (80 220, 80 160, 140 160, 140 220, 80 220)), ((280 220, 240 180, 260 160, 300 200, 280 220))) - - true - - - Test 579 - - MULTIPOLYGON (((80 220, 80 160, 140 160, 140 220, 80 220), (100 200, 100 180, 120 180, 120 200, 100 200)), ((220 240, 220 220, 160 220, 160 200, 220 200, 220 180, 160 180, 160 160, 220 160, 220 140, 320 140, 320 240, 220 240), (240 220, 240 160, 300 160, 300 220, 240 220))) - - true - - - Test 580 - - POLYGON ((60 160, 140 160, 140 60, 60 60, 60 160)) - - true - - - Test 581 - - POLYGON ((160 160, 100 160, 100 100, 160 100, 160 160), (140 140, 120 140, 120 120, 140 120, 140 140)) - - true - - - Test 582 - - POLYGON ((10 10, 100 10, 10 11, 10 10)) - - true - - - Test 583 - - POLYGON ((90 0, 200 0, 200 200, 90 200, 90 0)) - - true - - - Test 584 - - POLYGON ((100 10, 10 10, 90 11, 90 20, 100 20, 100 10)) - - true - - - Test 585 - - POLYGON ((20 20, 0 20, 0 0, 20 0, 20 20)) - - true - - - Test 586 - - POLYGON ((10 10, 50 10, 50 50, 10 50, 10 31, 49 30, 10 30, 10 10)) - - true - - - Test 587 - - POLYGON ((60 40, 40 40, 40 20, 60 20, 60 40)) - - true - - - Test 588 - - POLYGON ((10 100, 10 10, 100 10, 100 100, 10 100), (90 90, 11 90, 10 10, 90 11, 90 90)) - - true - - - Test 589 - - POLYGON ((0 30, 0 0, 30 0, 30 30, 0 30)) - - true - - - Test 590 - - MULTIPOLYGON (((0 0, 100 0, 100 20, 0 20, 0 0)), ((0 40, 0 21, 100 20, 100 40, 0 40))) - - true - - - Test 591 - - POLYGON ((110 30, 90 30, 90 10, 110 10, 110 30)) - - true - - - Test 592 - - POLYGON ((100 10, 0 10, 100 11, 100 10)) - - true - - - Test 593 - - POLYGON ((100 10, 0 10, 90 11, 90 20, 100 20, 100 10)) - - true - - - Test 594 - - POLYGON ((10 30, 10 0, 30 10, 30 30, 10 30)) - - true - - - Test 595 - - POLYGON ((10 30, 10 10, 30 10, 30 30, 10 30)) - - true - - - Test 596 - - POLYGON ((0 0, 200 0, 0 198, 0 0)) - - true - - - Test 597 - - POLYGON ((280 60, 139 60, 280 70, 280 60)) - - true - - - Test 598 - - POLYGON ((0 0, 140 10, 0 20, 0 0)) - - true - - - Test 599 - - POLYGON ((280 0, 139 10, 280 1, 280 0)) - - true - - - Test 600 - - MULTIPOLYGON (((1 4, 1 1, 2 1, 2 4, 1 4)), ((3 4, 3 1, 4 1, 4 4, 3 4)), ((5 4, 5 1, 6 1, 6 4, 5 4)), ((7 4, 7 1, 8 1, 8 4, 7 4)), ((9 4, 9 1, 10 1, 10 4, 9 4))) - - true - - - Test 601 - - POLYGON ((0 2, 11 3, 11 2, 0 2)) - - true - - - Test 602 - - POLYGON ((20 40, 20 200, 180 200, 180 40, 20 40), (180 120, 120 120, 120 160, 60 120, 120 80, 120 119, 180 120)) - - true - - - Test 603 - - POLYGON ((200 160, 160 160, 160 80, 200 80, 200 160)) - - true - - - Test 604 - - LINESTRING (160 140, 160 100) - - true - - - Test 605 - - POLYGON ((20 40, 20 200, 180 200, 180 120, 140 120, 180 119, 180 40, 20 40), (140 160, 80 120, 140 80, 140 160)) - - true - - - Test 606 - - POLYGON ((200 160, 150 160, 150 80, 200 80, 200 160)) - - true - - - Test 607 - - POLYGON ((83 33, 62 402, 68 402, 83 33)) - - true - - - Test 608 - - POLYGON ((78 39, 574 76, 576 60, 78 39)) - - true - - - Test 609 - - LINESTRING (240 190, 120 120) - - true - - - Test 610 - - POLYGON ((110 240, 50 80, 240 70, 110 240)) - - true - - - Test 611 - - LINESTRING (0 100, 100 100, 200 200) - - true - - - Test 612 - - POLYGON ((30 240, 260 30, 30 30, 30 240), (80 140, 80 80, 140 80, 80 140)) - - true - - - Test 613 - - LINESTRING (40 340, 200 250, 120 180, 160 110, 270 40) - - true - - - Test 614 - - MULTIPOLYGON (((60 320, 60 80, 300 80, 60 320), (80 280, 80 100, 260 100, 80 280)), ((120 160, 140 160, 140 140, 120 160))) - - true - - - Test 615 - - MULTILINESTRING ((100 240, 100 180, 160 180, 160 120, 220 120), (40 360, 40 60, 340 60, 40 360, 40 20), (120 120, 120 140, 100 140, 100 120, 140 120)) - - true - - - Test 616 - - MULTIPOLYGON (((60 260, 60 120, 220 120, 220 260, 60 260), (80 240, 80 140, 200 140, 200 240, 80 240)), ((100 220, 100 160, 180 160, 180 220, 100 220), (120 200, 120 180, 160 180, 160 200, 120 200))) - - true - - - Test 617 - - MULTILINESTRING ((40 260, 240 260, 240 240, 40 240, 40 220, 240 220), (120 300, 120 80, 140 80, 140 300, 140 80, 120 80, 120 320)) - - true - - - Test 618 - - MULTIPOLYGON (((60 320, 60 120, 280 120, 280 320, 60 320), (120 260, 120 180, 240 180, 240 260, 120 260)), ((280 400, 320 400, 320 360, 280 360, 280 400)), ((300 240, 300 220, 320 220, 320 240, 300 240))) - - true - - - Test 619 - - MULTILINESTRING ((80 300, 80 160, 260 160, 260 300, 80 300, 80 140), (220 360, 220 240, 300 240, 300 360)) - - true - - - Test 620 - - MULTIPOLYGON (((120 180, 60 80, 180 80, 120 180)), ((100 240, 140 240, 120 220, 100 240))) - - true - - - Test 621 - - MULTILINESTRING ((180 260, 120 180, 60 260, 180 260), (60 300, 60 40), (100 100, 140 100)) - - true - - - Test 622 - - POLYGON ((95 9, 81 414, 87 414, 95 9)) - - true - - - Test 623 - - LINESTRING (93 13, 96 13) - - true - - - Test 624 - - LINESTRING (0 0, 100 100) - - true - - - Test 625 - - LINESTRING (0 100, 100 0) - - true - - - Test 626 - - LINESTRING (0 0, 100 100, 200 0) - - true - - - Test 627 - - LINESTRING (0 0, 100 100, 200 200) - - true - - - Test 628 - - LINESTRING (40 360, 40 220, 120 360) - - true - - - Test 629 - - LINESTRING (120 340, 60 220, 140 220, 140 360) - - true - - - Test 630 - - LINESTRING (220 240, 200 220, 60 320, 40 300, 180 200, 160 180, 20 280) - - true - - - Test 631 - - LINESTRING (220 240, 140 160, 120 180, 220 280, 200 300, 100 200) - - true - - - Test 632 - - LINESTRING (80 320, 220 320, 220 160, 80 300) - - true - - - Test 633 - - LINESTRING (60 200, 60 260, 140 200) - - true - - - Test 634 - - LINESTRING (60 200, 60 140, 140 200) - - true - - - Test 635 - - LINESTRING (180 200, 100 280, 20 200, 100 120, 180 200) - - true - - - Test 636 - - LINESTRING (100 200, 220 200, 220 80, 100 80, 100 200) - - true - - - Test 637 - - LINESTRING (0 10, 620 10, 0 11) - - true - - - Test 638 - - LINESTRING (400 60, 400 10) - - true - - - Test 639 - - MULTIPOLYGON (((120 320, 180 200, 240 320, 120 320)), ((180 200, 240 80, 300 200, 180 200))) - - true - - - Test 640 - - MULTIPOINT (120 320, 180 260, 180 320, 180 200, 300 200, 200 220) - - true - - - Test 641 - - MULTIPOLYGON (((120 80, 420 80, 420 340, 120 340, 120 80), (160 300, 160 120, 380 120, 380 300, 160 300)), ((200 260, 200 160, 340 160, 340 260, 200 260), (240 220, 240 200, 300 200, 300 220, 240 220))) - - true - - - Test 642 - - MULTIPOINT (200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200, 200 360, 420 340, 400 100, 340 120, 200 140, 200 160, 220 180, 260 200) - - true - - - Test 643 - - MULTIPOINT (40 90, 20 20, 70 70) - - true - - - Test 644 - - LINESTRING (20 20, 100 100) - - true - - - Test 645 - - LINESTRING (20 20, 110 110, 170 50, 130 10, 70 70) - - true - - - Test 646 - - MULTILINESTRING ((100 320, 100 220), (100 180, 200 180), (220 180, 220 320), (220 320, 160 320), (100 320, 100 220), (100 180, 200 180), (220 180, 220 320), (220 320, 160 320), (100 220, 100 320)) - - true - - - Test 647 - - MULTIPOINT (100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320, 100 320, 100 260, 100 220, 100 200, 100 180, 120 180, 200 180, 220 180, 220 260, 220 320, 200 320, 160 320, 140 320, 120 320) - - true - - - Test 648 - - MULTILINESTRING ((-500 -140, -500 -280, -320 -280, -320 -140, -500 -140, -500 -340), (-500 -140, -320 -140, -500 -140, -320 -140, -500 -140)) - - true - - - Test 649 - - MULTIPOINT (-560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120, -560 -180, -420 -180, -500 -220, -500 -340, -500 -280, -500 -140, -320 -140, -420 -140, -320 -180, -280 -140, -320 -120) - - true - - - Test 650 - - MULTILINESTRING ((180 100, 140 280, 240 140, 220 120, 140 280), (140 280, 100 400, 80 380, 140 280, 40 380, 20 360, 140 280)) - - true - - - Test 651 - - POINT (200 200) - - true - - - Test 652 - - MULTIPOINT (100 100, 200 200) - - true - - - Test 653 - - MULTIPOINT (100 100, 200 200, 300 300, 500 500) - - true - - - Test 654 - - MULTIPOINT (100 100, 200 200, 400 400, 600 600) - - true - - - Test 655 - - POINT (80 200) - - true - - - Test 656 - - POINT (260 80) - - true - - - Test 657 - - POINT (60 260) - - true - - - Test 658 - - POINT (120 260) - - true - - - Test 659 - - POINT (80 80) - - true - - - Test 660 - - POINT (80 280) - - true - - - Test 661 - - POLYGON ((0 0, 140 0, 140 140, 0 140, 0 0)) - - true - - - Test 662 - - POLYGON ((140 0, 0 0, 0 140, 140 140, 140 0)) - - true - - - Test 663 - - POLYGON ((40 60, 360 60, 360 300, 40 300, 40 60)) - - true - - - Test 664 - - POLYGON ((120 100, 280 100, 280 240, 120 240, 120 100)) - - true - - - Test 665 - - POLYGON ((80 100, 360 100, 360 280, 80 280, 80 100)) - - true - - - Test 666 - - POLYGON ((0 280, 0 0, 260 0, 260 280, 0 280), (220 240, 40 240, 40 40, 220 40, 220 240)) - - true - - - Test 667 - - POLYGON ((20 260, 240 260, 240 20, 20 20, 20 260), (160 180, 80 180, 120 120, 160 180)) - - true - - - Test 668 - - POLYGON ((60 80, 200 80, 200 220, 60 220, 60 80)) - - true - - - Test 669 - - POLYGON ((120 140, 260 140, 260 260, 120 260, 120 140)) - - true - - - Test 670 - - POLYGON ((60 220, 220 220, 140 140, 60 220)) - - true - - - Test 671 - - POLYGON ((100 180, 180 180, 180 100, 100 100, 100 180)) - - true - - - Test 672 - - POLYGON ((40 40, 180 40, 180 180, 40 180, 40 40)) - - true - - - Test 673 - - POLYGON ((180 40, 40 180, 160 280, 300 140, 180 40)) - - true - - - Test 674 - - POLYGON ((40 280, 200 280, 200 100, 40 100, 40 280), (100 220, 120 220, 120 200, 100 180, 100 220)) - - true - - - Test 675 - - POLYGON ((40 280, 180 260, 180 120, 60 120, 40 280)) - - true - - - Test 676 - - POLYGON ((0 200, 0 0, 200 0, 200 200, 0 200), (20 180, 130 180, 130 30, 20 30, 20 180)) - - true - - - Test 677 - - POLYGON ((60 90, 130 90, 130 30, 60 30, 60 90)) - - true - - - Test 678 - - LINESTRING (100 120, 100 240) - - true - - - Test 679 - - POLYGON ((40 60, 160 60, 160 180, 40 180, 40 60)) - - true - - - Test 680 - - LINESTRING (80 80, 140 140, 200 200) - - true - - - Test 681 - - POLYGON ((40 40, 140 40, 140 140, 40 140, 40 40)) - - true - - - Test 682 - - POLYGON ((190 190, 360 20, 20 20, 190 190), (111 110, 250 100, 140 30, 111 110)) - - true - - - Test 683 - - POLYGON ((20 200, 20 20, 240 20, 240 200, 20 200), (130 110, 60 40, 60 180, 130 110), (130 180, 131 40, 200 110, 130 180)) - - true - - - Test 684 - - LINESTRING (100 140, 100 40) - - true - - - Test 685 - - MULTIPOLYGON (((20 80, 180 79, 100 0, 20 80)), ((20 160, 180 160, 100 80, 20 160))) - - true - - - Test 686 - - MULTIPOLYGON (((20 80, 180 80, 100 0, 20 80)), ((20 160, 180 160, 100 80, 20 160))) - - true - - - Test 687 - - LINESTRING (60 0, 20 80, 100 80, 80 120, 40 140) - - true - - - Test 688 - - LINESTRING (140 300, 220 160, 260 200, 240 260) - - true - - - Test 689 - - LINESTRING (60 40, 140 40, 140 160, 0 160) - - true - - - Test 690 - - LINESTRING (140 280, 240 280, 240 180, 140 180, 140 280) - - true - - - Test 691 - - LINESTRING (140 0, 0 0, 40 60, 0 120, 60 200, 220 160, 220 40) - - true - - - Test 692 - - LINESTRING (80 140, 180 100, 160 40, 100 40, 60 100, 80 140) - - true - - - Test 693 - - LINESTRING (20 20, 80 80) - - true - - - Test 694 - - LINESTRING (40 40, 160 160, 200 60, 60 140) - - true - - - Test 695 - - LINESTRING (40 40, 200 40) - - true - - - Test 696 - - LINESTRING (200 40, 140 40, 40 40) - - true - - - Test 697 - - LINESTRING (0 0, 110 0, 60 0) - - true - - - Test 698 - - LINESTRING (0 0, 110 0) - - true - - - Test 699 - - LINESTRING (0 0, 80 0, 80 60, 80 0, 170 0) - - true - - - Test 700 - - MULTILINESTRING ((0 0, 170 0), (80 0, 80 60)) - - true - - - Test 701 - - LINESTRING (80 100, 180 200) - - true - - - Test 702 - - LINESTRING (80 180, 180 120) - - true - - - Test 703 - - LINESTRING (40 40, 100 100, 160 160) - - true - - - Test 704 - - LINESTRING (160 60, 100 100, 60 140) - - true - - - Test 705 - - LINESTRING (140 60, 60 140) - - true - - - Test 706 - - LINESTRING (40 40, 180 180, 100 180, 100 100) - - true - - - Test 707 - - LINESTRING (80 90, 50 50, 0 0) - - true - - - Test 708 - - LINESTRING (40 140, 240 140) - - true - - - Test 709 - - LINESTRING (40 140, 100 140, 80 80, 120 60, 100 140, 160 140, 160 100, 200 100, 160 140, 240 140) - - true - - - Test 710 - - LINESTRING (20 20, 100 20, 20 20) - - true - - - Test 711 - - LINESTRING (60 20, 200 20) - - true - - - Test 712 - - LINESTRING (40 60, 180 60, 180 140, 100 140, 100 60, 220 60, 220 180, 80 180, 80 60, 280 60) - - true - - - Test 713 - - LINESTRING (140 60, 180 60, 220 60, 260 60) - - true - - - Test 714 - - MULTIPOINT (0 20, 40 20) - - true - - - Test 715 - - POLYGON ((20 40, 20 0, 60 0, 60 40, 20 40)) - - true - - - Test 716 - - MULTIPOINT (0 20, 20 20) - - true - - - Test 717 - - MULTIPOINT (20 20, 40 20) - - true - - - Test 718 - - MULTIPOINT (80 260, 140 260, 180 260) - - true - - - Test 719 - - POLYGON ((40 320, 140 320, 140 200, 40 200, 40 320)) - - true - - - Test 720 - - MULTIPOLYGON (((0 40, 0 0, 40 0, 40 40, 0 40)), ((40 80, 40 40, 80 40, 80 80, 40 80))) - - true - - - Test 721 - - LINESTRING (40 40, 120 120, 200 120) - - true - - - Test 722 - - LINESTRING (40 40, 100 100, 160 100) - - true - - - Test 723 - - POINT (60 60) - - true - - - Test 724 - - MULTIPOINT (40 40, 100 40) - - true - - - Test 725 - - LINESTRING (40 40, 80 80) - - true - - - Test 726 - - MULTIPOINT (40 40, 60 60) - - true - - - Test 727 - - MULTIPOINT (60 60, 100 100) - - true - - - Test 728 - - LINESTRING (40 40, 60 60, 80 80) - - true - - - Test 729 - - POINT (20 30) - - true - - - Test 730 - - MULTIPOINT (40 40, 80 60, 40 100) - - true - - - Test 731 - - MULTIPOINT (80 280, 80 220, 160 220, 80 220) - - true - - - Test 732 - - MULTIPOINT (80 280, 80 220, 160 220) - - true - - - Test 733 - - MULTIPOINT EMPTY - - true - - - Test 734 - - LINESTRING (20 60, 160 60, 80 160, 80 20) - - true - - - Test 735 - - LINESTRING (20 80, 80 20, 80 80, 140 60, 80 20, 160 20) - - true - - - Test 736 - - LINESTRING (20 60, 100 60, 60 100, 60 60) - - true - - - Test 737 - - LINESTRING (20 60, 60 60, 100 60, 60 100, 60 60) - - true - - - Test 738 - - LINESTRING (20 20, 80 20, 80 80, 20 20) - - true - - - Test 739 - - LINESTRING (80 80, 20 20, 20 80, 140 80, 140 140, 80 80) - - true - - - Test 740 - - LINESTRING EMPTY - - true - - - Test 741 - - MULTILINESTRING ((40 140, 160 40), (160 140, 40 40)) - - true - - - Test 742 - - MULTILINESTRING ((20 160, 20 20), (100 160, 100 20)) - - true - - - Test 743 - - MULTILINESTRING ((60 140, 20 80, 60 40), (60 40, 100 80, 60 140)) - - true - - - Test 744 - - MULTILINESTRING ((60 40, 140 40, 100 120, 100 0), (100 200, 200 120)) - - true - - - Test 745 - - MULTILINESTRING ((40 120, 100 60), (160 120, 100 60), (40 60, 160 60)) - - true - - - Test 746 - - MULTILINESTRING ((80 160, 40 220, 40 100, 80 160), (80 160, 120 220, 120 100, 80 160)) - - true - - - Test 747 - - MULTILINESTRING ((80 160, 40 220), (80 160, 120 220, 120 100, 80 160), (40 100, 80 160)) - - true - - - Test 748 - - POLYGON ((180 260, 80 300, 40 180, 160 120, 180 260)) - - true - - - Test 749 - - POLYGON EMPTY - - true - - - Test 750 - - MULTIPOLYGON (((240 160, 140 220, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340))) - - true - - - Test 751 - - MULTIPOLYGON (((240 160, 100 240, 80 60, 220 40, 240 160)), ((160 380, 100 240, 20 380, 160 380), (120 340, 60 360, 80 320, 120 340))) - - true - - diff -Nru geos-3.1.0/tests/xmltester/TestValid.xml geos-3.2.2/tests/xmltester/TestValid.xml --- geos-3.1.0/tests/xmltester/TestValid.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/TestValid.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,670 +0,0 @@ - - - - - L - linear-ring bowtie - LINEARRING(0 0, 100 100, 100 0, 0 100, 0 0) - - false - - - - - L - linestring bowtie - LINESTRING(0 0, 100 100, 100 0, 0 100, 0 0) - - true - - - - - P - point - - POINT(10 10) - - - - true - - - - - - mP - no repeated points - - MULTIPOINT(10 10, 20 20, 30 30) - - - true - - - - - P - repeated points - - MULTIPOINT(10 10, 20 20, 30 30, 10 10) - - - true - - - - - L - no repeated points - -LINESTRING (40 180, 120 120, 140 200, 200 140, 240 200) - - - true - - - - - L - repeated points - -LINESTRING (40 180, 120 120, 140 200, 140 200, 200 140, 240 200) - - - true - - - - - L - linestring with two identical points - LINESTRING(0 0, 0 0) - - false - - - - - A - zero-area polygon - POLYGON ((0 0, 0 0, 0 0, 0 0, 0 0)) - - false - - - - - A - polygon with too few points - POLYGON ((0 0, 10 0, 20 0, 0 0, 0 0)) - - false - - - - - A - polygon with repeated point - POLYGON ((107 246, 107 246, 250 285, 294 137, 151 90, 15 125, 157 174, 107 246)) - - true - - - - - A - polygon with degenerate hole ring (A-B-A) - POLYGON ((0 0, 0 240, 260 240, 260 0, 0 0), - (220 200, 40 200, 40 20, 40 200, 220 200, 220 200)) - - false - - - - - mA - multipolygon with component with too few points - MULTIPOLYGON ( ((100 20, 180 20, 180 100, 100 100, 100 20)), -((20 100, 100 100, 100 180, 20 180, 20 100)), -((100 180, 180 180, 180 260, 100 260, 100 180)), -((180 100, 180 180, 180 180, 180 100))) - - false - - - - - A - polygon self-intersects at non-vertex - POLYGON ((0 40, 0 0, 40 40, 40 0, 0 40)) - - false - - - - A - polygon self-intersects at vertex - MULTIPOLYGON ( ((0 40, 20 20, 40 0, 40 40, 20 20, 0 0, 0 40)) ) - - false - - - - A - polygon self-intersects at vertex/non-vertex - POLYGON ((0 40, 20 20, 40 0, 40 40, 0 0, 0 40)) - - false - - - - A - hole self-intersects at non-vertex - POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 0 0, 40 40, 40 0, 0 40)) - - false - - - - A - polygon self-intersects at vertex - POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 20 20, 40 0, 40 40, 20 20, 0 0, 0 40)) - - false - - - - A - polygon self-intersects at vertex/non-vertex - POLYGON ((-10 50, 50 50, 50 -10, -10 -10, -10 50), (0 40, 20 20, 40 0, 40 40, 0 0, 0 40)) - - false - - - - A - Valid doughnut - POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 40 20, 40 40, 20 40)) - - true - - - - A - shell has repeated points - POLYGON ((0 60, 0 0, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 40 20, 40 40, 20 40)) - - true - - - - - A - shell touches hole without crossing it (valid) - POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (20 40, 20 20, 60 20, 20 40)) - - true - - - - A - shell touches hole without crossing it, but does so twice (invalid) - POLYGON ((0 60, 0 0, 60 0, 60 60, 0 60), (0 40, 20 20, 60 20, 0 40)) - - false - - - - A - hole touches hole without crossing it (valid) - POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), (100 100, 100 20, 120 20, 120 100, 100 100), (20 100, 20 40, 100 40, 20 100)) - - true - - - - A - holel touches hole without crossing it, but does so twice (invalid) - POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), - (100 100, 100 20, 120 20, 120 100, 100 100), - (20 100, 20 40, 100 40, 80 60, 100 80, 20 100)) - - false - - - - A - hole touches hole without crossing it, but does so at an infinite number of points (invalid) - POLYGON ((0 120, 0 0, 140 0, 140 120, 0 120), - (100 100, 100 20, 120 20, 120 100, 100 100), - (20 100, 20 40, 100 40, 100 80, 20 100)) - - false - - - - A - spike (invalid) - POLYGON ((0 60, 0 0, 60 0, 60 20, 100 20, 60 20, 60 60, 0 60)) - - false - - - - A - puncture (invalid) - POLYGON ((0 60, 0 0, 60 0, 60 20, 20 20, 60 20, 60 60, 0 60)) - - false - - - - A - hole within a hole (invalid) - POLYGON ((0 140, 0 0, 180 0, 180 140, 0 140), (20 20, 160 20, 160 120, 20 120, 20 20), (40 100, 40 40, 140 40, 140 100, 40 100)) - - false - - - - A - empty shell and holes (valid) - POLYGON (EMPTY, EMPTY, EMPTY) - - true - - - - - A - hole overlapping shell at non-vertex - -POLYGON ((60 280, 260 180, 60 80, 60 280), - (140 80, 120 180, 200 180, 140 80)) - - - - false - - - - - - A - shell self-overlaps - -POLYGON ((60 340, 60 100, 340 100, 340 280, 340 200, 340 340, 60 340)) - - - false - - - - - A - hole with repeated points - -POLYGON ((40 260, 40 60, 120 60, 180 160, 240 60, 300 60, 300 260, 40 260), - (70 230, 80 230, 80 220, 80 220, 70 230)) - - - true - - - - - A - hole outside but adjacent to shell - -POLYGON ((40 260, 40 60, 120 60, 180 160, 240 60, 300 60, 300 260, 40 260), - (180 160, 240 60, 120 60, 180 160)) - - - false - - - - - - A - hole touches shell at two points - -POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), - (140 180, 40 180, 140 260, 140 180)) - - - - false - - - - - - A - hole touches shell at one non-vertex point - -POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), - (140 180, 40 180, 140 240, 140 180)) - - - true - - - - - A - hole touches shell at one vertex point - -POLYGON ((240 260, 40 260, 40 80, 240 80, 240 260), - (140 180, 40 260, 140 240, 140 180)) - - - true - - - - - A - hole outside shell - -POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), - (160 120, 180 100, 160 80, 160 120)) - - - - false - - - - - - A - hole identical to shell - -POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), - (20 180, 20 20, 140 20, 140 180, 20 180)) - - - - false - - - - - - A - hole identical to shell - -POLYGON ((20 180, 20 20, 140 20, 140 180, 20 180), - (20 180, 20 20, 140 20, 140 180, 20 180)) - - - - false - - - - - - A - hole self-intersects - -POLYGON ((380 340, 40 340, 40 20, 380 20, 380 340), - (120 300, 300 280, 320 200, 160 140, 200 80, 320 120, 320 200, 360 60, 120 40, 120 300)) - - - false - - - - - A - holes overlap, first point is identical - -POLYGON ((20 320, 260 320, 260 20, 20 20, 20 320), - (140 280, 80 100, 200 100, 140 280), - (140 280, 40 80, 240 80, 140 280)) - - - false - - - - - A - holes do not overlap, first point is identical - -POLYGON ((20 320, 240 320, 240 40, 20 40, 20 320), - (140 180, 60 120, 60 240, 140 180), - (140 180, 200 120, 200 240, 140 180)) - - - true - - - - - A - shell self-touches at vertex - -POLYGON ((340 320, 340 200, 200 280, 200 80, 340 200, 340 20, 60 20, 60 340, 340 320)) - - - false - - - - - A - shell self-touches at non-vertex - -POLYGON ((300 320, 300 220, 260 260, 180 220, 360 220, 360 140, 120 140, 120 320, 300 320)) - - false - - - - - A - chain of holes surrounds an island inside the polygon - -POLYGON ((40 300, 40 20, 280 20, 280 300, 40 300), - (120 240, 80 180, 160 220, 120 240), - (220 240, 160 220, 220 160, 220 240), - (160 100, 80 180, 100 80, 160 100), - (160 100, 220 160, 240 100, 160 100)) - - false - - - - - A - chain of holes splits polygon in two (touching at vertices) - -POLYGON ((40 320, 340 320, 340 20, 40 20, 40 320), - (100 120, 40 20, 180 100, 100 120), - (200 200, 180 100, 240 160, 200 200), - (260 260, 240 160, 300 200, 260 260), - (300 300, 300 200, 340 320, 300 300)) - - - false - - - - - A - chain of holes splits polygon in two (touching at non-vertex) - -POLYGON ((40 320, 340 320, 340 20, 40 20, 40 320), - (100 120, 40 20, 180 100, 100 120), - (200 200, 180 100, 240 160, 200 200), - (260 260, 240 160, 300 200, 260 260), - (300 300, 300 200, 340 260, 300 300)) - - - false - - - - - A - holes touch in one point - -POLYGON ((190 190, 360 20, 20 20, 190 190), - (90 50, 150 110, 190 50, 90 50), - (190 50, 230 110, 290 50, 190 50)) - - - true - - - - - A - holes touch in one point - -POLYGON ((190 190, 360 20, 20 20, 190 190), - (90 50, 150 110, 190 50, 90 50), - (190 50, 230 110, 290 50, 190 50)) - - - true - - - - - A - hole disconnects interiors - -POLYGON ((0 0, 10 10, 10 0, 0 0), - (5 5, 5 0, 10 5, 5 5)) - - - false - - - - - A - touching holes do NOT disconnect (isCCW bug) - -POLYGON ((60 40, 60 240, 460 240, 460 40, 60 40), - (260 200, 340 60, 400 120, 260 200), - (260 200, 120 100, 200 60, 260 200)) - - - true - - - - - - - mA - adjacent shells (shared vertices) - -MULTIPOLYGON (((40 120, 140 120, 140 40, 40 40, 40 120)), - ((140 120, 40 120, 40 200, 140 200, 140 120))) - - - - false - - - - - - mA - adjacent shells (different vertices) - -MULTIPOLYGON (((40 120, 140 120, 140 40, 40 40, 40 120)), - ((160 120, 60 120, 40 200, 140 200, 160 120))) - - - - false - - - - - - mA - nested overlapping shells - -MULTIPOLYGON (((80 260, 240 260, 240 100, 80 100, 80 260)), - ((120 240, 220 240, 220 140, 120 140, 120 240))) - - - false - - - - - mA - nested non-overlapping shells - -MULTIPOLYGON (((60 320, 60 80, 300 80, 60 320), - (80 280, 80 100, 260 100, 80 280)), - ((120 160, 140 160, 140 140, 120 160))) - - - true - - - - - mA - nested non-overlapping shells, all vertices touch - -MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), - (220 340, 180 240, 60 200, 180 160, 340 60, 240 220, 220 340)), - ((180 240, 180 160, 240 220, 180 240))) - - - true - - - - - mA - nested overlapping shells, all vertices touch - -MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), - (220 340, 180 240, 60 200, 140 100, 340 60, 300 240, 220 340)), - ((60 200, 340 60, 220 340, 60 200))) - - - false - - - - - mA - nested non-overlapping shells, all vertices touch - -MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), - (220 340, 80 320, 60 200, 140 100, 340 60, 300 240, 220 340)), - ((60 200, 340 60, 220 340, 60 200))) - - - true - - - - - mA - nested overlapping shells, all vertices touch - -MULTIPOLYGON (((20 380, 420 380, 420 20, 20 20, 20 380), - (220 340, 180 240, 60 200, 200 180, 340 60, 240 220, 220 340)), - ((60 200, 340 60, 220 340, 60 200))) - - - false - - - - - mA - disconnected exterior - -MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), - ((20 100, 100 100, 100 180, 20 180, 20 100)), - ((100 180, 180 180, 180 260, 100 260, 100 180)), - ((180 100, 260 100, 260 180, 180 180, 180 100))) - - - true - - - - - mA - shells touch in single point - -MULTIPOLYGON (((110 110, 70 200, 150 200, 110 110)), - ((110 110, 150 20, 70 20, 110 110))) - - - true - - - - - mA - duplicate shells - -MULTIPOLYGON (((60 300, 320 220, 260 60, 60 100, 60 300)), - ((60 300, 320 220, 260 60, 60 100, 60 300))) - - - false - - - - - mA - shells are not nested but share all vertices - -MULTIPOLYGON (((180 60, 240 160, 300 60, 180 60)), - ((80 80, 180 60, 160 140, 240 160, 360 140, 300 60, 420 100, 320 280, 120 260, 80 80))) - - - true - - - - - mA - shell is nested inside first hole - -MULTIPOLYGON (((0 0, 0 8, 8 8, 8 0, 0 0), - (3 3, 7 3, 7 7, 3 7, 3 3), - (1 1, 2 1, 2 2, 1 2, 1 1)), - ((4 4, 4 6, 6 6, 6 4, 4 4))) - - - true - - - - - diff -Nru geos-3.1.0/tests/xmltester/test.xml geos-3.2.2/tests/xmltester/test.xml --- geos-3.1.0/tests/xmltester/test.xml 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/test.xml 1970-01-01 01:00:00.000000000 +0100 @@ -1,6597 +0,0 @@ - - - -A/A-6-18: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - -true - - - -A/A-6-24: a polygon overlapping a very skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 1000000000000000 110, 1000000000000000 100, 100 100)) - - -true - - - - -A/A-1-1: same polygons [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -true - - - -A/A-1-2: same polygons with reverse sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.EP-SP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(20 20, 140 20, 120 100, 20 100, 20 20)) - - -true - - - -A/A-1-3: same polygons with different sequence of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(120 100, 140 20, 20 20, 20 100, 120 100)) - - -true - - - -A/A-1-4: same polygons with different number of points [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Bdy.SP-EP}] - -POLYGON( -(20 20, 20 100, 120 100, 140 20, 20 20)) - - -POLYGON( -(20 100, 60 100, 120 100, 140 20, 80 20, 20 20, 20 100)) - - -true - - - -A/A-2: different polygons [dim(2){A.A.Int = B.A.Ext}] - -POLYGON( -(0 0, 80 0, 80 80, 0 80, 0 0)) - - -POLYGON( -(100 200, 100 140, 180 140, 180 200, 100 200)) - - -true - - - -A/A-3-1-1: the closing point of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 140 200, 240 200, 240 120, 140 120)) - - -true - - - -A/A-3-1-2: the closing point of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(80 180, 140 260, 260 200, 200 60, 80 180)) - - -true - - - -A/A-3-1-3: the closing point of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(240 80, 140 120, 180 240, 280 200, 240 80)) - - -true - - - -A/A-3-1-4: the boundary (at a non-vertex) of a polygon touching the closing point of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - -POLYGON( -(140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - -POLYGON( -(140 40, 180 80, 120 100, 140 40)) - - -true - - - -A/A-3-1-5: the boundary (at a non-vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(140 160, 20 20, 270 20, 150 160, 230 40, 60 40, 140 160)) - - -POLYGON( -(120 100, 180 80, 130 40, 120 100)) - - -true - - - -A/A-3-1-6: the boundary (at a vertex) of a polygon touching the boundary (at a non-vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 180 20, 140 140, 20 140, 20 20)) - - -POLYGON( -(180 100, 80 200, 180 280, 260 200, 180 100)) - - -true - - - -A/A-3-1-7: the boundary (at a vertex) of a polygon touching the boundary (at a vertex) of another polygon [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 140, 20 120, 0 220, 120 240, 140 140)) - - -true - - - -A/A-3-1-8: the closing point of a polygon touching the boundary of another polygon where the closing point touching the boundary at a vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - -POLYGON( -(160 200, 210 70, 120 70, 160 200)) - - -POLYGON( -(160 200, 260 40, 70 40, 160 200, 20 20, 310 20, 160 200)) - - -true - - - -A/A-3-1-9: the closing point of a polygon touching the boundary of another polygon where the closing point intersecting the boundary at a non-vertex [dim(0){A.A.Bdy.CP = B.A.Bdy.TP}] - -POLYGON( -(110 140, 200 70, 200 160, 110 140)) - - -POLYGON( -(110 140, 110 50, 60 50, 60 90, 160 190, 20 110, 20 20, 200 20, 110 140)) - - -true - - - -A/A-3-2-1: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 120, 20 20, 260 20, 260 120, 200 40, 140 120, 80 40, 20 120)) - - -POLYGON( -(20 120, 20 240, 260 240, 260 120, 200 200, 140 120, 80 200, 20 120)) - - -true - - - -A/A-3-2-2: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 120, 20 20, 260 20, 260 120, 180 40, 140 120, 100 40, 20 120)) - - -POLYGON( -(20 120, 300 120, 140 240, 20 120)) - - -true - - - -A/A-3-2-3: two polygons touching at multiple points [dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, -20 20)) - - -POLYGON( -(100 140, 160 80, 280 180, 200 240, 220 160, 160 200, 180 120, 100 140)) - - -true - - - -A/A-3-2-4: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 20 300, 280 300, 280 260, 220 260, 60 100, 60 60, 280 60, 280 20, -20 20)) - - -POLYGON( -(260 200, 180 80, 120 160, 200 160, 180 220, 260 200)) - - -true - - - -A/A-3-2-5: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - -POLYGON( -(0 140, 300 140, 140 240, 0 140)) - - -true - - - -A/A-3-2-6: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - -POLYGON( -(20 240, 20 140, 320 140, 180 240, 20 240)) - - -true - - - -A/A-3-2-7: two polygons touching at multiple points [dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 280 20, 280 140, 220 60, 140 140, 80 60, 20 140, 20 20)) - - -POLYGON( -(20 240, 20 140, 80 180, 140 140, 220 180, 280 140, 280 240, 20 240)) - - -true - - - -A/A-3-3-1: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-NV}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(120 120, 220 20, 280 20, 240 160, 120 120)) - - -true - - - -A/A-3-3-2: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 160 20, 260 120, 220 200, 140 120)) - - -true - - - -A/A-3-3-3: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - -POLYGON( -(20 140, 120 40, 20 40, 20 140)) - - -POLYGON( -(190 140, 190 20, 140 20, 20 140, 190 140)) - - -true - - - -A/A-3-3-4: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.NV-V}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(300 20, 220 20, 120 120, 260 160, 300 20)) - - -true - - - -A/A-3-3-5: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 240 160, 280 60, 160 20, 140 120)) - - -true - - - -A/A-3-3-6: two polygons touching along a boundary [dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(280 60, 180 60, 120 120, 260 180, 280 60)) - - -true - - - -A/A-3-3-7: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(120 200, 120 120, 40 120, 40 200, 120 200)) - - -true - - - -A/A-3-3-8: two polygons touching along a boundary [dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-V}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(160 220, 140 120, 60 120, 40 220, 160 220)) - - -true - - - -A/A-3-3-9: two polygons touching along a boundary [dim(1){A.A.Bdy.V-EP = B.A.Bdy.V-SP}] - -POLYGON( -(140 120, 160 20, 20 20, 20 120, 140 120)) - - -POLYGON( -(140 120, 20 120, 20 220, 140 220, 140 120)) - - -true - - - -A/A-3-3-10: two polygons touching along a boundary [dim(1){A.A.Bdy.V-V = B.A.Bdy.NV-NV}] - -POLYGON( -(120 120, 180 60, 20 20, 20 120, 120 120)) - - -POLYGON( -(320 20, 220 20, 80 160, 240 140, 320 20)) - - -true - - - -A/A-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-EP = B.A.Int}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(60 40, 60 140, 180 140, 180 40, 60 40)) - - -true - - - -A/A-5-2-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 80 140, 160 60, 20 20)) - - -true - - - -A/A-5-2-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(160 60, 20 20, 100 140, 160 60)) - - -true - - - -A/A-5-2-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 100, 140 160, 160 40, 20 100)) - - -true - - - -A/A-5-2-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(160 40, 20 100, 160 160, 160 40)) - - -true - - - -A/A-5-2-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 180, 180 120, 80 40, 20 180)) - - -true - - - -A/A-5-2-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(180 120, 100 40, 20 180, 180 120)) - - -true - - - -A/A-5-3-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 140 40, 140 120, 20 160, 80 80, 20 20)) - - -true - - - -A/A-5-3-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 140 40, 140 140, 20 180, 80 100, 20 20)) - - -true - - - -A/A-5-3-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(40 180, 60 100, 180 100, 200 180, 120 120, 40 180)) - - -true - - - -A/A-5-3-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 180, 60 80, 180 80, 220 180, 120 120, 20 180)) - - -true - - - -A/A-5-3-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(40 60, 20 180, 100 100, 140 180, 160 120, 220 100, 140 40, 40 60)) - - -true - - - -A/A-5-3-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.V = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(60 100, 180 100, 220 180, 120 140, 20 180, 60 100)) - - -true - - - -A/A-5-4-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.SP-V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 20 140, 120 120, 120 40, 20 20)) - - -true - - - -A/A-5-4-2: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V)}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 20 180, 140 140, 140 60, 20 20)) - - -true - - - -A/A-5-4-3: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 120 40, 120 120, 20 140, 20 20)) - - -true - - - -A/A-5-4-4: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-NV = B.A.Bdy.V-V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(120 40, 20 20, 20 140, 120 120, 120 40)) - - -true - - - -A/A-5-4-5: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 140 60, 140 140, 20 180, 20 20)) - - -true - - - -A/A-5-4-6: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.V-V}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(140 60, 20 20, 20 180, 140 140, 140 60)) - - -true - - - -A/A-5-4-7: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-EP = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 60 120, 140 120, 180 20, 20 20)) - - -true - - - -A/A-5-4-8: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.Bdy.V-EP}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 40, 120 40, 120 120, 20 140, 20 40)) - - -true - - - -A/A-5-5-1: a polygon containing another polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.SP-V = B.A.Bdy.SP-V}, dim(1){A.A.Bdy.(NV, V) = B.A.Bdy.(V, V)}] - -POLYGON( -(20 20, 20 180, 220 180, 220 20, 20 20)) - - -POLYGON( -(20 20, 20 180, 60 120, 100 180, 140 120, 220 180, 200 120, 140 60, 20 20)) - - -true - - - -A/A-6-1: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(150 150, 330 150, 250 70, 70 70, 150 150)) - - -POLYGON( -(150 150, 270 150, 140 20, 20 20, 150 150)) - - -true - - - -A/A-6-2: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(150 150, 270 150, 330 150, 250 70, 190 70, 70 70, 150 150)) - - -POLYGON( -(150 150, 270 150, 190 70, 140 20, 20 20, 70 70, 150 150)) - - -true - - - -A/A-6-3: spiky polygons overlapping; boundary <-> boundary intersecting at 0 dimension [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(20 20, 60 50, 20 40, 60 70, 20 60, 60 90, 20 90, 70 110, 20 130, -80 130, 20 150, 80 160, 20 170, 80 180, 20 200, 80 200, 30 240, 80 220, 50 260, -100 220, 100 260, 120 220, 130 260, 140 220, 150 280, 150 190, 160 280, 170 190, 180 280, -190 190, 200 280, 210 190, 220 280, 230 190, 240 260, 250 230, 260 260, 260 220, 290 270, -290 220, 330 260, 300 210, 340 240, 290 180, 340 210, 290 170, 350 170, 240 150, 350 150, -240 140, 350 130, 240 120, 350 120, 240 110, 350 110, 240 100, 350 100, 240 90, 350 90, -240 80, 350 80, 300 70, 340 60, 290 60, 340 40, 300 50, 340 20, 270 60, 310 20, -250 60, 270 20, 230 60, 240 20, 210 60, 210 20, 190 70, 190 20, 180 90, 170 20, -160 90, 150 20, 140 90, 130 20, 120 90, 110 20, 100 90, 100 20, 90 60, 80 20, -70 40, 20 20)) - - -POLYGON( -(190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, -120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, -120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, -200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, -380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, -440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, -440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, -390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, -370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, -280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, -200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, -180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, -200 120, 120 120, 190 140)) - - -true - - - -A/A-6-4: spiky polygons overlapping; boundary <-> boundary intersecting at 1 dimension at a few locations [dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(70 150, 20 160, 110 160, 20 180, 100 200, 20 200, 190 210, 20 210, 160 220, -20 220, 150 230, 60 240, 180 250, 20 260, 170 260, 60 270, 160 270, 100 310, 170 280, -200 260, 180 230, 210 260, 130 330, 230 250, 210 290, 240 250, 230 210, 260 300, 250 230, -270 300, 270 240, 300 340, 280 250, 320 330, 290 250, 340 350, 290 240, 350 360, 270 190, -350 340, 290 200, 350 330, 300 190, 360 320, 310 190, 360 300, 320 200, 360 280, 330 200, -360 260, 340 200, 370 260, 340 180, 390 290, 340 170, 400 260, 350 170, 400 250, 350 160, -410 240, 350 150, 400 170, 350 140, 310 170, 340 140, 270 180, 330 140, 260 170, 310 140, -240 170, 290 140, 200 190, 270 140, 180 190, 260 140, 170 190, 260 130, 170 180, 250 130, -170 170, 240 120, 170 160, 210 120, 170 150, 210 110, 340 130, 230 110, 420 140, 220 100, -410 130, 220 90, 400 120, 220 80, 390 110, 220 70, 420 110, 240 70, 420 100, 260 70, -420 90, 280 70, 430 80, 230 60, 430 60, 270 50, 450 40, 210 50, 370 40, 260 40, -460 30, 160 40, 210 60, 200 110, 190 60, 190 120, 170 50, 180 130, 150 30, 170 130, -140 20, 160 120, 130 20, 160 150, 120 20, 160 170, 110 20, 160 190, 100 20, 150 190, -90 20, 140 180, 80 20, 120 140, 70 20, 120 150, 60 20, 110 150, 50 20, 100 140, -50 30, 90 130, 40 30, 80 120, 30 30, 80 130, 30 40, 80 140, 20 40, 70 140, -40 90, 60 130, 20 90, 60 140, 20 130, 70 150)) - - -POLYGON( -(190 140, 140 130, 200 160, 130 150, 210 170, 130 170, 210 180, 120 190, 220 200, -120 200, 250 210, 120 210, 250 220, 120 220, 250 230, 120 240, 230 240, 120 250, 240 260, -120 260, 240 270, 120 270, 270 290, 120 290, 230 300, 150 310, 250 310, 180 320, 250 320, -200 360, 260 330, 240 360, 280 320, 290 370, 290 320, 320 360, 310 320, 360 360, 310 310, -380 340, 310 290, 390 330, 310 280, 410 310, 310 270, 420 280, 310 260, 430 250, 300 250, -440 240, 300 240, 450 230, 280 220, 440 220, 280 210, 440 210, 300 200, 430 190, 300 190, -440 180, 330 180, 430 150, 320 180, 420 130, 300 180, 410 120, 280 180, 400 110, 280 170, -390 90, 280 160, 400 70, 270 160, 450 30, 260 160, 420 30, 250 160, 390 30, 240 160, -370 30, 230 160, 360 30, 230 150, 330 50, 240 130, 330 30, 230 130, 310 30, 220 130, -280 30, 230 100, 270 40, 220 110, 250 30, 210 130, 240 30, 210 100, 220 40, 200 90, -200 20, 190 100, 180 30, 20 20, 180 40, 20 30, 180 50, 20 50, 180 60, 30 60, -180 70, 20 70, 170 80, 80 80, 170 90, 20 80, 180 100, 40 100, 200 110, 60 110, -200 120, 120 120, 190 140)) - - -true - - - -A/A-6-5: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(60 160, 20 200, 260 200, 220 160, 140 80, 60 160)) - - -true - - - -A/A-6-6: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(60 160, 20 200, 260 200, 140 80, 60 160)) - - -true - - - -A/A-6-7: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.NV}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(20 200, 140 80, 260 200, 20 200)) - - -true - - - -A/A-6-8: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.V}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(20 200, 60 160, 140 80, 220 160, 260 200, 20 200)) - - -true - - - -A/A-6-9: a polygon overlapping another polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.CP = B.A.Bdy.V}, dim(0){A.A.Bdy.V = B.A.Bdy.NV}] - -POLYGON( -(60 160, 220 160, 220 20, 60 20, 60 160)) - - -POLYGON( -(20 200, 60 160, 140 80, 260 200, 20 200)) - - -true - - - -A/A-6-10: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(0 0, 0 200, 200 200, 200 0, 0 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-11: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 0, 100 200, 200 200, 200 0, 100 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-12: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 0, 120 200, 200 200, 200 0, 120 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-13: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(0 0, 0 200, 110 200, 110 0, 0 0)) - - -POLYGON( -(100 100, 1000000 110, 10000000 100, 100 100)) - - -true - - - -A/A-6-14: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 2100 110, 2100 100, 100 100)) - - -true - - - -A/A-6-15: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 2101 110, 2101 100, 100 100)) - - -true - - - -A/A-6-16: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 2101 110, 2101 100, 100 100)) - - -true - - - -A/A-6-17: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 100 200, 200 200, 200 100, 100 100)) - - -POLYGON( -(100 100, 1000000 110, 1000000 100, 100 100)) - - -true - - - -A/A-6-19: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 500 110, 500 100, 100 100)) - - -true - - - -A/A-6-20: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 501 110, 501 100, 100 100)) - - -true - - - -A/A-6-21: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 130 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 501 110, 501 100, 100 100)) - - -true - - - -A/A-6-22: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 17 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 501 110, 501 100, 100 100)) - - -true - - - -A/A-6-23: a polygon overlapping a skinny polygon [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-NV}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(120 100, 120 200, 200 200, 200 100, 120 100)) - - -POLYGON( -(100 100, 1000000 110, 1000000 100, 100 100)) - - -true - - - -A/A-6-25: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(101 99, 101 1000000, 102 1000000, 101 99)) - - -POLYGON( -(100 100, 1000000 110, 1000000 100, 100 100)) - - -true - - - -A/A-6-26: two skinny polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.Bdy.V-EP = B.A.Bdy.NV-EP}, dim(0){A.A.Bdy.CP = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(100 100, 200 101, 200 100, 100 100)) - - -POLYGON( -(100 100, 2101 110, 2101 100, 100 100)) - - -true - - - -A/A-6-26: two polygons overlapping [dim(2){A.A.Int = B.A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.NV}] - -POLYGON( -(16 319, 150 39, 25 302, 160 20, 265 20, 127 317, 16 319)) - - -POLYGON( -(10 307, 22 307, 153 34, 22 34, 10 307)) - - -true - - - -A/Ah-3-1: the closing point of a polygon touching the closing points of another polygon and its hole [dim(0){A.A.Bdy.CP = B.A.oBdy.CP}, dim(0){A.A.Bdy.CP = B.A.iBdy.CP}] - -POLYGON( -(160 200, 210 70, 120 70, 160 200)) - - -POLYGON( -(160 200, 310 20, 20 20, 160 200), -(160 200, 260 40, 70 40, 160 200)) - - -true - - - -A/Ah-3-2: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - -POLYGON( -(170 120, 240 100, 260 50, 190 70, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-3: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}, dim(0){A.A.oBdy.V = B.A.iBdy.V}] - -POLYGON( -(270 90, 200 50, 150 80, 210 120, 270 90)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-4: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.SP}] - -POLYGON( -(170 120, 260 100, 240 60, 150 80, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-5: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.NV}] - -POLYGON( -(220 120, 270 80, 200 60, 160 100, 220 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-6: the boundary of a polygon touching the inner boundary of another polygon at one spot [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.SP = B.A.iBdy.V}] - -POLYGON( -(260 50, 180 70, 180 110, 260 90, 260 50)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-7: the boundary of a polygon touching the inner boundary of another polygon at two spots [dim(2){A.A.Int = B.A.Ext.h}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}, dim(0){A.A.oBdy.V = B.A.iBdy.NV}] - -POLYGON( -(230 110, 290 80, 190 60, 140 90, 230 110)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-8: the boundary of a polygon touching the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-EP = B.A.iBdy.SP-EP}] - -POLYGON( -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-9: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - -POLYGON( -(170 120, 330 120, 280 70, 120 70, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-10: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.SP-V = B.A.iBdy.SP-NV}, dim(1){A.A.oBdy.V-EP = B.A.iBdy.NV-EP}] - -POLYGON( -(170 120, 300 120, 250 70, 120 70, 170 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-3-11: part of the boundary of a polygon touching part of the inner boundary of another polygon [dim(2){A.A.Int = B.A.Ext.h}, dim(1){A.A.oBdy.V-V-V = B.A.iBdy.NV-V-NV}] - -POLYGON( -(190 100, 310 100, 260 50, 140 50, 190 100)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-1: an entire polygon within another polygon which has a hole [dim(2){A.A.Ext = B.A.Int}, dim(2){A.A.Int = B.A.Int}] - -POLYGON( -(280 130, 360 130, 270 40, 190 40, 280 130)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-2: an entire polygon within another polygon which has a hole [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}] - -POLYGON( -(220 80, 180 40, 80 40, 170 130, 270 130, 230 90, 300 90, 250 30, 280 30, -390 140, 150 140, 40 30, 230 30, 280 80, 220 80)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-3: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.NV-NV = B.A.iBdy.V-V}] - -POLYGON( -(260 130, 360 130, 280 40, 170 40, 260 130)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-4: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.NV-NV}] - -POLYGON( -(240 110, 340 110, 290 60, 190 60, 240 110)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -A/Ah-5-5: polygon A within polygon B, the boundary of A touching the inner boundary of B [dim(2){A.A.Int = B.A.Int}, dim(2){A.A.Ext = B.A.Int}, dim(1){A.A.Bdy.V-V = B.A.iBdy.V-V}] - -POLYGON( -(250 120, 350 120, 280 50, 180 50, 250 120)) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 250 120, 180 50, 100 50, 170 120)) - - -true - - - -Ah/Ah-1-1: same polygons (with a hole) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(120 180, 50 50, 200 50, 120 180)) - - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(120 180, 50 50, 200 50, 120 180)) - - -true - - - -A2h/A2h-1-1: same polygons (with two holes) [dim(2){A.A.Int = B.A.Int}, dim(1){A.A.oBdy.SP-EP = B.A.oBdy.SP-EP}, dim(1){A.A.iBdy.SP-EP = B.A.iBdy.SP-EP}] - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(140 40, 40 40, 40 170, 140 40), -(110 190, 210 190, 210 50, 110 190)) - - -POLYGON( -(230 210, 230 20, 20 20, 20 210, 230 210), -(140 40, 40 40, 40 170, 140 40), -(110 190, 210 190, 210 50, 110 190)) - - -true - - - -A/mA-3-1: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.CP = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - -POLYGON( -(280 190, 330 150, 200 110, 150 150, 280 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-2: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A1.oBdy.CP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - -POLYGON( -(80 190, 220 190, 140 110, 0 110, 80 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-3: a polygon touching multipolygon at two points [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}, dim(0){A.A.oBdy.V = B.2A1.oBdy.NV}] - -POLYGON( -(330 150, 200 110, 150 150, 280 190, 330 150)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-4: a polygon touching multipolygon at one spoint [dim(2){A.A.Int = B.2A.Ext}, dim(0){A.A.oBdy.V = B.2A2.oBdy.NV}] - -POLYGON( -(290 190, 340 150, 220 120, 170 170, 290 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-5: a polygon touching multipolygon along boundaries [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.SP-V = B.2A2.oBdy.V-V}, dim(1){A.A.oBdy.V-V = B.2A1.oBdy.V-SP}] - -POLYGON( -(220 190, 340 190, 260 110, 140 110, 220 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-3-6: a polygon touching multipolygon along boundaries and at a point [dim(2){A.A.Int = B.2A.Ext}, dim(1){A.A.oBdy.V-NV = B.2A1.oBdy.NV-SP}, dim(0){A.A.oBdy.V = B.2A2.oBdy.V}] - -POLYGON( -(140 190, 220 190, 100 70, 20 70, 140 190)) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -A/mA-6-1: a polygon overlapping multipolygon [dim(2){A.A.Int = B.4A.Int}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}, dim(0){A.A.Bdy.NV = B.A.Bdy.V}, dim(0){A.A.Bdy.NV = B.A.Bdy.CP}] - -POLYGON( -(140 220, 60 140, 140 60, 220 140, 140 220)) - - -MULTIPOLYGON( -( -(100 20, 180 20, 180 100, 100 100, 100 20)), -( -(20 100, 100 100, 100 180, 20 180, 20 100)), -( -(100 180, 180 180, 180 260, 100 260, 100 180)), -( -(180 100, 260 100, 260 180, 180 180, 180 100))) - - -true - - - -mA/mA-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - -MULTIPOLYGON( -( -(110 110, 70 200, 150 200, 110 110)), -( -(110 110, 150 20, 70 20, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110))) - - -true - - - -mAh/mAh-3-1: MultiPolygon touching MultiPolygon [dim(0){A.mA.Bdy.TP = B.mA.Bdy.TP}] - -MULTIPOLYGON( -( -(110 110, 70 200, 150 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 150 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-3-2: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - -MULTIPOLYGON( -( -(110 110, 70 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-3-3: MultiPolygon touching MultiPolygon [dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.NV-EP = B.mA.Bdy.V-SP}, dim(1){A.mA.Bdy.SP-NV = B.mA.Bdy.EP-V}] - -MULTIPOLYGON( -( -(110 110, 20 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 20 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-6-1: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - -MULTIPOLYGON( -( -(110 110, 70 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 160 160, 210 110, 160 60, 110 110), -(110 110, 160 130, 160 90, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - -mAh/mAh-6-2: MultiPolygon touching MultiPolygon [dim(2){A.mA.Int = B.mA.Int}] - -MULTIPOLYGON( -( -(110 110, 70 200, 200 200, 110 110), -(110 110, 100 180, 120 180, 110 110)), -( -(110 110, 200 20, 70 20, 110 110), -(110 110, 120 40, 100 40, 110 110))) - - -MULTIPOLYGON( -( -(110 110, 70 200, 210 110, 70 20, 110 110), -(110 110, 110 140, 150 110, 110 80, 110 110)), -( -(110 110, 60 60, 10 110, 60 160, 110 110), -(110 110, 60 90, 60 130, 110 110))) - - -true - - - - -AC A-shells overlapping B-shell at A-vertex - -POLYGON( -(100 60, 140 100, 100 140, 60 100, 100 60)) - - -MULTIPOLYGON( -( -(80 40, 120 40, 120 80, 80 80, 80 40)), -( -(120 80, 160 80, 160 120, 120 120, 120 80)), -( -(80 120, 120 120, 120 160, 80 160, 80 120)), -( -(40 80, 80 80, 80 120, 40 120, 40 80))) - - -true - - - - -L/A-3-1: a line touching the closing point of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.CP}] - -LINESTRING(150 150, 40 230) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-2: the start and end points of a LineString touching the boundary (at non-vertices) of a polygon [dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - -LINESTRING(40 40, 50 130, 130 130) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-3: the end point of a line touching the closing point of a polygon [dim(0){A.L.Bdy.EP = B.oBdy.CP}] - -LINESTRING(40 230, 150 150) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-4: an entire LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-EP = B.oBdy.NV-NV}] - -LINESTRING(210 150, 330 150) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-5: the start portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}] - -LINESTRING(200 150, 310 150, 360 220) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-6: the start portion and the end point of a LineString touching the boundary of a polygon [dim(1){A.L.Int.SP-V = B.oBdy.NV-NV}, dim(0){A.L.Bdy.EP = B.A.oBdy.V}] - -LINESTRING(180 150, 250 150, 230 250, 370 250, 410 150) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-3-7: the middle portion of a LineString touching the boundary (at non-vertices) of a polygon [dim(1){A.L.Int.V-V = B.oBdy.NV-NV}] - -LINESTRING(210 210, 220 150, 320 150, 370 210) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-1: a line at non-vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-EP = B.A.Int}] - -LINESTRING(20 60, 150 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-2: a line at non-vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.NV}, dim(1){A.L.Int.NV-NV = B.A.Int}] - -LINESTRING(60 90, 310 180) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-3: a line at non-vertex crossing vertex boundary of polygon [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-EP = B.A.Int}] - -LINESTRING(90 210, 210 90) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-4: a line at non-vertex crossing vertex boundaries of polygon twice [dim(0){A.L.Int.NV = B.A.oBdy.V}, dim(1){A.L.Int.NV-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.oBdy.CP}] - -LINESTRING(290 10, 130 170) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-5: a line at vertex crossing non-vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - -LINESTRING(30 100, 100 100, 180 100) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-6: a line at vertex crossing non-vertex boundaries of polygon twice [dim(0){A.L.Int.V = B.A.oBdy.NV}, dim(1){A.L.Int.V-V = B.A.Int}] - -LINESTRING(20 100, 100 100, 360 100, 410 100) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-4-7: a line at vertex crossing vertex boundary of polygon [dim(0){A.L.Int.V = B.A.oBdy.V}, dim(1){A.L.Int.V-EP = B.A.Int}] - -LINESTRING(90 210, 150 150, 210 90) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-1: an entire line within a polygon [dim(1){A.L.Int.SP-EP = B.A.Int}] - -LINESTRING(180 90, 280 120) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-2: a line within a polygon but the line's both ends touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}, dim(0){A.L.Bdy.EP = B.oBdy.NV}] - -LINESTRING(70 70, 80 20) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-3: a line within a polygon but the line's start point touching the boundary of the polygon [dim(1){A.L.Int.SP-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.oBdy.NV}] - -LINESTRING(130 20, 150 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-4: a line within a polygon but the line's start point and middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}, dim(0){A.L.Bdy.SP = B.A.oBdy.NV}] - -LINESTRING(70 70, 80 20, 140 20, 150 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/A-5-5: a line within a polygon but the line's middle portion touching the boundary of the polygon [dim(1){A.L.Int.SP-V = B.A.Int}, dim(1){A.L.Int.V-V = B.A.oBdy.NV-NV}, dim(1){A.L.Int.V-EP = B.A.Int}] - -LINESTRING(170 50, 170 20, 240 20, 260 60) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150)) - - -true - - - -L/Ah-2-1: a line outside a polygon [dim(1){A.L.Int.SP-EP = B.A.Ext}] - -LINESTRING(50 100, 140 190, 280 190) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-2-2: a line inside a polygon's hole [dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - -LINESTRING(140 60, 180 100, 290 100) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-3-1: the start point of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}] - -LINESTRING(170 120, 210 80, 270 80) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-3-2: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Bdy.SP = B.A.iBdy.CP}, dim(1){A.L.Int.SP-EP = B.A.Ext.h}, dim(0){A.L.Bdy.SP = B.A.iBdy.CP}] - -LINESTRING(170 120, 260 50) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -L/Ah-3-1: both ends of a line touching the inner boundary of a polygon [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(190 90, 190 270) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(190 190, 280 50, 100 50, 190 190)) - - -true - - - -L/Ah-3-2: a line at a non-vertex crossing the boundary of a polygon where the closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(60 160, 150 70) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(110 110, 250 100, 140 30, 110 110)) - - -true - - - -L/Ah-3-3: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(60 160, 150 70) - - -POLYGON( -(190 190, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/Ah-3-4: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.NV = B.A.Bdy.TP}] - -LINESTRING(60 160, 150 70) - - -POLYGON( -(190 190, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/Ah-3-5: a line crossing polygon boundary where the closing point of the hole touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(190 90, 190 190, 190 270) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(190 190, 280 50, 100 50, 190 190)) - - -true - - - -L/Ah-3-6: a line at a vertex crossing the boundary of a polygon where closing point of the hole touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(60 160, 110 110, 150 70) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(110 110, 250 100, 140 30, 110 110)) - - -true - - - -L/Ah-3-7: a line at a vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a non-vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(60 160, 110 110, 150 70) - - -POLYGON( -(190 190, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/Ah-3-8: a line at a non-vertex crossing the boundary of a polygon where the hole at a vertex touches the shell at a vertex [dim(0){A.L.Int.V = B.A.Bdy.TP}] - -LINESTRING(60 160, 110 110, 150 70) - - -POLYGON( -(190 190, 110 110, 20 20, 360 20, 190 190), -(250 100, 110 110, 140 30, 250 100)) - - -true - - - -L/A2h-3-1: the start point a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.SP = B.A.iBdy.TP}] - -LINESTRING(130 110, 180 110, 190 60) - - -POLYGON( -(20 200, 240 200, 240 20, 20 20, 20 200), -(130 110, 60 180, 60 40, 130 110), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-2: the interior (at a non-vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - -LINESTRING(80 110, 180 110) - - -POLYGON( -(20 200, 240 200, 240 20, 20 20, 20 200), -(130 110, 60 180, 60 40, 130 110), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-3: the interior (at a non-vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy1.TP}] - -LINESTRING(80 110, 180 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(60 180, 130 110, 60 40, 60 180), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-4: the interior (at a non-vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.NV = B.A.iBdy.TP}] - -LINESTRING(80 110, 170 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(130 110, 60 40, 60 180, 130 110), -(130 180, 130 40, 200 110, 130 180)) - - -true - - - -L/A2h-3-5: the start point a line touching the closing point and a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - -LINESTRING(80 110, 130 110, 170 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(130 110, 60 40, 60 180, 130 110), -(130 180, 130 40, 200 110, 130 180)) - - -true - - - -L/A2h-3-6: the interior (at a vertex) of a line touching the closing points of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - -LINESTRING(80 110, 130 110, 180 110) - - -POLYGON( -(20 200, 240 200, 240 20, 20 20, 20 200), -(130 110, 60 180, 60 40, 130 110), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-7: the interior (at a vertex) of a line touching the closing point and at a vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy1.TP}] - -LINESTRING(80 110, 130 110, 180 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(60 180, 130 110, 60 40, 60 180), -(130 110, 200 40, 200 180, 130 110)) - - -true - - - -L/A2h-3-8: the interior (at a vertex) of a line touching the closing point and at a non-vertex of two connected holes in a polygon [dim(0){A.L.Int.V = B.A.iBdy.TP}] - -LINESTRING(80 110, 130 110, 170 110) - - -POLYGON( -(20 200, 20 20, 240 20, 240 200, 20 200), -(130 110, 60 40, 60 180, 130 110), -(130 180, 130 40, 200 110, 130 180)) - - -true - - - -L/mA-4-1: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-NV = B.2A1.Int}, dim (1){A.L.Int.NV-EP = B.2A2.Int}] - -LINESTRING(160 70, 320 230) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -L/mA-4-2: a line intersecting the interior and exterior of MultiPolygon [dim(1){A.L.Int.SP-V = B.2A1.Int}, dim (1){A.L.Int.V-EP = B.2A2.Int}] - -LINESTRING(160 70, 200 110, 280 190, 320 230) - - -MULTIPOLYGON( -( -(140 110, 260 110, 170 20, 50 20, 140 110)), -( -(300 270, 420 270, 340 190, 220 190, 300 270))) - - -true - - - -L/mA-5-1: a line within two connected polygons [dim(1){A.L.Int = B.2A.Int}, dim(0){A.L.Int.NV = B.2A.Bdy.TP] - -LINESTRING(70 50, 70 150) - - -MULTIPOLYGON( -( -(0 0, 0 100, 140 100, 140 0, 0 0)), -( -(20 170, 70 100, 130 170, 20 170))) - - -true - - - -RL/A-3-1: a LinearRing touching a polygon's closing point [dim(0){A.RL.Int.CP = B.A.Bdy.CP}] - -LINESTRING(110 110, 20 200, 200 200, 110 110) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-3-2: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.Bdy.NV}] - -LINESTRING(150 70, 160 110, 200 60, 150 70) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-3-3: a LinearRing touching a polygon's boundary at a non-vertex [dim(0){A.RL.Int.CP = B.A.iBdy.NV}] - -LINESTRING(80 60, 120 40, 120 70, 80 60) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-3-4: a LinearRing on the boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.Bdy.SP-EP}] - -LINESTRING(20 20, 200 20, 110 110, 20 20) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-3-5: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-EP = B.A.iBdy.SP-EP}] - -LINESTRING(110 90, 170 30, 50 30, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-3-6: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.oBdy.SP-NV}] - -LINESTRING(110 110, 170 50, 170 110, 110 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-3-7: a LinearRing on the inner boundary of a polygon [dim(1){A.RL.Int.SP-V = B.A.iBdy.SP-NV}] - -LINESTRING(110 90, 70 50, 130 50, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-4-1: a LinearRing crossing a polygon [dim(1){A.RL.Int.CP-NV = B.A.Int}, dim(0){A.L.Int.NV = B.A.Bdy.NV}] - -LINESTRING(110 60, 20 150, 200 150, 110 60) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-4-2: a LinearRing crossing a polygon with a hole [dim(1){A.RL.Int.NV-NV = B.A.Int}, dim(0){A.RL.Int.NV = B.A.oBdy.CP}, dim(0){A.RL.Int.NV = B.A.iBdy.CP}, dim(0){A.RL.Int.NV = B.A.oBdy.NV}, dim(0){A.RL.Int.NV = B.A.iBdy.NV}] - -LINESTRING(110 130, 110 70, 200 100, 110 130) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 50 30, 170 30, 110 90)) - - -true - - - -RL/A-5-1: a LinearRing within a polygon [dim(1){A.RL.Int.SP-EP = B.A.Int}] - -LINESTRING(110 90, 160 40, 60 40, 110 90) - - -POLYGON( -(20 20, 200 20, 110 110, 20 20)) - - -true - - - -RL/A-5-2: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}] - -LINESTRING(110 100, 40 30, 180 30, 110 100) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -RL/A-5-3: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.L.Int.CP = B.A.oBdy.CP}] - -LINESTRING(110 110, 180 30, 40 30, 110 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -RL/A-5-4: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(0){A.RL.Int.CP = B.A.iBdy.CP}] - -LINESTRING(110 90, 180 30, 40 30, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -RL/A-5-5: a LinearRing within a polygon with a hole [dim(1){A.RL.Int.SP-EP = B.A.Int}, dim(1){A.RL.Int.SP-NV = B.A.Bdy.iBdy.SP-V}] - -LINESTRING(110 90, 50 30, 180 30, 110 90) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110), -(110 90, 60 40, 160 40, 110 90)) - - -true - - - -nsL/A-3-1: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SP = B.A.Bdy.CP}] - -LINESTRING(110 110, 200 200, 200 110, 110 200) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-2: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPb = B.A.Bdy.CP}] - -LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-3: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPo = B.A.Bdy.CP}] - -LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-4: a non-simple LineString touching a polygon [dim(0){A.nsL.Bdy.SPx = B.A.Bdy.CP}] - -LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-3-5: a non-simple LineString touching a polygon [dim(1){A.nsL.Int.SPb-Vo = B.A.Bdy.SP-NV}] - -LINESTRING(110 110, 170 50, 20 200, 20 110, 200 110) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-4-1: a non-simple LineString crossing a polygon [dim(1){A.nsL.Int.V-V-NV = B.A.Int}, dim(1){A.nsL.SPx-V = B.A.Bdy.SP-NV}] - -LINESTRING(110 110, 180 40, 110 40, 110 180) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-5-1: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}] - -LINESTRING(110 60, 50 30, 170 30, 90 70) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/A-5-2: a non-simple LineString within a polygon [dim(1){A.nsL.Int.SPx-EP = B.A.Int}, dim(1){A.nsL.Int.SPx-V = B.A.Bdy.SP-NV}] - -LINESTRING(110 110, 180 40, 110 40, 110 110, 70 40) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -nsL/Ah: the self-crossing point of a non-simple LineString touching the closing point of the inner boundary of a polygon [dim(0){A.nsL.Int.V = B.A.iBdy.CP}] - -LINESTRING(230 70, 170 120, 190 60, 140 60, 170 120, 270 90) - - -POLYGON( -(150 150, 410 150, 280 20, 20 20, 150 150), -(170 120, 330 120, 260 50, 100 50, 170 120)) - - -true - - - -mL/A-3-1: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPb = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(200 200, 110 110, 20 210, 110 110)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-3-2: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPo = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(60 180, 60 110, 160 110, 110 110)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-3-3: MultiLineString touching a polygon's closing point [dim(0){A.mL.Bdy.SPx = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(200 200, 110 110, 20 200, 110 200, 110 110)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-1: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVb = B.A.Int}, dim(0){A.mL.Int.NVb = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 50, 110 170, 110 70, 110 150, 200 150)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-2: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVo = B.A.Int}, dim(0){A.mL.Int.NVo = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(50 110, 170 110, 110 170, 110 50, 110 170, 110 50)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-3: MultiLineString crossing a polygon [dim(1){A.mL.Int.SP-NVx = B.A.Int}, dim(0){A.mL.Int.NVx = B.A.Bdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 60, 110 160, 200 160)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-4-4: MultiLineString crossing a polygon [dim(1){A.mL.Int.Vb-Vb = B.A.Int}, dim(0){A.mL.Int.Vb = B.A.oBdy.CP}, dim(0){A.mL.Int.Vb = B.A.iBdy.CP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 60, 110 160, 200 160)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-5-1: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - -MULTILINESTRING( -(110 100, 40 30, 180 30), -(170 30, 110 90, 50 30)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/A-5-2: MultiLineString within a polygon [dim(1){A.mL.Int.SP-EP = B.A.Int}] - -MULTILINESTRING( -(110 110, 60 40, 70 20, 150 20, 170 40), -(180 30, 40 30, 110 80)) - - -POLYGON( -(110 110, 200 20, 20 20, 110 110)) - - -true - - - -mL/mA-3-1: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPb = B.mA.Bdy.TP}] - -MULTILINESTRING( -(20 110, 200 110, 200 160), -(110 110, 200 110, 200 70, 20 150)) - - -MULTIPOLYGON( -( -(110 110, 20 20, 200 20, 110 110)), -( -(110 110, 20 200, 200 200, 110 110))) - - -true - - - -mL/mA-3-2: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPo = B.mA.Bdy.TP}] - -MULTILINESTRING( -(20 160, 70 110, 150 110, 200 160), -(110 110, 20 110, 50 80, 70 110, 200 110)) - - -MULTIPOLYGON( -( -(110 110, 20 20, 200 20, 110 110)), -( -(110 110, 20 200, 200 200, 110 110))) - - -true - - - -mL/mA-3-3: MultiLineString within a MultiPolygon [dim(0){A.mL.Bdy.SPx = B.mA.Bdy.TP}] - -MULTILINESTRING( -(20 110, 200 110), -(110 110, 20 170, 20 130, 200 90)) - - -MULTIPOLYGON( -( -(110 110, 20 20, 200 20, 110 110)), -( -(110 110, 20 200, 200 200, 110 110))) - - -true - - - - -LC - topographically equal with no boundary - -LINESTRING(0 0, 0 50, 50 50, 50 0, 0 0) - - -MULTILINESTRING( -(0 0, 0 50), -(0 50, 50 50), -(50 50, 50 0), -(50 0, 0 0)) - - -true - - - -LC - intersection (containment) along mod-2 A-Int line segment - -LINESTRING(40 180, 140 180) - - -MULTIPOLYGON( -( -(20 320, 180 320, 180 180, 20 180, 20 320)), -( -(20 180, 20 80, 180 80, 180 180, 20 180))) - - -true - - - -LC - intersection (overlap) along mod-2 A-Int line segment - -LINESTRING(40 180, 140 180) - - -MULTIPOLYGON( -( -(20 320, 180 320, 180 180, 20 180, 20 320)), -( -(60 180, 60 80, 180 80, 180 180, 60 180))) - - -true - - - -LC - equal with boundary intersection - -LINESTRING(0 0, 60 0, 60 60, 60 0, 120 0) - - -MULTILINESTRING( -(0 0, 60 0), -(60 0, 120 0), -(60 0, 60 60)) - - -true - - - - -L/L.1-3-1: touching at the start points of two lines [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(40 40, 60 120) - - -true - - - -L/L.1-3-2: start point of one line touching end point of another line [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(60 240, 40 40) - - -true - - - -L/L.1-3-3: start point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.SP = B.L.Int.NV}] - -LINESTRING(40 40, 180 180) - - -LINESTRING(120 120, 20 200) - - -true - - - -L/L.1-3-4: touching at the end points of two lines [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(60 240, 120 120) - - -true - - - -L/L.1-3-5: end point of a line touching the interior of another line at a non-vertex [dim(0){A.L.Bdy.EP = B.L.Int.NV}] - -LINESTRING(40 40, 180 180) - - -LINESTRING(20 180, 140 140) - - -true - - - -L/L.1-4-1: two lines crossing at non-vertex [dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(40 40, 120 120) - - -LINESTRING(40 120, 120 40) - - -true - - - -L/L.1-1-1: equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(40 40, 100 100) - - -LINESTRING(40 40, 100 100) - - -true - - - -L/L.1-1-2: equal lines but points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - -LINESTRING(40 40, 100 100) - - -LINESTRING(100 100, 40 40) - - -true - - - -L/L.1-2-1: dim(1){A.L.Int.SP-EP = B.L.Ext} - -LINESTRING(40 40, 120 120) - - -LINESTRING(40 120, 120 160) - - -true - - - -L/L.1-5-1: line A containing line B [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(20 20, 180 180) - - -LINESTRING(20 20, 180 180) - - -true - - - -L/L.1-5-2: line B is part of line A [dim(1){A.L.Int.SP-NV) = B.L.Int.SP-EP}] - -LINESTRING(20 20, 180 180) - - -LINESTRING(20 20, 110 110) - - -true - - - -L/L.1-5-3: Line B is part of line A (in the middle portion) [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - -LINESTRING(20 20, 180 180) - - -LINESTRING(50 50, 140 140) - - -true - - - -L/L.1-6-1: start portions of two lines overlapping [dim(1){A.L.Int.SP-NV = B.L.Int.SP-NV] - -LINESTRING(180 180, 40 40) - - -LINESTRING(120 120, 260 260) - - -true - - - -L/L.1-6-2: end portions of two lines overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.NV-EP] - -LINESTRING(40 40, 180 180) - - -LINESTRING(260 260, 120 120) - - -true - - - -L/L.1-6-3: end portion of line A overlapping the start portion of line B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-NV] - -LINESTRING(40 40, 180 180) - - -LINESTRING(120 120, 260 260) - - -true - - - -L/L.2-3-1: two LineStrings touching at start points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(40 40, 20 100, 40 160, 20 200) - - -true - - - -L/L.2-3-2: start point of LineStrings A touching the end point of LineString B [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(20 200, 40 160, 20 100, 40 40) - - -true - - - -L/L.2-3-3: two LineStrings touching at end points [dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - -LINESTRING(80 240, 200 120, 100 100, 40 40) - - -LINESTRING(20 200, 40 160, 20 100, 40 40) - - -true - - - -L/L.2-3-4: both the start and end points of LineString A touching the interior of LineString B at two vertices [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(20 20, 60 60, 250 160, 310 230) - - -true - - - -L/L.2-3-5: both the start and end points of LineString A touching the interior of LineString B at two non-vertices [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.NV}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(20 20, 110 110, 200 110, 320 230) - - -true - - - -L/L.2-3-6: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Bdy.EP}] - -LINESTRING(60 110, 60 250, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-3-7: the start and end points of two LineStrings touching each other [dim(0){A.L.Bdy.SP = B.L.Bdy.EP}, dim(0){A.L.Bdy.EP = B.L.Bdy.SP}] - -LINESTRING(60 110, 60 250, 360 210) - - -LINESTRING(360 210, 310 160, 110 160, 60 110) - - -true - - - -L/L.2-3-8: start point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(160 160, 240 240) - - -true - - - -L/L.2-3-9: end point of LineString B touching LineString A at a non-vertex [dim(0){A.L.Int.NV = B.L.Bdy.EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(240 240, 160 160) - - -true - - - -L/L.2-3-10: both the start and end points of LineString B touching the interior of LineString A at two non-vertices [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(60 150, 110 100, 170 100, 110 230) - - -true - - - -L/L.2-3-11: the start point of LineString B touching the interior of LineString A at a non-vertex and the end point of LineString A touching the interior of LineString B at a vertex [dim(0){A.L.Int.NV = B.L.Bdy.SP}, dim(0){A.L.Bdy.EP = B.L.Int.V}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-3-12: start point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(200 120, 200 190, 150 240, 200 240) - - -true - - - -L/L.2-3-13: end point of LineString B touching LineString A at a vertex [dim(0){A.L.Int.V = B.L.Bdy.EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(200 240, 150 240, 200 200, 200 120) - - -true - - - -L/L.2-3-14: both the start and end points of LineString B touching the interior of LineString A at two vertices [dim(0){A.L.Int.V = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - -LINESTRING(60 60, 60 230, 140 230, 250 160) - - -LINESTRING(60 230, 80 140, 120 140, 140 230) - - -true - - - -L/L.2-4-1: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(60 110, 200 110, 250 160, 300 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-2: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - -LINESTRING(60 110, 200 110, 250 160, 300 210, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-3: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Bdy.SP}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(60 110, 220 110, 250 160, 280 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-4: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.SP}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.EP = B.L.Int.EP}] - -LINESTRING(60 110, 150 110, 200 160, 250 110, 360 110, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-5: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(130 160, 160 110, 220 110, 250 160, 250 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-6: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(130 160, 160 110, 190 110, 230 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-7: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Bdy.SP = B.L.Bdy.EP}] - -LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-8: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Bdy.EP}] - -LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 360 210, 380 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-9: two LineStrings crossing at three points [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.NV = B.L.Bdy.EP}] - -LINESTRING(130 160, 160 110, 200 110, 230 160, 260 210, 380 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-10: two LineStrings crossing at two points [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(110 160, 160 110, 200 110, 250 160, 250 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-11: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(110 160, 180 110, 250 160, 320 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-12: two LineStrings crossing on one side [dim(0){A.L.Bdy.SP = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - -LINESTRING(140 160, 180 80, 220 160, 250 80) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-13: two LineStrings crossing at a vertex for one of the LineStrings [dim(0){A.L.Int.V = B.L.Int.NV}] - -LINESTRING(40 40, 100 100, 200 120, 130 190) - - -LINESTRING(20 130, 70 130, 160 40) - - -true - - - -L/L.2-4-14: two LineStrings crossing at non-vertices for both of the LineStrings [dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(40 40, 100 100, 200 120, 130 190) - - -LINESTRING(40 160, 40 100, 110 40, 170 40) - - -true - - - -L/L.2-4-15: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.NV}, dim(0){A.L.Int.V = B.L.Int.NV}] - -LINESTRING(130 110, 180 160, 230 110, 280 160, 330 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-16: two LineStrings crossing at vertices for both LineString [dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(40 40, 100 100, 200 120, 130 190) - - -LINESTRING(30 140, 80 140, 100 100, 200 30) - - -true - - - -L/L.2-4-17: two LineStrings crossing on one side [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(110 110, 110 160, 180 110, 250 160, 250 110) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-4-18: multiple crossings [dim(0){A.L.Int.V = B.L.Int.V}, dim(0){A.L.Int.NV = B.L.Int.NV}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(20 60, 60 60, 60 140, 80 80, 100 20, 140 140, 180 20, 200 80, 220 20, -240 80, 300 80, 270 110, 200 110) - - -true - - - -L/L.2-4-19: spiky LineStrings with multiple crossing [dim(0){A.L.Int.V = B.L.Int.V}] - -LINESTRING(20 20, 230 20, 20 30, 170 30, 20 40, 230 40, 20 50, 230 60, 60 60, -230 70, 20 70, 180 80, 60 80, 230 90, 20 90, 230 100, 30 100, 210 110, 20 110, -80 120, 20 130, 170 130, 90 120, 230 130, 170 140, 230 140, 80 150, 160 140, 20 140, -70 150, 20 150, 230 160, 80 160, 230 170, 20 160, 180 170, 20 170, 230 180, 20 180, -40 190, 230 190, 20 200, 230 200) - - -LINESTRING(30 210, 30 60, 40 210, 40 30, 50 190, 50 20, 60 160, 60 50, 70 220, -70 50, 80 20, 80 210, 90 50, 90 150, 100 30, 100 210, 110 20, 110 190, 120 50, -120 180, 130 210, 120 20, 140 210, 130 50, 150 210, 130 20, 160 210, 140 30, 170 210, -150 20, 180 210, 160 20, 190 210, 180 80, 170 50, 170 20, 180 70, 180 20, 190 190, -190 30, 200 210, 200 30, 210 210, 210 20, 220 150, 220 20) - - -true - - - -L/L.2-1-1: two equal LineStrings with equal pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -true - - - -L/L.2-1-2: two equal LineStrings with points in reverse sequence [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(80 240, 200 120, 100 100, 40 40) - - -true - - - -L/L.2-1-3: two equal LineStrings with different number of points [dim(1){A.L.Int.SP-EP = B.L.Int.EP-SP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(80 240, 120 200, 200 120, 100 100, 80 80, 40 40) - - -true - - - -L/L.2-2-1: disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(260 210, 240 130, 280 120, 260 40) - - -true - - - -L/L.2-2-2: wrapping around but still disjoint [dim(1){A.L.Int.SP-EP = B.L.Ext}] - -LINESTRING(100 20, 20 20, 20 160, 210 160, 210 20, 110 20, 50 120, 120 150, 200 150) - - -LINESTRING(140 130, 100 110, 120 60, 170 60) - - -true - - - -L/L.2-5-1: LineString A containing LineString B, same pointwise [dim(1){A.L.Int.SP-EP = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-5-2: LineString A containing LineString B, LineString A with less points [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 310 160, 360 210) - - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -true - - - -L/L.2-5-3: LineString A containing LineString B [dim(1){A.L.Int.SP-V = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(60 110, 110 160, 250 160) - - -true - - - -L/L.2-5-4: LineString A containing LineString B [dim(1){A.L.Int.NV-NV = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(110 160, 310 160, 340 190) - - -true - - - -L/L.2-5-5: LineString A containing LineString B [dim(1){A.L.Int.V-NV = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(140 160, 250 160, 310 160, 340 190) - - -true - - - -L/L.2-5-6: LineString A containing LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-EP}] - -LINESTRING(60 110, 110 160, 250 160, 310 160, 360 210) - - -LINESTRING(110 160, 250 160, 310 160) - - -true - - - -L/L.2-6-1: start portions of two LineStrings overlapping [dim(1){A.L.Int.SP-V = B.L.Int.SP-V}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(200 120, 100 100, 40 40, 140 80, 200 40) - - -true - - - -L/L.2-6-2: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(280 240, 240 140, 200 120, 100 100, 40 40) - - -true - - - -L/L.2-6-3: start portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.SP-V = B.L.Int.NV-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(80 190, 140 140, 40 40) - - -true - - - -L/L.2-6-4: end portions of two LineStrings overlapping [dim(1){A.L.Int.NV-EP = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(240 200, 200 260, 80 240, 140 180) - - -true - - - -L/L.2-6-5: end portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.NV-EP = B.L.Int.SP-V}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(140 180, 80 240, 200 260, 240 200) - - -true - - - -L/L.2-6-6: end portion of LineString A overlapping end portion of LineString B, intersecting at the middle of LineString A [dim(1){A.L.Int.V-EP = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(280 240, 240 140, 200 120, 80 240) - - -true - - - -L/L.2-6-7: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-NV = B.L.Int.NV-V}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(20 80, 120 80, 200 80, 260 20) - - -true - - - -L/L.2-6-8: middle portion of LineString A overlapping start portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.SP-V}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(100 100, 200 120, 240 140, 280 240) - - -true - - - -L/L.2-6-9: middle portion of LineString A overlapping end portion of LineString B [dim(1){A.L.Int.V-V = B.L.Int.V-EP}] - -LINESTRING(40 40, 100 100, 200 120, 80 240) - - -LINESTRING(280 240, 240 140, 200 120, 100 100) - - -true - - - -L/L.2-6-10: middle portions of two LineStrings overlapping [dim(1){A.L.Int.V-V = B.L.Int.V-V}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(80 20, 80 80, 240 80, 300 20) - - -true - - - -L/L.2-6-11: middle portions of two LineStrings overlapping, multiple intersects [dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}, dim(1){A.L.Int.V-V = B.L.Int.V-NV}] - -LINESTRING(20 20, 80 80, 160 80, 240 80, 300 140) - - -LINESTRING(20 80, 80 80, 120 80, 140 140, 160 80, 200 80, 220 20, 240 80, 270 110, -300 80) - - -true - - - -L/LR-3-1: a LineString touching a LinearRing [dim(0){A.L.Bdy.SP = B.LR.Int.CP}] - -LINESTRING(100 100, 20 180, 180 180) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-4-1: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - -LINESTRING(20 100, 180 100, 100 180) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-4-2: a LineString crossing a LinearRing [dim(0){A.L.Int.NV = B.LR.Int.CP}] - -LINESTRING(100 40, 100 160, 180 160) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-4-3: a LineString crossing a LinearRing [dim(0){A.L.Int.V = B.LR.Int.CP}] - -LINESTRING(20 100, 100 100, 180 100, 100 180) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-5-1: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - -LINESTRING(100 100, 160 40) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-5-2: a LineString within a LinearRing [dim(1){A.L.Int.SP-EP = B.LR.Int.SP-NV}] - -LINESTRING(100 100, 180 20) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-5-3: a LineString within a LinearRing [dim(1){A.L.Int.SP-V-EP = B.LR.Int.NV-CP-NV}] - -LINESTRING(60 60, 100 100, 140 60) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-6-1: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-NV = B.LR.Int.SP-V}] - -LINESTRING(100 100, 190 10, 190 100) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-6-2: a LineString crossing a LinearRing [dim(1){A.L.Int.SP-V = B.LR.Int.SP-NV}] - -LINESTRING(100 100, 160 40, 160 100) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/LR-6-3: a LineString crossing a LinearRing [dim(1){A.L.Int.NV-V = B.LR.Int.SP-NV}] - -LINESTRING(60 140, 160 40, 160 140) - - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80, 80 20, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's end point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 140 80, 80 20, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80, 80 20, 80 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 140 80, 80 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's closing point with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.CPx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(80 80, 20 80, 20 140, 140 20, 80 20, 80 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(20 140, 140 20, 100 20, 100 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 120 80, 80 20, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 140 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a non-vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.NVx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 80 140, 80 20) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex [dim(0){A.L.Int.NV = B.nsL.Int.V}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 80 80, 20 80, 50 140, 50 60) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with both crossing and overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vb}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 120 80, 80 20, 80 80, 80 140) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with overlapping line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vo}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 80 80, 140 80) - - -true - - - -L/nsL: A line's interior at a non-vertex intersecting a non-simple linestring's interior at a vertex with crossing line segments [dim(0){A.L.Int.NV = B.nsL.Int.Vx}] - -LINESTRING(20 20, 140 140) - - -LINESTRING(140 80, 20 80, 80 140, 80 80, 80 20) - - -true - - - -L/nsL.1-3-1: start point of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - -LINESTRING(130 150, 220 150, 220 240) - - -LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - -true - - - -L/nsL.1-3-2: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - -LINESTRING(30 150, 130 150, 250 150) - - -LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - -true - - - -L/nsL.1-3-3: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - -LINESTRING(30 150, 250 150) - - -LINESTRING(130 240, 130 150, 220 20, 50 20, 130 150) - - -true - - - -L/nsL.1-3-4: the interior of a LineString touching the self-intersecting point of a non-simple LineString [dim(0){A.L.Int.V = B.nsL.Bdy.EPx}] - -LINESTRING(30 150, 130 150, 250 150) - - -LINESTRING(130 240, 130 20, 30 20, 130 150) - - -true - - - -L/nsL.1-4: a Line crossing a non-simple LineString at non-vertices [dim(0){A.L.Int.NV = B.nsL.Int.NV}] - -LINESTRING(30 150, 250 150) - - -LINESTRING(120 240, 120 20, 20 20, 120 170) - - -true - - - -nsL.5/L-3-1: switching the geometries for case L/nsL.5-3-1 [dim(0){A.nsL.Bdy.EPx = B.L.Bdy.SP}] - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -LINESTRING(110 110, 200 110) - - -true - - - -L/nsL.5-3-2: the start point of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Bdy.SP = B.nsL.Bdy.EPx}] - -LINESTRING(110 110, 200 110) - - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -L/nsL.5-3-3: the interior of a line touching the self-intersecting and self-crossing point of a non-simple LineString [dim(0){A.L.Int.NV = B.nsL.Bdy.EPx}] - -LINESTRING(20 110, 200 110) - - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -nsL.5/L-3-4 touches dim(0){A.nsL.Bdy.EPx = B.L.Int.NV} - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -LINESTRING(20 110, 200 110) - - -true - - - -L/nsL.10-6-1: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.EPx-NVx}] - -LINESTRING(90 200, 90 130, 110 110, 150 200) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -L/nsL.10-6-2: the middle portion of a line overlapping from the self-intersecting to the self-crossing a non-simple LineString [dim(1){A.L.Int.V-V = B.nsL.Int.NVx-EPx}] - -LINESTRING(200 110, 110 110, 90 130, 90 200) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -L/mL-3-1: a line's end point touching a non-vertex with crossing line segments of a MultiLineString [dim(0){A.L.Bdy.SP = B.mL.Int.NVx] - -LINESTRING(80 80, 150 80, 210 80) - - -MULTILINESTRING( -(20 20, 140 140), -(20 140, 140 20)) - - -true - - - -LR/LR-1-1: two equal LinearRings, pointwise [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -true - - - -LR/LR-1-2: two equal LinearRings with points in reverse sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.EP-SP}, dim(0){A.LR.Int.CP = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(40 80, 260 20, 160 200, 40 80) - - -true - - - -LR/LR-1-3: two equal LinearRings with points in different sequence [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.V = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(260 20, 40 80, 160 200, 260 20) - - -true - - - -LR/LR-1-4: two equal LinearRings with different number of points [dim(1){A.LR.Int.SP-EP = B.LR.Int.SP-EP}, dim(0){A.LR.Int.CP = B.LR.Int.V}, dim(0){A.LR.Int.NV = B.LR.Int.CP}] - -LINESTRING(40 80, 160 200, 260 20, 40 80) - - -LINESTRING(100 140, 160 200, 260 20, 40 80, 100 140) - - -true - - - -LR/LR-4-1: two LinearRings crossing at closing points [dim(0){A.LR.Int.CP = B.LR.Int.CP}] - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -LINESTRING(100 100, 180 180, 20 180, 100 100) - - -true - - - -LR/LR-4-2: two LinearRings crossing at two points [dim(0){A.LR.Int.CP = B.LR.Int.CP}, dim(0){A.LR.Int.V = B.LR.Int.V},] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(40 150, 150 40, 170 20, 170 190, 40 150) - - -true - - - -LR/LR-4-3: two LinearRings crossing at the closing and a non-vertex [dim(0){A.LR.Int.CP = B.LR.Int.NV}] - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -LINESTRING(180 100, 20 100, 100 180, 180 100) - - -true - - - -LR/LR-4-4: two LinearRings crossing at the closing and a vertex [dim(0){A.LR.Int.CP = B.LR.Int.V}] - -LINESTRING(100 100, 180 20, 20 20, 100 100) - - -LINESTRING(180 180, 100 100, 20 180, 180 180) - - -true - - - -LR/LR-4-5: two LinearRings crossing at a vertex and a non-vertex [dim(0){A.LR.Int.V = B.LR.Int.NV}] - -LINESTRING(20 180, 100 100, 20 20, 20 180) - - -LINESTRING(100 20, 100 180, 180 100, 100 20) - - -true - - - -LR/LR-4-6: two LinearRings crossing at two points [dim(0){A.LR.Int.V = B.LR.Int.NV}, dim(0){A.LR.Int.V = B.LR.Int.NV},] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(170 20, 20 170, 170 170, 170 20) - - -true - - - -LR/LR-6-1: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.CP-V}] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(40 150, 150 150, 90 210, 40 150) - - -true - - - -LR/LR-6-2: two LinearRings overlapping [dim(1){A.LR.Int.CP-V = B.LR.Int.NV-NV}] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(20 150, 170 150, 90 230, 20 150) - - -true - - - -LR/LR-6-3: two LinearRings overlapping [dim(1){A.LR.Int.(V-V-V-EP) = B.LR.Int.(NV-V-V-SP)}] - -LINESTRING(40 150, 40 40, 150 40, 150 150, 40 150) - - -LINESTRING(40 150, 150 150, 150 40, 20 40, 20 150, 40 150) - - -true - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPb}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(110 110, 200 200, 110 110, 20 200, 20 110, 200 110) - - -true - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPo}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(110 110, 20 110, 200 110, 50 110, 110 170) - - -true - - - -LR/nsL-3-1: a LinearRing touching a non-simple LineString [dim(0){A.nsL.Int.CP = B.nsL.Bdy.SPx}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(110 110, 20 200, 110 200, 110 110, 200 200) - - -true - - - -LR/nsL-6-1: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(200 20, 20 200, 200 200, 110 110, 110 40) - - -true - - - -LR/nsL-6-2: a LinearRing and a non-simple LineString overlapping [dim(1){A.nsL.Int.SP-V = B.nsL.Int.NVx-SP}, dim(1){A.nsL.Int.V-EP = B.nsL.Int.EP-NVx}] - -LINESTRING(110 110, 200 20, 20 20, 110 110) - - -LINESTRING(200 20, 20 200, 200 200, 20 20) - - -true - - - -nsL/nsL-4-1: non-simple LineStrings crossing at closing points [dim(0){A.nsL.Int.CP = B.nsL.Int.CP}] - -LINESTRING(110 110, 20 110, 110 20, 20 20, 110 110) - - -LINESTRING(110 110, 200 200, 110 200, 200 110, 110 110) - - -true - - - -nsL/nsL-4-2: non-simple LineStrings crossing at two points without vertices [dim(0){A.nsL.Int.NV = B.nsL.Int.NV}] - -LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - -LINESTRING(170 100, 70 100, 170 170, 70 170, 170 100) - - -true - - - -nsL/nsL-4-3: non-simple LineStrings crossing at a point [dim(0){A.nsL.Int.NV = B.nsL.Int.V}] - -LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - -LINESTRING(110 160, 70 110, 60 160, 20 130, 110 160) - - -true - - - -nsL/nsL-4-4: non-simple LineStrings crossing at self-crossing points [dim(0){A.nsL.Int.NVx = B.nsL.Int.NVx}] - -LINESTRING(20 200, 200 200, 20 20, 200 20, 20 200) - - -LINESTRING(20 110, 200 110, 200 160, 20 60, 20 110) - - -true - - - -nsL/nsL-4-5: non-simple LineStrings crossing at vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - -LINESTRING(20 110, 110 110, 20 20, 110 20, 20 110) - - -LINESTRING(200 200, 110 110, 200 110, 110 200, 200 200) - - -true - - - -nsL/nsL-4-6: non-simple LineStrings crossing at two points with vertices [dim(0){A.nsL.Int.V = B.nsL.Int.V}] - -LINESTRING(20 120, 120 120, 20 20, 120 20, 20 120) - - -LINESTRING(220 120, 120 20, 220 20, 120 120, 220 120) - - -true - - - -mL/mL-1: MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - -MULTILINESTRING( -(70 20, 20 90, 70 170), -(70 170, 120 90, 70 20)) - - -MULTILINESTRING( -(70 20, 20 90, 70 170), -(70 170, 120 90, 70 20)) - - -true - - - -mL/mL-1-1: non-simple MultiLineString [dim(1){A.mL.Int.SP-EP = B.mL.Int.SP-EP}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -true - - - -mL/mL-1-2: equal non-simple MultiLineString with different sequence of lines and points [dim(1){A.mL.Int.SP-EP = B.mL.Int.EP-SP}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 140, 90 60, 90 20), -(170 20, 130 20, 20 20)) - - -true - - - -mL/mL-3-1: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPb}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(130 100, 130 60, 90 20, 50 90)) - - -true - - - -mL/mL-3-2: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPo}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(130 140, 130 60, 90 20, 20 90, 90 20, 130 60, 170 60)) - - -true - - - -mL/mL-3-3: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60)) - - -true - - - -mL/mL-3-4: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(130 100, 90 20)) - - -true - - - -mL/mL-3-5: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Bdy.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(120 100, 170 100, 90 20)) - - -true - - - -mL/mL-3-6: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPb}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60), -(120 100, 170 100, 90 20)) - - -true - - - -mL/mL-3-7: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPo}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(130 140, 130 60, 90 20, 20 90, 90 20)) - - -true - - - -mL/mL-3-8: non-simple MultiLineStrings touching at boundaries [dim(0){A.mL.Bdy.SPx = B.mL.Int.SPx}] - -MULTILINESTRING( -(20 20, 90 20, 170 20), -(90 20, 90 80, 90 140)) - - -MULTILINESTRING( -(90 20, 170 100, 170 140), -(170 60, 90 20, 20 60, 20 140, 90 20)) - - -true - - - -mL/mL-4-1: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vb}] - -MULTILINESTRING( -(20 20, 90 90, 20 160), -(90 160, 90 20)) - - -MULTILINESTRING( -(160 160, 90 90, 160 20), -(160 120, 120 120, 90 90, 160 60)) - - -true - - - -mL/mL-4-2: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vo}] - -MULTILINESTRING( -(20 20, 90 90, 20 160), -(90 160, 90 20)) - - -MULTILINESTRING( -(160 160, 90 90, 160 20), -(160 120, 120 120, 90 90, 120 60, 160 60)) - - -true - - - -mL/mL-4-3: non-simple MultiLineStrings crossing [dim(0){A.mL.Int.Vx = B.mL.Int.Vx}] - -MULTILINESTRING( -(20 20, 90 90, 20 160), -(90 160, 90 20)) - - -MULTILINESTRING( -(160 160, 90 90, 160 20), -(160 120, 90 90, 160 60)) - - -true - - - - -P/A-2-1: a point outside a polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(20 20) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-2-2: a point outside a converx polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(70 170) - - -POLYGON( -(110 230, 80 160, 20 160, 20 20, 200 20, 200 160, 140 160, 110 230)) - - -true - - - -P/A-2-3: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(110 130) - - -POLYGON( -(20 160, 80 160, 110 100, 140 160, 200 160, 200 20, 20 20, 20 160)) - - -true - - - -P/A-2-4: dim(0){A.P.Int = B.A.Ext} - -POINT(100 70) - - -POLYGON( -(20 150, 100 150, 40 50, 170 50, 110 150, 190 150, 190 20, 20 20, 20 150)) - - -true - - - -P/A-2-5: a point outside a concave polygon [dim(0){A.P.Int = B.A.Ext}] - -POINT(100 70) - - -POLYGON( -(20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - -true - - - -P/A-3-1: a point on the closing point of a polygon [dim(0){A.P.Int = B.A.Bdy.CP}] - -POINT(60 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-3-2: a point on the boudary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.Bdy.NV}] - -POINT(110 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-3-3: a point on the boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.Bdy.V] - -POINT(160 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/A-3-4: a point on the touching point of boudary [dim(0){A.P.Int = B.A.Bdy.TP}] - -POINT(100 150) - - -POLYGON( -(20 150, 100 150, 40 50, 160 50, 100 150, 180 150, 180 20, 20 20, 20 150)) - - -true - - - -P/A-5: a point on the interior of a polygon [dim(0){A.P.Int = B.A.Int}] - -POINT(100 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -P/Ah-2-1: a point outside of polygon with a hole [dim(0){A.P.Int = B.A.Ext}] - -POINT(60 160) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-2-2: a point inside the hole of the polygon [dim(0){A.P.Int = B.A.Ext.h}] - -POINT(190 90) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-1: a point on the closing point of the outer boundary of a polygon with a hole [dim(0){A.P.Int = B.A.oBdy.CP}] - -POINT(190 190) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-2: a point on the outer boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.oBdy.V}] - -POINT(360 20) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-3: a point on the outer boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.oBdy.NV}] - -POINT(130 130) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-4: a point on the closing point of the inner boundary of a polygon [dim(0){A.P.Int = B.A.iBdy.CP}] - -POINT(280 50) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-5: a point on the inner boundary of a polygon at a non-vertex [dim(0){A.P.Int = B.A.iBdy.NV}] - -POINT(150 100) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-3-6: a point on the inner boundary of a polygon at a vertex [dim(0){A.P.Int = B.A.iBdy.V}] - -POINT(100 50) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/Ah-5: a point inside the interior of a polygon with a hole [dim(0){A.P.Int = B.A.Int}] - -POINT(140 120) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/A2h-3-1: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - -POINT(190 50) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(90 50, 150 110, 190 50, 90 50), -(190 50, 230 110, 290 50, 190 50)) - - -true - - - -P/A2h-3-2: a point on the touching point of two holes in a polygon [dim(0){A.P.Int = B.A.iBdy.TP}] - -POINT(180 90) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(180 140, 180 40, 80 40, 180 140), -(180 90, 210 140, 310 40, 230 40, 180 90)) - - -true - - - -mP/A-2: 3 points outside a polygon [dim(0){A.2P.Int = B.A.Ext}] - -MULTIPOINT(20 80, 110 160, 20 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-1: one of 3 points on the closing point of the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}] - -MULTIPOINT(20 80, 60 120, 20 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-2: one of 3 points on the boundary of a polygon at a non-vertex [dim(0){A.3P3 = B.A.Bdy.NV}] - -MULTIPOINT(10 80, 110 170, 110 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-3: one of 3 points on the boundary of a polygon at a vertex [dim(0){A.3P1.Int = B.A.Bdy.V}] - -MULTIPOINT(10 80, 110 170, 160 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-4: 3 of the 5 points on the boundary of a polygon [dim(0){A.5P2.Int = B.A.Bdy.CP}, dim(0){A.5P3.Int = B.A.Bdy.NV}, dim(0){A.5P4.Int = B.A.Bdy.V}] - -MULTIPOINT(20 120, 60 120, 110 120, 160 120, 200 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-5: all 3 points on the boundary of a polygon [dim(0){A.3P1.Int = B.A.Bdy.CP}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Bdy.V}] - -MULTIPOINT(60 120, 110 120, 160 120) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-3-6: all 4 points on the boundary of a polygon [dim(0){A.4P = B.A.Bdy}] - -MULTIPOINT(60 120, 160 120, 160 40, 60 40) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-1: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.CP}, dim(0){A.3P3.Int = B.A.Int}] - -MULTIPOINT(20 150, 60 120, 110 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-2: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.V}, dim(0){A.3P3.Int = B.A.Int}] - -MULTIPOINT(110 80, 160 120, 200 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-3: 1 point outside a polygon, 1 point on the boundary and 1 point inside [dim(0){A.3P1.Int = B.A.Ext}, dim(0){A.3P2.Int = B.A.Bdy.NV}, dim(0){A.3P3.Int = B.A.Int}] - -MULTIPOINT(110 80, 110 120, 110 160) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-4: 1 point outside a polygon, 1 point inside [dim(0){A.2P1.Int = B.A.Ext}, dim(0){A.2P2.Int = B.A.Int}] - -MULTIPOINT(110 170, 110 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-4-5: 1 point outside a polygon, 2 points on the boundary and 1 point inside [dim(0){A.4P1.Int = B.A.Ext}, dim(0){A.4P2.Int = B.A.Bdy.CP}, dim(0){A.4P3.Int = B.A.Bdy.V}, dim(0){A.4P4.Int = B.A.Int}] - -MULTIPOINT(60 120, 160 120, 110 80, 110 170) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-5-1: 2 points within a polygon [dim(0){A.2P.Int = B.A.Int] - -MULTIPOINT(90 80, 130 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/A-5-2: 1 point on the boundary and 1 point inside a polygon [dim(0){A.2P1.Int = B.A.Bdy.CP}, dim(0){A.2P2.Int = B.A.Int}] - -MULTIPOINT(60 120, 160 120, 110 80) - - -POLYGON( -(60 120, 60 40, 160 40, 160 120, 60 120)) - - -true - - - -mP/Ah-2-1: 3 points outside a polygon [dim(0){A.3P.Int = B.Ah.Ext}] - -MULTIPOINT(40 170, 40 90, 130 170) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -mP/Ah-2-2: 2 points outside a polygon and 1 point inside the hole of the polygon [dim(0){A.3P1.Int = B.Ah.Ext}, dim(0){A.3P2.Int = B.Ah.Ext}, dim(0){A.3P3.Int = B.Ah.Ext.h}] - -MULTIPOINT(90 170, 280 170, 190 90) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -mP/Ah-2-3: all 3 points in polygon's hole [dim(0){A.3P.Int = B.Ah.Ext.h}] - -MULTIPOINT(190 110, 150 70, 230 70) - - -POLYGON( -(190 190, 360 20, 20 20, 190 190), -(280 50, 100 50, 190 140, 280 50)) - - -true - - - -P/mA-3-1: a point on the touching point of two polygons [dim(0){A.P.Int = B.2A.Bdy}] - -POINT(100 100) - - -MULTIPOLYGON( -( -(20 100, 20 20, 100 20, 100 100, 20 100)), -( -(100 180, 100 100, 180 100, 180 180, 100 180))) - - -true - - - -P/mA-3-2: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.CP}] - -POINT(20 100) - - -MULTIPOLYGON( -( -(20 100, 20 20, 100 20, 100 100, 20 100)), -( -(100 180, 100 100, 180 100, 180 180, 100 180))) - - -true - - - -P/mA-3-3: a point on the boundary of one of the 2 polygons [dim(0){A.P.Int = B.2A1.Bdy.V}] - -POINT(60 100) - - -MULTIPOLYGON( -( -(20 100, 20 20, 100 20, 100 100, 20 100)), -( -(100 180, 100 100, 180 100, 180 180, 100 180))) - - -true - - - -P/mA-3-4: a point touching a polygon's boundary where the boundaries touch at a point [dim(0){A.P.Int = B.2A.Bdy.TP}] - -POINT(110 110) - - -MULTIPOLYGON( -( -(110 110, 20 200, 200 200, 110 110), -(110 110, 80 180, 140 180, 110 110)), -( -(110 110, 20 20, 200 20, 110 110), -(110 110, 80 40, 140 40, 110 110))) - - -true - - - - -P/L-2: a point and a line disjoint [dim(0){A.P.Int = B.L.Ext}] - -POINT(110 200) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-3-1: a point touching the start point of a line [dim(0){A.P.Int = B.L.Bdy.SP}] - -POINT(90 80) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-3-2: a point touching the end point of a line [dim(0){A.P.Int = B.L.Bdy.EP}] - -POINT(340 240) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-5-1: a point on the line at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - -POINT(230 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/L-5-2: a point on the line at a vertex [dim(0){A.P.Int = B.L.Int.V}] - -POINT(160 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -P/LR-2-1: a point outside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - -POINT(90 150) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-2-2: a point inside a LinearRing [dim(0){A.P.Int = B.LR.Ext}] - -POINT(150 80) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-5-1: a point on the closing point of a LinearRing [dim(0){A.P.Int = B.LR.Int.CP}] - -POINT(150 150) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-5-2: a point on a LinearRing at a non-vertex [dim(0){A.P.Int = B.L.Int.NV}] - -POINT(100 20) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/LR-5-3: a point on a LinearRing at a vertex [dim(0){A.P.Int = B.L.Int.V}] - -POINT(20 20) - - -LINESTRING(150 150, 20 20, 280 20, 150 150) - - -true - - - -P/nsL.1-3-1: a point on a non-simple LineString's end point [dim(0){A.P.Int = B.nsL.Bdy.EP}] - -POINT(220 220) - - -LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - -true - - - -P/nsL.1-5-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 220 20, 20 20, 110 110, 220 220) - - -true - - - -P/nsL.1-5-2: a point a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 220 20, 20 20, 220 220) - - -true - - - -P/nsL.1-5-3: a point on a non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(110 20) - - -LINESTRING(110 110, 220 20, 20 20, 220 220) - - -true - - - -P/nsL.1-5-4: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(220 20) - - -LINESTRING(110 110, 220 20, 20 20, 220 220) - - -true - - - -P/nsL.2-5-2: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(110 20) - - -LINESTRING(220 220, 20 20, 220 20, 110 110) - - -true - - - -P/nsL.2-5-3: a point on a non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(20 20) - - -LINESTRING(220 220, 20 20, 220 20, 110 110) - - -true - - - -P/nsL.2-5-4: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(20 110) - - -LINESTRING(20 200, 20 20, 110 20, 20 110, 110 200) - - -true - - - -P/nsL.3-3-1: a point on a non-simple LineString's start point [dim(0){A.P.Int = B.nsL.Bdy.SP}] - -POINT(20 200) - - -LINESTRING(20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.3-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - -true - - - -P/nsL.3-5-2: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.3-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(80 140) - - -LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.3-5-4: a point on a non-simple LineString's interior at a two-vertex point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - -POINT(110 110) - - -LINESTRING(20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.3-5-5: a point on a non-simple LineString's interior at a vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vo}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.3-5-6: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.3-5-7: a point on a non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(20 200, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.3-5-8: a point on a non-simple LineString's interior at a two-vertex point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-1: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 140 20, 140 80, 110 110, 80 140, -20 140) - - -true - - - -P/nsL.4-3-2: a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 110 110, 80 140, 20 140) - - -true - - - -P/nsL.4-3-3:a point on a non-simple LineString's start point with crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 140 20, 140 80, 80 140, 20 140) - - -true - - - -P/nsL.4-3-4: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-5: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-6: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.4-3-7: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 110 110, 20 20, 200 20, 110 110, 200 200) - - -true - - - -P/nsL.4-3-8: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 110) - - -LINESTRING(110 110, 110 200, 20 200, 200 20, 200 110, 110 110, 200 200) - - -true - - - -P/nsL.5-3-1: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-2: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.5-3-5: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 20 110, 110 110, 20 200, 110 200, 110 110) - - -true - - - -P/nsL.6-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 160) - - -LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.6-3-2: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(110 160) - - -LINESTRING(110 160, 200 250, 110 250, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.6-3-3: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(110 160, 200 250, 110 250, 110 160, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.6-3-4: a point on a non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(110 110) - - -LINESTRING(110 160, 200 250, 110 250, 110 160, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 200 200, 110 200, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-3: a point on a closed non-simple LineString's interior at a non-vertex [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(140 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.7-5-4: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(110 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 20 20, 110 110) - - -true - - - -P/nsL.8-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - -true - - - -P/nsL.8-5-2: a point on the interior (at a non-vertex) of a closed non-simple LineString [dim(0){A.P.Int = B.nsL.Int.NV}] - -POINT(140 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - -true - - - -P/nsL.8-5-3: a point on a closed non-simple LineString's interior at a vertex [dim(0){A.P.Int = B.nsL.Int.V}] - -POINT(110 200) - - -LINESTRING(110 110, 200 200, 110 200, 110 110, 110 20, 200 20, 110 110) - - -true - - - -P/nsL.9-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.9-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(90 130, 20 130, 20 200, 90 130, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.10-3-1: a point on a non-simple LineString's start point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.10-5-1: a point on a non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(90 130, 20 130, 20 200, 200 20, 20 20, 200 200) - - -true - - - -P/nsL.11-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.EPx}] - -POINT(90 130) - - -LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.11-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 90 130, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.12-3-1: a point on a closed non-simple LineString's end point with crossing line segments [dim(0){A.P.Int = B.nsL.Bdy.SPx}] - -POINT(90 130) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.12-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 20 130, 90 130) - - -true - - - -P/nsL.13-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 200 130, -110 110) - - -true - - - -P/nsL.13-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 20 130, 20 200, 200 20, 20 20, 200 200, 200 130, 110 110) - - -true - - - -P/nsL.14-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 80 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 140 200, -110 110) - - -true - - - -P/nsL.14-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(110 110) - - -LINESTRING(110 110, 80 200, 20 200, 200 20, 20 20, 200 200, 140 200, 110 110) - - -true - - - -P/nsL.15-5-1: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(200 200, 20 20, 200 20, 20 200, 200 200) - - -true - - - -P/nsL.15-5-2: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 20 20, 200 20, 110 110, 20 200, 200 200) - - -true - - - -P/nsL.15-5-3: a point on a closed non-simple LineString's interior at a vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.Vx}] - -POINT(110 110) - - -LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200) - - -true - - - -P/nsL.16-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, -90 130) - - -true - - - -P/nsL.16-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 20 130, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - -true - - - -P/nsL.17-5-1: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 90 130, 110 110, 200 20, 20 20, 110 110, 200 200, -90 130) - - -true - - - -P/nsL.17-5-2: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - -true - - - -P/nsL.17-5-3: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 110 110, 200 20, 20 20, 110 110, 200 200, 90 130) - - -true - - - -P/nsL.17-5-4: a point on a closed non-simple LineString's closing point with crossing line segments [dim(0){A.P.Int = B.nsL.Int.CPx}] - -POINT(90 130) - - -LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - -true - - - -P/nsL.17-5-5: a point on a closed non-simple LineString's interior at a non-vertex with crossing line segments [dim(0){A.P.Int = B.nsL.Int.NVx}] - -POINT(110 110) - - -LINESTRING(90 130, 90 200, 20 200, 200 20, 20 20, 200 200, 90 130) - - -true - - - -P/nsL.18-5-1: a point on a non-simple LineString's start point with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Bdy.SPb)}] - -POINT(110 200) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.18-5-2: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 150) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.18-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 110) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.19-5-1: a point on a non-simple LineString's closing point with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.CPo}] - -POINT(110 200) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - -true - - - -P/nsL.19-5-2: a point on a non-simple LineString's interior at a non-vertex overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 150) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - -true - - - -P/nsL.19-5-3: a point on a non-simple LineString interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 110) - - -LINESTRING(110 200, 110 110, 20 20, 200 20, 110 110, 110 200) - - -true - - - -P/nsL.20-5-1: a point on a non-simple LineString's interior at a non-vertex with overlapping line segments [dim(0){A.P.Int = B.nsL.Int.NVo}] - -POINT(110 150) - - -LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsL.20-5-2: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 110) - - -LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -P/nsl.20-5-3: a point on a non-simple LineString's interior at a vertex with both crossing and overlapping line segments [dim(0){A.P.Int = B.nsL.Int.Vb}] - -POINT(110 200) - - -LINESTRING(20 200, 110 200, 110 110, 20 20, 200 20, 110 110, 110 200, 200 200) - - -true - - - -mP/L-2-1: MultiPoint and a line disjoint (points on one side of the line) [dim(0){A.3P.Int = B.L.Ext}] - -MULTIPOINT(50 250, 90 220, 130 190) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-2-2: MultiPoint and a line disjoint (points over the line but no intersection) [dim(0){A.3P.Int = B.L.Ext}] - -MULTIPOINT(180 180, 230 130, 280 80) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-3-1: one of the points intersecting the start point of a line [dim(0){A.3P2.Int = B.L.Bdy.SP}] - -MULTIPOINT(50 120, 90 80, 130 40) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-3-2: one of the points intersecting the end point of a line [dim(0){A.3P2 = B.L.Bdy.EP}] - -MULTIPOINT(300 280, 340 240, 380 200) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-1: one of the points intersecting the interior of a line at a non-vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.NV] - -MULTIPOINT(230 150, 260 120, 290 90) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-2: one of the points intersecting the interior of a line at a non-vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.NV] - -MULTIPOINT(200 190, 240 150, 270 110) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-3: one of the points intersecting the interior of a line at a vertex (points on one side of the line) [dim(0){A.3P1.Int = B.L.Int.V] - -MULTIPOINT(160 150, 190 120, 220 90) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-4-4: one of the points intersecting the interior of a line at a vertex (points over the line) [dim(0){A.3P2.Int = B.L.Int.V] - -MULTIPOINT(120 190, 160 150, 200 110) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-1: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Bdy.EP}] - -MULTIPOINT(90 80, 160 150, 340 240) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-2: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - -MULTIPOINT(90 80, 160 150, 300 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-3: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(90 80, 160 150, 240 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-4: all the points on a line [dim(0){A.3P1.Int = B.L.Bdy.SP}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(90 80, 130 120, 210 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-5: all the points on a line [dim(0){A.3P1.Int = B.L.Int.NV}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(130 120, 210 150, 340 200) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-6: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.NV}] - -MULTIPOINT(160 150, 240 150, 340 210) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-7: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.V}, dim(0){A.3P3.Int = B.Int.V}] - -MULTIPOINT(160 150, 300 150, 340 150) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - -mP/L-5-8: all the points on a line [dim(0){A.3P1.Int = B.L.Int.V}, dim(0){A.3P2.Int = B.L.Int.NV}, dim(0){A.3P3.Int = B.Bdy.EP}] - -MULTIPOINT(160 150, 240 150, 340 240) - - -LINESTRING(90 80, 160 150, 300 150, 340 150, 340 240) - - -true - - - - -P/P: same point [dim(0){A.P.Int = B.P.Int}] - -POINT(20 20) - - -POINT(20 20) - - -true - - - -P/P: different point [dim(0){A.P.Int = B.P.Ext}] - -POINT(20 20) - - -POINT(40 60) - - -true - - - -P/mP: different points [dim(0){A.P.Int = B.3P.Ext}] - -POINT(40 40) - - -MULTIPOINT(20 20, 80 80, 20 120) - - -true - - - -P/mP: point A within one of B points [dim(0){A.P.Int = B.3P1.Int}] - -POINT(20 20) - - -MULTIPOINT(20 20, 80 80, 20 120) - - -true - - - -mP/mP-1-1: same points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P2.Int = B.3P2.Int}, dim(0){A.3P3.Int = B.3P3.Int}] - -MULTIPOINT(40 40, 80 60, 120 100) - - -MULTIPOINT(40 40, 80 60, 120 100) - - -true - - - -mP/mP-1-2: same but different sequence of points [dim(0){A.3P1.Int = B.3P1.Int}, dim(0){A.3P1.Int = B.3P3.Int}, dim(0){A.3P3.Int = B.3P2.Int}] - -MULTIPOINT(40 40, 80 60, 120 100) - - -MULTIPOINT(40 40, 120 100, 80 60) - - -true - - - -mP/mP-2: different points [dim(0){A.4P.Int = B.4P.Ext}] - -MULTIPOINT(40 40, 60 100, 100 60, 120 120) - - -MULTIPOINT(20 120, 60 60, 100 100, 140 40) - - -true - - - -mP/mP-5-1: same points [dim(0){A.4P.Int = B.4P.Int}] - -MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - -MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - -true - - - -mP/mP-5-2: same points but different sequence [dim(0){A.4P.Int = B.4P.Int}] - -MULTIPOINT(20 20, 140 120, 80 70, 200 170) - - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -true - - - -mP/mP-5-3: some points same [dim(0){A.4P2.Int = B.2P1.Int}, dim(0){A.4P3.Int = B.2P2.Int}] - -MULTIPOINT(20 20, 80 70, 140 120, 200 170) - - -MULTIPOINT(80 70, 140 120) - - -true - - - -mP/mP-5-4: some points same, in a different sequence [dim(0){A.4P1.Int = B.2P2.Int}, dim(0){A.4P4.Int = B.2P1.Int}] - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -MULTIPOINT(140 120, 80 70) - - -true - - - -mP/mP-6-1: some points same, some different [dim(0){A.4P4.Int = B.3P2.Int}] - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -MULTIPOINT(80 170, 140 120, 200 80) - - -true - - - -mP/mP-6-2: dim(0){A.4P1.Int = B.4P4.Int}, dim(0){A.4P4.Int = B.4P2.Int} - -MULTIPOINT(80 70, 20 20, 200 170, 140 120) - - -MULTIPOINT(80 170, 140 120, 200 80, 80 70) - - -true - - - diff -Nru geos-3.1.0/tests/xmltester/tinyxml/tinystr.cpp geos-3.2.2/tests/xmltester/tinyxml/tinystr.cpp --- geos-3.1.0/tests/xmltester/tinyxml/tinystr.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tinyxml/tinystr.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,116 @@ +/* +www.sourceforge.net/projects/tinyxml +Original file by Yves Berquin. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +/* + * THIS FILE WAS ALTERED BY Tyge Løvset, 7. April 2005. + */ + + +#ifndef TIXML_USE_STL + +#include "tinystr.h" + +// Error value for find primitive +const TiXmlString::size_type TiXmlString::npos = static_cast< TiXmlString::size_type >(-1); + + +// Null rep. +TiXmlString::Rep TiXmlString::nullrep_ = { 0, 0, { '\0' } }; + + +void TiXmlString::reserve (size_type cap) +{ + if (cap > capacity()) + { + TiXmlString tmp; + tmp.init(length(), cap); + memcpy(tmp.start(), data(), length()); + swap(tmp); + } +} + + +TiXmlString& TiXmlString::assign(const char* str, size_type len) +{ + size_type cap = capacity(); + if (len > cap || cap > 3*(len + 8)) + { + TiXmlString tmp; + tmp.init(len); + memcpy(tmp.start(), str, len); + swap(tmp); + } + else + { + memmove(start(), str, len); + set_size(len); + } + return *this; +} + + +TiXmlString& TiXmlString::append(const char* str, size_type len) +{ + size_type newsize = length() + len; + if (newsize > capacity()) + { + reserve (newsize + capacity()); + } + memmove(finish(), str, len); + set_size(newsize); + return *this; +} + + +TiXmlString operator + (const TiXmlString & a, const TiXmlString & b) +{ + TiXmlString tmp; + tmp.reserve(a.length() + b.length()); + tmp += a; + tmp += b; + return tmp; +} + +TiXmlString operator + (const TiXmlString & a, const char* b) +{ + TiXmlString tmp; + TiXmlString::size_type b_len = static_cast( strlen(b) ); + tmp.reserve(a.length() + b_len); + tmp += a; + tmp.append(b, b_len); + return tmp; +} + +TiXmlString operator + (const char* a, const TiXmlString & b) +{ + TiXmlString tmp; + TiXmlString::size_type a_len = static_cast( strlen(a) ); + tmp.reserve(a_len + b.length()); + tmp.append(a, a_len); + tmp += b; + return tmp; +} + + +#endif // TIXML_USE_STL diff -Nru geos-3.1.0/tests/xmltester/tinyxml/tinystr.h geos-3.2.2/tests/xmltester/tinyxml/tinystr.h --- geos-3.1.0/tests/xmltester/tinyxml/tinystr.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tinyxml/tinystr.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,319 @@ +/* +www.sourceforge.net/projects/tinyxml +Original file by Yves Berquin. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +/* + * THIS FILE WAS ALTERED BY Tyge Lovset, 7. April 2005. + * + * - completely rewritten. compact, clean, and fast implementation. + * - sizeof(TiXmlString) = pointer size (4 bytes on 32-bit systems) + * - fixed reserve() to work as per specification. + * - fixed buggy compares operator==(), operator<(), and operator>() + * - fixed operator+=() to take a const ref argument, following spec. + * - added "copy" constructor with length, and most compare operators. + * - added swap(), clear(), size(), capacity(), operator+(). + */ + +#ifndef TIXML_USE_STL + +#ifndef TIXML_STRING_INCLUDED +#define TIXML_STRING_INCLUDED + +#include +#include + +/* The support for explicit isn't that universal, and it isn't really + required - it is used to check that the TiXmlString class isn't incorrectly + used. Be nice to old compilers and macro it here: +*/ +#if defined(_MSC_VER) && (_MSC_VER >= 1200 ) + // Microsoft visual studio, version 6 and higher. + #define TIXML_EXPLICIT explicit +#elif defined(__GNUC__) && (__GNUC__ >= 3 ) + // GCC version 3 and higher.s + #define TIXML_EXPLICIT explicit +#else + #define TIXML_EXPLICIT +#endif + + +/* + TiXmlString is an emulation of a subset of the std::string template. + Its purpose is to allow compiling TinyXML on compilers with no or poor STL support. + Only the member functions relevant to the TinyXML project have been implemented. + The buffer allocation is made by a simplistic power of 2 like mechanism : if we increase + a string and there's no more room, we allocate a buffer twice as big as we need. +*/ +class TiXmlString +{ + public : + // The size type used + typedef size_t size_type; + + // Error value for find primitive + static const size_type npos; // = -1; + + + // TiXmlString empty constructor + TiXmlString () : rep_(&nullrep_) + { + } + + // TiXmlString copy constructor + TiXmlString ( const TiXmlString & copy) : rep_(0) + { + init(copy.length()); + memcpy(start(), copy.data(), length()); + } + + // TiXmlString constructor, based on a string + TIXML_EXPLICIT TiXmlString ( const char * copy) : rep_(0) + { + init( static_cast( strlen(copy) )); + memcpy(start(), copy, length()); + } + + // TiXmlString constructor, based on a string + TIXML_EXPLICIT TiXmlString ( const char * str, size_type len) : rep_(0) + { + init(len); + memcpy(start(), str, len); + } + + // TiXmlString destructor + ~TiXmlString () + { + quit(); + } + + // = operator + TiXmlString& operator = (const char * copy) + { + return assign( copy, (size_type)strlen(copy)); + } + + // = operator + TiXmlString& operator = (const TiXmlString & copy) + { + return assign(copy.start(), copy.length()); + } + + + // += operator. Maps to append + TiXmlString& operator += (const char * suffix) + { + return append(suffix, static_cast( strlen(suffix) )); + } + + // += operator. Maps to append + TiXmlString& operator += (char single) + { + return append(&single, 1); + } + + // += operator. Maps to append + TiXmlString& operator += (const TiXmlString & suffix) + { + return append(suffix.data(), suffix.length()); + } + + + // Convert a TiXmlString into a null-terminated char * + const char * c_str () const { return rep_->str; } + + // Convert a TiXmlString into a char * (need not be null terminated). + const char * data () const { return rep_->str; } + + // Return the length of a TiXmlString + size_type length () const { return rep_->size; } + + // Alias for length() + size_type size () const { return rep_->size; } + + // Checks if a TiXmlString is empty + bool empty () const { return rep_->size == 0; } + + // Return capacity of string + size_type capacity () const { return rep_->capacity; } + + + // single char extraction + const char& at (size_type index) const + { + assert( index < length() ); + return rep_->str[ index ]; + } + + // [] operator + char& operator [] (size_type index) const + { + assert( index < length() ); + return rep_->str[ index ]; + } + + // find a char in a string. Return TiXmlString::npos if not found + size_type find (char lookup) const + { + return find(lookup, 0); + } + + // find a char in a string from an offset. Return TiXmlString::npos if not found + size_type find (char tofind, size_type offset) const + { + if (offset >= length()) return npos; + + for (const char* p = c_str() + offset; *p != '\0'; ++p) + { + if (*p == tofind) return static_cast< size_type >( p - c_str() ); + } + return npos; + } + + void clear () + { + //Lee: + //The original was just too strange, though correct: + // TiXmlString().swap(*this); + //Instead use the quit & re-init: + quit(); + init(0,0); + } + + /* Function to reserve a big amount of data when we know we'll need it. Be aware that this + function DOES NOT clear the content of the TiXmlString if any exists. + */ + void reserve (size_type cap); + + TiXmlString& assign (const char* str, size_type len); + + TiXmlString& append (const char* str, size_type len); + + void swap (TiXmlString& other) + { + Rep* r = rep_; + rep_ = other.rep_; + other.rep_ = r; + } + + private: + + void init(size_type sz) { init(sz, sz); } + void set_size(size_type sz) { rep_->str[ rep_->size = sz ] = '\0'; } + char* start() const { return rep_->str; } + char* finish() const { return rep_->str + rep_->size; } + + struct Rep + { + size_type size, capacity; + char str[1]; + }; + + void init(size_type sz, size_type cap) + { + if (cap) + { + // Lee: the original form: + // rep_ = static_cast(operator new(sizeof(Rep) + cap)); + // doesn't work in some cases of new being overloaded. Switching + // to the normal allocation, although use an 'int' for systems + // that are overly picky about structure alignment. + const size_type bytesNeeded = sizeof(Rep) + cap; + const size_type intsNeeded = ( bytesNeeded + sizeof(int) - 1 ) / sizeof( int ); + rep_ = reinterpret_cast( new int[ intsNeeded ] ); + + rep_->str[ rep_->size = sz ] = '\0'; + rep_->capacity = cap; + } + else + { + rep_ = &nullrep_; + } + } + + void quit() + { + if (rep_ != &nullrep_) + { + // The rep_ is really an array of ints. (see the allocator, above). + // Cast it back before delete, so the compiler won't incorrectly call destructors. + delete [] ( reinterpret_cast( rep_ ) ); + } + } + + Rep * rep_; + static Rep nullrep_; + +} ; + + +inline bool operator == (const TiXmlString & a, const TiXmlString & b) +{ + return ( a.length() == b.length() ) // optimization on some platforms + && ( strcmp(a.c_str(), b.c_str()) == 0 ); // actual compare +} +inline bool operator < (const TiXmlString & a, const TiXmlString & b) +{ + return strcmp(a.c_str(), b.c_str()) < 0; +} + +inline bool operator != (const TiXmlString & a, const TiXmlString & b) { return !(a == b); } +inline bool operator > (const TiXmlString & a, const TiXmlString & b) { return b < a; } +inline bool operator <= (const TiXmlString & a, const TiXmlString & b) { return !(b < a); } +inline bool operator >= (const TiXmlString & a, const TiXmlString & b) { return !(a < b); } + +inline bool operator == (const TiXmlString & a, const char* b) { return strcmp(a.c_str(), b) == 0; } +inline bool operator == (const char* a, const TiXmlString & b) { return b == a; } +inline bool operator != (const TiXmlString & a, const char* b) { return !(a == b); } +inline bool operator != (const char* a, const TiXmlString & b) { return !(b == a); } + +TiXmlString operator + (const TiXmlString & a, const TiXmlString & b); +TiXmlString operator + (const TiXmlString & a, const char* b); +TiXmlString operator + (const char* a, const TiXmlString & b); + + +/* + TiXmlOutStream is an emulation of std::ostream. It is based on TiXmlString. + Only the operators that we need for TinyXML have been developped. +*/ +class TiXmlOutStream : public TiXmlString +{ +public : + + // TiXmlOutStream << operator. + TiXmlOutStream & operator << (const TiXmlString & in) + { + *this += in; + return *this; + } + + // TiXmlOutStream << operator. + TiXmlOutStream & operator << (const char * in) + { + *this += in; + return *this; + } + +} ; + +#endif // TIXML_STRING_INCLUDED +#endif // TIXML_USE_STL diff -Nru geos-3.1.0/tests/xmltester/tinyxml/tinyxml.cpp geos-3.2.2/tests/xmltester/tinyxml/tinyxml.cpp --- geos-3.1.0/tests/xmltester/tinyxml/tinyxml.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tinyxml/tinyxml.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,1888 @@ +/* +www.sourceforge.net/projects/tinyxml +Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include + +#ifdef TIXML_USE_STL +#include +#include +#endif + +#include "tinyxml.h" + + +bool TiXmlBase::condenseWhiteSpace = true; + +// Microsoft compiler security +FILE* TiXmlFOpen( const char* filename, const char* mode ) +{ + #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) + FILE* fp = 0; + errno_t err = fopen_s( &fp, filename, mode ); + if ( !err && fp ) + return fp; + return 0; + #else + return fopen( filename, mode ); + #endif +} + +void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString ) +{ + int i=0; + + while( i<(int)str.length() ) + { + unsigned char c = (unsigned char) str[i]; + + if ( c == '&' + && i < ( (int)str.length() - 2 ) + && str[i+1] == '#' + && str[i+2] == 'x' ) + { + // Hexadecimal character reference. + // Pass through unchanged. + // © -- copyright symbol, for example. + // + // The -1 is a bug fix from Rob Laveaux. It keeps + // an overflow from happening if there is no ';'. + // There are actually 2 ways to exit this loop - + // while fails (error case) and break (semicolon found). + // However, there is no mechanism (currently) for + // this function to return an error. + while ( i<(int)str.length()-1 ) + { + outString->append( str.c_str() + i, 1 ); + ++i; + if ( str[i] == ';' ) + break; + } + } + else if ( c == '&' ) + { + outString->append( entity[0].str, entity[0].strLength ); + ++i; + } + else if ( c == '<' ) + { + outString->append( entity[1].str, entity[1].strLength ); + ++i; + } + else if ( c == '>' ) + { + outString->append( entity[2].str, entity[2].strLength ); + ++i; + } + else if ( c == '\"' ) + { + outString->append( entity[3].str, entity[3].strLength ); + ++i; + } + else if ( c == '\'' ) + { + outString->append( entity[4].str, entity[4].strLength ); + ++i; + } + else if ( c < 32 ) + { + // Easy pass at non-alpha/numeric/symbol + // Below 32 is symbolic. + char buf[ 32 ]; + + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); + #else + sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); + #endif + + //*ME: warning C4267: convert 'size_t' to 'int' + //*ME: Int-Cast to make compiler happy ... + outString->append( buf, (int)strlen( buf ) ); + ++i; + } + else + { + //char realc = (char) c; + //outString->append( &realc, 1 ); + *outString += (char) c; // somewhat more efficient function call. + ++i; + } + } +} + + +TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() +{ + parent = 0; + type = _type; + firstChild = 0; + lastChild = 0; + prev = 0; + next = 0; +} + + +TiXmlNode::~TiXmlNode() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } +} + + +void TiXmlNode::CopyTo( TiXmlNode* target ) const +{ + target->SetValue (value.c_str() ); + target->userData = userData; +} + + +void TiXmlNode::Clear() +{ + TiXmlNode* node = firstChild; + TiXmlNode* temp = 0; + + while ( node ) + { + temp = node; + node = node->next; + delete temp; + } + + firstChild = 0; + lastChild = 0; +} + + +TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) +{ + assert( node->parent == 0 || node->parent == this ); + assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() ); + + if ( node->Type() == TiXmlNode::DOCUMENT ) + { + delete node; + if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + node->parent = this; + + node->prev = lastChild; + node->next = 0; + + if ( lastChild ) + lastChild->next = node; + else + firstChild = node; // it was an empty list. + + lastChild = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) +{ + if ( addThis.Type() == TiXmlNode::DOCUMENT ) + { + if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + + return LinkEndChild( node ); +} + + +TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) +{ + if ( !beforeThis || beforeThis->parent != this ) { + return 0; + } + if ( addThis.Type() == TiXmlNode::DOCUMENT ) + { + if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->next = beforeThis; + node->prev = beforeThis->prev; + if ( beforeThis->prev ) + { + beforeThis->prev->next = node; + } + else + { + assert( firstChild == beforeThis ); + firstChild = node; + } + beforeThis->prev = node; + return node; +} + + +TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) +{ + if ( !afterThis || afterThis->parent != this ) { + return 0; + } + if ( addThis.Type() == TiXmlNode::DOCUMENT ) + { + if ( GetDocument() ) GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + TiXmlNode* node = addThis.Clone(); + if ( !node ) + return 0; + node->parent = this; + + node->prev = afterThis; + node->next = afterThis->next; + if ( afterThis->next ) + { + afterThis->next->prev = node; + } + else + { + assert( lastChild == afterThis ); + lastChild = node; + } + afterThis->next = node; + return node; +} + + +TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) +{ + if ( replaceThis->parent != this ) + return 0; + + TiXmlNode* node = withThis.Clone(); + if ( !node ) + return 0; + + node->next = replaceThis->next; + node->prev = replaceThis->prev; + + if ( replaceThis->next ) + replaceThis->next->prev = node; + else + lastChild = node; + + if ( replaceThis->prev ) + replaceThis->prev->next = node; + else + firstChild = node; + + delete replaceThis; + node->parent = this; + return node; +} + + +bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) +{ + if ( removeThis->parent != this ) + { + assert( 0 ); + return false; + } + + if ( removeThis->next ) + removeThis->next->prev = removeThis->prev; + else + lastChild = removeThis->prev; + + if ( removeThis->prev ) + removeThis->prev->next = removeThis->next; + else + firstChild = removeThis->next; + + delete removeThis; + return true; +} + +const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = firstChild; node; node = node->next ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = lastChild; node; node = node->prev ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild(); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling(); + } +} + + +const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const +{ + if ( !previous ) + { + return FirstChild( val ); + } + else + { + assert( previous->parent == this ); + return previous->NextSibling( val ); + } +} + + +const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = next; node; node = node->next ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const +{ + const TiXmlNode* node; + for ( node = prev; node; node = node->prev ) + { + if ( strcmp( node->Value(), _value ) == 0 ) + return node; + } + return 0; +} + + +void TiXmlElement::RemoveAttribute( const char * name ) +{ + #ifdef TIXML_USE_STL + TIXML_STRING str( name ); + TiXmlAttribute* node = attributeSet.Find( str ); + #else + TiXmlAttribute* node = attributeSet.Find( name ); + #endif + if ( node ) + { + attributeSet.Remove( node ); + delete node; + } +} + +const TiXmlElement* TiXmlNode::FirstChildElement() const +{ + const TiXmlNode* node; + + for ( node = FirstChild(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const +{ + const TiXmlNode* node; + + for ( node = FirstChild( _value ); + node; + node = node->NextSibling( _value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlElement* TiXmlNode::NextSiblingElement() const +{ + const TiXmlNode* node; + + for ( node = NextSibling(); + node; + node = node->NextSibling() ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const +{ + const TiXmlNode* node; + + for ( node = NextSibling( _value ); + node; + node = node->NextSibling( _value ) ) + { + if ( node->ToElement() ) + return node->ToElement(); + } + return 0; +} + + +const TiXmlDocument* TiXmlNode::GetDocument() const +{ + const TiXmlNode* node; + + for( node = this; node; node = node->parent ) + { + if ( node->ToDocument() ) + return node->ToDocument(); + } + return 0; +} + + +TiXmlElement::TiXmlElement (const char * _value) + : TiXmlNode( TiXmlNode::ELEMENT ) +{ + firstChild = lastChild = 0; + value = _value; +} + + +#ifdef TIXML_USE_STL +TiXmlElement::TiXmlElement( const std::string& _value ) + : TiXmlNode( TiXmlNode::ELEMENT ) +{ + firstChild = lastChild = 0; + value = _value; +} +#endif + + +TiXmlElement::TiXmlElement( const TiXmlElement& copy) + : TiXmlNode( TiXmlNode::ELEMENT ) +{ + firstChild = lastChild = 0; + copy.CopyTo( this ); +} + + +void TiXmlElement::operator=( const TiXmlElement& base ) +{ + ClearThis(); + base.CopyTo( this ); +} + + +TiXmlElement::~TiXmlElement() +{ + ClearThis(); +} + + +void TiXmlElement::ClearThis() +{ + Clear(); + while( attributeSet.First() ) + { + TiXmlAttribute* node = attributeSet.First(); + attributeSet.Remove( node ); + delete node; + } +} + + +const char* TiXmlElement::Attribute( const char* name ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + return node->Value(); + return 0; +} + + +#ifdef TIXML_USE_STL +const std::string* TiXmlElement::Attribute( const std::string& name ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + return &node->ValueStr(); + return 0; +} +#endif + + +const char* TiXmlElement::Attribute( const char* name, int* i ) const +{ + const char* s = Attribute( name ); + if ( i ) + { + if ( s ) { + *i = atoi( s ); + } + else { + *i = 0; + } + } + return s; +} + + +#ifdef TIXML_USE_STL +const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const +{ + const std::string* s = Attribute( name ); + if ( i ) + { + if ( s ) { + *i = atoi( s->c_str() ); + } + else { + *i = 0; + } + } + return s; +} +#endif + + +const char* TiXmlElement::Attribute( const char* name, double* d ) const +{ + const char* s = Attribute( name ); + if ( d ) + { + if ( s ) { + *d = atof( s ); + } + else { + *d = 0; + } + } + return s; +} + + +#ifdef TIXML_USE_STL +const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const +{ + const std::string* s = Attribute( name ); + if ( d ) + { + if ( s ) { + *d = atof( s->c_str() ); + } + else { + *d = 0; + } + } + return s; +} +#endif + + +int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + return node->QueryIntValue( ival ); +} + + +#ifdef TIXML_USE_STL +int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + return node->QueryIntValue( ival ); +} +#endif + + +int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + return node->QueryDoubleValue( dval ); +} + + +#ifdef TIXML_USE_STL +int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const +{ + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + return node->QueryDoubleValue( dval ); +} +#endif + + +void TiXmlElement::SetAttribute( const char * name, int val ) +{ + char buf[64]; + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF( buf, sizeof(buf), "%d", val ); + #else + sprintf( buf, "%d", val ); + #endif + SetAttribute( name, buf ); +} + + +#ifdef TIXML_USE_STL +void TiXmlElement::SetAttribute( const std::string& name, int val ) +{ + std::ostringstream oss; + oss << val; + SetAttribute( name, oss.str() ); +} +#endif + + +void TiXmlElement::SetDoubleAttribute( const char * name, double val ) +{ + char buf[256]; + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF( buf, sizeof(buf), "%f", val ); + #else + sprintf( buf, "%f", val ); + #endif + SetAttribute( name, buf ); +} + + +void TiXmlElement::SetAttribute( const char * cname, const char * cvalue ) +{ + #ifdef TIXML_USE_STL + TIXML_STRING _name( cname ); + TIXML_STRING _value( cvalue ); + #else + const char* _name = cname; + const char* _value = cvalue; + #endif + + TiXmlAttribute* node = attributeSet.Find( _name ); + if ( node ) + { + node->SetValue( _value ); + return; + } + + TiXmlAttribute* attrib = new TiXmlAttribute( cname, cvalue ); + if ( attrib ) + { + attributeSet.Add( attrib ); + } + else + { + TiXmlDocument* document = GetDocument(); + if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN ); + } +} + + +#ifdef TIXML_USE_STL +void TiXmlElement::SetAttribute( const std::string& name, const std::string& _value ) +{ + TiXmlAttribute* node = attributeSet.Find( name ); + if ( node ) + { + node->SetValue( _value ); + return; + } + + TiXmlAttribute* attrib = new TiXmlAttribute( name, _value ); + if ( attrib ) + { + attributeSet.Add( attrib ); + } + else + { + TiXmlDocument* document = GetDocument(); + if ( document ) document->SetError( TIXML_ERROR_OUT_OF_MEMORY, 0, 0, TIXML_ENCODING_UNKNOWN ); + } +} +#endif + + +void TiXmlElement::Print( FILE* cfile, int depth ) const +{ + int i; + assert( cfile ); + for ( i=0; iNext() ) + { + fprintf( cfile, " " ); + attrib->Print( cfile, depth ); + } + + // There are 3 different formatting approaches: + // 1) An element without children is printed as a node + // 2) An element with only a text child is printed as text + // 3) An element with children is printed on multiple lines. + TiXmlNode* node; + if ( !firstChild ) + { + fprintf( cfile, " />" ); + } + else if ( firstChild == lastChild && firstChild->ToText() ) + { + fprintf( cfile, ">" ); + firstChild->Print( cfile, depth + 1 ); + fprintf( cfile, "", value.c_str() ); + } + else + { + fprintf( cfile, ">" ); + + for ( node = firstChild; node; node=node->NextSibling() ) + { + if ( !node->ToText() ) + { + fprintf( cfile, "\n" ); + } + node->Print( cfile, depth+1 ); + } + fprintf( cfile, "\n" ); + for( i=0; i", value.c_str() ); + } +} + + +void TiXmlElement::CopyTo( TiXmlElement* target ) const +{ + // superclass: + TiXmlNode::CopyTo( target ); + + // Element class: + // Clone the attributes, then clone the children. + const TiXmlAttribute* attribute = 0; + for( attribute = attributeSet.First(); + attribute; + attribute = attribute->Next() ) + { + target->SetAttribute( attribute->Name(), attribute->Value() ); + } + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + target->LinkEndChild( node->Clone() ); + } +} + +bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const +{ + if ( visitor->VisitEnter( *this, attributeSet.First() ) ) + { + for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) + { + if ( !node->Accept( visitor ) ) + break; + } + } + return visitor->VisitExit( *this ); +} + + +TiXmlNode* TiXmlElement::Clone() const +{ + TiXmlElement* clone = new TiXmlElement( Value() ); + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +const char* TiXmlElement::GetText() const +{ + const TiXmlNode* child = this->FirstChild(); + if ( child ) { + const TiXmlText* childText = child->ToText(); + if ( childText ) { + return childText->Value(); + } + } + return 0; +} + + +TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::DOCUMENT ) +{ + tabsize = 4; + useMicrosoftBOM = false; + ClearError(); +} + +TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) +{ + tabsize = 4; + useMicrosoftBOM = false; + value = documentName; + ClearError(); +} + + +#ifdef TIXML_USE_STL +TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::DOCUMENT ) +{ + tabsize = 4; + useMicrosoftBOM = false; + value = documentName; + ClearError(); +} +#endif + + +TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::DOCUMENT ) +{ + copy.CopyTo( this ); +} + + +void TiXmlDocument::operator=( const TiXmlDocument& copy ) +{ + Clear(); + copy.CopyTo( this ); +} + + +bool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) +{ + // See STL_STRING_BUG below. + //StringToBuffer buf( value ); + + return LoadFile( Value(), encoding ); +} + + +bool TiXmlDocument::SaveFile() const +{ + // See STL_STRING_BUG below. +// StringToBuffer buf( value ); +// +// if ( buf.buffer && SaveFile( buf.buffer ) ) +// return true; +// +// return false; + return SaveFile( Value() ); +} + +bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding ) +{ + // There was a really terrifying little bug here. The code: + // value = filename + // in the STL case, cause the assignment method of the std::string to + // be called. What is strange, is that the std::string had the same + // address as it's c_str() method, and so bad things happen. Looks + // like a bug in the Microsoft STL implementation. + // Add an extra string to avoid the crash. + TIXML_STRING filename( _filename ); + value = filename; + + // reading in binary mode so that tinyxml can normalize the EOL + FILE* file = TiXmlFOpen( value.c_str (), "rb" ); + + if ( file ) + { + bool result = LoadFile( file, encoding ); + fclose( file ); + return result; + } + else + { + SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } +} + +bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding ) +{ + if ( !file ) + { + SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } + + // Delete the existing data: + Clear(); + location.Clear(); + + // Get the file size, so we can pre-allocate the string. HUGE speed impact. + long length = 0; + fseek( file, 0, SEEK_END ); + length = ftell( file ); + fseek( file, 0, SEEK_SET ); + + // Strange case, but good to handle up front. + if ( length <= 0 ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } + + // If we have a file, assume it is all one big XML file, and read it in. + // The document parser may decide the document ends sooner than the entire file, however. + TIXML_STRING data; + data.reserve( length ); + + // Subtle bug here. TinyXml did use fgets. But from the XML spec: + // 2.11 End-of-Line Handling + // + // + // ...the XML processor MUST behave as if it normalized all line breaks in external + // parsed entities (including the document entity) on input, before parsing, by translating + // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to + // a single #xA character. + // + // + // It is not clear fgets does that, and certainly isn't clear it works cross platform. + // Generally, you expect fgets to translate from the convention of the OS to the c/unix + // convention, and not work generally. + + /* + while( fgets( buf, sizeof(buf), file ) ) + { + data += buf; + } + */ + + char* buf = new char[ length+1 ]; + buf[0] = 0; + + if ( fread( buf, length, 1, file ) != 1 ) { + delete [] buf; + SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); + return false; + } + + const char* lastPos = buf; + const char* p = buf; + + buf[length] = 0; + while( *p ) { + assert( p < (buf+length) ); + if ( *p == 0xa ) { + // Newline character. No special rules for this. Append all the characters + // since the last string, and include the newline. + data.append( lastPos, (p-lastPos+1) ); // append, include the newline + ++p; // move past the newline + lastPos = p; // and point to the new buffer (may be 0) + assert( p <= (buf+length) ); + } + else if ( *p == 0xd ) { + // Carriage return. Append what we have so far, then + // handle moving forward in the buffer. + if ( (p-lastPos) > 0 ) { + data.append( lastPos, p-lastPos ); // do not add the CR + } + data += (char)0xa; // a proper newline + + if ( *(p+1) == 0xa ) { + // Carriage return - new line sequence + p += 2; + lastPos = p; + assert( p <= (buf+length) ); + } + else { + // it was followed by something else...that is presumably characters again. + ++p; + lastPos = p; + assert( p <= (buf+length) ); + } + } + else { + ++p; + } + } + // Handle any left over characters. + if ( p-lastPos ) { + data.append( lastPos, p-lastPos ); + } + delete [] buf; + buf = 0; + + Parse( data.c_str(), 0, encoding ); + + if ( Error() ) + return false; + else + return true; +} + + +bool TiXmlDocument::SaveFile( const char * filename ) const +{ + // The old c stuff lives on... + FILE* fp = TiXmlFOpen( filename, "w" ); + if ( fp ) + { + bool result = SaveFile( fp ); + fclose( fp ); + return result; + } + return false; +} + + +bool TiXmlDocument::SaveFile( FILE* fp ) const +{ + if ( useMicrosoftBOM ) + { + const unsigned char TIXML_UTF_LEAD_0 = 0xefU; + const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; + const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; + + fputc( TIXML_UTF_LEAD_0, fp ); + fputc( TIXML_UTF_LEAD_1, fp ); + fputc( TIXML_UTF_LEAD_2, fp ); + } + Print( fp, 0 ); + return (ferror(fp) == 0); +} + + +void TiXmlDocument::CopyTo( TiXmlDocument* target ) const +{ + TiXmlNode::CopyTo( target ); + + target->error = error; + target->errorId = errorId; + target->errorDesc = errorDesc; + target->tabsize = tabsize; + target->errorLocation = errorLocation; + target->useMicrosoftBOM = useMicrosoftBOM; + + TiXmlNode* node = 0; + for ( node = firstChild; node; node = node->NextSibling() ) + { + target->LinkEndChild( node->Clone() ); + } +} + + +TiXmlNode* TiXmlDocument::Clone() const +{ + TiXmlDocument* clone = new TiXmlDocument(); + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +void TiXmlDocument::Print( FILE* cfile, int depth ) const +{ + assert( cfile ); + for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) + { + node->Print( cfile, depth ); + fprintf( cfile, "\n" ); + } +} + + +bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const +{ + if ( visitor->VisitEnter( *this ) ) + { + for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) + { + if ( !node->Accept( visitor ) ) + break; + } + } + return visitor->VisitExit( *this ); +} + + +const TiXmlAttribute* TiXmlAttribute::Next() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( next->value.empty() && next->name.empty() ) + return 0; + return next; +} + +/* +TiXmlAttribute* TiXmlAttribute::Next() +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( next->value.empty() && next->name.empty() ) + return 0; + return next; +} +*/ + +const TiXmlAttribute* TiXmlAttribute::Previous() const +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( prev->value.empty() && prev->name.empty() ) + return 0; + return prev; +} + +/* +TiXmlAttribute* TiXmlAttribute::Previous() +{ + // We are using knowledge of the sentinel. The sentinel + // have a value or name. + if ( prev->value.empty() && prev->name.empty() ) + return 0; + return prev; +} +*/ + +void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const +{ + TIXML_STRING n, v; + + EncodeString( name, &n ); + EncodeString( value, &v ); + + if (value.find ('\"') == TIXML_STRING::npos) { + if ( cfile ) { + fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); + } + if ( str ) { + (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\""; + } + } + else { + if ( cfile ) { + fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); + } + if ( str ) { + (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'"; + } + } +} + + +int TiXmlAttribute::QueryIntValue( int* ival ) const +{ + if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 ) + return TIXML_SUCCESS; + return TIXML_WRONG_TYPE; +} + +int TiXmlAttribute::QueryDoubleValue( double* dval ) const +{ + if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 ) + return TIXML_SUCCESS; + return TIXML_WRONG_TYPE; +} + +void TiXmlAttribute::SetIntValue( int _value ) +{ + char buf [64]; + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); + #else + sprintf (buf, "%d", _value); + #endif + SetValue (buf); +} + +void TiXmlAttribute::SetDoubleValue( double _value ) +{ + char buf [256]; + #if defined(TIXML_SNPRINTF) + TIXML_SNPRINTF( buf, sizeof(buf), "%lf", _value); + #else + sprintf (buf, "%lf", _value); + #endif + SetValue (buf); +} + +int TiXmlAttribute::IntValue() const +{ + return atoi (value.c_str ()); +} + +double TiXmlAttribute::DoubleValue() const +{ + return atof (value.c_str ()); +} + + +TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::COMMENT ) +{ + copy.CopyTo( this ); +} + + +void TiXmlComment::operator=( const TiXmlComment& base ) +{ + Clear(); + base.CopyTo( this ); +} + + +void TiXmlComment::Print( FILE* cfile, int depth ) const +{ + assert( cfile ); + for ( int i=0; i", value.c_str() ); +} + + +void TiXmlComment::CopyTo( TiXmlComment* target ) const +{ + TiXmlNode::CopyTo( target ); +} + + +bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlComment::Clone() const +{ + TiXmlComment* clone = new TiXmlComment(); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +void TiXmlText::Print( FILE* cfile, int depth ) const +{ + assert( cfile ); + if ( cdata ) + { + int i; + fprintf( cfile, "\n" ); + for ( i=0; i\n", value.c_str() ); // unformatted output + } + else + { + TIXML_STRING buffer; + EncodeString( value, &buffer ); + fprintf( cfile, "%s", buffer.c_str() ); + } +} + + +void TiXmlText::CopyTo( TiXmlText* target ) const +{ + TiXmlNode::CopyTo( target ); + target->cdata = cdata; +} + + +bool TiXmlText::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlText::Clone() const +{ + TiXmlText* clone = 0; + clone = new TiXmlText( "" ); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +TiXmlDeclaration::TiXmlDeclaration( const char * _version, + const char * _encoding, + const char * _standalone ) + : TiXmlNode( TiXmlNode::DECLARATION ) +{ + version = _version; + encoding = _encoding; + standalone = _standalone; +} + + +#ifdef TIXML_USE_STL +TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, + const std::string& _encoding, + const std::string& _standalone ) + : TiXmlNode( TiXmlNode::DECLARATION ) +{ + version = _version; + encoding = _encoding; + standalone = _standalone; +} +#endif + + +TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) + : TiXmlNode( TiXmlNode::DECLARATION ) +{ + copy.CopyTo( this ); +} + + +void TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) +{ + Clear(); + copy.CopyTo( this ); +} + + +void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const +{ + if ( cfile ) fprintf( cfile, "" ); + if ( str ) (*str) += "?>"; +} + + +void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const +{ + TiXmlNode::CopyTo( target ); + + target->version = version; + target->encoding = encoding; + target->standalone = standalone; +} + + +bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlDeclaration::Clone() const +{ + TiXmlDeclaration* clone = new TiXmlDeclaration(); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +void TiXmlUnknown::Print( FILE* cfile, int depth ) const +{ + for ( int i=0; i", value.c_str() ); +} + + +void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const +{ + TiXmlNode::CopyTo( target ); +} + + +bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const +{ + return visitor->Visit( *this ); +} + + +TiXmlNode* TiXmlUnknown::Clone() const +{ + TiXmlUnknown* clone = new TiXmlUnknown(); + + if ( !clone ) + return 0; + + CopyTo( clone ); + return clone; +} + + +TiXmlAttributeSet::TiXmlAttributeSet() +{ + sentinel.next = &sentinel; + sentinel.prev = &sentinel; +} + + +TiXmlAttributeSet::~TiXmlAttributeSet() +{ + assert( sentinel.next == &sentinel ); + assert( sentinel.prev == &sentinel ); +} + + +void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) +{ + #ifdef TIXML_USE_STL + assert( !Find( TIXML_STRING( addMe->Name() ) ) ); // Shouldn't be multiply adding to the set. + #else + assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. + #endif + + addMe->next = &sentinel; + addMe->prev = sentinel.prev; + + sentinel.prev->next = addMe; + sentinel.prev = addMe; +} + +void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) +{ + TiXmlAttribute* node; + + for( node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node == removeMe ) + { + node->prev->next = node->next; + node->next->prev = node->prev; + node->next = 0; + node->prev = 0; + return; + } + } + assert( 0 ); // we tried to remove a non-linked attribute. +} + + +#ifdef TIXML_USE_STL +const TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const +{ + for( const TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node->name == name ) + return node; + } + return 0; +} + +/* +TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) +{ + for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( node->name == name ) + return node; + } + return 0; +} +*/ +#endif + + +const TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const +{ + for( const TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( strcmp( node->name.c_str(), name ) == 0 ) + return node; + } + return 0; +} + +/* +TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) +{ + for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) + { + if ( strcmp( node->name.c_str(), name ) == 0 ) + return node; + } + return 0; +} +*/ + +#ifdef TIXML_USE_STL +std::istream& operator>> (std::istream & in, TiXmlNode & base) +{ + TIXML_STRING tag; + tag.reserve( 8 * 1000 ); + base.StreamIn( &in, &tag ); + + base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); + return in; +} +#endif + + +#ifdef TIXML_USE_STL +std::ostream& operator<< (std::ostream & out, const TiXmlNode & base) +{ + TiXmlPrinter printer; + printer.SetStreamPrinting(); + base.Accept( &printer ); + out << printer.Str(); + + return out; +} + + +std::string& operator<< (std::string& out, const TiXmlNode& base ) +{ + TiXmlPrinter printer; + printer.SetStreamPrinting(); + base.Accept( &printer ); + out.append( printer.Str() ); + + return out; +} +#endif + + +TiXmlHandle TiXmlHandle::FirstChild() const +{ + if ( node ) + { + TiXmlNode* child = node->FirstChild(); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const +{ + if ( node ) + { + TiXmlNode* child = node->FirstChild( value ); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::FirstChildElement() const +{ + if ( node ) + { + TiXmlElement* child = node->FirstChildElement(); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const +{ + if ( node ) + { + TiXmlElement* child = node->FirstChildElement( value ); + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::Child( int count ) const +{ + if ( node ) + { + int i; + TiXmlNode* child = node->FirstChild(); + for ( i=0; + child && iNextSibling(), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const +{ + if ( node ) + { + int i; + TiXmlNode* child = node->FirstChild( value ); + for ( i=0; + child && iNextSibling( value ), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::ChildElement( int count ) const +{ + if ( node ) + { + int i; + TiXmlElement* child = node->FirstChildElement(); + for ( i=0; + child && iNextSiblingElement(), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const +{ + if ( node ) + { + int i; + TiXmlElement* child = node->FirstChildElement( value ); + for ( i=0; + child && iNextSiblingElement( value ), ++i ) + { + // nothing + } + if ( child ) + return TiXmlHandle( child ); + } + return TiXmlHandle( 0 ); +} + + +bool TiXmlPrinter::VisitEnter( const TiXmlDocument& ) +{ + return true; +} + +bool TiXmlPrinter::VisitExit( const TiXmlDocument& ) +{ + return true; +} + +bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) +{ + DoIndent(); + buffer += "<"; + buffer += element.Value(); + + for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) + { + buffer += " "; + attrib->Print( 0, 0, &buffer ); + } + + if ( !element.FirstChild() ) + { + buffer += " />"; + DoLineBreak(); + } + else + { + buffer += ">"; + if ( element.FirstChild()->ToText() + && element.LastChild() == element.FirstChild() + && element.FirstChild()->ToText()->CDATA() == false ) + { + simpleTextPrint = true; + // no DoLineBreak()! + } + else + { + DoLineBreak(); + } + } + ++depth; + return true; +} + + +bool TiXmlPrinter::VisitExit( const TiXmlElement& element ) +{ + --depth; + if ( !element.FirstChild() ) + { + // nothing. + } + else + { + if ( simpleTextPrint ) + { + simpleTextPrint = false; + } + else + { + DoIndent(); + } + buffer += ""; + DoLineBreak(); + } + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlText& text ) +{ + if ( text.CDATA() ) + { + DoIndent(); + buffer += ""; + DoLineBreak(); + } + else if ( simpleTextPrint ) + { + TIXML_STRING str; + TiXmlBase::EncodeString( text.ValueTStr(), &str ); + buffer += str; + } + else + { + DoIndent(); + TIXML_STRING str; + TiXmlBase::EncodeString( text.ValueTStr(), &str ); + buffer += str; + DoLineBreak(); + } + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration ) +{ + DoIndent(); + declaration.Print( 0, 0, &buffer ); + DoLineBreak(); + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlComment& comment ) +{ + DoIndent(); + buffer += ""; + DoLineBreak(); + return true; +} + + +bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown ) +{ + DoIndent(); + buffer += "<"; + buffer += unknown.Value(); + buffer += ">"; + DoLineBreak(); + return true; +} + diff -Nru geos-3.1.0/tests/xmltester/tinyxml/tinyxmlerror.cpp geos-3.2.2/tests/xmltester/tinyxml/tinyxmlerror.cpp --- geos-3.1.0/tests/xmltester/tinyxml/tinyxmlerror.cpp 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tinyxml/tinyxmlerror.cpp 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,53 @@ +/* +www.sourceforge.net/projects/tinyxml +Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + +#include "tinyxml.h" + +// The goal of the seperate error file is to make the first +// step towards localization. tinyxml (currently) only supports +// english error messages, but the could now be translated. +// +// It also cleans up the code a bit. +// + +const char* TiXmlBase::errorString[ TIXML_ERROR_STRING_COUNT ] = +{ + "No error", + "Error", + "Failed to open file", + "Memory allocation failed.", + "Error parsing Element.", + "Failed to read Element name", + "Error reading Element value.", + "Error reading Attributes.", + "Error: empty tag.", + "Error reading end tag.", + "Error parsing Unknown.", + "Error parsing Comment.", + "Error parsing Declaration.", + "Error document empty.", + "Error null (0) or unexpected EOF found in input stream.", + "Error parsing CDATA.", + "Error when TiXmlDocument added to document, because TiXmlDocument can only be at the root.", +}; diff -Nru geos-3.1.0/tests/xmltester/tinyxml/tinyxml.h geos-3.2.2/tests/xmltester/tinyxml/tinyxml.h --- geos-3.1.0/tests/xmltester/tinyxml/tinyxml.h 1970-01-01 01:00:00.000000000 +0100 +++ geos-3.2.2/tests/xmltester/tinyxml/tinyxml.h 2009-12-06 01:05:24.000000000 +0000 @@ -0,0 +1,1802 @@ +/* +www.sourceforge.net/projects/tinyxml +Original code (2.0 and earlier )copyright (c) 2000-2006 Lee Thomason (www.grinninglizard.com) + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + + +#ifndef TINYXML_INCLUDED +#define TINYXML_INCLUDED + +#ifdef _MSC_VER +#pragma warning( push ) +#pragma warning( disable : 4530 ) +#pragma warning( disable : 4786 ) +#endif + +#include +#include +#include +#include +#include + +// Help out windows: +#if defined( _DEBUG ) && !defined( DEBUG ) +#define DEBUG +#endif + +#ifdef TIXML_USE_STL + #include + #include + #include + #define TIXML_STRING std::string +#else + #include "tinystr.h" + #define TIXML_STRING TiXmlString +#endif + +// Deprecated library function hell. Compilers want to use the +// new safe versions. This probably doesn't fully address the problem, +// but it gets closer. There are too many compilers for me to fully +// test. If you get compilation troubles, undefine TIXML_SAFE +#define TIXML_SAFE + +#ifdef TIXML_SAFE + #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) + // Microsoft visual studio, version 2005 and higher. + #define TIXML_SNPRINTF _snprintf_s + #define TIXML_SNSCANF _snscanf_s + #define TIXML_SSCANF sscanf_s + #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) + // Microsoft visual studio, version 6 and higher. + //#pragma message( "Using _sn* functions." ) + #define TIXML_SNPRINTF _snprintf + #define TIXML_SNSCANF _snscanf + #define TIXML_SSCANF sscanf + #elif defined(__GNUC__) && (__GNUC__ >= 3 ) + // GCC version 3 and higher.s + //#warning( "Using sn* functions." ) + #define TIXML_SNPRINTF snprintf + #define TIXML_SNSCANF snscanf + #define TIXML_SSCANF sscanf + #else + #define TIXML_SSCANF sscanf + #endif +#endif + +class TiXmlDocument; +class TiXmlElement; +class TiXmlComment; +class TiXmlUnknown; +class TiXmlAttribute; +class TiXmlText; +class TiXmlDeclaration; +class TiXmlParsingData; + +const int TIXML_MAJOR_VERSION = 2; +const int TIXML_MINOR_VERSION = 5; +const int TIXML_PATCH_VERSION = 3; + +/* Internal structure for tracking location of items + in the XML file. +*/ +struct TiXmlCursor +{ + TiXmlCursor() { Clear(); } + void Clear() { row = col = -1; } + + int row; // 0 based. + int col; // 0 based. +}; + + +/** + If you call the Accept() method, it requires being passed a TiXmlVisitor + class to handle callbacks. For nodes that contain other nodes (Document, Element) + you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves + are simple called with Visit(). + + If you return 'true' from a Visit method, recursive parsing will continue. If you return + false, no children of this node or its sibilings will be Visited. + + All flavors of Visit methods have a default implementation that returns 'true' (continue + visiting). You need to only override methods that are interesting to you. + + Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. + + You should never change the document from a callback. + + @sa TiXmlNode::Accept() +*/ +class TiXmlVisitor +{ +public: + virtual ~TiXmlVisitor() {} + + /// Visit a document. + virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; } + /// Visit a document. + virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; } + + /// Visit an element. + virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; } + /// Visit an element. + virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; } + + /// Visit a declaration + virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; } + /// Visit a text node + virtual bool Visit( const TiXmlText& /*text*/ ) { return true; } + /// Visit a comment node + virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; } + /// Visit an unknow node + virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; } +}; + +// Only used by Attribute::Query functions +enum +{ + TIXML_SUCCESS, + TIXML_NO_ATTRIBUTE, + TIXML_WRONG_TYPE +}; + + +// Used by the parsing routines. +enum TiXmlEncoding +{ + TIXML_ENCODING_UNKNOWN, + TIXML_ENCODING_UTF8, + TIXML_ENCODING_LEGACY +}; + +const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN; + +/** TiXmlBase is a base class for every class in TinyXml. + It does little except to establish that TinyXml classes + can be printed and provide some utility functions. + + In XML, the document and elements can contain + other elements and other types of nodes. + + @verbatim + A Document can contain: Element (container or leaf) + Comment (leaf) + Unknown (leaf) + Declaration( leaf ) + + An Element can contain: Element (container or leaf) + Text (leaf) + Attributes (not on tree) + Comment (leaf) + Unknown (leaf) + + A Decleration contains: Attributes (not on tree) + @endverbatim +*/ +class TiXmlBase +{ + friend class TiXmlNode; + friend class TiXmlElement; + friend class TiXmlDocument; + +public: + TiXmlBase() : userData(0) {} + virtual ~TiXmlBase() {} + + /** All TinyXml classes can print themselves to a filestream + or the string class (TiXmlString in non-STL mode, std::string + in STL mode.) Either or both cfile and str can be null. + + This is a formatted print, and will insert + tabs and newlines. + + (For an unformatted stream, use the << operator.) + */ + virtual void Print( FILE* cfile, int depth ) const = 0; + + /** The world does not agree on whether white space should be kept or + not. In order to make everyone happy, these global, static functions + are provided to set whether or not TinyXml will condense all white space + into a single space or not. The default is to condense. Note changing this + value is not thread safe. + */ + static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } + + /// Return the current white space setting. + static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } + + /** Return the position, in the original source file, of this node or attribute. + The row and column are 1-based. (That is the first row and first column is + 1,1). If the returns values are 0 or less, then the parser does not have + a row and column value. + + Generally, the row and column value will be set when the TiXmlDocument::Load(), + TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set + when the DOM was created from operator>>. + + The values reflect the initial load. Once the DOM is modified programmatically + (by adding or changing nodes and attributes) the new values will NOT update to + reflect changes in the document. + + There is a minor performance cost to computing the row and column. Computation + can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value. + + @sa TiXmlDocument::SetTabSize() + */ + int Row() const { return location.row + 1; } + int Column() const { return location.col + 1; } ///< See Row() + + void SetUserData( void* user ) { userData = user; } ///< Set a pointer to arbitrary user data. + void* GetUserData() { return userData; } ///< Get a pointer to arbitrary user data. + const void* GetUserData() const { return userData; } ///< Get a pointer to arbitrary user data. + + // Table that returs, for a given lead byte, the total number of bytes + // in the UTF-8 sequence. + static const int utf8ByteTable[256]; + + virtual const char* Parse( const char* p, + TiXmlParsingData* data, + TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0; + + /** Expands entities in a string. Note this should not contian the tag's '<', '>', etc, + or they will be transformed into entities! + */ + static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out ); + + enum + { + TIXML_NO_ERROR = 0, + TIXML_ERROR, + TIXML_ERROR_OPENING_FILE, + TIXML_ERROR_OUT_OF_MEMORY, + TIXML_ERROR_PARSING_ELEMENT, + TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, + TIXML_ERROR_READING_ELEMENT_VALUE, + TIXML_ERROR_READING_ATTRIBUTES, + TIXML_ERROR_PARSING_EMPTY, + TIXML_ERROR_READING_END_TAG, + TIXML_ERROR_PARSING_UNKNOWN, + TIXML_ERROR_PARSING_COMMENT, + TIXML_ERROR_PARSING_DECLARATION, + TIXML_ERROR_DOCUMENT_EMPTY, + TIXML_ERROR_EMBEDDED_NULL, + TIXML_ERROR_PARSING_CDATA, + TIXML_ERROR_DOCUMENT_TOP_ONLY, + + TIXML_ERROR_STRING_COUNT + }; + +protected: + + static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding ); + inline static bool IsWhiteSpace( char c ) + { + return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); + } + inline static bool IsWhiteSpace( int c ) + { + if ( c < 256 ) + return IsWhiteSpace( (char) c ); + return false; // Again, only truly correct for English/Latin...but usually works. + } + + #ifdef TIXML_USE_STL + static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ); + static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag ); + #endif + + /* Reads an XML name into the string provided. Returns + a pointer just past the last character of the name, + or 0 if the function has an error. + */ + static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding ); + + /* Reads text. Returns a pointer past the given end tag. + Wickedly complex options, but it keeps the (sensitive) code in one place. + */ + static const char* ReadText( const char* in, // where to start + TIXML_STRING* text, // the string read + bool ignoreWhiteSpace, // whether to keep the white space + const char* endTag, // what ends this text + bool ignoreCase, // whether to ignore case in the end tag + TiXmlEncoding encoding ); // the current encoding + + // If an entity has been found, transform it into a character. + static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding ); + + // Get a character, while interpreting entities. + // The length can be from 0 to 4 bytes. + inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding ) + { + assert( p ); + if ( encoding == TIXML_ENCODING_UTF8 ) + { + *length = utf8ByteTable[ *((const unsigned char*)p) ]; + assert( *length >= 0 && *length < 5 ); + } + else + { + *length = 1; + } + + if ( *length == 1 ) + { + if ( *p == '&' ) + return GetEntity( p, _value, length, encoding ); + *_value = *p; + return p+1; + } + else if ( *length ) + { + //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe), + // and the null terminator isn't needed + for( int i=0; p[i] && i<*length; ++i ) { + _value[i] = p[i]; + } + return p + (*length); + } + else + { + // Not valid text. + return 0; + } + } + + // Return true if the next characters in the stream are any of the endTag sequences. + // Ignore case only works for english, and should only be relied on when comparing + // to English words: StringEqual( p, "version", true ) is fine. + static bool StringEqual( const char* p, + const char* endTag, + bool ignoreCase, + TiXmlEncoding encoding ); + + static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; + + TiXmlCursor location; + + /// Field containing a generic user pointer + void* userData; + + // None of these methods are reliable for any language except English. + // Good for approximation, not great for accuracy. + static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding ); + static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding ); + inline static int ToLower( int v, TiXmlEncoding encoding ) + { + if ( encoding == TIXML_ENCODING_UTF8 ) + { + if ( v < 128 ) return tolower( v ); + return v; + } + else + { + return tolower( v ); + } + } + static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); + +private: + TiXmlBase( const TiXmlBase& ); // not implemented. + void operator=( const TiXmlBase& base ); // not allowed. + + struct Entity + { + const char* str; + unsigned int strLength; + char chr; + }; + enum + { + NUM_ENTITY = 5, + MAX_ENTITY_LENGTH = 6 + + }; + static Entity entity[ NUM_ENTITY ]; + static bool condenseWhiteSpace; +}; + + +/** The parent class for everything in the Document Object Model. + (Except for attributes). + Nodes have siblings, a parent, and children. A node can be + in a document, or stand on its own. The type of a TiXmlNode + can be queried, and it can be cast to its more defined type. +*/ +class TiXmlNode : public TiXmlBase +{ + friend class TiXmlDocument; + friend class TiXmlElement; + +public: + #ifdef TIXML_USE_STL + + /** An input stream operator, for every class. Tolerant of newlines and + formatting, but doesn't expect them. + */ + friend std::istream& operator >> (std::istream& in, TiXmlNode& base); + + /** An output stream operator, for every class. Note that this outputs + without any newlines or formatting, as opposed to Print(), which + includes tabs and new lines. + + The operator<< and operator>> are not completely symmetric. Writing + a node to a stream is very well defined. You'll get a nice stream + of output, without any extra whitespace or newlines. + + But reading is not as well defined. (As it always is.) If you create + a TiXmlElement (for example) and read that from an input stream, + the text needs to define an element or junk will result. This is + true of all input streams, but it's worth keeping in mind. + + A TiXmlDocument will read nodes until it reads a root element, and + all the children of that root element. + */ + friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base); + + /// Appends the XML node or attribute to a std::string. + friend std::string& operator<< (std::string& out, const TiXmlNode& base ); + + #endif + + /** The types of XML nodes supported by TinyXml. (All the + unsupported types are picked up by UNKNOWN.) + */ + enum NodeType + { + DOCUMENT, + ELEMENT, + COMMENT, + UNKNOWN, + TEXT, + DECLARATION, + TYPECOUNT + }; + + virtual ~TiXmlNode(); + + /** The meaning of 'value' changes for the specific type of + TiXmlNode. + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + + The subclasses will wrap this function. + */ + const char *Value() const { return value.c_str (); } + + #ifdef TIXML_USE_STL + /** Return Value() as a std::string. If you only use STL, + this is more efficient than calling Value(). + Only available in STL mode. + */ + const std::string& ValueStr() const { return value; } + #endif + + const TIXML_STRING& ValueTStr() const { return value; } + + /** Changes the value of the node. Defined as: + @verbatim + Document: filename of the xml file + Element: name of the element + Comment: the comment text + Unknown: the tag contents + Text: the text string + @endverbatim + */ + void SetValue(const char * _value) { value = _value;} + + #ifdef TIXML_USE_STL + /// STL std::string form. + void SetValue( const std::string& _value ) { value = _value; } + #endif + + /// Delete all the children of this node. Does not affect 'this'. + void Clear(); + + /// One step up the DOM. + TiXmlNode* Parent() { return parent; } + const TiXmlNode* Parent() const { return parent; } + + const TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. + TiXmlNode* FirstChild() { return firstChild; } + const TiXmlNode* FirstChild( const char * value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. + /// The first child of this node with the matching 'value'. Will be null if none found. + TiXmlNode* FirstChild( const char * _value ) { + // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe) + // call the method, cast the return back to non-const. + return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value )); + } + const TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. + TiXmlNode* LastChild() { return lastChild; } + + const TiXmlNode* LastChild( const char * value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. + TiXmlNode* LastChild( const char * _value ) { + return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value )); + } + + #ifdef TIXML_USE_STL + const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); } ///< STL std::string form. + const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); } ///< STL std::string form. + #endif + + /** An alternate way to walk the children of a node. + One way to iterate over nodes is: + @verbatim + for( child = parent->FirstChild(); child; child = child->NextSibling() ) + @endverbatim + + IterateChildren does the same thing with the syntax: + @verbatim + child = 0; + while( child = parent->IterateChildren( child ) ) + @endverbatim + + IterateChildren takes the previous child as input and finds + the next one. If the previous child is null, it returns the + first. IterateChildren will return null when done. + */ + const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const; + TiXmlNode* IterateChildren( const TiXmlNode* previous ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) ); + } + + /// This flavor of IterateChildren searches for children with a particular 'value' + const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const; + TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. + TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. + #endif + + /** Add a new node related to this. Adds a child past the LastChild. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); + + + /** Add a new node related to this. Adds a child past the LastChild. + + NOTE: the node to be added is passed by pointer, and will be + henceforth owned (and deleted) by tinyXml. This method is efficient + and avoids an extra copy, but should be used with care as it + uses a different memory model than the other insert functions. + + @sa InsertEndChild + */ + TiXmlNode* LinkEndChild( TiXmlNode* addThis ); + + /** Add a new node related to this. Adds a child before the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); + + /** Add a new node related to this. Adds a child after the specified child. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); + + /** Replace a child of this node. + Returns a pointer to the new object or NULL if an error occured. + */ + TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); + + /// Delete a child of this node. + bool RemoveChild( TiXmlNode* removeThis ); + + /// Navigate to a sibling node. + const TiXmlNode* PreviousSibling() const { return prev; } + TiXmlNode* PreviousSibling() { return prev; } + + /// Navigate to a sibling node. + const TiXmlNode* PreviousSibling( const char * ) const; + TiXmlNode* PreviousSibling( const char *_prev ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. + const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); } ///< STL std::string form. + TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); } ///< STL std::string form. + #endif + + /// Navigate to a sibling node. + const TiXmlNode* NextSibling() const { return next; } + TiXmlNode* NextSibling() { return next; } + + /// Navigate to a sibling node with the given 'value'. + const TiXmlNode* NextSibling( const char * ) const; + TiXmlNode* NextSibling( const char* _next ) { + return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) ); + } + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + const TiXmlElement* NextSiblingElement() const; + TiXmlElement* NextSiblingElement() { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() ); + } + + /** Convenience function to get through elements. + Calls NextSibling and ToElement. Will skip all non-Element + nodes. Returns 0 if there is not another element. + */ + const TiXmlElement* NextSiblingElement( const char * ) const; + TiXmlElement* NextSiblingElement( const char *_next ) { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. + TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. + #endif + + /// Convenience function to get through elements. + const TiXmlElement* FirstChildElement() const; + TiXmlElement* FirstChildElement() { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() ); + } + + /// Convenience function to get through elements. + const TiXmlElement* FirstChildElement( const char * _value ) const; + TiXmlElement* FirstChildElement( const char * _value ) { + return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) ); + } + + #ifdef TIXML_USE_STL + const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. + TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. + #endif + + /** Query the type (as an enumerated value, above) of this node. + The possible types are: DOCUMENT, ELEMENT, COMMENT, + UNKNOWN, TEXT, and DECLARATION. + */ + int Type() const { return type; } + + /** Return a pointer to the Document this node lives in. + Returns null if not in a document. + */ + const TiXmlDocument* GetDocument() const; + TiXmlDocument* GetDocument() { + return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() ); + } + + /// Returns true if this node has no children. + bool NoChildren() const { return !firstChild; } + + virtual const TiXmlDocument* ToDocument() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlElement* ToElement() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlComment* ToComment() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlUnknown* ToUnknown() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlText* ToText() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + + virtual TiXmlDocument* ToDocument() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlElement* ToElement() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlComment* ToComment() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlUnknown* ToUnknown() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlText* ToText() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + virtual TiXmlDeclaration* ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. + + /** Create an exact duplicate of this node and return it. The memory must be deleted + by the caller. + */ + virtual TiXmlNode* Clone() const = 0; + + /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the + XML tree will be conditionally visited and the host will be called back + via the TiXmlVisitor interface. + + This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse + the XML for the callbacks, so the performance of TinyXML is unchanged by using this + interface versus any other.) + + The interface has been based on ideas from: + + - http://www.saxproject.org/ + - http://c2.com/cgi/wiki?HierarchicalVisitorPattern + + Which are both good references for "visiting". + + An example of using Accept(): + @verbatim + TiXmlPrinter printer; + tinyxmlDoc.Accept( &printer ); + const char* xmlcstr = printer.CStr(); + @endverbatim + */ + virtual bool Accept( TiXmlVisitor* visitor ) const = 0; + +protected: + TiXmlNode( NodeType _type ); + + // Copy to the allocated object. Shared functionality between Clone, Copy constructor, + // and the assignment operator. + void CopyTo( TiXmlNode* target ) const; + + #ifdef TIXML_USE_STL + // The real work of the input operator. + virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0; + #endif + + // Figure out what is at *p, and parse it. Returns null if it is not an xml node. + TiXmlNode* Identify( const char* start, TiXmlEncoding encoding ); + + TiXmlNode* parent; + NodeType type; + + TiXmlNode* firstChild; + TiXmlNode* lastChild; + + TIXML_STRING value; + + TiXmlNode* prev; + TiXmlNode* next; + +private: + TiXmlNode( const TiXmlNode& ); // not implemented. + void operator=( const TiXmlNode& base ); // not allowed. +}; + + +/** An attribute is a name-value pair. Elements have an arbitrary + number of attributes, each with a unique name. + + @note The attributes are not TiXmlNodes, since they are not + part of the tinyXML document object model. There are other + suggested ways to look at this problem. +*/ +class TiXmlAttribute : public TiXmlBase +{ + friend class TiXmlAttributeSet; + +public: + /// Construct an empty attribute. + TiXmlAttribute() : TiXmlBase() + { + document = 0; + prev = next = 0; + } + + #ifdef TIXML_USE_STL + /// std::string constructor. + TiXmlAttribute( const std::string& _name, const std::string& _value ) + { + name = _name; + value = _value; + document = 0; + prev = next = 0; + } + #endif + + /// Construct an attribute with a name and value. + TiXmlAttribute( const char * _name, const char * _value ) + { + name = _name; + value = _value; + document = 0; + prev = next = 0; + } + + const char* Name() const { return name.c_str(); } ///< Return the name of this attribute. + const char* Value() const { return value.c_str(); } ///< Return the value of this attribute. + #ifdef TIXML_USE_STL + const std::string& ValueStr() const { return value; } ///< Return the value of this attribute. + #endif + int IntValue() const; ///< Return the value of this attribute, converted to an integer. + double DoubleValue() const; ///< Return the value of this attribute, converted to a double. + + // Get the tinyxml string representation + const TIXML_STRING& NameTStr() const { return name; } + + /** QueryIntValue examines the value string. It is an alternative to the + IntValue() method with richer error checking. + If the value is an integer, it is stored in 'value' and + the call returns TIXML_SUCCESS. If it is not + an integer, it returns TIXML_WRONG_TYPE. + + A specialized but useful call. Note that for success it returns 0, + which is the opposite of almost all other TinyXml calls. + */ + int QueryIntValue( int* _value ) const; + /// QueryDoubleValue examines the value string. See QueryIntValue(). + int QueryDoubleValue( double* _value ) const; + + void SetName( const char* _name ) { name = _name; } ///< Set the name of this attribute. + void SetValue( const char* _value ) { value = _value; } ///< Set the value. + + void SetIntValue( int _value ); ///< Set the value from an integer. + void SetDoubleValue( double _value ); ///< Set the value from a double. + + #ifdef TIXML_USE_STL + /// STL std::string form. + void SetName( const std::string& _name ) { name = _name; } + /// STL std::string form. + void SetValue( const std::string& _value ) { value = _value; } + #endif + + /// Get the next sibling attribute in the DOM. Returns null at end. + const TiXmlAttribute* Next() const; + TiXmlAttribute* Next() { + return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); + } + + /// Get the previous sibling attribute in the DOM. Returns null at beginning. + const TiXmlAttribute* Previous() const; + TiXmlAttribute* Previous() { + return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); + } + + bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } + bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } + bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } + + /* Attribute parsing starts: first letter of the name + returns: the next char after the value end quote + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + // Prints this Attribute to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const { + Print( cfile, depth, 0 ); + } + void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; + + // [internal use] + // Set the document pointer so the attribute can report errors. + void SetDocument( TiXmlDocument* doc ) { document = doc; } + +private: + TiXmlAttribute( const TiXmlAttribute& ); // not implemented. + void operator=( const TiXmlAttribute& base ); // not allowed. + + TiXmlDocument* document; // A pointer back to a document, for error reporting. + TIXML_STRING name; + TIXML_STRING value; + TiXmlAttribute* prev; + TiXmlAttribute* next; +}; + + +/* A class used to manage a group of attributes. + It is only used internally, both by the ELEMENT and the DECLARATION. + + The set can be changed transparent to the Element and Declaration + classes that use it, but NOT transparent to the Attribute + which has to implement a next() and previous() method. Which makes + it a bit problematic and prevents the use of STL. + + This version is implemented with circular lists because: + - I like circular lists + - it demonstrates some independence from the (typical) doubly linked list. +*/ +class TiXmlAttributeSet +{ +public: + TiXmlAttributeSet(); + ~TiXmlAttributeSet(); + + void Add( TiXmlAttribute* attribute ); + void Remove( TiXmlAttribute* attribute ); + + const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } + TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } + const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } + TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } + + const TiXmlAttribute* Find( const char* _name ) const; + TiXmlAttribute* Find( const char* _name ) { + return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) ); + } + #ifdef TIXML_USE_STL + const TiXmlAttribute* Find( const std::string& _name ) const; + TiXmlAttribute* Find( const std::string& _name ) { + return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttributeSet* >(this))->Find( _name ) ); + } + + #endif + +private: + //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element), + //*ME: this class must be also use a hidden/disabled copy-constructor !!! + TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed + void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute) + + TiXmlAttribute sentinel; +}; + + +/** The element is a container class. It has a value, the element name, + and can contain other elements, text, comments, and unknowns. + Elements also contain an arbitrary number of attributes. +*/ +class TiXmlElement : public TiXmlNode +{ +public: + /// Construct an element. + TiXmlElement (const char * in_value); + + #ifdef TIXML_USE_STL + /// std::string constructor. + TiXmlElement( const std::string& _value ); + #endif + + TiXmlElement( const TiXmlElement& ); + + void operator=( const TiXmlElement& base ); + + virtual ~TiXmlElement(); + + /** Given an attribute name, Attribute() returns the value + for the attribute of that name, or null if none exists. + */ + const char* Attribute( const char* name ) const; + + /** Given an attribute name, Attribute() returns the value + for the attribute of that name, or null if none exists. + If the attribute exists and can be converted to an integer, + the integer value will be put in the return 'i', if 'i' + is non-null. + */ + const char* Attribute( const char* name, int* i ) const; + + /** Given an attribute name, Attribute() returns the value + for the attribute of that name, or null if none exists. + If the attribute exists and can be converted to an double, + the double value will be put in the return 'd', if 'd' + is non-null. + */ + const char* Attribute( const char* name, double* d ) const; + + /** QueryIntAttribute examines the attribute - it is an alternative to the + Attribute() method with richer error checking. + If the attribute is an integer, it is stored in 'value' and + the call returns TIXML_SUCCESS. If it is not + an integer, it returns TIXML_WRONG_TYPE. If the attribute + does not exist, then TIXML_NO_ATTRIBUTE is returned. + */ + int QueryIntAttribute( const char* name, int* _value ) const; + /// QueryDoubleAttribute examines the attribute - see QueryIntAttribute(). + int QueryDoubleAttribute( const char* name, double* _value ) const; + /// QueryFloatAttribute examines the attribute - see QueryIntAttribute(). + int QueryFloatAttribute( const char* name, float* _value ) const { + double d; + int result = QueryDoubleAttribute( name, &d ); + if ( result == TIXML_SUCCESS ) { + *_value = (float)d; + } + return result; + } + + #ifdef TIXML_USE_STL + /** Template form of the attribute query which will try to read the + attribute into the specified type. Very easy, very powerful, but + be careful to make sure to call this with the correct type. + + NOTE: This method doesn't work correctly for 'string' types. + + @return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE + */ + template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const + { + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + + std::stringstream sstream( node->ValueStr() ); + sstream >> *outValue; + if ( !sstream.fail() ) + return TIXML_SUCCESS; + return TIXML_WRONG_TYPE; + } + /* + This is - in theory - a bug fix for "QueryValueAtribute returns truncated std::string" + but template specialization is hard to get working cross-compiler. Leaving the bug for now. + + // The above will fail for std::string because the space character is used as a seperator. + // Specialize for strings. Bug [ 1695429 ] QueryValueAtribute returns truncated std::string + template<> int QueryValueAttribute( const std::string& name, std::string* outValue ) const + { + const TiXmlAttribute* node = attributeSet.Find( name ); + if ( !node ) + return TIXML_NO_ATTRIBUTE; + *outValue = node->ValueStr(); + return TIXML_SUCCESS; + } + */ + #endif + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const char* name, const char * _value ); + + #ifdef TIXML_USE_STL + const std::string* Attribute( const std::string& name ) const; + const std::string* Attribute( const std::string& name, int* i ) const; + const std::string* Attribute( const std::string& name, double* d ) const; + int QueryIntAttribute( const std::string& name, int* _value ) const; + int QueryDoubleAttribute( const std::string& name, double* _value ) const; + + /// STL std::string form. + void SetAttribute( const std::string& name, const std::string& _value ); + ///< STL std::string form. + void SetAttribute( const std::string& name, int _value ); + #endif + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetAttribute( const char * name, int value ); + + /** Sets an attribute of name to a given value. The attribute + will be created if it does not exist, or changed if it does. + */ + void SetDoubleAttribute( const char * name, double value ); + + /** Deletes an attribute with the given name. + */ + void RemoveAttribute( const char * name ); + #ifdef TIXML_USE_STL + void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); } ///< STL std::string form. + #endif + + const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. + TiXmlAttribute* FirstAttribute() { return attributeSet.First(); } + const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. + TiXmlAttribute* LastAttribute() { return attributeSet.Last(); } + + /** Convenience function for easy access to the text inside an element. Although easy + and concise, GetText() is limited compared to getting the TiXmlText child + and accessing it directly. + + If the first child of 'this' is a TiXmlText, the GetText() + returns the character string of the Text node, else null is returned. + + This is a convenient method for getting the text of simple contained text: + @verbatim + This is text + const char* str = fooElement->GetText(); + @endverbatim + + 'str' will be a pointer to "This is text". + + Note that this function can be misleading. If the element foo was created from + this XML: + @verbatim + This is text + @endverbatim + + then the value of str would be null. The first child node isn't a text node, it is + another element. From this XML: + @verbatim + This is text + @endverbatim + GetText() will return "This is ". + + WARNING: GetText() accesses a child node - don't become confused with the + similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are + safe type casts on the referenced node. + */ + const char* GetText() const; + + /// Creates a new Element and returns it - the returned element is a copy. + virtual TiXmlNode* Clone() const; + // Print the Element to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + /* Attribtue parsing starts: next char past '<' + returns: next char past '>' + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlElement* ToElement() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlElement* ToElement() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* visitor ) const; + +protected: + + void CopyTo( TiXmlElement* target ) const; + void ClearThis(); // like clear, but initializes 'this' object as well + + // Used to be public [internal use] + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + /* [internal use] + Reads the "value" of the element -- another element, or text. + This should terminate with the current end tag. + */ + const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding ); + +private: + + TiXmlAttributeSet attributeSet; +}; + + +/** An XML comment. +*/ +class TiXmlComment : public TiXmlNode +{ +public: + /// Constructs an empty comment. + TiXmlComment() : TiXmlNode( TiXmlNode::COMMENT ) {} + /// Construct a comment from text. + TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::COMMENT ) { + SetValue( _value ); + } + TiXmlComment( const TiXmlComment& ); + void operator=( const TiXmlComment& base ); + + virtual ~TiXmlComment() {} + + /// Returns a copy of this Comment. + virtual TiXmlNode* Clone() const; + // Write this Comment to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + /* Attribtue parsing starts: at the ! of the !-- + returns: next char past '>' + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlComment* ToComment() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlComment* ToComment() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* visitor ) const; + +protected: + void CopyTo( TiXmlComment* target ) const; + + // used to be public + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif +// virtual void StreamOut( TIXML_OSTREAM * out ) const; + +private: + +}; + + +/** XML text. A text node can have 2 ways to output the next. "normal" output + and CDATA. It will default to the mode it was parsed from the XML file and + you generally want to leave it alone, but you can change the output mode with + SetCDATA() and query it with CDATA(). +*/ +class TiXmlText : public TiXmlNode +{ + friend class TiXmlElement; +public: + /** Constructor for text element. By default, it is treated as + normal, encoded text. If you want it be output as a CDATA text + element, set the parameter _cdata to 'true' + */ + TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TEXT) + { + SetValue( initValue ); + cdata = false; + } + virtual ~TiXmlText() {} + + #ifdef TIXML_USE_STL + /// Constructor. + TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TEXT) + { + SetValue( initValue ); + cdata = false; + } + #endif + + TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TEXT ) { copy.CopyTo( this ); } + void operator=( const TiXmlText& base ) { base.CopyTo( this ); } + + // Write this text object to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + /// Queries whether this represents text using a CDATA section. + bool CDATA() const { return cdata; } + /// Turns on or off a CDATA representation of text. + void SetCDATA( bool _cdata ) { cdata = _cdata; } + + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlText* ToText() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* content ) const; + +protected : + /// [internal use] Creates a new Element and returns it. + virtual TiXmlNode* Clone() const; + void CopyTo( TiXmlText* target ) const; + + bool Blank() const; // returns true if all white space and new lines + // [internal use] + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + bool cdata; // true if this should be input and output as a CDATA style text element +}; + + +/** In correct XML the declaration is the first entry in the file. + @verbatim + + @endverbatim + + TinyXml will happily read or write files without a declaration, + however. There are 3 possible attributes to the declaration: + version, encoding, and standalone. + + Note: In this version of the code, the attributes are + handled as special cases, not generic attributes, simply + because there can only be at most 3 and they are always the same. +*/ +class TiXmlDeclaration : public TiXmlNode +{ +public: + /// Construct an empty declaration. + TiXmlDeclaration() : TiXmlNode( TiXmlNode::DECLARATION ) {} + +#ifdef TIXML_USE_STL + /// Constructor. + TiXmlDeclaration( const std::string& _version, + const std::string& _encoding, + const std::string& _standalone ); +#endif + + /// Construct. + TiXmlDeclaration( const char* _version, + const char* _encoding, + const char* _standalone ); + + TiXmlDeclaration( const TiXmlDeclaration& copy ); + void operator=( const TiXmlDeclaration& copy ); + + virtual ~TiXmlDeclaration() {} + + /// Version. Will return an empty string if none was found. + const char *Version() const { return version.c_str (); } + /// Encoding. Will return an empty string if none was found. + const char *Encoding() const { return encoding.c_str (); } + /// Is this a standalone document? + const char *Standalone() const { return standalone.c_str (); } + + /// Creates a copy of this Declaration and returns it. + virtual TiXmlNode* Clone() const; + // Print this declaration to a FILE stream. + virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; + virtual void Print( FILE* cfile, int depth ) const { + Print( cfile, depth, 0 ); + } + + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlDeclaration* ToDeclaration() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* visitor ) const; + +protected: + void CopyTo( TiXmlDeclaration* target ) const; + // used to be public + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + + TIXML_STRING version; + TIXML_STRING encoding; + TIXML_STRING standalone; +}; + + +/** Any tag that tinyXml doesn't recognize is saved as an + unknown. It is a tag of text, but should not be modified. + It will be written back to the XML, unchanged, when the file + is saved. + + DTD tags get thrown into TiXmlUnknowns. +*/ +class TiXmlUnknown : public TiXmlNode +{ +public: + TiXmlUnknown() : TiXmlNode( TiXmlNode::UNKNOWN ) {} + virtual ~TiXmlUnknown() {} + + TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::UNKNOWN ) { copy.CopyTo( this ); } + void operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); } + + /// Creates a copy of this Unknown and returns it. + virtual TiXmlNode* Clone() const; + // Print this Unknown to a FILE stream. + virtual void Print( FILE* cfile, int depth ) const; + + virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); + + virtual const TiXmlUnknown* ToUnknown() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlUnknown* ToUnknown() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* content ) const; + +protected: + void CopyTo( TiXmlUnknown* target ) const; + + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + +}; + + +/** Always the top level node. A document binds together all the + XML pieces. It can be saved, loaded, and printed to the screen. + The 'value' of a document node is the xml file name. +*/ +class TiXmlDocument : public TiXmlNode +{ +public: + /// Create an empty document, that has no name. + TiXmlDocument(); + /// Create a document with a name. The name of the document is also the filename of the xml. + TiXmlDocument( const char * documentName ); + + #ifdef TIXML_USE_STL + /// Constructor. + TiXmlDocument( const std::string& documentName ); + #endif + + TiXmlDocument( const TiXmlDocument& copy ); + void operator=( const TiXmlDocument& copy ); + + virtual ~TiXmlDocument() {} + + /** Load a file using the current document value. + Returns true if successful. Will delete any existing + document data before loading. + */ + bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + /// Save a file using the current document value. Returns true if successful. + bool SaveFile() const; + /// Load a file using the given filename. Returns true if successful. + bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + /// Save a file using the given filename. Returns true if successful. + bool SaveFile( const char * filename ) const; + /** Load a file using the given FILE*. Returns true if successful. Note that this method + doesn't stream - the entire object pointed at by the FILE* + will be interpreted as an XML file. TinyXML doesn't stream in XML from the current + file location. Streaming may be added in the future. + */ + bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + /// Save a file using the given FILE*. Returns true if successful. + bool SaveFile( FILE* ) const; + + #ifdef TIXML_USE_STL + bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) ///< STL std::string version. + { +// StringToBuffer f( filename ); +// return ( f.buffer && LoadFile( f.buffer, encoding )); + return LoadFile( filename.c_str(), encoding ); + } + bool SaveFile( const std::string& filename ) const ///< STL std::string version. + { +// StringToBuffer f( filename ); +// return ( f.buffer && SaveFile( f.buffer )); + return SaveFile( filename.c_str() ); + } + #endif + + /** Parse the given null terminated block of xml data. Passing in an encoding to this + method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml + to use that encoding, regardless of what TinyXml might otherwise try to detect. + */ + virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); + + /** Get the root element -- the only top level element -- of the document. + In well formed XML, there should only be one. TinyXml is tolerant of + multiple elements at the document level. + */ + const TiXmlElement* RootElement() const { return FirstChildElement(); } + TiXmlElement* RootElement() { return FirstChildElement(); } + + /** If an error occurs, Error will be set to true. Also, + - The ErrorId() will contain the integer identifier of the error (not generally useful) + - The ErrorDesc() method will return the name of the error. (very useful) + - The ErrorRow() and ErrorCol() will return the location of the error (if known) + */ + bool Error() const { return error; } + + /// Contains a textual (english) description of the error if one occurs. + const char * ErrorDesc() const { return errorDesc.c_str (); } + + /** Generally, you probably want the error string ( ErrorDesc() ). But if you + prefer the ErrorId, this function will fetch it. + */ + int ErrorId() const { return errorId; } + + /** Returns the location (if known) of the error. The first column is column 1, + and the first row is row 1. A value of 0 means the row and column wasn't applicable + (memory errors, for example, have no row/column) or the parser lost the error. (An + error in the error reporting, in that case.) + + @sa SetTabSize, Row, Column + */ + int ErrorRow() const { return errorLocation.row+1; } + int ErrorCol() const { return errorLocation.col+1; } ///< The column where the error occured. See ErrorRow() + + /** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol()) + to report the correct values for row and column. It does not change the output + or input in any way. + + By calling this method, with a tab size + greater than 0, the row and column of each node and attribute is stored + when the file is loaded. Very useful for tracking the DOM back in to + the source file. + + The tab size is required for calculating the location of nodes. If not + set, the default of 4 is used. The tabsize is set per document. Setting + the tabsize to 0 disables row/column tracking. + + Note that row and column tracking is not supported when using operator>>. + + The tab size needs to be enabled before the parse or load. Correct usage: + @verbatim + TiXmlDocument doc; + doc.SetTabSize( 8 ); + doc.Load( "myfile.xml" ); + @endverbatim + + @sa Row, Column + */ + void SetTabSize( int _tabsize ) { tabsize = _tabsize; } + + int TabSize() const { return tabsize; } + + /** If you have handled the error, it can be reset with this call. The error + state is automatically cleared if you Parse a new XML block. + */ + void ClearError() { error = false; + errorId = 0; + errorDesc = ""; + errorLocation.row = errorLocation.col = 0; + //errorLocation.last = 0; + } + + /** Write the document to standard out using formatted printing ("pretty print"). */ + void Print() const { Print( stdout, 0 ); } + + /* Write the document to a string using formatted printing ("pretty print"). This + will allocate a character array (new char[]) and return it as a pointer. The + calling code pust call delete[] on the return char* to avoid a memory leak. + */ + //char* PrintToMemory() const; + + /// Print this Document to a FILE stream. + virtual void Print( FILE* cfile, int depth = 0 ) const; + // [internal use] + void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding ); + + virtual const TiXmlDocument* ToDocument() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + virtual TiXmlDocument* ToDocument() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. + + /** Walk the XML tree visiting this node and all of its children. + */ + virtual bool Accept( TiXmlVisitor* content ) const; + +protected : + // [internal use] + virtual TiXmlNode* Clone() const; + #ifdef TIXML_USE_STL + virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); + #endif + +private: + void CopyTo( TiXmlDocument* target ) const; + + bool error; + int errorId; + TIXML_STRING errorDesc; + int tabsize; + TiXmlCursor errorLocation; + bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write. +}; + + +/** + A TiXmlHandle is a class that wraps a node pointer with null checks; this is + an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml + DOM structure. It is a separate utility class. + + Take an example: + @verbatim + + + + + + + @endverbatim + + Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very + easy to write a *lot* of code that looks like: + + @verbatim + TiXmlElement* root = document.FirstChildElement( "Document" ); + if ( root ) + { + TiXmlElement* element = root->FirstChildElement( "Element" ); + if ( element ) + { + TiXmlElement* child = element->FirstChildElement( "Child" ); + if ( child ) + { + TiXmlElement* child2 = child->NextSiblingElement( "Child" ); + if ( child2 ) + { + // Finally do something useful. + @endverbatim + + And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity + of such code. A TiXmlHandle checks for null pointers so it is perfectly safe + and correct to use: + + @verbatim + TiXmlHandle docHandle( &document ); + TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); + if ( child2 ) + { + // do something useful + @endverbatim + + Which is MUCH more concise and useful. + + It is also safe to copy handles - internally they are nothing more than node pointers. + @verbatim + TiXmlHandle handleCopy = handle; + @endverbatim + + What they should not be used for is iteration: + + @verbatim + int i=0; + while ( true ) + { + TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement(); + if ( !child ) + break; + // do something + ++i; + } + @endverbatim + + It seems reasonable, but it is in fact two embedded while loops. The Child method is + a linear walk to find the element, so this code would iterate much more than it needs + to. Instead, prefer: + + @verbatim + TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement(); + + for( child; child; child=child->NextSiblingElement() ) + { + // do something + } + @endverbatim +*/ +class TiXmlHandle +{ +public: + /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. + TiXmlHandle( TiXmlNode* _node ) { this->node = _node; } + /// Copy constructor + TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; } + TiXmlHandle operator=( const TiXmlHandle& ref ) { this->node = ref.node; return *this; } + + /// Return a handle to the first child node. + TiXmlHandle FirstChild() const; + /// Return a handle to the first child node with the given name. + TiXmlHandle FirstChild( const char * value ) const; + /// Return a handle to the first child element. + TiXmlHandle FirstChildElement() const; + /// Return a handle to the first child element with the given name. + TiXmlHandle FirstChildElement( const char * value ) const; + + /** Return a handle to the "index" child with the given name. + The first child is 0, the second 1, etc. + */ + TiXmlHandle Child( const char* value, int index ) const; + /** Return a handle to the "index" child. + The first child is 0, the second 1, etc. + */ + TiXmlHandle Child( int index ) const; + /** Return a handle to the "index" child element with the given name. + The first child element is 0, the second 1, etc. Note that only TiXmlElements + are indexed: other types are not counted. + */ + TiXmlHandle ChildElement( const char* value, int index ) const; + /** Return a handle to the "index" child element. + The first child element is 0, the second 1, etc. Note that only TiXmlElements + are indexed: other types are not counted. + */ + TiXmlHandle ChildElement( int index ) const; + + #ifdef TIXML_USE_STL + TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); } + TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); } + + TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); } + TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); } + #endif + + /** Return the handle as a TiXmlNode. This may return null. + */ + TiXmlNode* ToNode() const { return node; } + /** Return the handle as a TiXmlElement. This may return null. + */ + TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); } + /** Return the handle as a TiXmlText. This may return null. + */ + TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : 0 ); } + /** Return the handle as a TiXmlUnknown. This may return null. + */ + TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); } + + /** @deprecated use ToNode. + Return the handle as a TiXmlNode. This may return null. + */ + TiXmlNode* Node() const { return ToNode(); } + /** @deprecated use ToElement. + Return the handle as a TiXmlElement. This may return null. + */ + TiXmlElement* Element() const { return ToElement(); } + /** @deprecated use ToText() + Return the handle as a TiXmlText. This may return null. + */ + TiXmlText* Text() const { return ToText(); } + /** @deprecated use ToUnknown() + Return the handle as a TiXmlUnknown. This may return null. + */ + TiXmlUnknown* Unknown() const { return ToUnknown(); } + +private: + TiXmlNode* node; +}; + + +/** Print to memory functionality. The TiXmlPrinter is useful when you need to: + + -# Print to memory (especially in non-STL mode) + -# Control formatting (line endings, etc.) + + When constructed, the TiXmlPrinter is in its default "pretty printing" mode. + Before calling Accept() you can call methods to control the printing + of the XML document. After TiXmlNode::Accept() is called, the printed document can + be accessed via the CStr(), Str(), and Size() methods. + + TiXmlPrinter uses the Visitor API. + @verbatim + TiXmlPrinter printer; + printer.SetIndent( "\t" ); + + doc.Accept( &printer ); + fprintf( stdout, "%s", printer.CStr() ); + @endverbatim +*/ +class TiXmlPrinter : public TiXmlVisitor +{ +public: + TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ), + buffer(), indent( " " ), lineBreak( "\n" ) {} + + virtual bool VisitEnter( const TiXmlDocument& doc ); + virtual bool VisitExit( const TiXmlDocument& doc ); + + virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ); + virtual bool VisitExit( const TiXmlElement& element ); + + virtual bool Visit( const TiXmlDeclaration& declaration ); + virtual bool Visit( const TiXmlText& text ); + virtual bool Visit( const TiXmlComment& comment ); + virtual bool Visit( const TiXmlUnknown& unknown ); + + /** Set the indent characters for printing. By default 4 spaces + but tab (\t) is also useful, or null/empty string for no indentation. + */ + void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; } + /// Query the indention string. + const char* Indent() { return indent.c_str(); } + /** Set the line breaking string. By default set to newline (\n). + Some operating systems prefer other characters, or can be + set to the null/empty string for no indenation. + */ + void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; } + /// Query the current line breaking string. + const char* LineBreak() { return lineBreak.c_str(); } + + /** Switch over to "stream printing" which is the most dense formatting without + linebreaks. Common when the XML is needed for network transmission. + */ + void SetStreamPrinting() { indent = ""; + lineBreak = ""; + } + /// Return the result. + const char* CStr() { return buffer.c_str(); } + /// Return the length of the result string. + size_t Size() { return buffer.size(); } + + #ifdef TIXML_USE_STL + /// Return the result. + const std::string& Str() { return buffer; } + #endif + +private: + void DoIndent() { + for( int i=0; i +#include + +#include "tinyxml.h" + +//#define DEBUG_PARSER +#if defined( DEBUG_PARSER ) +# if defined( DEBUG ) && defined( _MSC_VER ) +# include +# define TIXML_LOG OutputDebugString +# else +# define TIXML_LOG printf +# endif +#endif + +// Note tha "PutString" hardcodes the same list. This +// is less flexible than it appears. Changing the entries +// or order will break putstring. +TiXmlBase::Entity TiXmlBase::entity[ NUM_ENTITY ] = +{ + { "&", 5, '&' }, + { "<", 4, '<' }, + { ">", 4, '>' }, + { """, 6, '\"' }, + { "'", 6, '\'' } +}; + +// Bunch of unicode info at: +// http://www.unicode.org/faq/utf_bom.html +// Including the basic of this table, which determines the #bytes in the +// sequence from the lead byte. 1 placed for invalid sequences -- +// although the result will be junk, pass it through as much as possible. +// Beware of the non-characters in UTF-8: +// ef bb bf (Microsoft "lead bytes") +// ef bf be +// ef bf bf + +const unsigned char TIXML_UTF_LEAD_0 = 0xefU; +const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; +const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; + +const int TiXmlBase::utf8ByteTable[256] = +{ + // 0 1 2 3 4 5 6 7 8 9 a b c d e f + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x00 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x10 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x20 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x30 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x50 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x70 End of ASCII range + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x80 0x80 to 0xc1 invalid + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x90 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xa0 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xb0 + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xc0 0xc2 to 0xdf 2 byte + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xd0 + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xe0 0xe0 to 0xef 3 byte + 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid +}; + + +void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) +{ + const unsigned long BYTE_MASK = 0xBF; + const unsigned long BYTE_MARK = 0x80; + const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; + + if (input < 0x80) + *length = 1; + else if ( input < 0x800 ) + *length = 2; + else if ( input < 0x10000 ) + *length = 3; + else if ( input < 0x200000 ) + *length = 4; + else + { *length = 0; return; } // This code won't covert this correctly anyway. + + output += *length; + + // Scary scary fall throughs. + switch (*length) + { + case 4: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + case 3: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + case 2: + --output; + *output = (char)((input | BYTE_MARK) & BYTE_MASK); + input >>= 6; + case 1: + --output; + *output = (char)(input | FIRST_BYTE_MARK[*length]); + } +} + + +/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) +{ + // This will only work for low-ascii, everything else is assumed to be a valid + // letter. I'm not sure this is the best approach, but it is quite tricky trying + // to figure out alhabetical vs. not across encoding. So take a very + // conservative approach. + +// if ( encoding == TIXML_ENCODING_UTF8 ) +// { + if ( anyByte < 127 ) + return isalpha( anyByte ); + else + return 1; // What else to do? The unicode set is huge...get the english ones right. +// } +// else +// { +// return isalpha( anyByte ); +// } +} + + +/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) +{ + // This will only work for low-ascii, everything else is assumed to be a valid + // letter. I'm not sure this is the best approach, but it is quite tricky trying + // to figure out alhabetical vs. not across encoding. So take a very + // conservative approach. + +// if ( encoding == TIXML_ENCODING_UTF8 ) +// { + if ( anyByte < 127 ) + return isalnum( anyByte ); + else + return 1; // What else to do? The unicode set is huge...get the english ones right. +// } +// else +// { +// return isalnum( anyByte ); +// } +} + + +class TiXmlParsingData +{ + friend class TiXmlDocument; + public: + void Stamp( const char* now, TiXmlEncoding encoding ); + + const TiXmlCursor& Cursor() { return cursor; } + + private: + // Only used by the document! + TiXmlParsingData( const char* start, int _tabsize, int row, int col ) + { + assert( start ); + stamp = start; + tabsize = _tabsize; + cursor.row = row; + cursor.col = col; + } + + TiXmlCursor cursor; + const char* stamp; + int tabsize; +}; + + +void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) +{ + assert( now ); + + // Do nothing if the tabsize is 0. + if ( tabsize < 1 ) + { + return; + } + + // Get the current row, column. + int row = cursor.row; + int col = cursor.col; + const char* p = stamp; + assert( p ); + + while ( p < now ) + { + // Treat p as unsigned, so we have a happy compiler. + const unsigned char* pU = (const unsigned char*)p; + + // Code contributed by Fletcher Dunn: (modified by lee) + switch (*pU) { + case 0: + // We *should* never get here, but in case we do, don't + // advance past the terminating null character, ever + return; + + case '\r': + // bump down to the next line + ++row; + col = 0; + // Eat the character + ++p; + + // Check for \r\n sequence, and treat this as a single character + if (*p == '\n') { + ++p; + } + break; + + case '\n': + // bump down to the next line + ++row; + col = 0; + + // Eat the character + ++p; + + // Check for \n\r sequence, and treat this as a single + // character. (Yes, this bizarre thing does occur still + // on some arcane platforms...) + if (*p == '\r') { + ++p; + } + break; + + case '\t': + // Eat the character + ++p; + + // Skip to next tab stop + col = (col / tabsize + 1) * tabsize; + break; + + case TIXML_UTF_LEAD_0: + if ( encoding == TIXML_ENCODING_UTF8 ) + { + if ( *(p+1) && *(p+2) ) + { + // In these cases, don't advance the column. These are + // 0-width spaces. + if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) + p += 3; + else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU ) + p += 3; + else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU ) + p += 3; + else + { p +=3; ++col; } // A normal character. + } + } + else + { + ++p; + ++col; + } + break; + + default: + if ( encoding == TIXML_ENCODING_UTF8 ) + { + // Eat the 1 to 4 byte utf8 character. + int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)]; + if ( step == 0 ) + step = 1; // Error case from bad encoding, but handle gracefully. + p += step; + + // Just advance one column, of course. + ++col; + } + else + { + ++p; + ++col; + } + break; + } + } + cursor.row = row; + cursor.col = col; + assert( cursor.row >= -1 ); + assert( cursor.col >= -1 ); + stamp = p; + assert( stamp ); +} + + +const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ) +{ + if ( !p || !*p ) + { + return 0; + } + if ( encoding == TIXML_ENCODING_UTF8 ) + { + while ( *p ) + { + const unsigned char* pU = (const unsigned char*)p; + + // Skip the stupid Microsoft UTF-8 Byte order marks + if ( *(pU+0)==TIXML_UTF_LEAD_0 + && *(pU+1)==TIXML_UTF_LEAD_1 + && *(pU+2)==TIXML_UTF_LEAD_2 ) + { + p += 3; + continue; + } + else if(*(pU+0)==TIXML_UTF_LEAD_0 + && *(pU+1)==0xbfU + && *(pU+2)==0xbeU ) + { + p += 3; + continue; + } + else if(*(pU+0)==TIXML_UTF_LEAD_0 + && *(pU+1)==0xbfU + && *(pU+2)==0xbfU ) + { + p += 3; + continue; + } + + if ( IsWhiteSpace( *p ) || *p == '\n' || *p =='\r' ) // Still using old rules for white space. + ++p; + else + break; + } + } + else + { + while ( *p && (IsWhiteSpace( *p ) || *p == '\n' || *p =='\r') ) + ++p; + } + + return p; +} + +#ifdef TIXML_USE_STL +/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ) +{ + for( ;; ) + { + if ( !in->good() ) return false; + + int c = in->peek(); + // At this scope, we can't get to a document. So fail silently. + if ( !IsWhiteSpace( c ) || c <= 0 ) + return true; + + *tag += (char) in->get(); + } +} + +/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ) +{ + //assert( character > 0 && character < 128 ); // else it won't work in utf-8 + while ( in->good() ) + { + int c = in->peek(); + if ( c == character ) + return true; + if ( c <= 0 ) // Silent failure: can't get document at this scope + return false; + + in->get(); + *tag += (char) c; + } + return false; +} +#endif + +// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The +// "assign" optimization removes over 10% of the execution time. +// +const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ) +{ + // Oddly, not supported on some comilers, + //name->clear(); + // So use this: + *name = ""; + assert( p ); + + // Names start with letters or underscores. + // Of course, in unicode, tinyxml has no idea what a letter *is*. The + // algorithm is generous. + // + // After that, they can be letters, underscores, numbers, + // hyphens, or colons. (Colons are valid ony for namespaces, + // but tinyxml can't tell namespaces from names.) + if ( p && *p + && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) ) + { + const char* start = p; + while( p && *p + && ( IsAlphaNum( (unsigned char ) *p, encoding ) + || *p == '_' + || *p == '-' + || *p == '.' + || *p == ':' ) ) + { + //(*name) += *p; // expensive + ++p; + } + if ( p-start > 0 ) { + name->assign( start, p-start ); + } + return p; + } + return 0; +} + +const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ) +{ + // Presume an entity, and pull it out. + TIXML_STRING ent; + int i; + *length = 0; + + if ( *(p+1) && *(p+1) == '#' && *(p+2) ) + { + unsigned long ucs = 0; + ptrdiff_t delta = 0; + unsigned mult = 1; + + if ( *(p+2) == 'x' ) + { + // Hexadecimal. + if ( !*(p+3) ) return 0; + + const char* q = p+3; + q = strchr( q, ';' ); + + if ( !q || !*q ) return 0; + + delta = q-p; + --q; + + while ( *q != 'x' ) + { + if ( *q >= '0' && *q <= '9' ) + ucs += mult * (*q - '0'); + else if ( *q >= 'a' && *q <= 'f' ) + ucs += mult * (*q - 'a' + 10); + else if ( *q >= 'A' && *q <= 'F' ) + ucs += mult * (*q - 'A' + 10 ); + else + return 0; + mult *= 16; + --q; + } + } + else + { + // Decimal. + if ( !*(p+2) ) return 0; + + const char* q = p+2; + q = strchr( q, ';' ); + + if ( !q || !*q ) return 0; + + delta = q-p; + --q; + + while ( *q != '#' ) + { + if ( *q >= '0' && *q <= '9' ) + ucs += mult * (*q - '0'); + else + return 0; + mult *= 10; + --q; + } + } + if ( encoding == TIXML_ENCODING_UTF8 ) + { + // convert the UCS to UTF-8 + ConvertUTF32ToUTF8( ucs, value, length ); + } + else + { + *value = (char)ucs; + *length = 1; + } + return p + delta + 1; + } + + // Now try to match it. + for( i=0; iappend( cArr, len ); + } + } + else + { + bool whitespace = false; + + // Remove leading white space: + p = SkipWhiteSpace( p, encoding ); + while ( p && *p + && !StringEqual( p, endTag, caseInsensitive, encoding ) ) + { + if ( *p == '\r' || *p == '\n' ) + { + whitespace = true; + ++p; + } + else if ( IsWhiteSpace( *p ) ) + { + whitespace = true; + ++p; + } + else + { + // If we've found whitespace, add it before the + // new character. Any whitespace just becomes a space. + if ( whitespace ) + { + (*text) += ' '; + whitespace = false; + } + int len; + char cArr[4] = { 0, 0, 0, 0 }; + p = GetChar( p, cArr, &len, encoding ); + if ( len == 1 ) + (*text) += cArr[0]; // more efficient + else + text->append( cArr, len ); + } + } + } + if ( p ) + p += strlen( endTag ); + return p; +} + +#ifdef TIXML_USE_STL + +void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag ) +{ + // The basic issue with a document is that we don't know what we're + // streaming. Read something presumed to be a tag (and hope), then + // identify it, and call the appropriate stream method on the tag. + // + // This "pre-streaming" will never read the closing ">" so the + // sub-tag can orient itself. + + if ( !StreamTo( in, '<', tag ) ) + { + SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + + while ( in->good() ) + { + int tagIndex = (int) tag->length(); + while ( in->good() && in->peek() != '>' ) + { + int c = in->get(); + if ( c <= 0 ) + { + SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); + break; + } + (*tag) += (char) c; + } + + if ( in->good() ) + { + // We now have something we presume to be a node of + // some sort. Identify it, and call the node to + // continue streaming. + TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING ); + + if ( node ) + { + node->StreamIn( in, tag ); + bool isElement = node->ToElement() != 0; + delete node; + node = 0; + + // If this is the root element, we're done. Parsing will be + // done by the >> operator. + if ( isElement ) + { + return; + } + } + else + { + SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + } + } + // We should have returned sooner. + SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); +} + +#endif + +const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding ) +{ + ClearError(); + + // Parse away, at the document level. Since a document + // contains nothing but other tags, most of what happens + // here is skipping white space. + if ( !p || !*p ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + // Note that, for a document, this needs to come + // before the while space skip, so that parsing + // starts from the pointer we are given. + location.Clear(); + if ( prevData ) + { + location.row = prevData->cursor.row; + location.col = prevData->cursor.col; + } + else + { + location.row = 0; + location.col = 0; + } + TiXmlParsingData data( p, TabSize(), location.row, location.col ); + location = data.Cursor(); + + if ( encoding == TIXML_ENCODING_UNKNOWN ) + { + // Check for the Microsoft UTF-8 lead bytes. + const unsigned char* pU = (const unsigned char*)p; + if ( *(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0 + && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1 + && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 ) + { + encoding = TIXML_ENCODING_UTF8; + useMicrosoftBOM = true; + } + } + + p = SkipWhiteSpace( p, encoding ); + if ( !p ) + { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); + return 0; + } + + while ( p && *p ) + { + TiXmlNode* node = Identify( p, encoding ); + if ( node ) + { + p = node->Parse( p, &data, encoding ); + LinkEndChild( node ); + } + else + { + break; + } + + // Did we get encoding info? + if ( encoding == TIXML_ENCODING_UNKNOWN + && node->ToDeclaration() ) + { + TiXmlDeclaration* dec = node->ToDeclaration(); + const char* enc = dec->Encoding(); + assert( enc ); + + if ( *enc == 0 ) + encoding = TIXML_ENCODING_UTF8; + else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) ) + encoding = TIXML_ENCODING_UTF8; + else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) ) + encoding = TIXML_ENCODING_UTF8; // incorrect, but be nice + else + encoding = TIXML_ENCODING_LEGACY; + } + + p = SkipWhiteSpace( p, encoding ); + } + + // Was this empty? + if ( !firstChild ) { + SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding ); + return 0; + } + + // All is well. + return p; +} + +void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding ) +{ + // The first error in a chain is more accurate - don't set again! + if ( error ) + return; + + assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); + error = true; + errorId = err; + errorDesc = errorString[ errorId ]; + + errorLocation.Clear(); + if ( pError && data ) + { + data->Stamp( pError, encoding ); + errorLocation = data->Cursor(); + } +} + + +TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding ) +{ + TiXmlNode* returnNode = 0; + + p = SkipWhiteSpace( p, encoding ); + if( !p || !*p || *p != '<' ) + { + return 0; + } + + TiXmlDocument* doc = GetDocument(); + p = SkipWhiteSpace( p, encoding ); + + if ( !p || !*p ) + { + return 0; + } + + // What is this thing? + // - Elements start with a letter or underscore, but xml is reserved. + // - Comments: "; + + if ( !StringEqual( p, startTag, false, encoding ) ) + { + document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding ); + return 0; + } + p += strlen( startTag ); + + // [ 1475201 ] TinyXML parses entities in comments + // Oops - ReadText doesn't work, because we don't want to parse the entities. + // p = ReadText( p, &value, false, endTag, false, encoding ); + // + // from the XML spec: + /* + [Definition: Comments may appear anywhere in a document outside other markup; in addition, + they may appear within the document type declaration at places allowed by the grammar. + They are not part of the document's character data; an XML processor MAY, but need not, + make it possible for an application to retrieve the text of comments. For compatibility, + the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity + references MUST NOT be recognized within comments. + + An example of a comment: + + + */ + + value = ""; + // Keep all the white space. + while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) + { + value.append( p, 1 ); + ++p; + } + if ( p ) + p += strlen( endTag ); + + return p; +} + + +const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) +{ + p = SkipWhiteSpace( p, encoding ); + if ( !p || !*p ) return 0; + +// int tabsize = 4; +// if ( document ) +// tabsize = document->TabSize(); + + if ( data ) + { + data->Stamp( p, encoding ); + location = data->Cursor(); + } + // Read the name, the '=' and the value. + const char* pErr = p; + p = ReadName( p, &name, encoding ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding ); + return 0; + } + p = SkipWhiteSpace( p, encoding ); + if ( !p || !*p || *p != '=' ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); + return 0; + } + + ++p; // skip '=' + p = SkipWhiteSpace( p, encoding ); + if ( !p || !*p ) + { + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); + return 0; + } + + const char* end; + const char SINGLE_QUOTE = '\''; + const char DOUBLE_QUOTE = '\"'; + + if ( *p == SINGLE_QUOTE ) + { + ++p; + end = "\'"; // single quote in string + p = ReadText( p, &value, false, end, false, encoding ); + } + else if ( *p == DOUBLE_QUOTE ) + { + ++p; + end = "\""; // double quote in string + p = ReadText( p, &value, false, end, false, encoding ); + } + else + { + // All attribute values should be in single or double quotes. + // But this is such a common error that the parser will try + // its best, even without them. + value = ""; + while ( p && *p // existence + && !IsWhiteSpace( *p ) && *p != '\n' && *p != '\r' // whitespace + && *p != '/' && *p != '>' ) // tag end + { + if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { + // [ 1451649 ] Attribute values with trailing quotes not handled correctly + // We did not have an opening quote but seem to have a + // closing one. Give up and throw an error. + if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); + return 0; + } + value += *p; + ++p; + } + } + return p; +} + +#ifdef TIXML_USE_STL +void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag ) +{ + while ( in->good() ) + { + int c = in->peek(); + if ( !cdata && (c == '<' ) ) + { + return; + } + if ( c <= 0 ) + { + TiXmlDocument* document = GetDocument(); + if ( document ) + document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + + (*tag) += (char) c; + in->get(); // "commits" the peek made above + + if ( cdata && c == '>' && tag->size() >= 3 ) { + size_t len = tag->size(); + if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) { + // terminator of cdata. + return; + } + } + } +} +#endif + +const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) +{ + value = ""; + TiXmlDocument* document = GetDocument(); + + if ( data ) + { + data->Stamp( p, encoding ); + location = data->Cursor(); + } + + const char* const startTag = ""; + + if ( cdata || StringEqual( p, startTag, false, encoding ) ) + { + cdata = true; + + if ( !StringEqual( p, startTag, false, encoding ) ) + { + document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding ); + return 0; + } + p += strlen( startTag ); + + // Keep all the white space, ignore the encoding, etc. + while ( p && *p + && !StringEqual( p, endTag, false, encoding ) + ) + { + value += *p; + ++p; + } + + TIXML_STRING dummy; + p = ReadText( p, &dummy, false, endTag, false, encoding ); + return p; + } + else + { + bool ignoreWhite = true; + + const char* end = "<"; + p = ReadText( p, &value, ignoreWhite, end, false, encoding ); + if ( p ) + return p-1; // don't truncate the '<' + return 0; + } +} + +#ifdef TIXML_USE_STL +void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag ) +{ + while ( in->good() ) + { + int c = in->get(); + if ( c <= 0 ) + { + TiXmlDocument* document = GetDocument(); + if ( document ) + document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); + return; + } + (*tag) += (char) c; + + if ( c == '>' ) + { + // All is well. + return; + } + } +} +#endif + +const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding ) +{ + p = SkipWhiteSpace( p, _encoding ); + // Find the beginning, find the end, and look for + // the stuff in-between. + TiXmlDocument* document = GetDocument(); + if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding ); + return 0; + } + if ( data ) + { + data->Stamp( p, _encoding ); + location = data->Cursor(); + } + p += 5; + + version = ""; + encoding = ""; + standalone = ""; + + while ( p && *p ) + { + if ( *p == '>' ) + { + ++p; + return p; + } + + p = SkipWhiteSpace( p, _encoding ); + if ( StringEqual( p, "version", true, _encoding ) ) + { + TiXmlAttribute attrib; + p = attrib.Parse( p, data, _encoding ); + version = attrib.Value(); + } + else if ( StringEqual( p, "encoding", true, _encoding ) ) + { + TiXmlAttribute attrib; + p = attrib.Parse( p, data, _encoding ); + encoding = attrib.Value(); + } + else if ( StringEqual( p, "standalone", true, _encoding ) ) + { + TiXmlAttribute attrib; + p = attrib.Parse( p, data, _encoding ); + standalone = attrib.Value(); + } + else + { + // Read over whatever it is. + while( p && *p && *p != '>' && !IsWhiteSpace( *p ) ) + ++p; + } + } + return 0; +} + +bool TiXmlText::Blank() const +{ + for ( unsigned i=0; i +# else //#define _CRTDBG_MAP_ALLOC //#include -#ifdef _MSC_VER -#include +# include +# endif +#pragma warning(disable : 4127) #endif #include @@ -30,6 +35,9 @@ #include #include #include +#include +#include +#include #include //#include #include @@ -40,10 +48,11 @@ #include #include #include -#include "markup/MarkupSTL.h" #include #include #include "XMLTester.h" +#include "BufferResultMatcher.h" +#include "SingleSidedBufferResultMatcher.h" #include #include @@ -52,20 +61,93 @@ #include #include #include -#include +#include #include #include #include #include +#include +#include -#ifdef _MSC_VER +#if defined(_MSC_VER) && defined(GEOS_TEST_USE_STACKWALKER) #include #include "Stackwalker.h" #endif +// Undefine this to use Geometry methods for overlay operations +// +// Using BinaryOp gives more successes though... +// +#define USE_BINARYOP 1 + using namespace geos; using namespace geos::operation::polygonize; using namespace geos::operation::linemerge; +using std::runtime_error; + +namespace { + +// a utility function defining a very simple method to indent a line of text +const char * getIndent( unsigned int numIndents ) +{ + static const char * pINDENT = " + "; + static const unsigned int LENGTH = strlen( pINDENT ); + + if ( numIndents > LENGTH ) numIndents = LENGTH; + + return &pINDENT[ LENGTH-numIndents ]; +} + + + +void dump_to_stdout( const TiXmlNode * pParent, unsigned int indent = 0 ) +{ + if ( !pParent ) return; + + const TiXmlText *pText; + int t = pParent->Type(); + printf( "%s", getIndent( indent)); + + switch ( t ) + { + case TiXmlNode::DOCUMENT: + printf( "Document" ); + break; + + case TiXmlNode::ELEMENT: + printf( "Element \"%s\"", pParent->Value() ); + break; + + case TiXmlNode::COMMENT: + printf( "Comment: \"%s\"", pParent->Value()); + break; + + case TiXmlNode::UNKNOWN: + printf( "Unknown" ); + break; + + case TiXmlNode::TEXT: + pText = pParent->ToText(); + printf( "Text: [%s]", pText->Value() ); + break; + + case TiXmlNode::DECLARATION: + printf( "Declaration" ); + break; + default: + break; + } + printf( "\n" ); + + const TiXmlNode * pChild; + + for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) + { + dump_to_stdout( pChild, indent+2 ); + } +} + +} void tolower(std::string& str) @@ -92,6 +174,87 @@ return newstring; } +/* Could be an XMLTester class private but oh well.. */ +static int +checkBufferSuccess(geom::Geometry const& gRes, geom::Geometry const& gRealRes, double dist) +{ + int success = 1; + do + { + + if ( gRes.getGeometryTypeId() != gRealRes.getGeometryTypeId() ) + { + std::cerr << "Expected result is of type " + << gRes.getGeometryType() + << "; obtained result is of type " + << gRealRes.getGeometryType() + << std::endl; + success=0; + break; + } + + // Is a buffer always an area ? + if ( gRes.getDimension() != 2 ) + { + std::cerr << "Don't know how to validate " + << "result of buffer operation " + << "when expected result is not an " + << "areal type." + << std::endl; + } + + + geos::xmltester::BufferResultMatcher matcher; + if ( ! matcher.isBufferResultMatch(gRealRes, + gRes, + dist) ) + { +std::cerr << "BufferResultMatcher FAILED" << std::endl; + success=0; + break; + } + + } + while (0); + + return success; +} + +static int +checkSingleSidedBufferSuccess(geom::Geometry& gRes, + geom::Geometry& gRealRes, double dist) +{ + int success = 1; + do + { + + if ( gRes.getGeometryTypeId() != gRealRes.getGeometryTypeId() ) + { + std::cerr << "Expected result is of type " + << gRes.getGeometryType() + << "; obtained result is of type " + << gRealRes.getGeometryType() + << std::endl; + success=0; + break; + } + + geos::xmltester::SingleSidedBufferResultMatcher matcher; + if ( ! matcher.isBufferResultMatch(gRealRes, + gRes, + dist) ) + { +std::cerr << "SingleSidedBufferResultMatcher FAILED" << std::endl; + success=0; + break; + } + + } + while (0); + + return success; +} + XMLTester::XMLTester() : gA(0), @@ -219,22 +382,20 @@ caseCount=0; - if ( ! xml.Load(source.c_str()) ) + if ( ! xml.LoadFile(source.c_str()) ) { std::cerr << "Error loading " << source << std::endl; } - xml.ResetPos(); - xml.FindElem("run"); - xml.FindChildElem("precisionModel"); - parsePrecisionModel(); - while (xml.FindChildElem("case")) { - try { - parseCase(); - } catch (const std::exception& exc) { - std::cerr<FirstChildElement("precisionModel"); + if ( el ) parsePrecisionModel(el); + + const TiXmlNode* casenode; + for ( casenode = node->FirstChild("case"); + casenode; + casenode = casenode->NextSibling("case") ) + { + try { + parseCase(casenode); + } catch (const std::exception& exc) { + std::cerr<Attribute("type"); + if ( typeStr ) type = typeStr; - if ( scaleStr == "" ) { + const char* scaleStr = el->Attribute("scale"); + + if ( ! scaleStr ) { if ( type == "FLOATING_SINGLE" ) { pm.reset(new PrecisionModel(PrecisionModel::FLOATING_SINGLE)); @@ -272,15 +462,21 @@ pm.reset(new PrecisionModel()); } } else { + char* stopstring; - //string scaleStr=xml.GetChildAttrib("scale"); - std::string offsetXStr=xml.GetChildAttrib("offsetx"); - std::string offsetYStr=xml.GetChildAttrib("offsety"); - - double scale=std::strtod(scaleStr.c_str(),&stopstring); - double offsetX=std::strtod(offsetXStr.c_str(),&stopstring); - double offsetY=std::strtod(offsetYStr.c_str(),&stopstring); - pm.reset(new PrecisionModel(scale,offsetX,offsetY)); + + double scale = std::strtod(scaleStr, &stopstring); + double offsetX = 0; + double offsetY = 2; + + if ( ! el->QueryDoubleAttribute("offsetx", &offsetX) ) + {} // std::cerr << "No offsetx" << std::endl; + + if ( ! el->QueryDoubleAttribute("offsety", &offsetY) ) + {} // std::cerr << "No offsety" << std::endl; + + // NOTE: PrecisionModel discards offsets anyway... + pm.reset(new PrecisionModel(scale, offsetX, offsetY)); } if (verbose > 1) @@ -323,6 +519,9 @@ geom::Geometry * XMLTester::parseGeometry(const std::string &in, const char* label) { + if ( ( ! wkbreader.get() ) || ( ! wktreader.get() ) ) + throw(runtime_error("No precision model specified")); + std::stringstream is(in, std::ios_base::in); char first_char; @@ -376,8 +575,10 @@ } void -XMLTester::parseCase() +XMLTester::parseCase(const TiXmlNode* node) { + assert(node); + std::string geomAin; std::string geomBin; std::string thrownException; @@ -385,21 +586,30 @@ gA=NULL; gB=NULL; - xml.IntoElem(); - xml.FindChildElem("desc"); - curr_case_desc=trimBlanks(xml.GetChildData()); + + //dump_to_stdout(node); + + curr_case_desc.clear(); + const TiXmlNode* txt = node->FirstChild("desc"); + if ( txt ) { + txt = txt->FirstChild(); + if ( txt ) curr_case_desc = trimBlanks(txt->Value()); + } + + //std::cerr << "Desc: " << curr_case_desc << std::endl; + try { - xml.FindChildElem("a"); - geomAin=xml.GetChildData(); - geomAin=trimBlanks(geomAin); - gA=parseGeometry(geomAin, "Geometry A"); - - if ( xml.FindChildElem("b") ) - { - geomBin=xml.GetChildData(); - geomBin=trimBlanks(geomBin); - gB=parseGeometry(geomBin, "Geometry B"); + const TiXmlNode *el = node->FirstChild("a"); + geomAin = el->FirstChild()->Value(); + geomAin = trimBlanks(geomAin); + gA = parseGeometry(geomAin, "Geometry A"); + + if ( 0 != (el = node->FirstChild("b")) ) + { + geomBin = el->FirstChild()->Value(); + geomBin = trimBlanks(geomBin); + gB = parseGeometry(geomBin, "Geometry B"); } } catch (const std::exception &e) { @@ -409,23 +619,31 @@ thrownException = "Unknown exception"; } +//std::cerr << "A: " << geomAin << std::endl; +//std::cerr << "B: " << geomBin << std::endl; + + if ( thrownException != "" ) { std::cout << *curr_file <<":"; std::cout << " case" << caseCount << ":"; std::cout << " skipped ("<FirstChild("test"); + testnode; + testnode = testnode->NextSibling("test") ) + { + parseTest(testnode); } + totalTestCount+=testCount; - xml.OutOfElem(); delete gA; delete gB; } @@ -455,7 +673,7 @@ } void -XMLTester::parseTest() +XMLTester::parseTest(const TiXmlNode* node) { using namespace operation::overlay; @@ -466,19 +684,43 @@ std::string opArg1; std::string opArg2; std::string opArg3; + std::string opArg4; std::string opRes; - //string opSig; ++testCount; - xml.IntoElem(); - xml.FindChildElem("op"); - opName=xml.GetChildAttrib("name"); - opArg1=xml.GetChildAttrib("arg1"); - opArg2=xml.GetChildAttrib("arg2"); - opArg3=xml.GetChildAttrib("arg3"); - //opSig=xml.GetChildAttrib("arg3"); - opRes=xml.GetChildData(); + const TiXmlNode* opnode = node->FirstChild("op"); + if ( ! opnode ) throw(runtime_error("case has no op")); + + //dump_to_stdout(opnode); + + const TiXmlElement* opel = opnode->ToElement(); + + const char* tmp = opel->Attribute("name"); + if ( tmp ) opName = tmp; + + tmp = opel->Attribute("arg1"); + if ( tmp ) opArg1 = tmp; + + tmp = opel->Attribute("arg2"); + if ( tmp ) opArg2 = tmp; + + tmp = opel->Attribute("arg3"); + if ( tmp ) opArg3 = tmp; + + tmp = opel->Attribute("arg4"); + if ( tmp ) opArg4 = tmp; + + const TiXmlNode* resnode = opnode->FirstChild(); + if ( ! resnode ) + { + std::stringstream tmp; + tmp << "op of test " << testCount + << " of case " << caseCount + << " has no expected result child"; + throw(runtime_error(tmp.str())); + } + opRes = resnode->Value(); // trim blanks opRes=trimBlanks(opRes); @@ -496,6 +738,10 @@ if ( opSig != "" ) opSig += ", "; opSig += opArg3; } + if ( opArg4 != "" ) { + if ( opSig != "" ) opSig += ", "; + opSig += opArg4; + } opSignature = opName + "(" + opSig + ")"; @@ -541,8 +787,12 @@ GeomAutoPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - //GeomAutoPtr gRealRes(gA->intersection(gB)); +#ifndef USE_BINARYOP + GeomAutoPtr gRealRes(gA->intersection(gB)); +#else GeomAutoPtr gRealRes = BinaryOp(gA, gB, overlayOp(OverlayOp::opINTERSECTION)); +#endif + gRealRes->normalize(); if (gRes->compareTo(gRealRes.get())==0) success=1; @@ -559,8 +809,12 @@ GeomAutoPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - //GeomAutoPtr gRealRes(gA->Union(gB)); +#ifndef USE_BINARYOP + GeomAutoPtr gRealRes(gA->Union(gB)); +#else GeomAutoPtr gRealRes = BinaryOp(gA, gB, overlayOp(OverlayOp::opUNION)); +#endif + gRealRes->normalize(); if (gRes->compareTo(gRealRes.get())==0) success=1; @@ -577,8 +831,11 @@ GeomAutoPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - //GeomAutoPtr gRealRes(gA->difference(gB)); +#ifndef USE_BINARYOP + GeomAutoPtr gRealRes(gA->difference(gB)); +#else GeomAutoPtr gRealRes = BinaryOp(gA, gB, overlayOp(OverlayOp::opDIFFERENCE)); +#endif gRealRes->normalize(); @@ -596,8 +853,12 @@ GeomAutoPtr gRes(parseGeometry(opRes, "expected")); gRes->normalize(); - //GeomAutoPtr gRealRes(gA->symDifference(gB)); +#ifndef USE_BINARYOP + GeomAutoPtr gRealRes(gA->symDifference(gB)); +#else GeomAutoPtr gRealRes = BinaryOp(gA, gB, overlayOp(OverlayOp::opSYMDIFFERENCE)); +#endif + gRealRes->normalize(); if (gRes->compareTo(gRealRes.get())==0) success=1; @@ -611,7 +872,54 @@ else if (opName=="intersects") { - if (gA->intersects(gB)) actual_result="true"; + geom::Geometry *g1 = opArg1 == "B" ? gB : gA; + geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + + if (g1->intersects(g2)) actual_result="true"; + else actual_result="false"; + + if (actual_result==opRes) success=1; + } + + else if (opName=="contains") + { + geom::Geometry *g1 = opArg1 == "B" ? gB : gA; + geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + + if (g1->contains(g2)) actual_result="true"; + else actual_result="false"; + + if (actual_result==opRes) success=1; + } + + else if (opName=="within") + { + geom::Geometry *g1 = opArg1 == "B" ? gB : gA; + geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + + if (g1->within(g2)) actual_result="true"; + else actual_result="false"; + + if (actual_result==opRes) success=1; + } + + else if (opName=="covers") + { + geom::Geometry *g1 = opArg1 == "B" ? gB : gA; + geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + + if (g1->covers(g2)) actual_result="true"; + else actual_result="false"; + + if (actual_result==opRes) success=1; + } + + else if (opName=="coveredby") + { + geom::Geometry *g1 = opArg1 == "B" ? gB : gA; + geom::Geometry *g2 = opArg2 == "B" ? gB : gA; + + if (g1->coveredBy(g2)) actual_result="true"; else actual_result="false"; if (actual_result==opRes) success=1; @@ -694,6 +1002,8 @@ else if (opName=="buffer") { + using namespace operation::buffer; + geom::Geometry *gT=gA; if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; @@ -703,79 +1013,103 @@ profile.start(); GeomAutoPtr gRealRes; - double dist = std::atof(opArg3.c_str()); + double dist = std::atof(opArg2.c_str()); - if ( opArg2 != "" ) { - gRealRes.reset(gT->buffer(dist, std::atoi(opArg2.c_str()))); - } else { - gRealRes.reset(gT->buffer(dist)); + BufferParameters params; + if ( opArg3 != "" ) { + params.setQuadrantSegments(std::atoi(opArg3.c_str())); } + + + BufferOp op(gT, params); + gRealRes.reset(op.getResultGeometry(dist)); + profile.stop(); gRealRes->normalize(); - // Assume a success and check for obvious failures - success=1; - do - { - // TODO: Is a buffer always an area ? - // we might check geometry type.. + // Validate the buffer operation + success = checkBufferSuccess(*gRes, *gRealRes, dist); - if ( gRes->getGeometryTypeId() != gRealRes->getGeometryTypeId() ) - { - std::cerr << "Expected result is of type " - << gRes->getGeometryType() - << "; obtained result is of type " - << gRealRes->getGeometryType() - << std::endl; - success=0; - break; - } - - if ( gRes->isEmpty() && gRealRes->isEmpty() ) - { - // Success ! - break; - } - - if ( gRes->getDimension() != 2 ) - { - std::cerr << "Don't know how to validate " - << "result of buffer operation " - << "when expected result is not an " - << "areal type." - << std::endl; - } + if ( testValidOutput ) testValid(gRes.get(), "result"); + + actual_result=printGeom(gRealRes.get()); + expected_result=printGeom(gRes.get()); + } + + else if (opName=="buffersinglesided") + { + using namespace operation::buffer; + + geom::Geometry *gT=gA; + if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + + GeomAutoPtr gRes(parseGeometry(opRes, "expected")); + gRes->normalize(); + + profile.start(); + + GeomAutoPtr gRealRes; + double dist = std::atof(opArg2.c_str()); - double expectedArea = gRes->getArea(); + BufferParameters params ; + params.setJoinStyle( BufferParameters::JOIN_ROUND ) ; + if ( opArg3 != "" ) { + params.setQuadrantSegments( std::atoi(opArg3.c_str())); + } + + bool leftSide = true ; + if ( opArg4 == "right" ) + { + leftSide = false ; + } - /// Allow area difference being at most - /// 1/1000 of the area of the expected result. - double areatol = expectedArea / 1e3; + BufferBuilder bufBuilder( params ) ; + gRealRes.reset( bufBuilder.bufferLineSingleSided( + gT, dist, leftSide ) ) ; - GeomAutoPtr gDiff = BinaryOp(gRes.get(), gRealRes.get(), - overlayOp(OverlayOp::opDIFFERENCE)); + profile.stop(); + gRealRes->normalize(); - double areaDiff = gDiff->getArea(); - if ( areaDiff > areatol ) - { - std::cerr << "Area of difference between " - << "obtained and expected: " - << areaDiff << " - Tolerated diff: " - << areatol << std::endl; - success=0; - break; - } - else - { - std::cerr << "Area of difference between " - << "obtained and expected: " - << areaDiff << " - Tolerated diff: " - << areatol << " (SUCCESS!)" - << std::endl; - } + // Validate the single sided buffer operation + success = checkSingleSidedBufferSuccess(*gRes, + *gRealRes, dist); + + if ( testValidOutput ) testValid(gRes.get(), "result"); + + actual_result=printGeom(gRealRes.get()); + expected_result=printGeom(gRes.get()); + } + + else if (opName=="buffermitredjoin") + { + using namespace operation::buffer; + + geom::Geometry *gT=gA; + if ( ( opArg1 == "B" || opArg1 == "b" ) && gB ) gT=gB; + GeomAutoPtr gRes(parseGeometry(opRes, "expected")); + gRes->normalize(); + + profile.start(); + + GeomAutoPtr gRealRes; + double dist = std::atof(opArg2.c_str()); + + BufferParameters params; + params.setJoinStyle(BufferParameters::JOIN_MITRE); + + if ( opArg3 != "" ) { + params.setQuadrantSegments(std::atoi(opArg3.c_str())); } - while (0); + + BufferOp op(gT, params); + gRealRes.reset(op.getResultGeometry(dist)); + + profile.stop(); + gRealRes->normalize(); + + // Validate the buffer operation + success = checkBufferSuccess(*gRes, *gRealRes, dist); if ( testValidOutput ) testValid(gRes.get(), "result"); @@ -783,6 +1117,7 @@ expected_result=printGeom(gRes.get()); } + else if (opName=="getinteriorpoint") { geom::Geometry *gT=gA; @@ -806,7 +1141,7 @@ else if (opName=="iswithindistance") { - float dist=std::atof(opArg3.c_str()); + double dist=std::atof(opArg3.c_str()); if (gA->isWithinDistance(gB, dist)) { actual_result="true"; } else { @@ -886,8 +1221,12 @@ { std::cerr << "Running intersection for areatest" << std::endl; } +#ifndef USE_BINARYOP + GeomAutoPtr gI(gA->intersection(gB)); +#else GeomAutoPtr gI = BinaryOp(gA, gB, overlayOp(OverlayOp::opINTERSECTION)); +#endif if ( testValidOutput ) { @@ -898,15 +1237,25 @@ { std::cerr << "Running difference(A,B) for areatest" << std::endl; } + +#ifndef USE_BINARYOP + GeomAutoPtr gDab(gA->difference(gB)); +#else GeomAutoPtr gDab = BinaryOp(gA, gB, overlayOp(OverlayOp::opDIFFERENCE)); +#endif if ( verbose > 1 ) { std::cerr << "Running difference(B,A) for areatest" << std::endl; } + +#ifndef USE_BINARYOP + GeomAutoPtr gDba(gB->difference(gA)); +#else GeomAutoPtr gDba = BinaryOp(gB, gA, overlayOp(OverlayOp::opDIFFERENCE)); +#endif if ( testValidOutput ) { @@ -917,15 +1266,25 @@ { std::cerr << "Running symdifference for areatest" << std::endl; } + +#ifndef USE_BINARYOP + GeomAutoPtr gSD(gA->symDifference(gB)); +#else GeomAutoPtr gSD = BinaryOp(gA, gB, overlayOp(OverlayOp::opSYMDIFFERENCE)); +#endif if ( verbose > 1 ) { std::cerr << "Running union for areatest" << std::endl; } + +#ifndef USE_BINARYOP + GeomAutoPtr gU(gA->Union(gB)); +#else GeomAutoPtr gU = BinaryOp(gA, gB, overlayOp(OverlayOp::opUNION)); +#endif double areaA = gA->getArea(); double areaB = gB->getArea(); @@ -1012,14 +1371,13 @@ if ((!success && verbose) || verbose > 1) { - printTest(success, expected_result, actual_result); + printTest(!!success, expected_result, actual_result); } if (test_predicates && gB && gA) { runPredicates(gA, gB); } - xml.OutOfElem(); } void @@ -1061,7 +1419,7 @@ int verbose=0; bool sql_output=false; -#ifdef _MSC_VER +#if defined(_MSC_VER) && defined(GEOS_TEST_USE_STACKWALKER) InitAllocCheck(); { #endif @@ -1114,7 +1472,7 @@ return tester.getFailuresCount(); -#ifdef _MSC_VER +#if defined(_MSC_VER) && defined(GEOS_TEST_USE_STACKWALKER) } DeInitAllocCheck(); #endif diff -Nru geos-3.1.0/tests/xmltester/XMLTester.h geos-3.2.2/tests/xmltester/XMLTester.h --- geos-3.1.0/tests/xmltester/XMLTester.h 2009-03-10 16:18:02.000000000 +0000 +++ geos-3.2.2/tests/xmltester/XMLTester.h 2009-12-03 13:25:57.000000000 +0000 @@ -1,5 +1,5 @@ /********************************************************************** - * $Id: XMLTester.h 1960 2007-01-16 14:12:14Z strk $ + * $Id: XMLTester.h 2759 2009-12-03 13:25:57Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net @@ -13,11 +13,12 @@ * **********************************************************************/ -#ifndef __XMLTESTER_H__ -#define __XMLTESTER_H__ +#ifndef GEOS_XMLTESTER_H +#define GEOS_XMLTESTER_H #include #include +#include "tinyxml/tinyxml.h" using namespace geos; @@ -34,9 +35,10 @@ PRED }; - void parsePrecisionModel(); - void parseCase(); - void parseTest(); + void parsePrecisionModel(const TiXmlElement* el); + void parseRun(const TiXmlNode* node); + void parseCase(const TiXmlNode* node); + void parseTest(const TiXmlNode* node); void runPredicates(const geom::Geometry *a, const geom::Geometry *b); geom::Geometry *parseGeometry(const std::string &in, const char* label="parsed"); static std::string trimBlanks(const std::string &in); @@ -54,7 +56,7 @@ std::auto_ptr wktwriter; std::auto_ptr wkbreader; std::auto_ptr wkbwriter; - CMarkupSTL xml; + TiXmlDocument xml; int verbose; int test_predicates; @@ -104,5 +106,4 @@ }; - -#endif +#endif // GEOS_XMLTESTER_H diff -Nru geos-3.1.0/TODO geos-3.2.2/TODO --- geos-3.1.0/TODO 2009-03-10 16:18:03.000000000 +0000 +++ geos-3.2.2/TODO 2009-03-26 01:53:30.000000000 +0000 @@ -1,3 +1,4 @@ +GEOS TODO: - Feed PrecisionModel to OverlayResultValidator to set _TOLERANCE @@ -23,4 +24,3 @@ [not documented] - Add distinct binary predicates test support in XMLTester - diff -Nru geos-3.1.0/tools/Makefile.in geos-3.2.2/tools/Makefile.in --- geos-3.1.0/tools/Makefile.in 2009-03-11 19:14:08.000000000 +0000 +++ geos-3.2.2/tools/Makefile.in 2010-04-18 16:08:15.000000000 +0100 @@ -1,8 +1,9 @@ -# Makefile.in generated by automake 1.9.5 from Makefile.am. +# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 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. @@ -14,15 +15,12 @@ @SET_MAKE@ -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ -top_builddir = .. +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ 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 @@ -43,6 +41,11 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/macros/ac_pkg_swig.m4 \ $(top_srcdir)/macros/ac_python_devel.m4 \ + $(top_srcdir)/macros/libtool.m4 \ + $(top_srcdir)/macros/ltoptions.m4 \ + $(top_srcdir)/macros/ltsugar.m4 \ + $(top_srcdir)/macros/ltversion.m4 \ + $(top_srcdir)/macros/lt~obsolete.m4 \ $(top_srcdir)/macros/python.m4 $(top_srcdir)/macros/ruby.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -51,16 +54,35 @@ CONFIG_HEADER = $(top_builddir)/source/headers/config.h \ $(top_builddir)/source/headers/geos/platform.h CONFIG_CLEAN_FILES = geos-config +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(bindir)" -binSCRIPT_INSTALL = $(INSTALL_SCRIPT) SCRIPTS = $(bin_SCRIPTS) SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALLOCA = @ALLOCA@ -AMDEP_FALSE = @AMDEP_FALSE@ -AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ @@ -88,21 +110,17 @@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ -ECHO = @ECHO@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ -ENABLE_PYTHON_FALSE = @ENABLE_PYTHON_FALSE@ -ENABLE_PYTHON_TRUE = @ENABLE_PYTHON_TRUE@ -ENABLE_RUBY_FALSE = @ENABLE_RUBY_FALSE@ -ENABLE_RUBY_TRUE = @ENABLE_RUBY_TRUE@ -ENABLE_SWIG_FALSE = @ENABLE_SWIG_FALSE@ -ENABLE_SWIG_TRUE = @ENABLE_SWIG_TRUE@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +FGREP = @FGREP@ +GREP = @GREP@ INLINE_FLAGS = @INLINE_FLAGS@ +INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ @@ -111,20 +129,28 @@ INTERFACE_CURRENT = @INTERFACE_CURRENT@ INTERFACE_REVISION = @INTERFACE_REVISION@ JTS_PORT = @JTS_PORT@ +LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PYTHON = @PYTHON@ @@ -145,6 +171,7 @@ RUBY_SHARED_LIB = @RUBY_SHARED_LIB@ RUBY_SO_NAME = @RUBY_SO_NAME@ RUBY_VERSION = @RUBY_VERSION@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -156,19 +183,13 @@ VERSION_MAJOR = @VERSION_MAJOR@ VERSION_MINOR = @VERSION_MINOR@ VERSION_PATCH = @VERSION_PATCH@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_AS = @ac_ct_AS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DLLTOOL = @ac_ct_DLLTOOL@ -ac_ct_F77 = @ac_ct_F77@ -ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ -ac_ct_RANLIB = @ac_ct_RANLIB@ -ac_ct_STRIP = @ac_ct_STRIP@ -am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ @@ -180,36 +201,49 @@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ +builddir = @builddir@ datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ exec_prefix = @exec_prefix@ 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@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ pkgpyexecdir = @pkgpyexecdir@ pkgpythondir = @pkgpythondir@ prefix = @prefix@ program_transform_name = @program_transform_name@ +psdir = @psdir@ pyexecdir = @pyexecdir@ pythondir = @pythondir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ bin_SCRIPTS = geos-config all: all-am @@ -218,14 +252,14 @@ @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu tools/Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu tools/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ @@ -243,37 +277,49 @@ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): geos-config: $(top_builddir)/config.status $(srcdir)/geos-config.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" - @list='$(bin_SCRIPTS)'; for p in $$list; do \ + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f $$d$$p; then \ - f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ - echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ - else :; fi; \ - done + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) - @list='$(bin_SCRIPTS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: tags: TAGS TAGS: @@ -282,29 +328,32 @@ 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; \ + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ 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 \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @@ -313,7 +362,7 @@ all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ - test -z "$$dir" || $(mkdir_p) "$$dir"; \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am @@ -335,6 +384,7 @@ distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @@ -345,7 +395,7 @@ distclean: distclean-am -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool +distclean-am: clean-am distclean-generic dvi: dvi-am @@ -353,18 +403,38 @@ html: html-am +html-am: + info: info-am info-am: install-data-am: +install-dvi: install-dvi-am + +install-dvi-am: + install-exec-am: install-binSCRIPTS +install-html: install-html-am + +install-html-am: + install-info: install-info-am +install-info-am: + install-man: +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am @@ -383,17 +453,22 @@ ps-am: -uninstall-am: uninstall-binSCRIPTS uninstall-info-am +uninstall-am: uninstall-binSCRIPTS + +.MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ - install-binSCRIPTS install-data install-data-am install-exec \ - install-exec-am install-info install-info-am install-man \ + install-binSCRIPTS install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am uninstall-binSCRIPTS uninstall-info-am + uninstall uninstall-am uninstall-binSCRIPTS + # 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.